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 archite...

Full description

Bibliographic Details
Main Author: Ford, Neal
Other Authors: Parsons, Rebecca, Kua, Patrick
Format: eBook
Language:English
Published: Sebastopol. CA O'Reilly Media 2017
Subjects:
Online Access:
Collection: O'Reilly - Collection details see MPG.ReNa
Table of Contents:
  • 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
  • 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
  • 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