Front cover image for Building evolutionary architectures : support constant change

Building evolutionary architectures : support constant change

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
eBook, English, 2017
O'Reilly Media, Sebastopol. CA, 2017
1 online resource (xi, 174 pages) : illustrations (some color)
9781491986691, 9781491986325, 9781491986356, 1491986697, 1491986328, 1491986352
1004556397
Print version:
Cover; Copyright; Table of Contents; Foreword; Preface; Conventions Used in This Book; O'Reilly Safari; How to Contact Us; Additional Information; Acknowledgments; Chapter 1. Software Architecture; Evolutionary Architecture; How Is Long-term Planning Possible When Everything Changes All the Time?; Once I've Built an Architecture, How Can I Prevent It from Gradually Degrading Over Time?; Incremental Change; Guided Change; Multiple Architectural Dimensions; Conway's Law; Why Evolutionary?; Summary; Chapter 2. Fitness Functions; What is a Fitness Function?; Categories; Atomic Versus Holistic. Triggered Versus ContinualStatic Versus Dynamic; Automated Versus Manual; Temporal; Intentional Over Emergent; Domain-specific; Identify Fitness Functions Early; Review Fitness Functions; Chapter 3. Engineering Incremental Change; Building Blocks; Testable; Deployment Pipelines; Combining Fitness Function Categories; Case Study: Architectural Restructuring while Deploying 60 Times/Day; Conflicting Goals; Case Study: Adding Fitness Functions to PenultimateWidgets' Invoicing Service; Hypothesis- and Data-Driven Development; Case Study: What to Port?; Chapter 4. Architectural Coupling. ModularityArchitectural Quanta and Granularity; Evolvability of Architectural Styles; Big Ball of Mud; Monoliths; Event-Driven Architectures; Service-Oriented Architectures; "Serverless" Architectures; Controlling Quantum Size; Case Study: Guarding Against Component Cycles; Chapter 5. Evolutionary Data; Evolutionary Database Design; Evolving Schemas; Shared Database Integration; Inappropriate Data Coupling; Two-Phase Commit Transactions; Age and Quality of Data; Case Study: Evolving PenultimateWidgets' Routing; Chapter 6. Building Evolvable Architectures; Mechanics. 1. Identify Dimensions Affected by Evolution2. Define Fitness Function(s) for Each Dimension; 3. Use Deployment Pipelines to Automate Fitness Functions; Greenfield Projects; Retrofitting Existing Architectures; Appropriate Coupling and Cohesion; Engineering Practices; Fitness Functions; 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; Case Study: Service Templates. Build Sacrificial ArchitecturesMitigate External Change; Updating Libraries Versus Frameworks; Prefer Continuous Delivery to Snapshots; Version Services Internally; Case Study: Evolving PenultimateWidgets' Ratings; Chapter 7. Evolutionary Architecture Pitfalls and Antipatterns; Technical Architecture; Antipattern: Vendor King; Pitfall: Leaky Abstractions; Antipattern: Last 10% Trap; Antipattern: Code Reuse Abuse; Case Study: Reuse at PenultimateWidgets; Pitfall: Resume-Driven Development; Incremental Change; Antipattern: Inappropriate Governance
Includes index