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 11: Pipeline Architecture Style
Key Insight 2 from this chapter

Pipeline Architecture Characteristics and Trade-offs

Key Insight

The pipeline architecture style is characterized as technically partitioned, with application logic divided among producer, tester, transformer, and consumer filter types. Due to its typical implementation as a monolithic deployment, the architectural quantum is always one. Its primary strengths lie in overall cost and simplicity; being monolithic, it avoids the complexities of distributed architectures, making it easy to understand and relatively inexpensive to build and maintain. A key advantage is architectural modularity, achieved through the clear separation of concerns among the various filter types, allowing individual filters to be modified or replaced without affecting others.

Deployability and testability in pipeline architectures are considered average, though they rate slightly higher than layered architectures due to the modularity filters provide. However, as a monolith, it is still impacted by factors such as deployment ceremony, risk, frequency, and the thoroughness required for testing. Overall reliability is rated medium (three stars). This is partly due to the absence of network traffic, bandwidth, and latency issues common in distributed systems. Nevertheless, its monolithic deployment nature, combined with inherent testability and deployability challenges, means the entire application must be tested and deployed for any given change, limiting its reliability score.

Significant weaknesses for pipeline architectures include very low ratings (one star) for elasticity and scalability, primarily stemming from their monolithic deployments. While complex design techniques like multithreading, internal messaging, or parallel processing can attempt to scale specific functions within a monolith, this architecture is not well-suited for such efforts. Functionality is constrained by a single system quantum, encompassing monolithic user interfaces, backend processing, and databases, limiting overall scalability. Furthermore, fault tolerance is not supported; an issue in one small part, such as an out-of-memory condition, impacts and crashes the entire application unit. This also contributes to high mean time to recovery (MTTR), affecting availability, with startup times ranging from 2 minutes for smaller applications to over 15 minutes for larger ones.

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