BUILDING SYSTEMS THAT PIVOT · CONSUMER-DRIVEN CONTRACTS Consumer Provider Purchase Confirm. Email...

Preview:

Citation preview

BUILDING SYSTEMS THAT PIVOT

Zhamak Dehghani @zhamakd

Sam Newman  @samnewman

DO YOU HAVE AN ARCHITECTURE PROBLEM?

< 30%

DO YOU HAVE AN ARCHITECTURE PROBLEM?

< 30%

Overhead of releasing a large software

DO YOU HAVE AN ARCHITECTURE PROBLEM?

< 30%

Large software release

Infrequent releases when orchestrating many dependent teams

DO YOU HAVE AN ARCHITECTURE PROBLEM?

< 30%

Large software release

Multiple teams orchestration

High risk release with untested dependencies

DO YOU HAVE AN ARCHITECTURE PROBLEM?

< 30%

Large software release

Multiple teams orchestration

Untested system dependencies

ARCHITECTURE PROBLEM!

A LONG AND BROKEN DIALOGUE

< 30%

A LONG AND BROKEN DIALOGUE

< 30%

>50%

6 Months

A LONG AND BROKEN DIALOGUE

< 30%

>50%<30%

6 Months

ELEMENTS OF ARCHITECTURE 

Integration

Off-the-shelf

Bespoke

Off-the-shelf

Bespoke

Integration

Integration

Integration• What is Microservices Architecture

• benefits  

!• How to implement a Microservices architecture  

!• How to operate a Microservices architecture

AGENDA

CONTINUOUS DELIVERY AS AN ENABLER

CONTINUOUS DELIVERY AS AN ENABLER• automated build

CONTINUOUS DELIVERY AS AN ENABLER• automated build• automated deployment

CONTINUOUS DELIVERY AS AN ENABLER• automated build• automated deployment• automated environment provisioning

CONTINUOUS DELIVERY AS AN ENABLER• automated build• automated deployment• automated environment provisioning• automated testing

CONTINUOUS DELIVERY AS AN ENABLER• automated build• automated deployment• automated environment provisioning• automated testing

SP

EE

D O

F D

EL

IVE

RY

C D M AT U R I T Y L E V E L

Threshold without changing architecture

ARCHITECTURE

MONOLITHIC SYSTEM

MONOLITHIC SYSTEM

User Interface

Channels  Application

Business Logic & Rules

Middleware  Services platform

Database

Systems of Record

LAYERED/TIERED ARCHITECTURE

User Interface

Channels  Application

Business Logic & Rules

Middleware  Services platform

Database

Systems of Record

LAYERED/TIERED ARCHITECTURE

CHALLENGES OF THE TIERED ARCHITECTURE

CHALLENGES OF THE TIERED ARCHITECTURECompromised quality to satisfy the user

CHALLENGES OF THE TIERED ARCHITECTURECompromised quality to satisfy the user

CHALLENGES OF THE TIERED ARCHITECTURECompromised quality to satisfy the user

CHALLENGES OF THE TIERED ARCHITECTURECompromised quality to satisfy the user

Longer release cycle

FINE-GRAINED ARCHITECTURE

Broken down based on vertical business functions

FINE-GRAINED ARCHITECTURE

Technology layers are encapsulated Inside each service

FINE-GRAINED ARCHITECTURE

A THOUGHT EXPERIMENT  

Integration

Off-the-shelfMICROSERVICES

A THOUGHT EXPERIMENT  

Integration

Off-the-shelfMICRO SERVICES

• Independently releasable • Business capability • Language agnostic API

A THOUGHT EXPERIMENT  

Integration

Off-the-shelfMICRO SERVICES

• Independently releasable • Business capability • Language agnostic API

• Small • 100s, not 1000s

AUTONOMY

AUTONOMY

ABSORBS TECHNOLOGY FASTER

.NET

Clojure

Java

[SQL Database]

[Graph Database]

[Document Storage]

COMPOSE-ABILITY

COMPOSE-ABILITY

COMPOSE-ABILITY

COMPOSE-ABILITY

COMPOSE-ABILITY

REPLACABILITY

ELEMENTS OF ARCHITECTURE 

Integration

Off-the-shelf

Bespoke

Off-the-shelf

Bespoke

Integration

Integration

Integration

HOW TO IMPLEMENT MICROSERVICES

BOUNDARIES

SPLITTING

SPLITTING

Speed of change

SPLITTING

Security

Speed of change

SPLITTING

Security

Speed of change

Team Structure

CAN I RELEASE THEM SEPARATELY?

COUPLING THROUGH DATABASE

CUSTOMER ORDERS

COUPLING THROUGH DATABASE

CUSTOMER ORDERS

COUPLING THROUGH DATABASE

CUSTOMER ORDERS

COUPLING THROUGH ENTERPRISE SERVICE BUS

Smart & Complex Integration System

COUPLING THROUGH ENTERPRISE SERVICE BUS

MICROSERVICES INTEGRATION

Simple & Dumb  Integration

Programming language agnostic  Open standards  

HTTP/SON

Smart Service &  Endpoint

MICROSERVICES INTEGRATION

CUSTOMER ORDERS

HOW TO OPERATE MICROSERVICES

CUSTOMER ORDERS

HOW TO OPERATE MICROSERVICESWHAT ABOUT SOA?

CUSTOMER ORDERS

HOW TO OPERATE MICROSERVICES

CUSTOMER ORDERS

HOW TO OPERATE MICROSERVICESOR OSGI?

HOW TO OPERATE MICROSERVICES

AUTOMATE!  

AUTOMATE!  AUTOMATE!

AUTOMATION

AUTOMATIONBuild Test

AUTOMATIONBuild Test Integration

AUTOMATIONBuild Test Integration Acceptance

AUTOMATIONBuild Test Integration Acceptance Production

MICROSERVICES AUTOMATIONBuild Test Integration Acceptance Production

MICROSERVICES AUTOMATIONBuild Test Integration Acceptance Production

CONSUMER-DRIVEN CONTRACTSConsumer Provider

Purchase Confirm. Email

Purchase Service

CONSUMER-DRIVEN CONTRACTSConsumer Provider

Purchase Confirm. Email

Purchase Service

Purchase Service API Test

Purchase Service Mock

CONSUMER-DRIVEN CONTRACTSConsumer Provider

Purchase Confirm. Email

Purchase Service

Purchase Service API Test

Purchase Service Mock

Consumer contract tests

MICROSERVICES’ PATH TO PRODUCTIONBuild Test Acceptance TestConsumer Test Production

MICROSERVICES’ PATH TO PRODUCTIONBuild Test Acceptance TestConsumer Test Production

MICROSERVICES’ PATH TO PRODUCTIONBuild Test Acceptance TestConsumer Test Production

MICROSERVICES’ PATH TO PRODUCTIONBuild Test Acceptance TestConsumer Test Production

MONITORING

MONITORING

STATUS• Up?

MONITORING

STATUS• Up?• Down?

MONITORING

STATUS• Up?• Down?

STATUS  • All up?

MONITORING

STATUS• Up?• Down?

STATUS  • All up?• All down?

MONITORING

STATUS• Up?• Down?

STATUS  • All up?• All down?• Mostly up?

MONITORING

STATUS• Up?• Down?

STATUS  • All up?• All down?• Mostly up?• Up apart from 1?

MONITORING

STATUS• Up?• Down?

STATUS  • All up?• All down?• Mostly up?• Up apart from 1?• All of the important bits are up?  • …

AMAZON PRODUCT PAGE

AMAZON PRODUCT PAGE

AMAZON PRODUCT PAGE

DOESN’T APPEAR… DO WE CARE?

Simple & Dumb  Infrastructure SUMMARY

RECOMMENDATIONS

RECOMMENDATIONS• Build independently releasable microservices

– align microservice with business capability

RECOMMENDATIONS• Build independently releasable microservices

– align microservice with business capability

• Integrate microservices with

– dumb, open language agnostic

– outside database

RECOMMENDATIONS• Build independently releasable microservices

– align microservice with business capability

• Integrate microservices with

– dumb, open language agnostic

– outside database

• Operate microservices architecture by

– decentralizing and automating all aspects of build, test and deployment

RECOMMENDATIONS• Build independently releasable microservices

– align microservice with business capability

• Integrate microservices with

– dumb, open language agnostic

– outside database

• Operate microservices architecture by

– decentralizing and automating all aspects of build, test and deployment

CONCLUSION

THANK  YOUZhamak Dehghani

zdehghan@thoughtworks.com @zhamakd !

Sam Newman snewman@thoughtworks.com @samnewman