Self-contained system (software)
{{refimprove|date=December 2015}}
In computing, self-contained system (SCS) is a software architecture approach that focuses on a separation of the functionality into many independent systems, making the complete logical system a collaboration of many smaller software systems.{{cite web|title=Self-contained Systems Website|url=http://scs-architecture.org/}}
Self-contained system characteristics
SCSs have certain characteristics:
- Each SCS is an autonomous web application.
- Each SCS is owned by one team.
- Communication with other SCSs or third-party systems is asynchronous wherever possible.
- An SCS can have an optional service API.
- Each SCS must include data and logic.
- An SCS should make its features usable to end-users by its own UI.
- To avoid tight coupling an SCS should share no business code with other SCSs.
- Shared infrastructure should be reduced to increase availability and decrease coupling.
Implementations{{cite web|title=Codecentric Blog|date=12 January 2015|url=https://blog.codecentric.de/en/2015/01/self-contained-systems-roca-complete-example-using-spring-boot-thymeleaf-bootstrap/}} create larger systems using this approach – in particular web applications. There are many case studies{{Cite web |title=Case Studies on the SCS website |url=https://scs-architecture.org/case-studies.html |access-date=2023-08-01 |website=scs-architecture.org |language=en}} and further links available.{{cite web |title=Links on the SCS website |url=http://scs-architecture.org/links.html}}
Self-contained systems and microservices
While self-contained systems are similar to microservices there are differences: A system will usually contain fewer SCS than microservices. Also microservices can communicate with other microservices – even synchronously. SCS prefer no communication or asynchronous communication. Microservices might also have a separate UI unlike the SCS that include a UI.{{cite web|title=Self-contained Systems Website: SCS vs. Microservices|url=http://scs-architecture.org/vs-ms.html}}
Self-contained systems and Vertical Slice Architecture
Self-contained systems and vertical slice architecture have similarities but also decisive differences. Both approaches divide a system into smaller, manageable units. Vertical slices are cut on the basis of features, Self-contained systems along the boundaries of functional domains. They also differ in the strictness with which they attempt to encapsulate and isolate specialized logic.{{Cite web |last=Asel |first=Tom |date= 19 March 2025|title=Self-contained System vs. Vertical Slice Architecture |url=https://tangible-concepts.de/self-contained-system-vs-vertical-slice-architecture_en |website=tangible concepts Blog}}
Usage
There are quite a few known usages of SCS – e.g. at Otto,{{cite web |title=Architecture principles (used to develop the Otto shop) |url=https://www.otto.de/jobs/en/technology/techblog/blogpost/architecture-principles-2013-04-15.php}} Galeria Kaufhof,{{cite web|title=Kaufhof Blog|url=https://galeria-kaufhof.github.io/general/2015/12/15/architektur-und-organisation-im-galeria-de-produktmanagement}} and Kühne+Nagel.{{Cite web |title=From Monolith to Microservices |url=https://kuehne-nagel.github.io/monolith-to-microservices/ |access-date=2023-08-01 |website=kuehne-nagel.github.io}}