E v o l u t i o n a r y A r c h i t e c t u r e THE WHYS AND HOWS Rebecca Parsons Chief Technology Officer ThoughtWorks @rebeccaparsons
WHY SHOULD I CARE? Why should we care? 2
We’re good at requirements change. 3
What about ecosystem change? 4
How is long term planning possible under constant change? 5
How do we maintain this dynamic equilibrium? 6
7
How do we know we’re maintaining our “ilities” over time? 8
WHAT IS EVOLUTIONARY ARCHITECTURE? What is evolutionary architecture? 9
An evolutionary architecture supports guided incremental change across multiple dimensions. 10
An evolutionary architecture supports guided incremental change across multiple dimensions. 11
An evolutionary computing fitness function characterizes how close a solution is to the desired result 12
An architectural fitness function characterizes how close a system is to the desired architectural characteristics. 14
▫ Atomic vs holistic TYPES OF FITNESS FUNCTIONS ▫ Static vs dynamic ▫ Triggered vs continuous ▫ Manual vs automated ▫ Temporal ▫ Domain-specific? 15
▫ Cyclic dependencies EXAMPLE FITNESS FUNCTIONS ▫ Consumer driven contracts ▫ Caching with staleness ▫ Monitoring ▫ Synthetic transactions ▫ Chaos Monkey 16
An evolutionary architecture supports guided incremental change across multiple dimensions. 17
Two aspects of incremental change - application and operations 18
Application functionality 19
Incremental from an operations perspective 20
An evolutionary architecture supports guided incremental change across multiple dimensions. 21
-ilities accessibility reliability repeatability accountability extensibility reproducibility accuracy failure transparency resilience adaptability fault-tolerance responsiveness administrability fidelity reusability affordability flexibility robustness agility inspectability safety auditability installability scalability autonomy integrity seamlessness availability interchangeability self-sustainability compatibility interoperability serviceability composability learnability supportability configurability maintainability securability correctness manageability simplicity credibility mobility stability customizability modifiability standards compliance debugability modularity survivability degradability operability sustainability determinability orthogonality tailorability demonstrability portability testability dependability precision timeliness deployability predictability traceability discoverability process capabilities transparency distributability producibility ubiquity durability provability understandability effectiveness recoverability upgradability efficiency relevance usability 22
PRINCIPLES 23
▫ Last responsible moment PRINCIPLES OF EVOLUTIONARY ARCHITECTURE ▫ Architect and develop for ▫ Postels Law evolvability ▫ Architect for testability ▫ Conway’s Law 24
Last responsible moment 25
Architect and develop for evolvability 26
Postel’s Law 27
Architect for testability 28
Conway’s Law 29
TECHNIQUES 30
▫ Database refactoring TECHNIQUES OF EVOLUTIONARY ARCHITECTURE ▫ Choreography ▫ Contract testing 31
EVOLVABILITY OF DIFFERENT SOFTWARE ARCHITECTURES Evolvability of different software architectures 32
Big ball of mud 33
Structured monolith 34
Layered monolith 35
Micro-kernel 36
Microservices 37
MECHANICS 38
▫ Define your architectural fitness MECHANICS function 39
▫ Define your architectural fitness MECHANICS ▫ Select a dimension you’re most function worried about 40
▫ Define your architectural fitness MECHANICS ▫ Select a dimension you’re most function ▫ Start improving on that worried about dimension 41
▫ Define your architectural fitness MECHANICS ▫ Select a dimension you’re most function ▫ Start improving on that worried about ▫ Focus on what matters most dimension 42
MECHANICS ▫ Define your architectural fitness ▫ Select a dimension you’re most function ▫ Start improving on that dimension worried about ▫ Focus on what matters most ▫ Monitor trends, adapt and repeat 43
THANK YOU @rebeccaparsons 44
Recommend
More recommend