EVOLUTIONARY ARCHITECTURE @patkua 1 Who is @thoughtworks Who is - - PowerPoint PPT Presentation

evolutionary architecture
SMART_READER_LITE
LIVE PREVIEW

EVOLUTIONARY ARCHITECTURE @patkua 1 Who is @thoughtworks Who is - - PowerPoint PPT Presentation

EVOLUTIONARY ARCHITECTURE @patkua 1 Who is @thoughtworks Who is @patkua #architect #author #developer #facilitator #leader #lifelong-learner tiny.cc/twtl tiny.cc/retros #coach #speaker Evolutionary Architecture Neal Ford Rebecca


slide-1
SLIDE 1

EVOLUTIONARY ARCHITECTURE

@patkua

1
slide-2
SLIDE 2

Who is @thoughtworks

slide-3
SLIDE 3

Who is @patkua tiny.cc/retros tiny.cc/twtl

#architect #developer #leader #coach #lifelong-learner #author #facilitator #speaker

slide-4
SLIDE 4

Evolutionary Architecture

Rebecca Parsons (ThoughtWorks CTO) Neal Ford (Meme Wrangler) Patrick Kua (Technical Principal)

Photos by Martin Fowler: http://martinfowler.com/albums/ThoughtWorkers/

slide-5
SLIDE 5

Introductions

If you haven’t done so, please introduce yourself the people around you - you will be working in pairs

  • Name
  • Role/Title
  • Company/Institution
  • Background
slide-6
SLIDE 6

What is one thing you want to get out

  • f this talk?

STICKY-SESSION

COLLECT THESE ON FLIPCHARTS

slide-7
SLIDE 7

EVOLUTION

slide-8
SLIDE 8

NGE CHA

… is inevitable

slide-9
SLIDE 9

NGE CHA

Technical Domain

slide-10
SLIDE 10

Technical

Programming languages Libraries Frameworks Tools Operating environments Technical constraints

slide-11
SLIDE 11

NGE CHA

Technical Domain

slide-12
SLIDE 12

Domain

Revenue models Base technology adoption Competitors Customer needs Markets Products

slide-13
SLIDE 13

NGE CHA

… is inevitable

slide-14
SLIDE 14

NGE CHA

… is inevitable

If then

slide-15
SLIDE 15
slide-16
SLIDE 16
slide-17
SLIDE 17

?

slide-18
SLIDE 18

CASE STUDY

18
slide-19
SLIDE 19

Customer case study

slide-20
SLIDE 20

Customer case study

slide-21
SLIDE 21

WHAT IF…

We architected a system specifically for change?

slide-22
SLIDE 22

DEFINITION

Our current working version

slide-23
SLIDE 23

DEFINITION

An evolutionary architecture supports

continual and incremental change

as a first principle along multiple dimensions

slide-24
SLIDE 24

But our architecture already supports change!

slide-25
SLIDE 25
  • r does it?
slide-26
SLIDE 26

Example Architectural Patterns Big Ball of Mud Layered Architecture Microkernel Microservices

slide-27
SLIDE 27

How do each of these architectures support change (Technical + Domain) Big Ball of Mud Layered Architecture Microkernel Microservices

slide-28
SLIDE 28

Big ball of mud

classes

coupling connections

DIMENSIONS: 0

slide-29
SLIDE 29

Layered architecture

PRESENTATION

COMPONENT COMPONENT COMPONENT

BUSINESS

COMPONENT COMPONENT COMPONENT

PERSISTENCE

COMPONENT COMPONENT COMPONENT

DATABASE DIMENSIONS: 1

slide-30
SLIDE 30

Layered architecture

PRESENTATION

COMPONENT COMPONENT COMPONENT

BUSINESS

COMPONENT COMPONENT COMPONENT

PERSISTENCE

COMPONENT COMPONENT COMPONENT

DATABASE DIMENSIONS: 1

request

slide-31
SLIDE 31

Layered architecture

PRESENTATION

COMPONENT COMPONENT COMPONENT

BUSINESS

COMPONENT COMPONENT COMPONENT

PERSISTENCE

COMPONENT COMPONENT COMPONENT

DATABASE DIMENSIONS: 1

request

SERVICE

COMPONENT COMPONENT COMPONENT

slide-32
SLIDE 32

Layered architecture

MVC

slide-33
SLIDE 33

PLUGIN PLUGIN

Microkernel

DIMENSIONS: 1

PLUGIN PLUGIN PLUGIN PLUGIN

CORE SYSTEM

slide-34
SLIDE 34

Microkernel

slide-35
SLIDE 35

DOMAIN SHIFT

35
slide-36
SLIDE 36

Layered architecture

PRESENTATION

COMPONENT COMPONENT COMPONENT

BUSINESS

COMPONENT COMPONENT COMPONENT

PERSISTENCE

COMPONENT COMPONENT COMPONENT

DATABASE DOMAIN DIMENSIONS: 0

slide-37
SLIDE 37

Microservices

API

CUSTOMER MODULE MODULE MODULE USER/ROLE MODULE MODULE MODULE ACCOUNT MODULE MODULE MODULE PRODUCT MODULE MODULE MODULE INVENTORY MODULE MODULE MODULE FULFILLMENT MODULE MODULE MODULE CLIENT REQUESTS CLIENT REQUESTS CLIENT REQUESTS

DIMENSIONS: N

slide-38
SLIDE 38

DEFINITION

An evolutionary architecture supports

continual and incremental change

as a first principle along multiple dimensions

slide-39
SLIDE 39

PRINCIPLES

slide-40
SLIDE 40

Does not dictate schedule Supports fast feedback Appropriate coupling Iterative

Technical Domain

Matches business capabilities Enables experimentation Decentralised governance Fitness function

slide-41
SLIDE 41

Fitness function

slide-42
SLIDE 42

Fitness function

NFRs CFRs Quality Attributes Low response time Large # of users

IMPORTANT UNIMPORTANT

Strong audit trail Availability Heavy legal compliance Internationalisation & Localisation Monitoring Mobile responsive

slide-43
SLIDE 43

Fitness function

NFRs CFRs Quality Attributes Low response time Large # of users

IMPORTANT UNIMPORTANT

Strong audit trail Availability Heavy legal compliance Internationalisation & Localisation Monitoring Mobile responsive

slide-44
SLIDE 44

Fitness function

NFRs CFRs Quality Attributes Metrics Tests

slide-45
SLIDE 45

Fitness function

NFRs CFRs Quality Attributes Metrics Tests

There are known knowns

slide-46
SLIDE 46

There are known unknowns There are known knowns But there are also unknown unknowns

  • Donald Rumsfeld
slide-47
SLIDE 47

Generations

6 months 3 months 1 month daily?

slide-48
SLIDE 48

Time taken to get a single change into production

repeatably reliably

Generations = Cycle time

slide-49
SLIDE 49

Generations = Cycle time

slide-50
SLIDE 50

Conway’s Law

  • rganisations which design systems ...

are constrained to produce designs which are copies of the communication structures of these organisations

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

  • Melvin Conway, 1968
slide-51
SLIDE 51

Conway’s Law Side Effect

UI Specialists Middleware Specialists DBAs

slide-52
SLIDE 52

Monolith’s vs Microservices

slide-53
SLIDE 53

user interface server-side DBA

slide-54
SLIDE 54

Orders Shipping Catalog

slide-55
SLIDE 55

Inverse conway manoeuvre

Orders Shipping Catalog

slide-56
SLIDE 56

Inverse conway manoeuvre

cross-functional teams… …organised around business capabilities Because Conway’ s Law!

slide-57
SLIDE 57

DDD’s “bounded context” …physically realised

slide-58
SLIDE 58

Products, not projects

projects: products: ‘s “You build it, you run it”

slide-59
SLIDE 59

Last responsible moment

time complexity

slide-60
SLIDE 60

Last responsible moment

slide-61
SLIDE 61

Last responsible moment

slide-62
SLIDE 62

Last responsible moment

Domain Adapters Ports and Adapters

slide-63
SLIDE 63

Last responsible moment

slide-64
SLIDE 64

Last responsible moment

this is not an excuse to abstract all the things!

slide-65
SLIDE 65

Sense and probe

  • ver
slide-66
SLIDE 66

Last responsible moment

Architectural Spikes

slide-67
SLIDE 67

Bring the pain forward

slide-68
SLIDE 68

Bring the pain forward

deployment pipelines database migrations/ refactoring automation continuous integration

slide-69
SLIDE 69

Principle driven architecture

  • ver
slide-70
SLIDE 70

PUTTING IT INTO PRACTICE

slide-71
SLIDE 71 React v0.14 CustomerInfo 4.3.1 Customer 1.3.5 Hibernate view controller model ORM PostgreSQL 9.4

Architecture is abstract until operationalised

view controller model ORM DB

React v0.14 CustomerInfo 4.3.1 Customer 1.3.5 Hibernate 4.3.11 view controller model ORM PostgreSQL 9.4 Hibernate 5.1.0 nealford.com/memeagora/2015/03/30/architecture_is_abstract_until_operationalized.html
slide-72
SLIDE 72

Evolving your architecture

Architect Develop Release

slide-73
SLIDE 73

Evolving your architecture

Architect Develop Release

slide-74
SLIDE 74

Evolving your architecture

Architect Develop Release Reflect

slide-75
SLIDE 75

Evolving your architecture

Architect Develop Release Reflect

Cycle time = constraint

slide-76
SLIDE 76

ENABLING CHANGE

Foster architectural thinking

slide-77
SLIDE 77

ENABLING CHANGE

Foster architectural thinking

with ARCHITECTURAL BRIEFINGS

slide-78
SLIDE 78

ARCHITECTURAL BRIEFINGS ARCHITECTURAL BRIEFINGS

slide-79
SLIDE 79

ARCHITECTURAL BRIEFINGS … Design decision Tool Implementation

slide-80
SLIDE 80

ARCHITECTURAL BRIEFINGS ? ? …

slide-81
SLIDE 81

ARCHITECTURAL BRIEFINGS …

slide-82
SLIDE 82

ARCHITECTURAL BRIEFINGS

slide-83
SLIDE 83

ARCHITECTURAL BRIEFINGS …

slide-84
SLIDE 84

ARCHITECTURAL BRIEFINGS

slide-85
SLIDE 85

ARCHITECTURAL BRIEFINGS

slide-86
SLIDE 86

ARCHITECTURAL BRIEFINGS

slide-87
SLIDE 87

ARCHITECTURAL BRIEFINGS

slide-88
SLIDE 88

ARCHITECTURAL BRIEFINGS

Everyone becomes an Architect

slide-89
SLIDE 89

Think like a town planner

slide-90
SLIDE 90

Development practices that help

Continuous Delivery Cross Functional Teams Architectural briefings Feature Toggles Branch by abstraction Tracer bullet deployments Review fitness functions Early identification of fitness functions Spikes

slide-91
SLIDE 91

CHOOSING STYLES

slide-92
SLIDE 92

Build Buy

slide-93
SLIDE 93

Build Buy

slide-94
SLIDE 94

Build Buy

and/or

slide-95
SLIDE 95

Build Buy

and/or

Libraries Frameworks COTS or Software Products Custom code

Functionality

slide-96
SLIDE 96

Build Buy

and/or

Libraries Frameworks COTS or Software Products Custom code

Functionality Ability to change

slide-97
SLIDE 97

Strategic Commodity

Need for rapid change

High Low Low High

Value generating

Support Experimental

Best fit

slide-98
SLIDE 98

Things that prevent change

Coupling Cohesion Slow feedback cycles

slide-99
SLIDE 99

Cohesion

Functional Sequential Informational Procedural Temporal Logical Coincidental

slide-100
SLIDE 100

TRAPS

slide-101
SLIDE 101

TRAPS: EXUBERANT COUPLING WSDLs

slide-102
SLIDE 102

TRAPS: PRODUCT CUSTOMISATION

slide-103
SLIDE 103

TRAPS: INTEGRATION AT THE DB LAYER

slide-104
SLIDE 104

TRAPS: INTEGRATION AT THE DB LAYER

slide-105
SLIDE 105

TRAPS: SOA VIA THE ESB ROUTE Hidden Coupling Smart Endpoints Dumb Pipes

slide-106
SLIDE 106

DEFINITION

An evolutionary architecture supports

continual and incremental change

as a first principle along multiple dimensions

slide-107
SLIDE 107

TO CONSIDER

Architectural choices Decision making process + thinking Organisational and cultural elements

slide-108
SLIDE 108

@patkua

THANK YOU

slide-109
SLIDE 109

@patkua

QUESTIONS OR COMMENTS?