THE WHYS AND HOWS - Carnegie Mellon UniversityConsumer driven contracts ... Keynote: The Whys and...

Post on 04-Jun-2020

5 views 0 download

Transcript of THE WHYS AND HOWS - Carnegie Mellon UniversityConsumer driven contracts ... Keynote: The Whys and...

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 HOWSRebecca Parsons

Chief Technology OfficerThoughtWorks

@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

TYPES OF FITNESS FUNCTIONS

▫ Atomic vs holistic▫ Static vs dynamic▫ Triggered vs continuous▫ Manual vs automated▫ Temporal▫ Domain-specific?

15

EXAMPLE FITNESS FUNCTIONS

▫ Cyclic dependencies▫ 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

22

accessibility reliability repeatabilityaccountability extensibility reproducibility

accuracy failure transparency resilienceadaptability fault-tolerance responsiveness

administrability fidelity reusabilityaffordability flexibility robustness

agility inspectability safetyauditability installability scalabilityautonomy integrity seamlessnessavailability interchangeability self-sustainability

compatibility interoperability serviceabilitycomposability learnability supportabilityconfigurability maintainability securabilitycorrectness manageability simplicitycredibility mobility stability

customizability modifiability standards compliancedebugability modularity survivabilitydegradability operability sustainability

determinability orthogonality tailorabilitydemonstrability portability testabilitydependability precision timelinessdeployability predictability traceability

discoverability process capabilities transparencydistributability producibility ubiquity

durability provability understandabilityeffectiveness recoverability upgradability

efficiency relevance usability

-ilities

PRINCIPLES

23

PRINCIPLES OF EVOLUTIONARY ARCHITECTURE

▫ Last responsible moment▫ Architect and develop for evolvability▫ Postels Law▫ 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

TECHNIQUES OF EVOLUTIONARY ARCHITECTURE

▫ Database refactoring

▫ Choreography

▫ Contract testing

31

EVOLVABILITY OF DIFFERENT SOFTWARE ARCHITECTURESEvolvability of different software architectures 32

Big ball of mud

33

Structured monolith

34

Layered monolith

35

Micro-kernel

36

Microservices

37

MECHANICS

38

MECHANICS

▫ Define your architectural fitness function

39

MECHANICS

▫ Define your architectural fitness function▫ Select a dimension you’re most worried about

40

MECHANICS

▫ Define your architectural fitness function▫ Select a dimension you’re most worried about▫ Start improving on that dimension

41

MECHANICS

▫ Define your architectural fitness function▫ Select a dimension you’re most worried about▫ Start improving on that dimension▫ Focus on what matters most

42

MECHANICS

▫ Define your architectural fitness function▫ Select a dimension you’re most worried about▫ Start improving on that dimension▫ Focus on what matters most▫ Monitor trends, adapt and repeat

43

THANK YOU@rebeccaparsons

44