Microservices, DevOps, Continuous
Delivery – More Than Three
Buzzwords
Eberhard Wolff
Fellow
@ewolff
Microservices,
DevOps, Continuous
Delivery –
How Do They Relate?
Microservices,
DevOps, Continuous
Delivery –
How Do They Solve
Problems?
http://microservices-buch.de/ http://microservices-book.com/
Microservices?
UNIX Philosophy
> Write programs that do one thing and do it
well
> Write programs to work together
> Write programs with a common interface
Definition
Microservice
> Independent deployment unit
> Separate data handling & storage
> Should include UI
> Order process, Billing, Catalog…
> Process
> VM
> Docker container Server
Micro
Service
Deployment Monolith
> Might be well-structured inside.
> But: Can only be deployed as a whole
Continuous Delivery:
Build Pipeline
Commit
Stage
Automated
Acceptance
Testing
Automated
Capacity
Testing
Manual
Explorative
Testing
Release
Deploy Deploy Deploy Deploy
Automated
Reproducible
Fast
Continuous Delivery:
Build Pipeline
Commit
Stage
Automated
Acceptance
Testing
Automated
Capacity
Testing
Manual
Explorative
Testing
Release
Deploy Deploy Deploy Deploy
Billing
Continuous Delivery
Pipeline too complex
or slow?
Continuous Delivery
Pipeline too complex
or slow?
Consider changing the
architecture!
Microservices:
Challenges
> 50 or 100 Microservices
> Deployment?
> Monitoring?
> Log Analysis?
> Need Automation
> Need common foundation for operations
> Small deployment units are not enough
Continuous Delivery
Pipeline
Commit
Stage
Automated
Acceptance
Testing
Automated
Capacity
Testing
Manual
Explorative
Testing
Release
Integration
Test
Microservice Complete System
Commit
Stage
Automated
Acceptance
Testing
Automated
Capacity
Testing
Manual
Explorative
Testing
Commit
Stage
Automated
Acceptance
Testing
Automated
Capacity
Testing
Manual
Explorative
Testing
Integration
Tests
Tests
Microservices
Unit Tests
Microservices can
only be deployed
independently if tests
are independent!
Microservices can
only be deployed
independently if your
Continuous Delivery
Pipeline works.
Microservices +
Continuous Delivery!
Why all the hassle?
Conway‘s Law
Architecture
copies
communication structures
of the organization
Conway’s Law as a
Limit
> Organization drives architecture
> Teams of experts
> i.e. UI, logic & database team
> Three technical artifacts
E Commerce
Shop
Change
Order
Process!
UI
Logic
DB
time
DB
Team Sprint
Logic
Team Sprint
GUI
Team Sprint
3 sprints
Order SearchBilling
Team for each business feature
Let architecture drive the organization
Order Billing Search
Deployment Monolith
+ Conway’s Law
Deployment Monolith
Stories
Technical Coordination
Coordinating Releases
StoriesStories
Order Billing Search
Team can deploy without integration
Changes can be deployed independently & quickly
Strong & enforced modularization
Technology stack per Microservice
One or many Microservices per Team
Synergy Microservices / Conway’s Law
Order SearchBilling
Order Billing Search
Microservices
Microservice
Stories
Technical
Coordination
Microservice
Stories
Technical
Coordination
Microservice
Stories
Technical
Coordination
Order Billing Search
Release Release Release
Microservices:
Challenges
> Deployment?
> Monitoring?
> Log Analysis?
Ops
Micro- and Macro-
Architecture
Macro-Architecture
> Global decision
> Influence the whole system
> i.e. all Microservices
> Less Marco-Architecture – less coordination
Micro-Architecture
> Local decisions
> Per Microservice
Macro- and Micro-
Architecture for Ops
> Macro
> Define Log Analysis, Monitoring, Deployment tools
> Defined globally
> Micro
> Concrete deployment, monitoring, logging
> Defined per team / Microservice
Microservices Teams
need many technical
skills.
Microservices Teams
need Ops.
DevOps
DevOps /
Microservices
> Teams consist primarily of Devs
> Devs interested in Docker, ELK ...
> ... lots of experience in Ops
> More Ops effort
Microservices = huge
opportunity for Ops!
How Much DevOps is
Needed?
> Should all teams do full ops for their
services?
> IMHO optional
> But: Organizational barriers might cause
additional technical complexity
Continuous Delivery:
Build Pipeline
Commit
Stage
Automated
Acceptance
Testing
Automated
Capacity
Testing
Manual
Explorative
Testing
Release
Dev Ops
Common Technologies
Log, Monitoring, Deployment
DevOps =
Collaboration not
Organization
This changes software
development
fundamentally.
Maintainability
Maintainability:
Classical Approach
> Clear architecture
> Good code quality
> Many tests
Dev
Maintainability:
New Approach
Commit
Stage
Automated
Acceptance
Testing
Automated
Capacity
Testing
Manual
Explorative
Testing
Release
Fast und Reliable
Fast Feedback
Maintainibility:
New Approach
> Continuous Delivery simplifies roll out
> ...and test them
> ...and monitor them
> Microservices limit size and risk of changes
DevOps
Scalability
Scalabilty:
Classical Approach
> Implement technical constraints
> E.g. statelessness
> Use appropiate technologies
Dev
Performance Risk
> Hard to really predict performance
> Load test simulate user on a different
environment
Scalability:
Alternative Approach
> Don‘t do anything stupid in the architecture
> Identify bottleneck
> Eliminate bottleneck
> Common technique
Enable Alternative
Approach
> Monitoring to identify bottleneck
> Fast deployment to eliminate bottleneck
DevOps
Maintainability: New
Approach
Commit
Stage
Automated
Acceptance
Testing
Automated
Capacity
Testing
Manual
Explorative
Testing
Release
Fast
Monitor all relevant data
Conclusion
Conclusion
> Synergy:
Microservices and Continuous Delivery
> Microservices and Continuous Delivery
support and require DevOps
> DevOps = Collaboration
> Enable alternative approaches e.g. to
maintainability and scalability
Thank You!
@ewolff

Microservices, DevOps, Continuous Delivery – More Than Three Buzzwords