Modular monoliths, DDD and the structure of my packages
At the beginning I wanted to write about modular monoliths vs microservices as I think microservices are overhyped, in many cases they are not necessary unless you are Google or Netflix, but they bring increased complexity to the game: you need to take into account that parts of your application may be down, debugging is harder as now it's not just one app involved in flow of your logic, deployment is also more complicated But this is not what I want to write about (you can read more on this topic here , and here ) . What is more important is how you structure your code. You see, with proper structure you end up with "modular monolith" and with it you can "microservicize" your application without much effort. When I design an application, I tend to stick to those rules: application consists of modules each module has its own responsibility (bounded context from DDD), I think of a module as a part of my code which later could be easily extract...