Agile architecture refers to architecture practices that embrace agile principles and values, which support the continuous delivery of software services and help to align architects with DevOps teams. It does not imply specific architecture models or reference architectures.
To support the continuous flow of value through the continuous delivery pipeline, agile architecture:
The agile architecture supports agile development practices through collaboration, emergent design, intentional architecture, and design simplicity. Like agile development practices, agile architecture also enables designing for testability, deployability, and releasability. It is further supported by rapid prototyping, domain modeling, and decentralized innovation.
Three primary aspects of building and maintaining architectures that support constant change include:
An architectural fitness function provides an objective integrity assessment of some architectural characteristic(s).
An evolutionary architecture supports guided, incremental change across multiple dimensions. Incremental change describes two aspects of software architecture: how teams build software incrementally and how they deploy it. Guided change means, once architects have chosen important characteristics, they want to guide changes to the architecture to protect those characteristics.
Evolutionary architecture focuses on appropriate coupling—how to identify which dimensions of the architecture should be coupled to provide maximum benefit with minimal overhead and cost.
Read more about evolutionary architecture in Chapter 1. Software Architecture, from "Building Evolutionary Architectures," by Neal Ford, Rebecca Parsons, and Patrick Kua. Published by O'Reilly Media, Inc. Copyright © 2017 Neal Ford, Rebecca Parsons, and Patrick Kua.