Back to System Design Course

System Design Course

An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context.

  1. Monolithic

    In monolithic pattern the entire business logic is composed in one single component.

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

    screenshot of the app

    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.

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

    screenshot of the app

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

    screenshot of the app