Self-contained system (software)

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.

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 create larger systems using this approach – in particular web applications. There are many case studies and further links available.

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.

Usage
There are quite a few known usages of SCS – e.g. at Otto, Galeria Kaufhof, and Kühne+Nagel.