108
INTRODUCING EVOLUTIONARY ARCHITECTURE @patkua 1

Introducing Evolutionary Architecture

Embed Size (px)

Citation preview

INTRODUCING EVOLUTIONARY ARCHITECTURE@patkua

1

Who is @thoughtworks

Who is @patkua

tiny.cc/retrostiny.cc/twtl

#architect#developer#leader#coach

#lifelong-learner

#author#facilitator

#speaker

Evolutionary Architecture

Rebecca Parsons (ThoughtWorks CTO)

Neal Ford (Meme Wrangler)

Patrick Kua (Technical Principal)

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

EVOLUTION

NGECHA

… is inevitable

NGECHA

Technical Domain

TechnicalProgramming languages

Libraries

Frameworks

Tools

Operating environments

Technical constraints

NGECHA

Technical Domain

DomainRevenue models

Base technology adoption

Competitors

Customer needs

Markets

Products

NGECHA

… is inevitable

NGECHA

… is inevitable

If

then

?

CASE STUDY

16

Customer case study

Customer case study

WHAT IF…

We architected a system specifically for change?

DEFINITIONOur current working version

DEFINITIONAn evolutionary architecture supports

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

But our architecture already supports change!

or does it?

Example Architectural Patterns

Big Ball of Mud Layered Architecture

Microkernel Microservices

How do each of these architectures support

change?

Example Architectural Patterns

Big Ball of Mud Layered Architecture

Microkernel Microservices

Big ball of mud

classes

coupling connectionsDIMENSIONS: 0

Layered architecture

PRESENTATION COMPONENT COMPONENT COMPONENT

BUSINESS COMPONENT COMPONENT COMPONENT

PERSISTENCE COMPONENT COMPONENT COMPONENT

DATABASE

DIMENSIONS: 1

Layered architecture

PRESENTATION COMPONENT COMPONENT COMPONENT

BUSINESS COMPONENT COMPONENT COMPONENT

PERSISTENCE COMPONENT COMPONENT COMPONENT

DATABASE

DIMENSIONS: 1

request

Layered architecture

PRESENTATION COMPONENT COMPONENT COMPONENT

BUSINESS COMPONENT COMPONENT COMPONENT

PERSISTENCE COMPONENT COMPONENT COMPONENT

DATABASE

DIMENSIONS: 1

request

SERVICE COMPONENT COMPONENT COMPONENT

Layered architecture

MVC

PLUGIN PLUGIN

Microkernel

DIMENSIONS: 1

PLUGIN

PLUGIN

PLUGIN

PLUGIN

CORE SYSTEM

Microkernel

DOMAIN SHIFT

34

Layered architecture

PRESENTATION COMPONENT COMPONENT COMPONENT

BUSINESS COMPONENT COMPONENT COMPONENT

PERSISTENCE COMPONENT COMPONENT COMPONENT

DATABASE

DOMAIN DIMENSIONS: 0

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

DEFINITIONAn evolutionary architecture supports

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

PRINCIPLES

Does not dictate schedule

Supports fast feedback

Appropriate coupling

Iterative

Technical DomainMatches business capabilities

Enables experimentation

Decentralised governance

Fitness function

Fitness function

Fitness functionNFRs CFRs

Quality Attributes

Low response timeLarge # of users

IMPORTANT UNIMPORTANT

Strong audit trail

AvailabilityHeavy legal compliance

Internationalisation & Localisation Monitoring

Mobile responsive

Fitness functionNFRs CFRs

Quality Attributes

Low response timeLarge # of users

IMPORTANT UNIMPORTANTStrong audit trail

Availability Heavy legal compliance

Internationalisation & Localisation

MonitoringMobile responsive

Fitness functionNFRs CFRs

Quality Attributes

Metrics Tests

Fitness functionNFRs CFRs

Quality Attributes

Metrics Tests

There are known knowns

There are known unknowns

There are known knowns

But there are also unknown unknowns

- Donald Rumsfeld

Generations

6 months

3 months

1 month

daily?

Time taken to get a single change into production

repeatablyreliably

Generations = Cycle time

Generations = Cycle time

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

Conway’s Law Side Effect

UI Specialists

Middleware Specialists

DBAs

Monolith’s vs Microservices

user interface

server-side

DBA

Orders

ShippingCatalog

Inverse conway manoeuvre

Orders

ShippingCatalog

Inverse conway manoeuvre

cross-functional teams… …organised around business capabilities

Because Conway’s Law!

DDD’s “bounded context”

…physically realised

Products, not projects

projects:

products:

‘s “You build it, you run it”

Last responsible moment

time

com

plex

ity

Last responsible moment

Last responsible moment

Last responsible moment

Domain

Adapters

Ports and Adapters

Last responsible moment

Last responsible moment

this is not an excuse to abstract all the things!

Sense and probe

over

Last responsible moment

Architectural Spikes

Bring the pain forward

Bring the pain forward

deployment pipelines

database migrations/ refactoring automation

continuous integration

Principle driven architecture

over

PUTTING IT INTO PRACTICE

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

Evolving your architecture

Architect Develop Release

Evolving your architecture

Architect

Develop

Release

Evolving your architecture

Architect

Develop

Release

Reflect

Evolving your architecture

Architect

Develop

Release

Reflect

Cycle time = constraint

ENABLING CHANGE

Foster architectural

thinking

ENABLING CHANGE

Foster architectural

thinking

with

ARCHITECTURAL BRIEFINGS

ARCHITECTURAL BRIEFINGSARCHITECTURAL BRIEFINGS

ARCHITECTURAL BRIEFINGS

Design decision Tool Implementation

ARCHITECTURAL BRIEFINGS

?

?

ARCHITECTURAL BRIEFINGS

ARCHITECTURAL BRIEFINGS

ARCHITECTURAL BRIEFINGS

ARCHITECTURAL BRIEFINGS

ARCHITECTURAL BRIEFINGS

ARCHITECTURAL BRIEFINGS

ARCHITECTURAL BRIEFINGS

ARCHITECTURAL BRIEFINGS

Everyone becomes an Architect

Think like a town planner

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

CHOOSING STYLES

Build Buy

Build Buy

Build Buyand/or

Build Buyand/or

Libraries Frameworks COTS or Software Products

Custom code

Functionality

Build Buyand/or

Libraries Frameworks COTS or Software Products

Custom code

Functionality

Ability to change

Strategic

Commodity

Need for rapid change HighLow

Low

HighVa

lue

gene

ratin

g

Support

Experimental Best fit

Things that prevent change

Coupling Cohesion

Slow feedback cycles

Cohesion

Functional

Sequential

Informational

Procedural

Temporal

Logical

Coincidental

TRAPS

TRAPS: EXUBERANT COUPLING

WSDLs

TRAPS: PRODUCT CUSTOMISATION

TRAPS: INTEGRATION AT THE DB LAYER

TRAPS: INTEGRATION AT THE DB LAYER

TRAPS: SOA VIA THE ESB ROUTE

Hidden Coupling

Smart Endpoints Dumb Pipes

DEFINITIONAn evolutionary architecture supports

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

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

@patkua

THANK YOU

@patkua

QUESTIONS OR COMMENTS?