Self-Contained Applications (SCAs)

Abayomi S
Abayomi S
Nov 3 · 2 min read

The arrangement of software components is a major factor that impacts the maintainability of software applications. Making a choice of what software architecture to use can be based on factors such as the estimated size of the application, available resources, developer skillsets etc.

Software architecture comprises the composition of software elements, relations among the elements, as well as the properties of both the elements and the relations. Monolithic, Layered and Microservice architectures are the 3 commonly used software architecture.

Monolithic Architecture: refers to an arrangement where all of the parts — views, business logic, database access etc. are in one system horizontally sliced, usually with a centralized infrastructure.

Layered Architecture: refers to an arrangement consisting of various layers, each of which corresponds to a different service or integration.

Microservices Architecture : refers to an arrangement that breaks the monolith into smaller and specific components each of which usually handles a single responsibility.

Whether you are creating a new application or embarking on a grand-redesign of an existing application, the concept of Self-contained applications can help you arrive at a solution that is quick and easy to maintain, replace and deploy.

Self-Contained Applications (SCAs): are somewhat similar to microservices applications which breaks a monolithic application into many smaller independent parts. But unlike microservices, SCAs break a monolithic application down into autonomous, replaceable applications (Applets).

Characteristics of Self-Contained Applications

  • They are typically larger than microservices applications
  • SCAs are easily replaceable
  • SCAs have self-contained infrastructures
  • Independent deployments/debugging
  • SCAs have autonomous UI, business logic and data storage

Advantages of SCAs

  • A complex monolithic application can be broken down into multiple SCAs
  • Each of the SCAs can be built with different languages and databases
  • Each of the SCAs are immediately ready for integration and testing,
  • Each of the SCAs are also easier to define, estimate, and test.
  • SCAs contain their own server resources, databases, and code repositories.
  • SCA is a perfect intermediary step between a complex monolithic application and microservices application.

Disadvantages

  • SCAs can become too big and bulky over time and would need to be further broken down
  • SCAs requires managing multiple infrastructures
  • Developing SCAs also requires developers with cross-functional skillsets

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade