Cover of Fundamentals of Software Architecture by Mark Richards, Neal Ford - Business and Economics Book

From "Fundamentals of Software Architecture"

Author: Mark Richards, Neal Ford
Publisher: O'Reilly Media
Year: 2020
Category: Computers

๐ŸŽง Free Preview Complete

You've listened to your free 10-minute preview.
Sign up free to continue listening to the full summary.

๐ŸŽง Listen to Summary

Free 10-min Preview
0:00
Speed:
10:00 free remaining
Chapter 10: Layered Architecture Style
Key Insight 1 from this chapter

Definition and Fundamental Concepts of Layered Architecture

Key Insight

The layered architecture, also known as the n-tiered architecture style, is a prevalent and often default choice for applications due to its inherent simplicity, familiarity among developers, and low implementation cost. Its natural fit with organizational structures, as described by Conway's lawโ€”where teams for user interface (UI), backend, rules, and databases mirror architectural tiersโ€”further contributes to its widespread adoption in business applications. This style is frequently implemented even when no explicit architectural decision has been made, often resulting from teams 'just starting coding,' leading to anti-patterns such as 'architecture by implication' or 'accidental architecture'.

Components within this architecture are logically organized into horizontal layers, each assigned a specific functional role like presentation logic or business logic. While adaptable in terms of layer count, most layered architectures feature four standard layers: presentation, business, persistence, and database. For smaller applications, the business and persistence layers might merge into a single business layer, resulting in three layers, whereas more complex applications can utilize five or more layers. Deployment configurations vary, with one common variant combining presentation, business, and persistence into a single deployment unit while the database remains external; another separates the presentation layer into its own unit, combining business and persistence, also with an external database; a third variant integrates all four standard layers, including an embedded or in-memory database, into a single deployment, particularly useful for smaller applications and on-premises products.

A key principle of layered architecture is 'separation of concerns,' where each layer possesses distinct responsibilities; for instance, the presentation layer manages UI and browser communication, while the business layer executes specific business rules. This creates an abstraction: the presentation layer only needs to display customer data without understanding its retrieval mechanism, and the business layer processes data from the persistence layer without concern for display formatting or data origin. Although this technical partitioning by role (e.g., presentation logic, business logic) enables developers to leverage specialized expertise, it leads to a lack of overall agility. Business domains, such as 'customer,' become fragmented across multiple layers (presentation, business, rules, services, database), complicating changes to that domain and making the style less suitable for a domain-driven design approach.

๐Ÿ“š Continue Your Learning Journey โ€” No Payment Required

Access the complete Fundamentals of Software Architecture summary with audio narration, key takeaways, and actionable insights from Mark Richards, Neal Ford.