Self-contained systems make different macro architecture decisions.

  • Each self-contained system is an autonomous web application, meaning SCSs contain web UIs.

  • There is no common UI. An SCS can have HTML links to other SCSs or can integrate itself by different means into the UI of other SCSs. But every part of the UI belongs to an SCS. Chapter 3 describes different options for the integration of frontends. This means each SCS generates a part of the UI. There is no separate microservice that generates all of the UI and then calls logic in the other microservices.

  • The SCSs can have an optional API. This API can, for example, be useful if mobile clients or other systems have to use the logic in the SCS.

  • The complete logic and data for the domain are contained in the SCS. This is what SCSs were named for. An SCS is self-contained because it contains UI, logic, and data.

These rules ensure that an SCS completely implements a domain. This means that a new feature causes changes to only one SCS even if the logic, data, and the UI is changed. These changes can be rolled out with a single deployment.

If several SCSs shared a UI, many changes would affect not only the SCSs but also the UI. Then two well-coordinated deployments and a closely coordinated development would be necessary.

Get hands-on with 1200+ tech skills courses.