Preface: Invalidating Axioms
1. Introduction
Defining Software Architecture
Expectations of an Architect
Intersection of Architecture and…
Laws of Software Architecture
I. Foundations
2. Architectural Thinking
Architecture Versus Design
Technical Breadth
Analyzing Trade-Offs
Understanding Business Drivers
Balancing Architecture and Hands-On Coding
3. Modularity
Definition
Measuring Modularity
From Modules to Components
4. Architecture Characteristics Defined
Architectural Characteristics (Partially) Listed
Trade-Offs and Least Worst Architecture
5. Identifying Architectural Characteristics
Extracting Architecture Characteristics from Domain Concerns
Extracting Architecture Characteristics from Requirements
Case Study: Silicon Sandwiches
6. Measuring and Governing Architecture Characteristics
Measuring Architecture Characteristics
Governance and Fitness Functions
7. Scope of Architecture Characteristics
Coupling and Connascence
Architectural Quanta and Granularity
8. Component-Based Thinking
Component Scope
Architect Role
Developer Role
Component Identification Flow
Component Granularity
Component Design
Case Study: Going, Going, Gone: Discovering Components
Architecture Quantum Redux: Choosing Between Monolithic Versus Distributed Architectures
II. Architecture Styles
9. Foundations
Fundamental Patterns
Monolithic Versus Distributed Architectures
10. Layered Architecture Style
Topology
Layers of Isolation
Adding Layers
Other Considerations
Why Use This Architecture Style
Architecture Characteristics Ratings
11. Pipeline Architecture Style
Topology
Example
Architecture Characteristics Ratings
12. Microkernel Architecture Style
Topology
Registry
Contracts
Examples and Use Cases
Architecture Characteristics Ratings
13. Service-Based Architecture Style
Topology
Topology Variants
Service Design and Granularity
Database Partitioning
Example Architecture
Architecture Characteristics Ratings
When to Use This Architecture Style
14. Event-Driven Architecture Style
Topology
Broker Topology
Mediator Topology
Asynchronous Capabilities
Error Handling
Preventing Data Loss
Broadcast Capabilities
Request-Reply
Choosing Between Request-Based and Event-Based
Hybrid Event-Driven Architectures
Architecture Characteristics Ratings
15. Space-Based Architecture Style
General Topology
Data Collisions
Cloud Versus On-Premises Implementations
Replicated Versus Distributed Caching
Near-Cache Considerations
Implementation Examples
Architecture Characteristics Ratings
16. Orchestration-Driven Service-Oriented Architecture
History and Philosophy
Topology
Taxonomy
Reuse…and Coupling
Architecture Characteristics Ratings
17. Microservices Architecture
History
Topology
Distributed
Bounded Context
Granularity
API Layer
Operational Reuse
Frontends
Communication
Architecture Characteristics Ratings
Additional References
18. Choosing the Appropriate Architecture Style
Shifting “Fashion” in Architecture
Decision Criteria
Monolith Case Study: Silicon Sandwiches
Distributed Case Study: Going, Going, Gone
III. Techniques and Soft Skills
19. Architecture Decisions
Architecture Decision Anti-Patterns
Architecturally Significant
Architecture Decision Records
20. Analyzing Architecture Risk
Risk Matrix
Risk Assessments
Risk Storming
Agile Story Risk Analysis
Risk Storming Examples
21. Diagramming and Presenting Architecture
Diagramming
Presenting
22. Making Teams Effective
Team Boundaries
Architect Personalities
How Much Control?
Team Warning Signs
Leveraging Checklists
Providing Guidance
Summary
23. Negotiation and Leadership Skills
Negotiation and Facilitation
The Software Architect as a Leader
Integrating with the Development Team
Summary
24. Developing a Career Path
The 20-Minute Rule
Developing a Personal Radar
Using Social Media
Parting Words of Advice
Appendix. Self-Assessment Questions
Index