I recently had the chance to visit FullStack London, a well organized conference. Thanks a lot to Skills Matter. FullStack was opened by Douglas Crockford about “The Better Parts” of ES6. I cannot wait to start using them. Douglas was followed by Isaac Schlueter talking about open source in companies. Although this talk was not technical I learned a lot and it was very inspiring.
One thing that has to be changed in the developers mindset is the software architecture. It basically means to trash everything I learned about good software design at university and replace it by the following structure:
- Create a swarm of microservices wrapping around the database(s) as a bottom layer.
- Possibly create another layer of microservices accessing the bottom layer and combining their results.
- You could create another layer of microservices here but you should keep the architecture as flat as possible.
- Create arbitrary many applications using the highest layer of microservices.
From the database engineers point of view the points 1. and 3. are of utmost interest: Keep the structure as flat as possible and the lowest layer is just wrapping around the database API. So why not extend the database API by embedding the microservice directly into it? This will give you several benefits:
- Increased performance:
- Skip the communication overhead for one layer.
- Raw access to the data allows even more efficient filtering.
- Let the database do the scaling:
- If you have larger amount of data you need several servers anyway.
- If you just have high read through put a single server would be a bottleneck.