Desktop version
Home
Economics
>>
Building Evolutionary Architectures: Support Constant Change
Foreword
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
Fitness Functions
What is a Fitness Function?
Categories
Atomic Versus Holistic
Triggered Versus Continual
Static Versus Dynamic
Automated Versus Manual
Temporal
Intentional Over Emergent
Domain-specific
Identify Fitness Functions Early
Review Fitness Functions
Engineering Incremental Change
Building Blocks
Testable
Deployment Pipelines
CONTINUOUS INTEGRATION VERSUS DEPLOYMENT PIPELINES
PENULTIMATEWIDGETS DEPLOYMENT PIPELINES
QA IN PRODUCTION
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?
Architectural Coupling
Modularity
Architectural Quanta and Granularity
DOMAIN-DRIVEN DESIGN’S BOUNDED CONTEXT
MONOLITHIC LISTING
Evolvability of Architectural Styles
Big Ball of Mud
Monoliths
Unstructured monoliths
Layered architecture
Modular monoliths
Microkernel
Event-Driven Architectures
Brokers
Mediators
Service-Oriented Architectures
ESB-driven SOA
Microservices
"SHARE NOTHING” AND APPROPRIATE COUPLING
Service-based architectures
"Serverless” Architectures
Controlling Quantum Size
Case Study: Guarding Against Component Cycles
Evolutionary Data with contributions from Pramod Sadalage
Evolutionary Database Design
Evolving Schemas
Shared Database Integration
Option 1: No integration points, no legacy data
Option 2: Legacy data, but no integration points
Option 3: Existing data and integration points
Inappropriate Data Coupling
DBAS, VENDORS, AND TOOL CHOICES
Two-Phase Commit Transactions
Age and Quality of Data
Case Study: Evolving PenultimateWidgets’ Routing
Building Evolvable Architectures
Mechanics
Identify Dimensions Affected by Evolution
Define Fitness Function(s) for Each Dimension
Use Deployment Pipelines to Automate Fitness Functions
Greenfield Projects
Retrofitting Existing Architectures
Appropriate Coupling and Cohesion
Engineering Practices
Fitness Functions
REFACTORING VERSUS RESTRUCTURING
COTS Implications
Migrating Architectures
Migration Steps
Evolving Module Interactions
Guidelines for Building Evolutionary Architectures
Remove Needless Variability
THE HAZARDS OF SNOWFLAKES
Make Decisions Reversible
Prefer Evolvable over Predictable
Build Anticorruption Layers
Case Study: Service Templates
Build Sacrificial Architectures
Mitigate External Change
THE ELEVEN LINES OF CODE THAT BROKE THE INTERNET
Updating Libraries Versus Frameworks
Prefer Continuous Delivery to Snapshots
Version Services Internally
Case Study: Evolving PenultimateWidgets’ Ratings
Evolutionary Architecture Pitfalls and Antipatterns
Technical Architecture
Antipattern: Vendor King
Pitfall: Leaky Abstractions
Antipattern: Last 10% Trap
THE IBM SAN FRANCISCO PROJECT
Antipattern: Code Reuse Abuse
Case Study: Reuse at PenultimateWidgets
Pitfall: Resume-Driven Development
Incremental Change
Antipattern: Inappropriate Governance
FORCED DECOUPLING
Case Study: Goldilocks Governance at PenultimateWidgets
Pitfall: Lack of Speed to Release
Business Concerns
Pitfall: Product Customization
Antipattern: Reporting
Pitfall: Planning Horizons
Putting Evolutionary Architecture into Practice
Organizational Factors
Cross-Functional Teams
Organized Around Business Capabilities
Product over Project
AMAZON’S "TWO PIZZA” TEAMS
Dealing with External Change
Connections Between Team Members
Team Coupling Characteristics
Culture
THREE STRIKES AND YOU REFACTOR
Culture of Experimentation
CFO and Budgeting
Building Enterprise Fitness Functions
CASE STUDY: LEGALITY OF OPEN SOURCE LIBRARIES
Case Study: PenultimateWidgets as a Platform
Where Do You Start?
Low-Hanging Fruit
Highest-Value
Testing
Infrastructure
INFRASTRUCTURE CAN IMPACT ARCHITECTURE
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?
Predictable versus evolvable
Scale
Advanced business capabilities
Cycle time as a business metric
Isolating architectural characteristics at the quantum level
Case Study: Selective Scale at PenultimateWidgets
Adaptation versus evolution
Why Would a Company Choose Not to Build an Evolutionary Architecture?
Can’t evolve a ball of mud
Other architectural characteristics dominate
Sacrificial architecture
Planning on closing the business soon
Case Study: Consulting Judo
The Business Case
"The Future Is Already Here...”
Moving Fast Without Breaking Things
Less Risk
New Capabilities
Building Evolutionary Architectures
>>
Related topics
Academic library - free online college e textbooks - info{at}ebrary.net - © 2014 - 2023