bUiLdiNG eVoLuTiONaRy ARcHitECtuREs S UPPORT C ONSTANT C HANGE - - PowerPoint PPT Presentation

building evolutionary architectures
SMART_READER_LITE
LIVE PREVIEW

bUiLdiNG eVoLuTiONaRy ARcHitECtuREs S UPPORT C ONSTANT C HANGE - - PowerPoint PPT Presentation

bUiLdiNG eVoLuTiONaRy ARcHitECtuREs S UPPORT C ONSTANT C HANGE @neal4d @rebeccaparsons @patkua nealford.com requirements T i m e g ility n accessibility reliability repeatability accountability extensibility reproducibility


slide-1
SLIDE 1

bUiLdiNG eVoLuTiONaRy ARcHitECtuREs

SUPPORT CONSTANT CHANGE

@neal4d nealford.com @patkua @rebeccaparsons

slide-2
SLIDE 2

requirements

T i m e

slide-3
SLIDE 3
slide-4
SLIDE 4

s a m p l i n g

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

slide-5
SLIDE 5

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

slide-6
SLIDE 6

cHAnGe

slide-7
SLIDE 7

technology driven business driven

slide-8
SLIDE 8

technology driven business driven

slide-9
SLIDE 9
slide-10
SLIDE 10

technology driven business driven

slide-11
SLIDE 11

dYNaMic eqUiLiBRiuM

slide-12
SLIDE 12

¯

dYNaMic eqUiLiBRiuM

slide-13
SLIDE 13

everything changes all the time!

slide-14
SLIDE 14

How is long term planning possible when things constantly change in unEXpECtEd ways?

slide-15
SLIDE 15
slide-16
SLIDE 16

EA Spreadsheet

Penultima⬆e

✔ definition ! verification

slide-17
SLIDE 17

Once I’ve built an architecture, how can I prevent it from gradually degrading over time?

slide-18
SLIDE 18

governance

slide-19
SLIDE 19

Evolutionary Architecture

An evolutionary architecture supports guided, incremental change across multiple dimensions.

slide-20
SLIDE 20

Evolutionary Architecture

An evolutionary architecture supports guided, incremental change across multiple dimensions. guided

slide-21
SLIDE 21

guided

evolutionary computing 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.

slide-22
SLIDE 22

guided

slide-23
SLIDE 23

guided

evolutionary computing 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.

slide-24
SLIDE 24

guided

architectural fitness function: An architectural fitness function provides an

  • bjective integrity assessment of some

architectural characteristic(s).

slide-25
SLIDE 25

EA Spreadsheet

Penultima⬆e

✔ definition ! verification ✔ verification

slide-26
SLIDE 26

Evolutionary Architecture

An evolutionary architecture supports guided, incremental change across multiple dimensions. incremental guided

slide-27
SLIDE 27

incremental

Production

survey

shipping

catalog star rating improved star rating commit/ unit test 01001001010101 01010101010101 00101010010010 00100100010001 functional test UAT staging database unit tested code functionally tested code deployed code
slide-28
SLIDE 28

Penultima⬆e

Production

slide-29
SLIDE 29

Penultima⬆e

Production

slide-30
SLIDE 30

Penultima⬆e

Production

slide-31
SLIDE 31

Penultima⬆e

Production

slide-32
SLIDE 32

Production

Penultima⬆e

slide-33
SLIDE 33

Evolutionary Architecture

An evolutionary architecture supports guided, incremental change across multiple dimensions. multiple dimensions incremental

slide-34
SLIDE 34

multiple dimensions

slide-35
SLIDE 35

Evolutionary Architecture

An evolutionary architecture supports guided, incremental change across multiple dimensions. multiple dimensions

slide-36
SLIDE 36

Agenda

Definition Guided Change via Fitness Functions Incremental Change Governance

slide-37
SLIDE 37

Evolutionary Architecture

An evolutionary architecture supports guided, incremental change across multiple dimensions. guided

slide-38
SLIDE 38

guided

architectural fitness function: An architectural fitness function provides an

  • bjective integrity assessment of some

architectural characteristic(s).

slide-39
SLIDE 39

Fitness Functions

slide-40
SLIDE 40
slide-41
SLIDE 41

Fitness Function

atomic holistic triggered continuous

slide-42
SLIDE 42

Fitness Function

atomic holistic triggered continuous

slide-43
SLIDE 43

Cyclic Dependency Function

clarkware.com/software/JDepend.html application

slide-44
SLIDE 44

Coupling Fitness Function

application

slide-45
SLIDE 45

Consumer Driven Contracts

martinfowler.com/articles/consumerDrivenContracts.html

slide-46
SLIDE 46

Fitness Function

atomic holistic triggered continuous

slide-47
SLIDE 47

Fitness Function

atomic holistic triggered continuous

slide-48
SLIDE 48

Fitness Function

atomic holistic triggered continuous

slide-49
SLIDE 49

holistic triggered

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

slide-50
SLIDE 50

Fitness Function

atomic holistic triggered continuous

slide-51
SLIDE 51

Fitness Function

atomic holistic triggered continuous

slide-52
SLIDE 52

Fitness Function

atomic holistic triggered continuous

slide-53
SLIDE 53

atomic continuous

monitoring logging

slide-54
SLIDE 54

Synthetic Transactions

Sam Newman

Building Microservices

DESIGNING FINE-GRAINED SYSTEMS

Use synthetic transactions to test production systems.

slide-55
SLIDE 55

Correlation IDs

ID: 123 ID: 123 ID: 123

Sam Newman

Building Microservices

DESIGNING FINE-GRAINED SYSTEMS

Use correlation IDs to track down nasty bugs

slide-56
SLIDE 56

Fitness Function

atomic holistic triggered continuous

slide-57
SLIDE 57

Fitness Function

atomic holistic triggered continuous

slide-58
SLIDE 58

Fitness Function

atomic holistic triggered continuous

slide-59
SLIDE 59
slide-60
SLIDE 60

Fitness Function

atomic holistic triggered continuous

slide-61
SLIDE 61

Fitness Function

atomic holistic triggered continuous

slide-62
SLIDE 62

Fitness Function Fit

slide-63
SLIDE 63

System-wide Fitness Function

slide-64
SLIDE 64

Agenda

Definition Guided Change via Fitness Functions Incremental Change Governance

slide-65
SLIDE 65

incremental

Production

survey

shipping

catalog star rating improved star rating commit/ unit test 01001001010101 01010101010101 00101010010010 00100100010001 functional test UAT staging database unit tested code functionally tested code deployed code
slide-66
SLIDE 66

Deployment Pipelines

slide-67
SLIDE 67

Deployment Pipeline

commit/ unit test

01001001010101 01010101010101 00101010010010 00100100010001

functional test UAT staging

database

unit tested code functionally tested code deployed code

slide-68
SLIDE 68

Deployment Pipeline + Fitness Functions

commit/ unit test

01001001010101 01010101010101 00101010010010 00100100010001

functional test UAT holistic fitness functions

database

atomic fitness functions

unit tested code functionally tested code architecturally tested code deployed quantum integration environment

slide-69
SLIDE 69

Agenda

Definition Guided Change via Fitness Functions Incremental Change Governance

slide-70
SLIDE 70

Implementing Fitness Functions

Protecting architectural characteristics

Automating governance

slide-71
SLIDE 71

maintainable?

slide-72
SLIDE 72

Testable

Many architecture characteristics are evaluable via testing.

slide-73
SLIDE 73

https://blog.jdriven.com/2017/10/implementing-architectural-fitness-functions-using-gradle-junit-code-assert/

slide-74
SLIDE 74
slide-75
SLIDE 75
slide-76
SLIDE 76
slide-77
SLIDE 77
slide-78
SLIDE 78
slide-79
SLIDE 79

ArchUnit

https://www.archunit.org/

slide-80
SLIDE 80

ArchUnit

https://www.archunit.org/

coding rules

slide-81
SLIDE 81

ArchUnit

https://www.archunit.org/

interface rules

slide-82
SLIDE 82

ArchUnit

https://www.archunit.org/

layer dependency

slide-83
SLIDE 83

ArchUnit

https://www.archunit.org/

governance

slide-84
SLIDE 84 replicating CI

01001001010101 01010101010101 00101010010010 00100100010001

containerize & deploy security review audit database atomic fitness functions database holistic fitness functions database deploy to production

Deployment Pipeline

Penultima⬆e

slide-85
SLIDE 85

Putting evolutionary architecture into Practice

slide-86
SLIDE 86

Mechanics

  • 1. Identify dimensions affect by evolution
slide-87
SLIDE 87
  • 1. Identify dimensions affect by evolution
slide-88
SLIDE 88

Mechanics

  • 1. Identify dimensions affect by evolution
  • 2. Define Fitness Function(s) for Each

Dimension

slide-89
SLIDE 89
  • 2. Define Fitness Function(s) for Each

Dimension

slide-90
SLIDE 90

Mechanics

  • 1. Identify dimensions affect by evolution
  • 2. Define Fitness Function(s) for Each

Dimension

  • 3. Use Deployment Pipelines to Automate

Fitness Functions

slide-91
SLIDE 91
  • 3. Use Deployment Pipelines to Automate

Fitness Functions

commit/ unit test

01001001010101 01010101010101 00101010010010 00100100010001

functional test UAT holistic fitness functions

database

atomic fitness functions

unit tested code functionally tested code architecturally tested code deployed quantum integration environment

slide-92
SLIDE 92

Mechanics

  • 1. Identify dimensions affect by evolution
  • 2. Define Fitness Function(s) for Each

Dimension

  • 3. Use Deployment Pipelines to Automate

Fitness Functions

slide-93
SLIDE 93

Mechanics

  • 1. Identify dimensions affect by evolution
  • 2. Define Fitness Function(s) for Each

Dimension

  • 3. Use Deployment Pipelines to Automate

Fitness Functions

slide-94
SLIDE 94

Agenda

Definition Guided Change via Fitness Functions Incremental Change Governance

slide-95
SLIDE 95

Move Fast & Fix Things

slide-96
SLIDE 96

https://github.com/github/scientist

slide-97
SLIDE 97

▫︎ 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.

slide-98
SLIDE 98
slide-99
SLIDE 99
slide-100
SLIDE 100
slide-101
SLIDE 101

4 days 24 hours/ no mismatches or slow cases > 10,000,000 comparisons > 10,000,000 comparisons

slide-102
SLIDE 102

Evolutionary Architecture

An evolutionary architecture supports guided, incremental change across multiple dimensions.

slide-103
SLIDE 103

Building Evolutionary Architectures

For more information: http://evolutionaryarchitecture.com