Evolutionary Architectures @neal4d nealford.com with Rebecca - - PowerPoint PPT Presentation

evolutionary architectures
SMART_READER_LITE
LIVE PREVIEW

Evolutionary Architectures @neal4d nealford.com with Rebecca - - PowerPoint PPT Presentation

Evolutionary Architectures @neal4d nealford.com with Rebecca Parsons & Pat Kua 1 Rebecca Parsons Pat Kua Neal Ford Photos by Martin Fowler: http://martinfowler.com/albums/ThoughtWorkers/ 2 3 3 1 Architecture is the decisions that


slide-1
SLIDE 1

Evolutionary Architectures

@neal4d nealford.com

with Rebecca Parsons & Pat Kua

1
slide-2
SLIDE 2

Rebecca Parsons Pat Kua Neal Ford

Photos by Martin Fowler: http://martinfowler.com/albums/ThoughtWorkers/ 2
slide-3
SLIDE 3

3

3
slide-4
SLIDE 4

Architecture is the decisions that you wish you could get right early in a project.

— Ralph Johnson

things that people perceive as hard to change.

1

4
slide-5
SLIDE 5 5
slide-6
SLIDE 6

2

sampling

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
  • perability
sustainability determinability
  • rthogonality
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

https://en.wikipedia.org/wiki/List_of_system_quality_attributes

ility

6
slide-7
SLIDE 7

evolvability

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
  • perability
sustainability determinability
  • rthogonality
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

evolvability

7
slide-8
SLIDE 8

Dynamic Equilibrium

3

8
slide-9
SLIDE 9

Definition:

An evolutionary architecture supports incremental, guided change as a first principle across multiple dimensions.

9
slide-10
SLIDE 10

Perspectives on Architecture

Technical Architecture

10
slide-11
SLIDE 11

Perspectives on Architecture

Data Architecture

11
slide-12
SLIDE 12

Perspectives on Architecture

Security Architecture

12
slide-13
SLIDE 13

Perspectives on Architecture

Domain Architecture

13
slide-14
SLIDE 14

Microservices

Domain Architecture

+

14
slide-15
SLIDE 15

Evolvability of Architectures

15
slide-16
SLIDE 16

Big Ball of Mud

classes

coupling connections dimensions :

16
slide-17
SLIDE 17

Layered Architecture

1

dimensions :

  • pportunities:

4

17
slide-18
SLIDE 18

Opportunities vs Dimensions

18
slide-19
SLIDE 19

Opportunities vs Dimensions

  • pportunities for evolution = L - (2 x Lo)

L : # of layers Lo : # of open layers

1

dimensions :

19
slide-20
SLIDE 20

Microkernel

1

dimensions :

20
slide-21
SLIDE 21

REST

1

dimensions :

21
slide-22
SLIDE 22

Domain Perspective

dimensions :

22
slide-23
SLIDE 23

Microservices

n

dimensions : evolutionary architecture

23
slide-24
SLIDE 24

An evolutionary architecture supports incremental, guided change as a first principle across multiple dimensions.

evolutionary architecture

Definition:

24
slide-25
SLIDE 25

Composability

25
slide-26
SLIDE 26

Composability

26
slide-27
SLIDE 27

Composability

27
slide-28
SLIDE 28

Definition:

An evolutionary architecture supports incremental, guided change as a first principle across multiple dimensions.

evolutionary architecture

28
slide-29
SLIDE 29

Incremental Change

production

Components are deployed. Features are released. Applications consist of routing.

29
slide-30
SLIDE 30

Incremental Change

production 30
slide-31
SLIDE 31

Definition:

An evolutionary architecture supports incremental, guided change as a first principle across multiple dimensions.

evolutionary architecture

31
slide-32
SLIDE 32

Fitness Functions

a particular type of objective function that is used to summarize…how close a given design solution is to achieving the set aims.

32
slide-33
SLIDE 33

Architecture Fitness Functions

metrics tests

33
slide-34
SLIDE 34

Definition:

An evolutionary architecture supports incremental, guided change as a first principle across multiple dimensions.

evolutionary architecture

34
slide-35
SLIDE 35

Agenda

definition incremental change fitness functions appropriate coupling

35
slide-36
SLIDE 36

Fitness Function

a particular type of objective function that is used to summarize…how close a given design solution is to achieving the set aims.

36
slide-37
SLIDE 37

Architecture Fitness Functions

metrics tests

37
slide-38
SLIDE 38

Architecture Fitness Functions

metrics tests

38
slide-39
SLIDE 39

Fitness Function

atomic holistic batch continuous

39
slide-40
SLIDE 40

Fitness Function

atomic holistic batch continuous

40
slide-41
SLIDE 41

Fitness Function

atomic holistic batch continuous

41
slide-42
SLIDE 42

Cyclic Dependency Function

clarkware.com/software/JDepend.html application

42
slide-43
SLIDE 43

Coupling Fitness Function

application

43
slide-44
SLIDE 44

Fitness Function

atomic holistic batch continuous

44
slide-45
SLIDE 45

Fitness Function

atomic holistic batch continuous

45
slide-46
SLIDE 46

Fitness Function

atomic holistic batch continuous

46
slide-47
SLIDE 47

holistic batch

Holistic fitness functions must run in a specific (shared) context.

47
slide-48
SLIDE 48

Consumer Driven Contracts

martinfowler.com/articles/consumerDrivenContracts.html

48
slide-49
SLIDE 49

Fitness Function

atomic holistic batch continuous

49
slide-50
SLIDE 50

Fitness Function

atomic holistic batch continuous

50
slide-51
SLIDE 51

Fitness Function

atomic holistic batch continuous

51
slide-52
SLIDE 52

atomic continuous

monitoring logging

52
slide-53
SLIDE 53

Synthetic Transactions

Sam Newman

Building Microservices

DESIGNING FINE-GRAINED SYSTEMS

Use synthetic transactions to test production systems.

53
slide-54
SLIDE 54

Correlation IDs

ID: 123 ID: 123 ID: 123

Sam Newman

Building Microservices

DESIGNING FINE-GRAINED SYSTEMS

Use correlation IDs to track down nasty bugs

54
slide-55
SLIDE 55

Fitness Function

atomic holistic batch continuous

55
slide-56
SLIDE 56

Fitness Function

atomic holistic batch continuous

56
slide-57
SLIDE 57

Fitness Function

atomic holistic batch continuous

57
slide-58
SLIDE 58

holistic resilience-ility?

58
slide-59
SLIDE 59

Fitness Function

atomic holistic batch continuous

59
slide-60
SLIDE 60

Fitness Function

atomic holistic batch continuous

60
slide-61
SLIDE 61

System-wide Fitness Function

61
slide-62
SLIDE 62

Fitness Function Fit

62
slide-63
SLIDE 63

Guided Evolution

63
slide-64
SLIDE 64

Agenda

definition incremental change fitness functions appropriate coupling

64
slide-65
SLIDE 65

3D 4D 2D

nealford.com/memeagora/2015/03/30/architecture_is_abstract_until_operationalized.html

data

UI business ORM

Hibernate 4.3.8

ORM

Order 2.3.1

biz

Oracle 12c

Angular 2.1

UI

MyBatis 3.4.2

ORM

Order 3.3.0

biz

Oracle 12c Rel 2

react 15.4.2

UI

Architecture is abstract until operationalized.

65
slide-66
SLIDE 66

Prerequisites

66
slide-67
SLIDE 67

Deployment Pipeline

67
slide-68
SLIDE 68

Deployment Pipeline

68
slide-69
SLIDE 69

Incremental Change

Engine of evolutionary architecture

v ∝ c

where c = cycle time v = maximum speed of new generations

69
slide-70
SLIDE 70

Agenda

definition incremental change fitness functions appropriate coupling

70
slide-71
SLIDE 71

Customer

Code Reuse (Over Time)

checkout shipping

SOA

71
slide-72
SLIDE 72

checkout shipping

microservices

Code Reuse (Over Time)

72
slide-73
SLIDE 73

The more reusable code is, the less usable it is.

73
slide-74
SLIDE 74

Adaptation versus Evolution

increases technical debt mitigates technical debt

74
slide-75
SLIDE 75

Decentralized Data Management

75
slide-76
SLIDE 76

Decentralized Data Management

Transactions are temporal coupling.

76
slide-77
SLIDE 77

Decentralized Data Management

Limit transactional contexts.

77
slide-78
SLIDE 78

Evolutionary Database Design

http://databaserefactoring.com/

78
slide-79
SLIDE 79

Evolving Columns

79
slide-80
SLIDE 80

Transition

80
slide-81
SLIDE 81

Expand/Contract Pattern

app v230 compatible with db v14 DB version 15 DB version 14 app v205 compatible with db v13 and v14 app v234 compatible with db v14 app v241 compatible with db v14 and 15 DB version 13 app v248 compatible with db v15 Time app v205 deployed migrate db to v14 app v230 deployed app v234 deployed app v234 deployed app v248 deployed migrate db to v15 81
slide-82
SLIDE 82

Shift to Domain-centric Architectures

82
slide-83
SLIDE 83

Shift to Domain-centric Architectures

83
slide-84
SLIDE 84

Shift to Domain-centric Architectures

84
slide-85
SLIDE 85

Incidentally Coupled Teams

user interface server-side DBA

85
slide-86
SLIDE 86

Conway’s Law

  • rganizations which design

systems ... are constrained to produce designs which are copies

  • f the communication structures
  • f these organizations

en.wikipedia.org/wiki/Conway%27s_law

Melvin Conway, 1968

86
slide-87
SLIDE 87

Incidentally Coupled Teams

user interface server-side DBA

87
slide-88
SLIDE 88

Autonomous Teams

Orders Shipping Inverse Conway Maneuver Catalog

88
slide-89
SLIDE 89

Low Efferent Coupling between Teams n(n-1) 2

89
slide-90
SLIDE 90

Architectural Quantum

90
slide-91
SLIDE 91

Architectural Quantum

91
slide-92
SLIDE 92

Architectural Quantum

92
slide-93
SLIDE 93

Architectural Quantum

93
slide-94
SLIDE 94

Utilizing Evolutionary Architecture

94
slide-95
SLIDE 95
  • 1. Choose Dimensions

“—ilities” evolutionary change testable

95
slide-96
SLIDE 96

Utilizing Evolutionary Architecture

96
slide-97
SLIDE 97
  • 2. Identify Fitness Functions

atomic holistic

/

automated / manual

97
slide-98
SLIDE 98

Utilizing Evolutionary Architecture

98
slide-99
SLIDE 99
  • 3. Apply Incremental Change
99
slide-100
SLIDE 100

Utilizing Evolutionary Architecture

100
slide-101
SLIDE 101

Utilizing Evolutionary Architecture

101
slide-102
SLIDE 102

Agenda

definition incremental change fitness functions appropriate coupling

102
slide-103
SLIDE 103

Why should a company decide to build an evolutionary architecture?

103
slide-104
SLIDE 104

Why should a company decide to build an evolutionary architecture?

Predictable versus Evolvable Scale Cycle Time as a Business Metric Isolating “—ilities” at the Quantum Level Longer Lasting Useful Systems Advanced Business Capabilities

104
slide-105
SLIDE 105

Why should a company decide to build an evolutionary architecture?

105
slide-106
SLIDE 106

Why would a company choose not to build an evolutionary architecture?

106
slide-107
SLIDE 107

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

107
slide-108
SLIDE 108

Why should a company decide to build an evolutionary architecture?

Predictable versus Evolvable Scale Cycle Time as a Business Metric Isolating “—ilities” at the Quantum Level Longer Lasting Useful Systems Advanced Business Capabilities Advanced Business Capabilities

108
slide-109
SLIDE 109

Hypothesis and Data Driven Development

109
slide-110
SLIDE 110

Move Fast & Fix Things

110
slide-111
SLIDE 111

https://github.com/github/scientist

111
slide-112
SLIDE 112

▫︎ It decides whether or not to run the try block, ▫︎ Randomizes the order in which use and try blocks are

run,

▫︎ Measures the durations of all behaviors, ▫︎ Compares the result of try to the result of use, ▫︎ Swallows (but records) any exceptions raised in the try

block

▫︎ Publishes all this information.

112
slide-113
SLIDE 113 113
slide-114
SLIDE 114 114
slide-115
SLIDE 115 115
slide-116
SLIDE 116

Bugs Found; Resolution

▫︎ faster conflict return because shell script exited

immediately; replicated in library

▫︎ index write was causing O(n) problem; inlined into

memory

▫︎ the ancestor had a file with a given filemode, whilst one

side of the merge had removed the file and the other side had changed the filemode; bug in git!

▫︎ Git incorrectly successfully merged files w/ 768 conflicts;

fixed git shell script

▫︎ new library was skipping an entire step; bug found &

fixed

116
slide-117
SLIDE 117

Definition:

An evolutionary architecture supports incremental, guided change as a first principle across multiple dimensions.

evolutionary architecture

117
slide-118
SLIDE 118

http:/ / evolutionaryarchitecture.com

118
slide-119
SLIDE 119 nealford.com @neal4d

nealford.com/books nealford.com/videos

www.oreilly.com/software-architecture-video-training-series.html

119
slide-120
SLIDE 120

Agenda

definition incremental change fitness functions appropriate coupling

120