- The Self-contained System (SCS) approach is an architecture that focuses on a separation of the functionality (domain) into many independent systems, making the complete logical system a collaboration of many smaller software systems.
- This avoids the problem of large monoliths that grow constantly and eventually become unmaintainable.
- The idea is to break a large system apart into several smaller self-contained systems, or SCSs, that follow certain rules.
- Each SCS is an autonomous web application.
- For the SCS's domain, all data, the logic to process that data and all code to render the web interface is contained within the SCS.
- An SCS can fulfill its primary use cases on its own, without having to rely on other systems being available.
- Communication with other SCSs or 3rd party systems is asynchronous wherever possible.
- Specifically, other SCSs or external systems should not be accessed synchronously within the SCS's own request/response cycle.
- This decouples the systems, reduces the effects of failure, and thus supports autonomy.
- An SCS can have an optional service API. Because the SCS has its own web UI, it can interact with the user — without going through a UI service. However, an API for mobile clients or for other SCSs might still be useful.
- An SCS should share no business code with other SCSs.