How We Cleaned Up The
Mess
1
Introduction
2015
The Mess
The History
2015
Architecture Trajectory
● Age of the Monolith (5 Years Ago)
○ Monolithic UI and Backend
○ Unit and Manual Testing
○ Monthly Deployments
○ Infrastructure Monitoring
2015
Architecture Trajectory
● Age of the Service-Oriented Arch. (3 Years Ago)
○ Coarse Grained Services (Tomcat)
○ Unit and Service Level Testing
○ Weekly Deployments
○ Graphite Dashboards
2015
Architecture Trajectory
● Age of the Micro Architecture (1 Year Ago)
○ HTTP Microservices
○ Docker Managed
○ Unit, Functional Testing
○ On Demand Deployment
○ Application and Infrastructure Monitoring
What Went Wrong
2015
The Mess
● High Risk Releases
2015
The Mess
● Slow Feedback
A Warning
2015
How We Fixed It
2015
Containers
● Docker makes deployment trivial
- $ docker run myapp
2015
Docker Registry
● Push and pull images from dev to prod!
2015
REQUEST:
{
'id': 1,
'container': {
'image': '...',
...
},
executor: ...,
'cpus: 0.05,
'instances': 4,
'memory': 400.0
}
Build Script
Bamboo
Build
Plan
Marathon
Master
Mesos
Master
Mesos Slave
Executor
Docker
Daemon
Docker
Registry
201517
201518
2015
Microservices
● How they solve the problem
- Piecewise releases
- Easier to understand
2015
Fast Feedback
● Easier Testing
- Contracts
- Isolation
- Easy to reason about
Test
Code
Release
2015
Low Risk Releases
● No downtime
● Easy rollback
● Canary Testing
2015
2015
Service Discovery
24
2015
Atlassian
Bamboo
Cerebro
New
Relic
Canary Isolated
Microservices
Microservices
Partial Full
UIs
Thrift
Queues
DBs
Partial
2015
Canary Isolated:
Contact Service
2015
Canary Isolated:
Contact Service
2015
Canary Isolated:
Contact Service
More To Do
2015
More to Come
● Database isolation
● Pact
References
2015
● http://www.stavros.io/posts/microservices-
cargo-cult/
● http://martinfowler.com/bliki/
MicroservicePrerequisites.html
● http://martinfowler.com/articles/
consumerDrivenContracts.html
● http://martinfowler.com/bliki/
MicroservicePremium.html

ContainerDays NYC 2015: "How Yodle Cleaned Up the Mess Using Containers and Microservices" (John Downs)