“Even if the ecosystem doesn’t change, what about the gradual erosion of architectural characteristics that occurs? Architects design architectures, but then expose them to the messy real world of implementing things atop the architecture. How can architects protect the important parts they have defined?” Software EngineeringSoftware Architecture Book:Building Evolutionary Architectures: Support Constant Change Source: Building Evolutionary Architectures: Support Constant Change
“All too often architects make a decision that is the correct decision at the time but becomes a bad decision over time because of changing conditions like dynamic equilibrium. For example, architects design a system as a desktop application, yet the industry herds them toward a web application as users’ habits change. The original decision wasn’t incorrect, but the ecosystem shifted in unexpected ways.” Software Architecture Book:Building Evolutionary Architectures: Support Constant Change Source: Building Evolutionary Architectures: Support Constant Change
“For any dimension in our architecture that requires protection from the side effects of evolution, we create fitness functions. A common practice in microservices architectures is the use of consumer-driven contracts, which are atomic integration architecture fitness functions.” Software Architecture Book:Building Evolutionary Architectures: Support Constant Change Source: Building Evolutionary Architectures: Support Constant Change
“The other new role that evolutionary architecture creates has enterprise architects defining enterprise-wide fitness functions. Enterprise architects are typically responsible for enterprise-wide nonfunctional requirements, such as scalability and security. Many organizations lack the ability to automatically assess how well projects perform individually and in aggregate for these characteristics. Once projects adopt fitness functions to protect parts of their architecture, enterprise architects can utilize the same mechanism to verify that enterprise-wide characteristics remain intact.” Software Architecture Book:Building Evolutionary Architectures: Support Constant Change Source: Building Evolutionary Architectures: Support Constant Change
“Metrics are a common adjunct to the deployment pipeline in incremental change environments. If teams use this effort as a proof-of-concept, developers should gather appropriate metrics for both before and after scenarios. Gathering concrete data is the best way to for developers to vet the approach; remember the adage that demonstration defeats discussion.” Software Architecture Book:Building Evolutionary Architectures: Support Constant Change Source: Building Evolutionary Architectures: Support Constant Change