
Fundamentals of Software Architecture. 2nd Edition (ebook)



Fundamentals of Software Architecture. 2nd Edition (ebook) - Najlepsze oferty
Fundamentals of Software Architecture. 2nd Edition (ebook) - Opis
Salary surveys worldwide regularly place software architect in the top 10 best jobs, yet no real guide exists to help developers become architects. Until now. This updated edition provides a comprehensive overview of software architecture's many aspects, with five new chapters covering the latest insights from the field. Aspiring and existing architects alike will examine architectural characteristics, architectural patterns, component determination, diagramming architecture, governance, data, generative AI, team topologies, and many other topics.Mark Richards and Neal Ford-hands-on practitioners who have taught software architecture classes professionally for years-focus on architecture principles that apply across all technology stacks. You'll explore software architecture in a modern light, taking into account all the innovations of the past decade.
This book examines:Architecture styles and patterns: Microservices, modular monoliths, microkernels, layered architectures, and many moreComponents: Identification, coupling, cohesion, partitioning, and granularitySoft skills: Effective team management, collaboration, business engagement models, negotiation, presentations, and moreModernity: Engineering practices and operational approaches that have changed radically in the past few years, including cloud considerations and generative AIArchitecture as an engineering discipline: Repeatable results, metrics, and concrete valuations that add rigor to software architecture Spis treści:
Preface
Preface to the Second Edition
Preface to the First (...) więcej Edition
Conventions Used in This Book
Supplemental Material
OReilly Online Learning
How to Contact Us
Acknowledgments
Acknowledgments from Mark Richards
Acknowledgments from Neal Ford
1. Introduction
Defining Software Architecture
Laws of Software Architecture
Expectations of an Architect
Make Architecture Decisions
Continually Analyze the Architecture
Keep Current with Latest Trends
Ensure Compliance with Decisions
Understand Diverse Technologies
Know the Business Domain
Possess Interpersonal Skills
Understand and Navigate Politics
Roadmap
I. Foundations
2. Architectural Thinking
Architecture Versus Design
Strategic Versus Tactical Decisions
Level of Effort
The Significance of Trade-Offs
Technical Breadth
The 20-Minute Rule
Developing a Personal Radar
The Thoughtworks Technology Radar
Parts
Rings
Analyzing Trade-Offs
Understanding Business Drivers
Balancing Architecture and Hands-On Coding
Theres More to Architectural Thinking
3. Modularity
Modularity Versus Granularity
Defining Modularity
Measuring Modularity
Cohesion
Coupling
Core Metrics
Distance from the Main Sequence
Connascence
Static connascence
Dynamic connascence
Connascence properties
From Modules to Components
4. Architectural Characteristics Defined
Architectural Characteristics and System Design
Architectural Characteristics (Partially) Listed
Operational Architectural Characteristics
Structural Architectural Characteristics
Cloud Characteristics
Cross-Cutting Architectural Characteristics
Trade-Offs and Least Worst Architecture
5. Identifying Architectural Characteristics
Extracting Architectural Characteristics
from Domain Concerns
Composite Architectural Characteristics
Extracting Architectural Characteristics
Working with Katas
Kata: Silicon Sandwiches
Explicit Characteristics
Implicit Characteristics
Limiting and Prioritizing Architectural Characteristics
6. Measuring and Governing
Architecture Characteristics
Measuring Architecture Characteristics
Operational Measures
Structural Measures
Process Measures
Governance and Fitness Functions
Governing Architecture Characteristics
Fitness Functions
Cyclic dependencies
Distance from the Main Sequence fitness function
7. The Scope of Architectural Characteristics
Architectural Quanta and Granularity
Synchronous Communication
The Impact of Scoping
Scoping and Architectural Style
Kata: Going Green
Scoping and the Cloud
8. Component-Based Thinking
Defining Logical Components
Logical Versus Physical Architecture
Creating a Logical Architecture
Identifying Core Components
The Workflow approach
The Actor/Action approach
The Entity Trap
Assigning User Stories to Components
Analyzing Roles and Responsibilities
Analyzing Architectural Characteristics
Restructuring Components
Component Coupling
Static Coupling
Temporal Coupling
The Law of Demeter
Case Study: Going, Going, GoneDiscovering Components
II. Architecture Styles
9. Foundations
Styles Versus Patterns
Fundamental Patterns
Big Ball of Mud
Unitary Architecture
Client/Server
Desktop and database server
Browser and web server
Single-page JavaScript applications
Three-tier
Architecture Partitioning
Kata: Silicon SandwichesPartitioning
Domain partitioning
Technical partitioning
Monolithic Versus Distributed Architectures
Fallacy #1: The Network Is Reliable
Fallacy #2: Latency Is Zero
Fallacy #3: Bandwidth Is Infinite
Fallacy #4: The Network Is Secure
Fallacy #5: The Topology Never Changes
Fallacy #6: There Is Only One Administrator
Fallacy #7: Transport Cost Is Zero
Fallacy #8: The Network Is Homogeneous
The Other Fallacies
Fallacy #9. Versioning is easy
Fallacy #10. Compensating updates always work
Fallacy #11. Observability is optional (for distributed architectures)
Team Topologies and Architecture
On to Specific Styles
10. Layered Architecture Style
Topology
Style Specifics
Layers of Isolation
Adding Layers
Data Topologies
Cloud Considerations
Common Risks
Governance
Team Topology Considerations
Style Characteristics
When to Use
When Not to Use
Examples and Use Cases
11. The Modular Monolith Architecture Style
Topology
Style Specifics
Monolithic Structure
Modular Structure
Module Communication
Peer-to-peer approach
Mediator approach
Data Topologies
Cloud Considerations
Common Risks
Governance
Team Topology Considerations
Style Characteristics
When to Use
When Not to Use
Examples and Use Cases
12. Pipeline Architecture Style
Topology
Style Specifics
Filters
Pipes
Data Topologies
Cloud Considerations
Common Risks
Governance
Team Topology Considerations
Style Characteristics
When to Use
When Not to Use
Examples and Use Cases
13. Microkernel Architecture Style
Topology
Style Specifics
Core System
Plug-In Components
The Spectrum of Microkern-ality
Registry
Contracts
Data Topologies
Cloud Considerations
Common Risks
Volatile Core
Plug-In Dependencies
Governance
Team Topology Considerations
Architecture Characteristics Ratings
Examples and Use Cases
14. Service-Based Architecture Style
Topology
Style Specifics
Service Design and Granularity
User Interface Options
API Gateway Options
Data Topologies
Cloud Considerations
Common Risks
Governance
Team Topology Considerations
Style Characteristics
Examples and Use Cases
15. Event-Driven Architecture Style
Topology
Style Specifics
Events Versus Messages
Derived Events
Triggering Extensible Events
Asynchronous Capabilities
Broadcast Capabilities
Event Payload
Data-based event payloads
Key-based event payload
Trade-off summary
Anemic events
The Swarm of Gnats Antipattern
Error Handling
Preventing Data Loss
Request-Reply Processing
Mediated Event-Driven Architecture
Data Topologies
Monolithic Database Topology
Domain Database Topology
Dedicated Data Topology
Cloud Considerations
Common Risks
Governance
Team Topology Considerations
Style Characteristics
Choosing Between Request-Based and Event-Based Models
Examples and Use Cases
16. Space-Based Architecture Style
Topology
Style Specifics
Processing Unit
Virtualized Middleware
Messaging Grid
Data Grid
Replicated and distributed caching
Near-cache considerations
Processing Grid
Deployment Manager
Data Pumps
Data Writers
Data Readers
Data Topologies
Cloud Considerations
Common Risks
Frequent Reads from the Database
Data Synchronization and Consistency
High Data Volumes
Data Collisions
Governance
Team Topology Considerations
Style Characteristics
Examples and Use Cases
Concert Ticketing System
Online Auction System
17. Orchestration-Driven
Service-Oriented Architecture
Topology
Style Specifics
Taxonomy
Business services
Enterprise services
Application services
Infrastructure services
Orchestration engine and message bus
Message flow
Reuseand Coupling
Data Topologies
Cloud Considerations
Common Risks
Governance
Team Topology Considerations
Style Characteristics
Examples and Use Cases
18. Microservices Architecture
Topology
Style Specifics
Bounded Context
Granularity
Data Isolation
API Layer
Operational Reuse
Frontends
Communication
Choreography and Orchestration
Transactions and Sagas
Data Topologies
Cloud Considerations
Common Risks
Governance
Team Topology Considerations
Style Characteristics
Examples and Use Cases
19. Choosing the Appropriate
Architecture Style
Shifting Fashion in Architecture
Decision Criteria
Monolith Case Study: Silicon Sandwiches
Modular Monolith
Microkernel
Distributed Case Study: Going, Going, Gone
20. Architectural Patterns
Reuse
Separating Domain and Operational Coupling
Hexagonal architecture
Service Mesh
Communication
Orchestration Versus Choreography
CQRS
Infrastructure
Broker-Domain Pattern
III. Techniques and Soft Skills
21. Architectural Decisions
Architectural Decision Antipatterns
The Covering Your Assets Antipattern
Groundhog Day Antipattern
Email-Driven Architecture Antipattern
Architectural Significance
Architectural Decision Records
Basic Structure
Title
Status
Context
Decision
Consequences
Compliance
Notes
Example
Storing ADRs
ADRs as Documentation
Using ADRs for Standards
Using ADRs with Existing Systems
Leveraging Generative AI and LLMs in Architectural Decisions
22. Analyzing Architecture Risk
Risk Matrix
Risk Assessments
Risk Storming
Phase 1: Identification
Phase 2: Consensus
Phase 3: Risk Mitigation
User-Story Risk Analysis
Risk-Storming Use Case
Availability
Elasticity
Security
Summary
23. Diagramming Architecture
Diagramming
Tools
Diagramming Standards: UML, C4, and ArchiMate
UML
C4
ArchiMate
Diagram Guidelines
Titles
Lines
Shapes
Labels
Color
Keys
Summary
24. Making Teams Effective
Collaboration
Constraints and Boundaries
Architect Personalities
The Control-Freak Architect
The Armchair Architect
The Effective Architect
How Much Involvement?
Team Warning Signs
Process Loss
Pluralistic Ignorance
Leveraging Checklists
Developer Code-Completion Checklist
Unit and Functional Testing Checklist
Software-Release Checklist
Providing Guidance
Summary
25. Negotiation and Leadership Skills
Negotiation and Facilitation
Negotiating with Business Stakeholders
Negotiating with Other Architects
Negotiating with Developers
The Software Architect as a Leader
The 4 Cs of Architecture
Be Pragmatic, Yet Visionary
Leading Teams by Example
Integrating with the Development Team
Summary
26. Architectural Intersections
Architecture and Implementation
Operational Concerns
Structural Integrity
Architectural Constraints
Architecture and Infrastructure
Architecture and Data Topologies
Database Topology
Architectural Characteristics
Data Structure
Read/Write Priority
Architecture and Engineering Practices
Architecture and Team Topologies
Architecture and Systems Integration
Architecture and the Enterprise
Architecture and the Business Environment
Architecture and Generative AI
Incorporating Generative AI into Architecture
Generative AI as an Architect Assistant
Summary
27. The Laws of Software Architecture, Revisited
First Law: Everything in Software Architecture
Is a Trade-Off
Shared Library Versus Shared Service
Synchronous Versus Asynchronous Messaging
First Corollary: Missing Trade-Offs
Second Corollary: You Cant Do It Just Once
Second Law: Why Is More Important Than How
Out of Context Antipattern
The Spectrum Between Extremes
Parting Words of Advice
Discussion Questions
Chapter 1: Introduction
Chapter 2: Architectural Thinking
Chapter 3: Modularity
Chapter 4: Architecture Characteristics Defined
Chapter 5: Identifying Architectural Characteristics
Chapter 6: Measuring and Governing Architecture Characteristics
Chapter 7: The Scope of Architectural Characteristics
Chapter 8: Component-Based Thinking
Chapter 9: Foundations
Chapter 10: Layered Architecture Style
Chapter 11: Modular Monolith Architecture Style
Chapter 12: Pipeline Architecture Style
Chapter 13: Microkernel Architecture Style
Chapter 14: Service-Based Architecture Style
Chapter 15: Event-Driven Architecture Style
Chapter 16: Space-Based Architecture Style
Chapter 17: Orchestration-Driven Service-Oriented Architecture
Chapter 18: Microservices Architecture
Chapter 19: Choosing the Appropriate Architecture Style
Chapter 20: Architectural Patterns
Chapter 21: Architectural Decisions
Chapter 22: Analyzing Architecture Risk
Chapter 23: Diagramming Architecture
Chapter 24: Making Teams Effective
Chapter 25: Negotiation and Leadership Skills
Chapter 26: Architectural Intersections
Chapter 27: The Laws of Software Architecture, Revisited
Index mniej
Fundamentals of Software Architecture. 2nd Edition (ebook) - Opinie i recenzje
Na liście znajdują się opinie, które zostały zweryfikowane (potwierdzone zakupem) i oznaczone są one zielonym znakiem Zaufanych Opinii. Opinie niezweryfikowane nie posiadają wskazanego oznaczenia.