Muhammed Senussi
Muhammed Senussi
  • Muhammed Senussi
You Did Not Build Microservices, You Built a Distributed MonolithSoftware Architecture

Splitting a codebase is easy. Splitting the coupling is the actual work, and it is the part that gets skipped.

The symptoms

  • Releases go out in a fixed order, documented in a runbook.
  • A schema change requires a meeting with three teams.
  • Integration environments exist because nothing can be tested alone.

Each of these says the same thing: the boundaries were drawn around nouns in the codebase rather than around reasons to change.

Services should be separated by what changes together, not by what sounds like a separate thing.

What helps

Draw the boundary where the business capability is, not where the database table is. Give each service its own data and let it be wrong for a moment rather than synchronously correct forever. And be honest about whether the organisation actually needs independent deployability, because if it does not, a well-structured monolith will beat this every time.

You Did Not Build Microservices, You Built a Distributed Monolith — Figure 1
You Did Not Build Microservices, You Built a Distributed Monolith — Figure 2
You Did Not Build Microservices, You Built a Distributed Monolith — Figure 3

4 Comments

  • Daan Visser

    January 22, 2024

    The runbook test is brutal and accurate. We have one and I have never once thought of it as a symptom until now.

    • Muhammed Senussi

      Muhammed Senussi

      AuthorJanuary 22, 2024

      It is worth reading yours as a coupling diagram. Every ordering constraint in it is a dependency somebody chose, usually without meaning to.

  • Yara Mansour

    January 24, 2024

    What would you tell a team that has already made this mistake and cannot start over?

    • Muhammed Senussi

      Muhammed Senussi

      AuthorJanuary 24, 2024

      Merge back the services that always deploy together. Nobody wants to hear it, but two services with a fixed release order are one service with extra latency. Recombining them is usually a week of work and removes a permanent tax.

Leave a comment