← all articles

On Monoliths and Microservices

  • Have cross-functional teams
  • vertical decomposition: create vertical slices, being as independent from each other as possible (self-contained systems)
  • vertical services may be even large -> split internally
  • services don’t have a common DB as that would create a tight coupling between them
  • good experiences with “Fat JARs” which can be executed via java -jar <file> (starting an embedded Jetty or something..)
  • REST and Microservices work well together
  • Micro-architecture which deals with the inner workings of a services and is left to the team; macro-architecture is about the interactions between the services
  • crucial points:
    • vertical decomposition
    • RESTful architecture: communication exclusively over REST
    • Shared nothing architecture: no shared state, no HTTP sessions, no central data storage, no shared code. Multiple instance of the same service share the same DB.
    • Data governance: There’s a single “truth”, others have access to the data provider via a REST Api and can eventually copy data to their own storage.
  • Integration over hyperlinks
  • Data replication: services poll atom feeds of the responsible vertical product to regularly get data updates and keep in their own storage (they’re not using data queues)
    • temporary inconsistencies at the cost of availability of services
    • could be avoided to replicate by calling remote services directly -> problem of delays and slowdowns of the entire system though
Juri Strumpflohner
Juri Strumpflohner
Sr. Director of Developer Experience at Nx

Stay in the loop

Don't miss any of my content. No spam. I'm not a grifter.