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.

The remainder of the conference was all about using JavaScript mostly on server-side using Node.js or in robotics. As robotics is not my kind of topic I visited the talks about server-side JS. They confirmed my impression where JS development is heading to: Microservices.

Microservice Architecture

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:

  1. Create a swarm of microservices wrapping around the database(s) as a bottom layer.
  2. Possibly create another layer of microservices accessing the bottom layer and combining their results.
  3. You could create another layer of microservices here but you should keep the architecture as flat as possible.
  4. 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.

ArangoDB’s Foxx framework allows you to do this, extend ArangoDB’s API with your own Foxx app (written in JavaScript, you can reuse most of your NodeJS code). Also several of the talks spawned ideas in my mind to even increase the benefits of creating micro services with Foxx. It also spawned another idea of a talk I might be giving in the future, so stay updated.

Now I am looking forward to Span Conf and the LJC.