Overview of Common Software Architecture Patterns
This article introduces seven widely used software architecture patterns—layered, multi‑layer, pipe‑filter, client‑server, MVC, event‑driven, and microservices—explaining their context, problems they address, core solutions, drawbacks, and typical application scenarios.
Software architecture patterns provide reusable solutions to recurring design problems within a specific context.
Layered Architecture is the classic n‑tier model typically consisting of presentation, business, persistence, and database layers. It promotes separation of concerns, but can introduce performance overhead and higher initial complexity, making it suitable for small to medium‑sized applications.
Multi‑Layer Architecture extends the layered concept by grouping related components into logical layers, often illustrated with a consumer‑website example. It helps organize large systems but adds upfront cost and complexity.
Pipe‑Filter Architecture processes data through a series of independent filters connected by pipelines. Typical components include source (producer), map (transformer), reduce (tester), and sink (consumer). It excels at stream‑oriented tasks such as ETL or compilers, yet may suffer from performance penalties and increased parsing complexity.
Client‑Server Architecture separates request‑originating clients from service‑providing servers. Clients send requests and await replies, while servers process requests and respond. This model can become a performance bottleneck and single point of failure, making it appropriate for web‑based services like email or banking.
Model‑View‑Controller (MVC) divides an application into Model (data), View (UI), and Controller (mediator). It facilitates independent evolution of UI and business logic, but may be overkill for simple interfaces and not fit all UI toolkits.
Event‑Driven Architecture handles asynchronous events by routing them through queues and dedicated processors. Events such as OrderCreated trigger downstream actions, e.g., credit reservation or limit exceeded ( CreditLimitExceeded ). While highly scalable, it can face challenges in performance and error recovery.
Microservices Architecture decomposes a system into independently deployable services, each with its own API and data store. This improves scalability and allows heterogeneous technology stacks, but introduces operational overhead, monitoring complexity, and higher costs.
Architecture Digest
Focusing on Java backend development, covering application architecture from top-tier internet companies (high availability, high performance, high stability), big data, machine learning, Java architecture, and other popular fields.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.