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:

  1. Each SCS is an autonomous web application.
  2. Each SCS is owned by one team.
  3. Communication with other SCSs or third-party systems is asynchronous wherever possible.
  4. An SCS can have an optional service API.
  5. Each SCS must include data and logic.
  6. An SCS should make its features usable to end-users by its own UI.
  7. To avoid tight coupling an SCS should share no business code with other SCSs.
  8. 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}}

References