Matt Heard

Software developer and philosopher in Berlin
10 Dec 2019

Cost of glue

Modularisation in software design is about breaking down simple collections of complicated components into complex collections of simple components. A complicated component acts incorrectly when you cannot understand its internal behavior. A complex collection acts unexpectedly when you cannot understand their external interactions.

All non-trivial software is both complicated and complex, and we can refactor to trade-off between complicated and complex designs. Object-oriented programmers explored these trade-offs for the last few decades and now microservice architects are exploring them too.

Since working with a few microservice designs, I'm starting to see some trade-offs, especially with tracing interactions and serialisation overhead.

Related links:

The image above was remixed using the following source image: