System Design Course
An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context.
-
Monolithic
In monolithic pattern the entire business logic is composed in one single component.
-
Layered
In the layered pattern the components are grouped into logic layers. Each request will go through the layers performing some specific tasks.
Most layered architecture consists of four tiers: presentation, business, persistence and database as follows.

Layers contribute to a performance penalty. The pattern does not lend itself to high-performance applications because it is not efficient to go through multiple layers of the architecture to fulfill a business request. The addition of layers also adds up-front cost and complexity to a system.
We should use this style for small, simple applications or websites. It is a good choice for situations with a very tight budget and time constraints.
-
SOA - Service Oriented Architecture
SOA defines a way of making components reusable via service interfaces. In this pattern each component is actually a service perfoming some specific functionality.
Also, SOA based applications are compromised of more loosely coupled components that use an Enterprise Services Bus messaging protocol to communicate between themselves.

-
Microservices Architecture
Microservices architecture is a style which allows building an application as a collection of small independent services. Each independent service is called a microservice.
Some features of microservices are
- Highly maintainable and testable
- Loosely coupled
- Independently deployable
- Organized around business capabilities i.e.. Single Resposibility principle
- Owned by a small team
Most microservices based systems have some common components.
- API gateway
- Service discovery
- Service management
