Self-contained Systems (SCS) Architecture: The Middle Ground Between Monolith and Microservices

Vikas Pujar
3 min readAug 22, 2023

--

In the dynamic world of software development, choosing the right architectural style is really not an easy task!. The question, ‘Which architectural style should we adopt?’ often receives a typical reply: ‘It depends’. True enough, the decision largely depends on your project’s specific requirements and the tradeoffs you can afford. For example, a carefully implemented set of microservices can be more straightforward to manage and maintain. However, when the count reaches hundreds or even thousands of microservices, the task of maintaining and thoroughly testing each one can become overwhelming.

Recently, there’s been quite a buzz about Amazon’s shift from microservices back to a monolithic structure. This sparked a debate supporting both architectural styles. However, is there a third option? Absolutely, and it’s called Self-contained Systems (SCS).

What is a Self-contained System (SCS)?

A Self-contained System is a software architecture approach where each system is an autonomous unit that runs without dependencies. Each SCS is independent, with its own web server, application logic, and database. It is designed to be responsible for a specific business capability and can be developed, deployed, and scaled independently.

The Monolith, Microservices, and SCS: A Comparison

Let’s draw high level comparison between Monolith and Microservices vs SCS

Monolith Architecture : In a Monolithic architecture, all the components of the software are interconnected and interdependent. This means that even a small change in one component could require changing and redeploying the entire system. While this architecture is simple to develop and deploy initially, it becomes complex and rigid as the system grows, making it difficult to scale and maintain. The majority of legacy applications are typically built using this type of architectural style.

Microservices Architecture : Microservices, on the other hand, breaks down the application into small, loosely coupled services. Each microservice can be developed, deployed, and scaled independently. While this architecture provides flexibility and scalability, it also introduces complexity in terms of service coordination and data consistency. The majority of cloud applciations are typically built using this type of architectural style.

Self-contained Systems (SCS) Architecture : SCS represents a middle ground between Monolith and Microservices. Like microservices, each SCS is independent and can be developed and deployed separately. However, unlike microservices, an SCS is larger and more autonomous, handling a specific business capability end-to-end, from the user interface to the database. This reduces the need for complex coordination and communication between services. For clients whose final goal is to implement a microservices architecture, it could be beneficial to begin with self-contained systems (SCS) as an initial step.

Why Legacy systems should consider SCS architecture.

Legacy monolithic systems should consider adopting Self-contained Systems (SCS) architecture for reasons(not limited to):

1. Gradual Transition: SCS architecture allows for a measured, step-by-step shift from a monolithic design to a more flexible structure, reducing the risk and complexity of a complete system overhaul.

2. Improved Scalability: With SCS, individual components can be scaled independently based on demand, making it more efficient and cost-effective.

3. Increased Autonomy: Each SCS handles a specific business function from start to finish, enabling teams to work independently. This reduces the need for extensive coordination, enhancing productivity.

4. Technological Flexibility: Different SCS can be developed using different technologies as per their specific requirements, offering more room for innovation and adaptability.

In conclusion, Self-contained Systems (SCS) architecture offers a balanced approach, combining the simplicity of monoliths with the flexibility of microservices. For clients with legacy monolithic applications looking to modernize their systems, SCS provides a practical, scalable, and efficient solution.

References :

  1. https://scs-architecture.org/
  2. https://www.elastic.io/integration-best-practices/breaking-down-monolith-microservices-and-self-contained-systems/

--

--

Vikas Pujar
Vikas Pujar

Written by Vikas Pujar

Mainframe Modernization and Cloud Architect

Responses (1)