Deployment automation
The intent of applying domain-driven design is to create an ecosystem of loosely coupled components – so that each of these components can evolve independently of each other. This includes how these components are deployed to production. At a high level, we have at least three styles of deployment:
- Single-process monolith: Where large portions of the application are deployed as a single unit, with all components that are included in the deployment running in a single process
- Distributed monolith: Where the application is split into multiple components with each running in its own process and/or host, but deployed as a single unit and/or requiring non-trivial amounts of coordination and tight coupling among components and their owners
- Independent components: Where the application is split into multiple components with each running in its own process and/or host, deployed independently of each other and requiring minimal to no coordination...