Skip to content

Instantly share code, notes, and snippets.

@dhana-git
Last active March 28, 2019 08:39
Show Gist options
  • Save dhana-git/d6db2a0c675278da002caa651588ad7e to your computer and use it in GitHub Desktop.
Save dhana-git/d6db2a0c675278da002caa651588ad7e to your computer and use it in GitHub Desktop.
SCS Self-Contained Systems

SCS (Self-Contained Systems)


An architecture

  • 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.

SCS Characteristics

  • 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.

SCS vs Microservices

Ref: Self-Contained Systems

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment