Source
Book Review
Chapter based on this article
Fundamentals of Software Architecture
Authors: Mark Richards, Neal Ford
Publisher: O'Reilly Media, 2020
Length: 432 pages
Architectural characteristics, styles (Layered, Microservices, Event-Driven) and soft skills of an architect from Mark Richards and Neal Ford.
Original
TranslatedBook structure
The book is divided into three parts, each of which covers different aspects of the architect's role:
Part I: Basics
Architectural thinking, modularity, architectural characteristics and methods for measuring them.
Part II: Architecture Styles
Layered, Pipeline, Microkernel, Service-Based, Event-Driven, Space-Based, Microservices and others.
Part III: Soft Skills
Decision making, documentation, leadership, negotiation and career development as an architect.
Article
Architectural Characteristics and Trade-offs
A detailed analysis of the characteristics of the architecture and the principles of choosing compromises
Part I: Architectural Thinking
Architecture Characteristics (ilities)
Operating
Structural
Cross-functional
Key insight: The architect must select 3-5 key characteristics for the system. Trying to optimize everything leads to “generic architecture” - a mediocre solution with no obvious advantages.
Architecture and characteristics relationship
thinking
Critical for success: the architect should choose minimum characteristics, not maximum.
Modularity and connectivity
Modularity metrics
Distance from Main Sequence
Metric for assessing the quality of a module through the balance of abstraction and stability:
D = |A + I - 1|A = Abstractness, I = Instability. The closer D is to 0, the better.
Main Sequence and risk zones
Ideal diagonal: balance between abstractness and stability. Formula: D = |A + I - 1|
Concrete and stable components (A≈0, I≈0). Hard to change because of many dependencies.
Abstract and unstable components (A≈1, I≈1). Abstractions without implementations.
Connascence Types
Part II: Architectural Styles
Monolithic architectures
Layered Architecture
- •Presentation → Business → Persistence → Database
- •Ease of understanding and development
- ⚠Sinkhole anti-pattern
Pipeline Architecture
- •Pipes and Filters pattern
- •ETL, data processing pipelines
- •Unix philosophy
Microkernel Architecture
- •Core system + plug-in components
- •IDE, browsers, Eclipse
- •Extensibility without changing the kernel
Distributed Architectures
Service-Based Architecture
The “golden mean” between monolith and microservices:
Event-Driven Architecture
Asynchronous communication through events:
Space-Based Architecture
For extreme scalability:
Microservices Architecture
Maximum service independence:
Comparison of architectural styles
| Style | Deployability | Scalability | Simplicity | Cost |
|---|---|---|---|---|
| Layered | ⭐ | ⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Service-Based | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| Event-Driven | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐ | ⭐⭐ |
| Microservices | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐ | ⭐ |
Part III: Soft Skills of an Architect
Architecture Decision Records (ADR)
Documentation of architectural decisions:
Architecture Fitness Functions
Automatic architecture compliance check:
Key insight: An architect is not only a technical specialist, but also a leader, negotiator and communicator. 50% of an architect’s success is the ability to explain and “sell” their solution to stakeholders.
Application to System Design Interview
What to use in an interview
- •Architecture Characteristics: explicitly name the selected characteristics and trade-offs
- •Architectural styles: justify your choice of style (Event-Driven vs Service-Based)
- •Trade-off analysis: show an understanding of the trade-offs
- •ADR approach: structure the explanation as Context → Decision → Consequences
Common mistakes
- •Choosing microservices “by default” without justification
- •Ignoring operational characteristics (functional requirements only)
- •Absence of explicit trade-offs in the solution
- •Over-engineering for simple tasks
Continuation
Building Evolutionary Architectures
Next book in the series: Fitness Functions, Connascence and the Evolution of Architecture
Verdict
Fundamentals of Software Architecture is a must-read for anyone who wants to understand the architect's role in a holistic way. The classification of architectural styles with a clear analysis of trade-offs is especially valuable. For the System Design Interview, the book provides an excellent framework for structuring answers and justifying decisions. Recommended after studying basic books on System Design.
