Modular Monolith
Reaping some benefits of a Microservice Architecture without most of the overhead.
- Split up the Monolith into components with well defined boundaries
- Either try to draw strong boundaries over time over the monolith (when code ownership is prioritized)
- Or by creating tiny drop in replacements for existing code (if clean boundaries are preferred)
- Ensure Simple Dependency Graph between components
- Ensure High Cohesion & Low Coupling by looking at Change Locality. Group together code that operates on the same functionality, not only because they work on the same data.