BUILDING SYSTEMS THAT PIVOT
Zhamak Dehghani @zhamakd Sam Newman ¡ @samnewman
BUILDING SYSTEMS THAT PIVOT Sam Newman Zhamak Dehghani @zhamakd - - PowerPoint PPT Presentation
BUILDING SYSTEMS THAT PIVOT Sam Newman Zhamak Dehghani @zhamakd @samnewman DO YOU HAVE AN ARCHITECTURE PROBLEM? < 30% DO YOU HAVE AN ARCHITECTURE PROBLEM? Overhead of releasing a large software < 30% DO YOU HAVE AN ARCHITECTURE
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
High risk release with untested dependencies
DO YOU HAVE AN ARCHITECTURE PROBLEM?
< 30%
Large software release Multiple teams
Untested system dependencies
ARCHITECTURE PROBLEM!
A LONG AND BROKEN DIALOGUE
< 30%
A LONG AND BROKEN DIALOGUE
< 30%
6 Months
A LONG AND BROKEN DIALOGUE
< 30%
6 Months
ELEMENTS OF ARCHITECTURE
Integration
Off-the-shelf Bespoke Off-the-shelf Bespoke
Integration Integration Integration
AGENDA
CONTINUOUS DELIVERY AS AN ENABLER
CONTINUOUS DELIVERY AS AN ENABLER
CONTINUOUS DELIVERY AS AN ENABLER
CONTINUOUS DELIVERY AS AN ENABLER
CONTINUOUS DELIVERY AS AN ENABLER
CONTINUOUS DELIVERY AS AN ENABLER
S P E E D O F D E L I V E R Y 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 ARCHITECTURE
Compromised quality to satisfy the user
CHALLENGES OF THE TIERED ARCHITECTURE
Compromised quality to satisfy the user
CHALLENGES OF THE TIERED ARCHITECTURE
Compromised quality to satisfy the user
CHALLENGES OF THE TIERED ARCHITECTURE
Compromised quality to satisfy the user Longer release cycle
FINE-GRAINED ARCHITECTURE
Broken down based
business functions
FINE-GRAINED ARCHITECTURE
Technology layers are encapsulated Inside each service
FINE-GRAINED ARCHITECTURE
A THOUGHT EXPERIMENT
Integration Off-the-shelf
MICRO SERVICES
A THOUGHT EXPERIMENT
Integration Off-the-shelf
MICRO SERVICES
A THOUGHT EXPERIMENT
Integration Off-the-shelf
MICRO SERVICES
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 MICROSERVICES
WHAT ABOUT SOA?
CUSTOMER ORDERS HOW TO OPERATE MICROSERVICES
CUSTOMER ORDERS HOW TO OPERATE MICROSERVICES
OR OSGI?
HOW TO OPERATE MICROSERVICES
AUTOMATE! ¡
AUTOMATION
AUTOMATION
Build Test
AUTOMATION
Build Test Integration
AUTOMATION
Build Test Integration Acceptance
AUTOMATION
Build Test Integration Acceptance Production
MICROSERVICES AUTOMATION
Build Test Integration Acceptance Production
MICROSERVICES AUTOMATION
Build Test Integration Acceptance Production
CONSUMER-DRIVEN CONTRACTS
Consumer Provider
Purchase Confirm. Email Purchase Service
CONSUMER-DRIVEN CONTRACTS
Consumer Provider
Purchase Confirm. Email Purchase Service Purchase Service API Test Purchase Service Mock
CONSUMER-DRIVEN CONTRACTS
Consumer Provider
Purchase Confirm. Email Purchase Service Purchase Service API Test Purchase Service Mock
Consumer contract tests
MICROSERVICES’ PATH TO PRODUCTION
Build Test Acceptance Test Consumer Test Production
MICROSERVICES’ PATH TO PRODUCTION
Build Test Acceptance Test Consumer Test Production
MICROSERVICES’ PATH TO PRODUCTION
Build Test Acceptance Test Consumer Test Production
MICROSERVICES’ PATH TO PRODUCTION
Build Test Acceptance Test Consumer Test Production
MONITORING
MONITORING STATUS
MONITORING STATUS
MONITORING STATUS
STATUS ¡
MONITORING STATUS
STATUS ¡
MONITORING STATUS
STATUS ¡
MONITORING STATUS
STATUS ¡
MONITORING STATUS
STATUS ¡
AMAZON PRODUCT PAGE
AMAZON PRODUCT PAGE
AMAZON PRODUCT PAGE DOESN’T APPEAR… DO WE CARE?
Simple & Dumb ¡ Infrastructure
SUMMARY
RECOMMENDATIONS
RECOMMENDATIONS
– align microservice with business capability
RECOMMENDATIONS
– align microservice with business capability
– dumb, open language agnostic – outside database
RECOMMENDATIONS
– align microservice with business capability
– dumb, open language agnostic – outside database
– decentralizing and automating all aspects of build, test and
deployment
RECOMMENDATIONS
– align microservice with business capability
– dumb, open language agnostic – outside database
– decentralizing and automating all aspects of build, test and
deployment
CONCLUSION
Zhamak Dehghani zdehghan@thoughtworks.com @zhamakd
snewman@thoughtworks.com @samnewman