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.

Source: Shopify Engineering Blog