Top Banner
INTRODUCING EVOLUTIONARY ARCHITECTURE @patkua 1
111

Introducing Evolutionary Architecture

Apr 16, 2017

Download

Internet

Patrick Kua
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Introducing Evolutionary Architecture

INTRODUCING EVOLUTIONARY ARCHITECTURE@patkua

1

Page 2: Introducing Evolutionary Architecture

Who is @thoughtworks

Page 3: Introducing Evolutionary Architecture

https://www.thoughtworks.com/radar

Page 4: Introducing Evolutionary Architecture
Page 5: Introducing Evolutionary Architecture

TECHNIQUES

PLATFORMS

TOOLS

LANGUAGES AND FRAMEWORKS

Page 6: Introducing Evolutionary Architecture

Who is @patkua

tiny.cc/retrostiny.cc/twtl

#architect#developer#leader#coach

#lifelong-learner

#author#facilitator

#speaker

Page 7: Introducing Evolutionary Architecture

Evolutionary Architecture

Rebecca Parsons (ThoughtWorks CTO)

Neal Ford (Meme Wrangler)

Patrick Kua (Technical Principal)

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

Page 8: Introducing Evolutionary Architecture

EVOLUTION

Page 9: Introducing Evolutionary Architecture

NGECHA

… is inevitable

Page 10: Introducing Evolutionary Architecture

NGECHA

TechnicalDomain

Page 11: Introducing Evolutionary Architecture

TechnicalProgramming languages

Libraries

Frameworks

Tools

Operating environments

Technical constraints

Page 12: Introducing Evolutionary Architecture

NGECHA

TechnicalDomain

Page 13: Introducing Evolutionary Architecture

DomainRevenue models

Base technology adoption

Competitors

Customer needs

Markets

Products

Page 14: Introducing Evolutionary Architecture

NGECHA

… is inevitable

Page 15: Introducing Evolutionary Architecture

NGECHA

… is inevitable

If

then

Page 16: Introducing Evolutionary Architecture
Page 17: Introducing Evolutionary Architecture
Page 18: Introducing Evolutionary Architecture

?

Page 19: Introducing Evolutionary Architecture

CASE STUDY

19

Page 20: Introducing Evolutionary Architecture

Customer case study

Page 21: Introducing Evolutionary Architecture

Customer case study

Page 22: Introducing Evolutionary Architecture

WHAT IF…

We architected a system specifically for change?

Page 23: Introducing Evolutionary Architecture

DEFINITIONOur current working version

Page 24: Introducing Evolutionary Architecture

DEFINITIONAn evolutionary architecture supports

guided, incremental change as a first principle along multiple dimensions.

Page 25: Introducing Evolutionary Architecture

But our architecture already supports change!

Page 26: Introducing Evolutionary Architecture

or does it?

Page 27: Introducing Evolutionary Architecture

Example Architectural Patterns

Big Ball of Mud Layered Architecture

Microkernel Microservices

Page 28: Introducing Evolutionary Architecture

How do each of these architectures support

change?

Page 29: Introducing Evolutionary Architecture

Example Architectural Patterns

Big Ball of Mud Layered Architecture

Microkernel Microservices

Page 30: Introducing Evolutionary Architecture

Big ball of mud

classes

coupling connectionsDIMENSIONS: 0

Page 31: Introducing Evolutionary Architecture

Layered architecture

PRESENTATION COMPONENT COMPONENT COMPONENT

BUSINESS COMPONENT COMPONENT COMPONENT

PERSISTENCE COMPONENT COMPONENT COMPONENT

DATABASE

DIMENSIONS: 1

Page 32: Introducing Evolutionary Architecture

Layered architecture

PRESENTATION COMPONENT COMPONENT COMPONENT

BUSINESS COMPONENT COMPONENT COMPONENT

PERSISTENCE COMPONENT COMPONENT COMPONENT

DATABASE

DIMENSIONS: 1

request

Page 33: Introducing Evolutionary Architecture

Layered architecture

PRESENTATION COMPONENT COMPONENT COMPONENT

BUSINESS COMPONENT COMPONENT COMPONENT

PERSISTENCE COMPONENT COMPONENT COMPONENT

DATABASE

DIMENSIONS: 1

request

SERVICE COMPONENT COMPONENT COMPONENT

Page 34: Introducing Evolutionary Architecture

Layered architecture

MVC

Page 35: Introducing Evolutionary Architecture

PLUGIN PLUGIN

Microkernel

DIMENSIONS: 1

PLUGIN

PLUGIN

PLUGIN

PLUGIN

CORE SYSTEM

Page 36: Introducing Evolutionary Architecture

Microkernel

Page 37: Introducing Evolutionary Architecture

DOMAIN SHIFT

37

Page 38: Introducing Evolutionary Architecture

Layered architecture

PRESENTATION COMPONENT COMPONENT COMPONENT

BUSINESS COMPONENT COMPONENT COMPONENT

PERSISTENCE COMPONENT COMPONENT COMPONENT

DATABASE

DOMAIN DIMENSIONS: 0

Page 39: Introducing Evolutionary Architecture

Microservices

APICUSTOMER

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

Page 40: Introducing Evolutionary Architecture

DEFINITIONAn evolutionary architecture supports

guided, incremental change as a first principle along multiple dimensions.

Page 41: Introducing Evolutionary Architecture

PRINCIPLES

Page 42: Introducing Evolutionary Architecture

Does not dictate schedule

Supports fast feedback

Appropriate coupling

Iterative

TechnicalDomainMatches business capabilities

Enables experimentation

Decentralised governance

Fitness function

Page 43: Introducing Evolutionary Architecture

Fitness function

Page 44: Introducing Evolutionary Architecture

Fitness functionNFRs CFRs

Quality Attributes

Low response timeLarge # of users

IMPORTANT UNIMPORTANT

Strong audit trail

AvailabilityHeavy legal compliance

Internationalisation & Localisation Monitoring

Mobile responsive

Page 45: Introducing Evolutionary Architecture

Fitness functionNFRs CFRs

Quality Attributes

Low response timeLarge # of users

IMPORTANT UNIMPORTANTStrong audit trail

Availability Heavy legal compliance

Internationalisation & Localisation

MonitoringMobile responsive

Page 46: Introducing Evolutionary Architecture

Fitness functionNFRs CFRs

Quality Attributes

Metrics Tests

Page 47: Introducing Evolutionary Architecture

Fitness functionNFRs CFRs

Quality Attributes

Metrics Tests

There are known knowns

Page 48: Introducing Evolutionary Architecture

There are known unknowns

There are known knowns

But there are also unknown unknowns

- Donald Rumsfeld

Page 49: Introducing Evolutionary Architecture

Generations

6 months

3 months

1 month

daily?

Page 50: Introducing Evolutionary Architecture

Time taken to get a single change into production

repeatablyreliably

Generations = Cycle time

Page 51: Introducing Evolutionary Architecture

Generations = Cycle time

Page 52: Introducing Evolutionary Architecture

Conway’s Law

organisations 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

Page 53: Introducing Evolutionary Architecture

Conway’s Law Side Effect

UI Specialists

Middleware Specialists

DBAs

Page 54: Introducing Evolutionary Architecture

Monolith’s vs Microservices

Page 55: Introducing Evolutionary Architecture

user interface

server-side

DBA

Page 56: Introducing Evolutionary Architecture

Orders

ShippingCatalog

Page 57: Introducing Evolutionary Architecture

Inverse conway manoeuvre

Orders

ShippingCatalog

Page 58: Introducing Evolutionary Architecture

Inverse conway manoeuvre

cross-functional teams… …organised around business capabilities

Because Conway’s Law!

Page 59: Introducing Evolutionary Architecture

DDD’s “bounded context”

…physically realised

Page 60: Introducing Evolutionary Architecture

Products, not projects

projects:

products:

‘s “You build it, you run it”

Page 61: Introducing Evolutionary Architecture

Last responsible moment

time

complexity

Page 62: Introducing Evolutionary Architecture

Last responsible moment

Page 63: Introducing Evolutionary Architecture

Last responsible moment

Page 64: Introducing Evolutionary Architecture

Last responsible moment

Domain

Adapters

Ports and Adapters

Page 65: Introducing Evolutionary Architecture

Last responsible moment

Page 66: Introducing Evolutionary Architecture

Last responsible moment

this is not an excuse to abstract all the things!

Page 67: Introducing Evolutionary Architecture

Sense and probe

over

Page 68: Introducing Evolutionary Architecture

Last responsible moment

Architectural Spikes

Page 69: Introducing Evolutionary Architecture

Bring the pain forward

Page 70: Introducing Evolutionary Architecture

Bring the pain forward

deployment pipelines

database migrations/ refactoring automation

continuous integration

Page 71: Introducing Evolutionary Architecture

Principle driven architecture

over

Page 72: Introducing Evolutionary Architecture

PUTTING IT INTO PRACTICE

Page 73: Introducing Evolutionary Architecture

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

Page 74: Introducing Evolutionary Architecture

Evolving your architecture

Architect Develop Release

Page 75: Introducing Evolutionary Architecture

Evolving your architecture

Architect

Develop

Release

Page 76: Introducing Evolutionary Architecture

Evolving your architecture

Architect

Develop

Release

Reflect

Page 77: Introducing Evolutionary Architecture

Evolving your architecture

Architect

Develop

Release

Reflect

Cycle time = constraint

Page 78: Introducing Evolutionary Architecture

ENABLING CHANGE

Foster architectural

thinking

Page 79: Introducing Evolutionary Architecture

ENABLING CHANGE

Foster architectural

thinking

with

ARCHITECTURAL BRIEFINGS

Page 80: Introducing Evolutionary Architecture

ARCHITECTURAL BRIEFINGSARCHITECTURAL BRIEFINGS

Page 81: Introducing Evolutionary Architecture

ARCHITECTURAL BRIEFINGS

Design decision Tool Implementation

Page 82: Introducing Evolutionary Architecture

ARCHITECTURAL BRIEFINGS

?

?

Page 83: Introducing Evolutionary Architecture

ARCHITECTURAL BRIEFINGS

Page 84: Introducing Evolutionary Architecture

ARCHITECTURAL BRIEFINGS

Page 85: Introducing Evolutionary Architecture

ARCHITECTURAL BRIEFINGS

Page 86: Introducing Evolutionary Architecture

ARCHITECTURAL BRIEFINGS

Page 87: Introducing Evolutionary Architecture

ARCHITECTURAL BRIEFINGS

Page 88: Introducing Evolutionary Architecture

ARCHITECTURAL BRIEFINGS

Page 89: Introducing Evolutionary Architecture

ARCHITECTURAL BRIEFINGS

Page 90: Introducing Evolutionary Architecture

ARCHITECTURAL BRIEFINGS

Everyone becomes an Architect

Page 91: Introducing Evolutionary Architecture

Think like a town planner

Page 92: Introducing Evolutionary Architecture

Development practices that help

Continuous Delivery Cross Functional Teams

Architectural briefings

Feature Toggles Branch by abstraction

Tracer bullet deploymentsReview fitness functions

Early identification of fitness functions

Spikes

Page 93: Introducing Evolutionary Architecture

CHOOSING STYLES

Page 94: Introducing Evolutionary Architecture

Build Buy

Page 95: Introducing Evolutionary Architecture

Build Buy

Page 96: Introducing Evolutionary Architecture

Build Buyand/or

Page 97: Introducing Evolutionary Architecture

Build Buyand/or

Libraries Frameworks COTS or Software Products

Custom code

Functionality

Page 98: Introducing Evolutionary Architecture

Build Buyand/or

Libraries Frameworks COTS or Software Products

Custom code

Functionality

Ability to change

Page 99: Introducing Evolutionary Architecture

Strategic

Commodity

Need for rapid change HighLow

Low

HighVa

lue

gene

ratin

g

Support

Experimental Best fit

Page 100: Introducing Evolutionary Architecture

Things that prevent change

Coupling Cohesion

Slow feedback cycles

Page 101: Introducing Evolutionary Architecture

Cohesion

Functional

Sequential

Informational

Procedural

Temporal

Logical

Coincidental

Page 102: Introducing Evolutionary Architecture

TRAPS

Page 103: Introducing Evolutionary Architecture

TRAPS: EXUBERANT COUPLING

WSDLs

Page 104: Introducing Evolutionary Architecture

TRAPS: PRODUCT CUSTOMISATION

Page 105: Introducing Evolutionary Architecture

TRAPS: INTEGRATION AT THE DB LAYER

Page 106: Introducing Evolutionary Architecture

TRAPS: INTEGRATION AT THE DB LAYER

Page 107: Introducing Evolutionary Architecture

TRAPS: SOA VIA THE ESB ROUTE

Hidden Coupling

Smart Endpoints Dumb Pipes

Page 108: Introducing Evolutionary Architecture

DEFINITIONAn evolutionary architecture supports

guided, incremental change as a first principle along multiple dimensions.

Page 109: Introducing Evolutionary Architecture

TO CONSIDERArchitectural choices Decision making process + thinking Organisational and cultural elements

Page 110: Introducing Evolutionary Architecture

@patkua

THANK YOU

Page 111: Introducing Evolutionary Architecture

@patkua

QUESTIONS OR COMMENTS?