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 PROBLEM? Infrequent releases when orchestrating many dependent teams < 30% Large software release
DO YOU HAVE AN ARCHITECTURE PROBLEM? High risk release with untested dependencies Multiple teams orchestration < 30% Large software release
DO YOU HAVE AN ARCHITECTURE PROBLEM? ARCHITECTURE Untested system PROBLEM! dependencies Multiple teams orchestration < 30% Large software release
A LONG AND BROKEN DIALOGUE < 30%
A LONG AND BROKEN DIALOGUE 6 Months >50 % < 30%
A LONG AND BROKEN DIALOGUE 6 Months <30 % >50 % < 30%
AGENDA ELEMENTS OF ARCHITECTURE Off-the-shelf What is Microservices Architecture Integration • Integration benefits ¡ Bespoke • � How to implement a Microservices architecture ¡ Integration Off-the-shelf • � Integration How to operate a Microservices architecture • Bespoke
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 Threshold without • automated testing S P E E D O F D E L I V E R Y changing architecture C D M AT U R I T Y L E V E L
ARCHITECTURE
MONOLITHIC SYSTEM
MONOLITHIC SYSTEM
LAYERED/TIERED ARCHITECTURE 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
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
FINE-GRAINED ARCHITECTURE Broken down based on vertical business functions
FINE-GRAINED ARCHITECTURE Technology layers are encapsulated Inside each service
A THOUGHT EXPERIMENT Integration MICRO SERVICES Off-the-shelf
A THOUGHT EXPERIMENT Integration MICRO SERVICES Off-the-shelf • Independently releasable • Business capability • Language agnostic API
A THOUGHT EXPERIMENT Integration MICRO SERVICES Off-the-shelf • Small • Independently releasable • 100s, not 1000s • Business capability • Language agnostic API
AUTONOMY
AUTONOMY
ABSORBS TECHNOLOGY FASTER Java [Graph Database] [Document Storage] Clojure .NET [SQL Database]
COMPOSE-ABILITY
COMPOSE-ABILITY
COMPOSE-ABILITY
COMPOSE-ABILITY
COMPOSE-ABILITY REPLACABILITY
ELEMENTS OF ARCHITECTURE Off-the-shelf Integration Integration Bespoke HOW TO IMPLEMENT MICROSERVICES Integration Off-the-shelf Integration Bespoke
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
MICROSERVICES INTEGRATION Smart Service & ¡ Endpoint Simple & Dumb ¡ Integration Programming language agnostic ¡ Open standards ¡ HTTP/SON
CUSTOMER ORDERS HOW TO OPERATE MICROSERVICES
CUSTOMER ORDERS WHAT ABOUT SOA? HOW TO OPERATE MICROSERVICES
CUSTOMER ORDERS HOW TO OPERATE MICROSERVICES
CUSTOMER ORDERS OR OSGI? HOW TO OPERATE MICROSERVICES
HOW TO OPERATE MICROSERVICES
AUTOMATE! ¡ AUTOMATE! ¡ 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 Purchase Service Confirm. Email
CONSUMER-DRIVEN CONTRACTS Consumer Provider Purchase Purchase Purchase Purchase Service Service Confirm. Service API Test Email Mock
CONSUMER-DRIVEN CONTRACTS Consumer Provider Purchase Purchase Purchase Purchase Service Service Confirm. Service API Test Email Mock Consumer contract tests
MICROSERVICES’ PATH TO PRODUCTION Consumer Test Production Build Test Acceptance Test
MICROSERVICES’ PATH TO PRODUCTION Consumer Test Production Build Test Acceptance Test
MICROSERVICES’ PATH TO PRODUCTION Consumer Test Production Build Test Acceptance Test
MICROSERVICES’ PATH TO PRODUCTION Consumer Test Production Build Test Acceptance Test
MONITORING
MONITORING STATUS • Up?
MONITORING STATUS • Up? • Down?
MONITORING STATUS ¡ STATUS • All up? • Up? • Down?
MONITORING STATUS ¡ STATUS • All up? • Up? • All down? • Down?
MONITORING STATUS ¡ STATUS • All up? • Up? • All down? • Down? • Mostly up?
MONITORING STATUS ¡ STATUS • All up? • Up? • All down? • Down? • Mostly up? • Up apart from 1?
MONITORING STATUS ¡ STATUS • All up? • Up? • All down? • 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 ¡ SUMMARY Infrastructure
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 ¡YOU Zhamak Dehghani zdehghan@thoughtworks.com @zhamakd � Sam Newman snewman@thoughtworks.com @samnewman
Recommend
More recommend