View
4
Download
0
Category
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
Recommended