Architectural Style

Design Philosophy

Architectural Style:

  • Definition: An architectural style is a broad, high-level strategy for organizing a software system. It provides a set of principles and guidelines for structuring the system.

  • Focus: It focuses on the overall architecture approach and provides guidelines on when or when not to use a particular style.

  • Examples: Layered architecture, microservices architecture, client-server architecture, and event-driven architecture.

Architectural Style

Description

Use Case

Monolithic

A single, self-contained unit where all components are interconnected and interdependent

Suitable for simple applications or early-stage start-ups

Layered (N-Tier)

Divide the system into layers, each with specific responsibilities (e.g., presentation, business logic, data access)

Ideal for enterprise applications with a clear separation of concerns.

Microservices

Composes the application as a collection of loosely coupled services, each responsible for a specific business capability.

Suitable for large, complex applications requiring scalability and flexibility.

Event-Driven

Uses events to trigger and communicate between decoupled services.

Suitable for real-time applications like financial trading systems or IoT platforms.

Service-Oriented Architecture (SOA)

Similar to microservices it typically involves larger, more complex services that communicate over a network.

Ideal for enterprise systems requiring the integration of various services.

Client-Server

Separates the client (user interface) from the server (data storage and processing).

Suitable for web applications and networked applications.

Peer-to-Peer

Each node (peer) in the network can act as both a client and a server.

Ideal for file-sharing systems like BitTorrent.

Pipe-and-Filter

Data processing is broken down into a series of discrete steps (filters) connected by pipes.

Suitable for data processing applications like compilers.

Model-View-Controller (MVC)

Separates the application into three interconnected components: Model (data), View (UI), and Controller (business logic).

Suitable for web applications and user interface design.

Hexagonal Architecture (Ports and Adapters)

Emphasizes a core application logic that is decoupled from external systems through ports and adapters.

deal for applications requiring high maintainability and testability.

Blackboard

A common knowledge base (blackboard) is iteratively updated by a diverse group of specialized subsystems.

Suitable for complex problem-solving applications like speech recognition.