Building Evolutionary Architectures: Automated Software Governance, 2nd Edition
- Length: 262 pages
- Edition: 2
- Language: English
- Publisher: O'Reilly Media
- Publication Date: 2022-12-27
- ISBN-10: 1492097543
- ISBN-13: 9781492097549
- Sales Rank: #154510 (See Top 100 Books)
The software development ecosystem is constantly changing, providing a constant stream of new tools, frameworks, techniques, and paradigms. Over the past few years, incremental developments in core engineering practices for software development have created the foundations for rethinking how architecture changes over time, along with ways to protect important architectural characteristics as it evolves. This practical guide ties those parts together with a new way to think about architecture and time.
Foreword to the First Edition Foreword to the Second Edition Preface The Structure of This Book Case Studies and PenultimateWidgets Conventions Used in This Book Using Code Examples O’Reilly Online Learning How to Contact Us Additional Information Acknowledgments I. Mechanics 1. Evolving Software Architecture The Challenges of Evolving Software Evolutionary Architecture Guided Change Incremental Change Multiple Architectural Dimensions How Is Long-Term Planning Possible When Everything Changes All the Time? Once I’ve Built an Architecture, How Can I Prevent It from Degrading Over Time? Why Evolutionary? Summary 2. Fitness Functions What Is a Fitness Function? Categories Scope: Atomic Versus Holistic Cadence: Triggered Versus Continual Versus Temporal Case Study: Triggered or Continuous? Result: Static Versus Dynamic Invocation: Automated Versus Manual Proactivity: Intentional Versus Emergent Coverage: Domain-Specific Fitness Functions? Who Writes Fitness Functions? Where Is My Fitness Function Testing Framework? Outcomes Versus Implementations Summary 3. Engineering Incremental Change Incremental Change Deployment Pipelines Case Study: Adding Fitness Functions to PenultimateWidgets’ Invoicing Service Case Study: Validating API Consistency in an Automated Build Summary 4. Automating Architectural Governance Fitness Functions as Architectural Governance Code-Based Fitness Functions Afferent and Efferent Coupling Abstractness, Instability, and Distance from the Main Sequence Directionality of Imports Cyclomatic Complexity and “Herding” Governance Turnkey Tools Legality of Open Source Libraries A11y and Other Supported Architecture Characteristics ArchUnit Linters for Code Governance Case Study: Availability Fitness Function Case Study: Load-Testing Along with Canary Releases Case Study: What to Port? Fitness Functions You’re Already Using Integration Architecture Communication Governance in Microservices Case Study: Choosing How to Implement a Fitness Function DevOps Enterprise Architecture Case Study: Architectural Restructuring While Deploying 60 Times per Day Fidelity Fitness Functions Fitness Functions as a Checklist, Not a Stick Documenting Fitness Functions Summary II. Structure 5. Evolutionary Architecture Topologies Evolvable Architecture Structure Connascence Connascence Intersection with Bounded Context Architectural Quanta and Granularity Independently Deployable High Functional Cohesion High Static Coupling Dynamic Quantum Coupling Contracts Case Study: Microservices as an Evolutionary Architecture Reuse Patterns Effective Reuse = Abstraction + Low Volatility Sidecars and Service Mesh: Orthogonal Operational Coupling Data Mesh: Orthogonal Data Coupling Summary 6. Evolutionary Data Evolutionary Database Design Evolving Schemas Shared Database Integration Inappropriate Data Entanglement Two-Phase Commit Transactions Age and Quality of Data Case Study: Evolving PenultimateWidgets’ Routing From Native to Fitness Function Referential Integrity Data Duplication Replacing Triggers and Stored Procedures Case Study: Evolving from Relational to Nonrelational Summary III. Impact 7. Building Evolvable Architectures Principles of Evolutionary Architecture Last Responsible Moment Architect and Develop for Evolvability Postel’s Law Architect for Testability Conway’s Law Mechanics Step 1: Identify Dimensions Affected by Evolution Step 2: Define Fitness Function(s) for Each Dimension Step 3: Use Deployment Pipelines to Automate Fitness Functions Greenfield Projects Retrofitting Existing Architectures Appropriate Coupling and Cohesion COTS Implications Migrating Architectures Migration Steps Evolving Module Interactions Guidelines for Building Evolutionary Architectures Remove Needless Variability Make Decisions Reversible Prefer Evolvable over Predictable Build Anticorruption Layers Build Sacrificial Architectures Mitigate External Change Updating Libraries Versus Frameworks Version Services Internally Case Study: Evolving PenultimateWidgets’ Ratings Fitness Function-Driven Architecture Summary 8. Evolutionary Architecture Pitfalls and Antipatterns Technical Architecture Antipattern: Last 10% Trap and Low Code/No Code Case Study: Reuse at PenultimateWidgets Antipattern: Vendor King Pitfall: Leaky Abstractions Pitfall: Resume-Driven Development Incremental Change Antipattern: Inappropriate Governance Case Study: “Just Enough” Governance at PenultimateWidgets Pitfall: Lack of Speed to Release Business Concerns Pitfall: Product Customization Antipattern: Reporting Atop the System of Record Pitfall: Excessively Long Planning Horizons Summary 9. Putting Evolutionary Architecture into Practice Organizational Factors Don’t Fight Conway’s Law Culture Culture of Experimentation CFO and Budgeting The Business Case Hypothesis- and Data-Driven Development Fitness Functions as Experimental Media Building Enterprise Fitness Functions Case Study: Zero-Day Security Vulnerability Carving Out Bounded Contexts Within Existing Integration Architecture Where Do You Start? Low-Hanging Fruit Highest Value First Testing Infrastructure Case Study: Enterprise Architecture at PenultimateWidgets Future State? Fitness Functions Using AI Generative Testing Why (or Why Not)? Why Should a Company Decide to Build an Evolutionary Architecture? Why Would a Company Choose Not to Build an Evolutionary Architecture? Summary Index About the Authors
Donate to keep this site alive
How to download source code?
1. Go to: https://www.oreilly.com/
2. Search the book title: Building Evolutionary Architectures: Automated Software Governance, 2nd Edition
, sometime you may not get the results, please search the main title
3. Click the book title in the search results
3. Publisher resources
section, click Download Example Code
.
1. Disable the AdBlock plugin. Otherwise, you may not get any links.
2. Solve the CAPTCHA.
3. Click download link.
4. Lead to download server to download.