Keynote at Dockercon Europe Amsterdam Dec 4th, 2014.
Speeding up development with Docker.
Summary of some interesting web scale microservice architectures.
Please send me updates and corrections to the architecture summaries @adrianco
Thanks Adrian
6. Cloud Adoption
@adrianco’s job at the
intersection of cloud
and Enterprise IT
%*&!”
By Simon Wardley http://enterpriseitadoption.com/
2014
2009
7. Cloud Adoption
@adrianco’s job at the
intersection of cloud
and Enterprise IT
%*&!”
By Simon Wardley http://enterpriseitadoption.com/
2014
2009
Docker wasn’t on
anyone’s roadmap for
2014. It’s on everyone’s
roadmap for 2015.
10. Land grab
opportunity Competitive
Observe
Orient
Decide
Act
Move
Customer Pain
Point
Measure
Customers
Continuous
Delivery
11. Land grab
opportunity Competitive
Observe
Orient
Decide
Act
Move
Customer Pain
Point
INNOVATION
Measure
Customers
Continuous
Delivery
12. Land grab
opportunity Competitive
Observe
Orient
Decide
Act
Move
Customer Pain
Point
Analysis
Model
Hypotheses
INNOVATION
Measure
Customers
Continuous
Delivery
13. Land grab
opportunity Competitive
Observe
Orient
Decide
Act
Move
Customer Pain
Point
Analysis
BIG DATA
Model
Hypotheses
INNOVATION
Measure
Customers
Continuous
Delivery
14. Land grab
opportunity Competitive
Observe
Orient
Decide
Act
Move
Customer Pain
Point
Analysis
BIG DATA
Plan Response
JFDI
Share Plans
Model
Hypotheses
INNOVATION
Measure
Customers
Continuous
Delivery
15. Land grab
opportunity Competitive
Observe
Orient
Decide
Act
Move
Customer Pain
Point
Analysis
BIG DATA
Plan Response
JFDI
Share Plans
Model
Hypotheses
INNOVATION
CULTURE
Measure
Customers
Continuous
Delivery
16. Land grab
opportunity Competitive
Observe
Orient
Decide
Act
Move
Customer Pain
Point
Analysis
BIG DATA
Plan Response
JFDI
Share Plans
Launch AB
Test
Automatic
Deploy
Incremental
Features
Model
Hypotheses
INNOVATION
CULTURE
Measure
Customers
Continuous
Delivery
17. Land grab
opportunity Competitive
Observe
Orient
Decide
Measure
Customers
Act
Move
Customer Pain
Point
Analysis
BIG DATA
Plan Response
JFDI
Share Plans
Launch AB
Test
Automatic
Deploy
Incremental
Features
Model
Hypotheses
INNOVATION
CULTURE
CLOUD
Continuous
Delivery
18. Land grab
opportunity Competitive
Observe
Orient
Decide
Measure
Customers
Act
Move
Customer Pain
Point
Analysis
BIG DATA
Plan Response
JFDI
Share Plans
Launch AB
Test
Automatic
Deploy
Incremental
Features
Model
Hypotheses
INNOVATION
CULTURE
CLOUD
Continuous
Delivery
19. Land grab
opportunity Competitive
Observe
Orient
Decide
Measure
Customers
Act
Move
Customer Pain
Point
Analysis
BIG DATA
Plan Response
JFDI
Share Plans
Launch AB
Test
Automatic
Deploy
Incremental
Features
Model
Hypotheses
INNOVATION
CULTURE
CLOUD
Continuous
Delivery
21. Breaking Down the SILOs
Prod
Mgr
UX Dev QA DBA Sys
Adm Adm
Net
Adm
SAN
22. Breaking Down the SILOs
Prod
Mgr
UX Dev QA DBA Sys
Adm Adm
Net
Adm
SAN
Product Team Using Monolithic Delivery
Product Team Using Monolithic Delivery
23. Breaking Down the SILOs
Product Team Using Monolithic Delivery
Product Team Using Monolithic Delivery
Prod
Mgr
UX Dev QA DBA Sys
Adm Adm
Net
Adm
SAN
Product Team Using Microservices
Product Team Using Microservices
Product Team Using Microservices
24. Breaking Down the SILOs
Product Team Using Monolithic Delivery
Product Team Using Monolithic Delivery
Prod
Mgr
UX Dev QA DBA Sys
Adm Adm
Net
Adm
SAN
Product Team Using Microservices
Product Team Using Microservices Platform Team
Product Team Using Microservices
25. Breaking Down the SILOs
Product Team Using Monolithic Delivery
Product Team Using Monolithic Delivery
Prod
Mgr
UX Dev QA DBA Sys
Adm Adm
Net
Adm
SAN
Product Team Using Microservices
Platform Team
A
P
I Product Team Using Microservices
Product Team Using Microservices
26. Breaking Down the SILOs
Product Team Using Monolithic Delivery
Product Team Using Monolithic Delivery
Prod
Mgr
UX Dev QA DBA Sys
Adm Adm
Net
Adm
SAN
Product Team Using Microservices
Platform Team
A
P
I Product Team Using Microservices
Product Team Using Microservices
DevOps is a Re-Org!
27. Release Plan
Developer
Developer
Developer
Developer
Developer
QA Release
Integration
Ops Replace Old
With New
Release
Monolithic service updates
Works well with a small number
of developers and a single
language like php, java or ruby
28. Release Plan
Developer
Developer
Developer
Developer
Developer
Monolithic service updates
QA Release
Integration
Ops Replace Old
With New
Release
Bugs
Works well with a small number
of developers and a single
language like php, java or ruby
29. Release Plan
Developer
Developer
Developer
Developer
Developer
Monolithic service updates
QA Release
Integration
Ops Replace Old
With New
Release
Bugs
Bugs
Works well with a small number
of developers and a single
language like php, java or ruby
30. Developer
Developer
Developer
Developer
Developer
Old Release Still
Running
Release Plan
Release Plan
Release Plan
Release Plan
Immutable microservice deployment
scales, is faster with large teams and
diverse platform components
31. Developer
Developer
Developer
Developer
Developer
Immutable microservice deployment
scales, is faster with large teams and
diverse platform components
Old Release Still
Running
Release Plan
Release Plan
Release Plan
Release Plan
Deploy
Feature to
Production
Deploy
Feature to
Production
Deploy
Feature to
Production
Deploy
Feature to
Production
32. Developer
Developer
Developer
Developer
Developer
Immutable microservice deployment
scales, is faster with large teams and
diverse platform components
Old Release Still
Running
Release Plan
Release Plan
Release Plan
Release Plan
Deploy
Feature to
Production
Deploy
Feature to
Production
Deploy
Feature to
Production
Deploy
Feature to
Production
Bugs
33. Developer
Developer
Developer
Developer
Developer
Immutable microservice deployment
scales, is faster with large teams and
diverse platform components
Old Release Still
Running
Release Plan
Release Plan
Release Plan
Release Plan
Deploy
Feature to
Production
Deploy
Feature to
Production
Deploy
Feature to
Production
Deploy
Feature to
Production
Bugs
Deploy
Feature to
Production
34. Configure
Configure
Developer
Developer
Developer
Release Plan
Release Plan
Release Plan
Standardized portable container
deployment saves time and effort
Deploy
Standardized
Services
https://hub.docker.com
35. Configure
Configure
Developer
Developer
Developer
Release Plan
Release Plan
Release Plan
Deploy
Standardized
Services
Deploy
Feature to
Production
Deploy
Feature to
Production
Deploy
Feature to
Production
Bugs
Deploy
Feature to
Production
Standardized portable container
deployment saves time and effort
https://hub.docker.com
36. Developing at the Speed of Docker
Developers
• Compile/Build
• Seconds
Extend container
• Package dependencies
• Seconds
PaaS deploy Container
• Docker startup
• Seconds
37. Developing at the Speed of Docker
Developers
• Compile/Build
• Seconds
Extend container
• Package dependencies
• Seconds
PaaS deploy Container
• Docker startup
• Seconds
Speed is addictive, hard to go back to taking much longer to get things done
38. What Happened?
Rate of change
increased
Cost and size and
risk of change
reduced
42. If every service has to be
updated at the same time
it’s not loosely coupled
A Microservice Definition
!
Loosely coupled service oriented
architecture with bounded contexts
43. If every service has to be
updated at the same time
it’s not loosely coupled
A Microservice Definition
!
Loosely coupled service oriented
architecture with bounded contexts
If you have to know too much about surrounding
services you don’t have a bounded context. See the
Domain Driven Design book by Eric Evans.
44. Coupling Concerns
●Conway’s Law - organizational coupling
●Centralized Database Schemas
●Enterprise Service Bus - centralized message queues
●Inflexible Protocol Versioning
http://en.wikipedia.org/wiki/Conway's_law
45. Speeding Up The Platform
Datacenter Snowflakes
• Deploy in months
• Live for years
46. Speeding Up The Platform
Datacenter Snowflakes
• Deploy in months
• Live for years
Virtualized and Cloud
• Deploy in minutes
• Live for weeks
47. Speeding Up The Platform
Datacenter Snowflakes
• Deploy in months
• Live for years
Virtualized and Cloud
• Deploy in minutes
• Live for weeks
Docker Containers
• Deploy in seconds
• Live for minutes/hours
48. Speeding Up The Platform
Datacenter Snowflakes
• Deploy in months
• Live for years
Virtualized and Cloud
• Deploy in minutes
• Live for weeks
Docker Containers
• Deploy in seconds
• Live for minutes/hours
AWS Lambda
• Deploy in milliseconds
• Live for seconds
49. Speeding Up The Platform
Datacenter Snowflakes
• Deploy in months
• Live for years
Virtualized and Cloud
• Deploy in minutes
• Live for weeks
Docker Containers
• Deploy in seconds
• Live for minutes/hours
AWS Lambda
• Deploy in milliseconds
• Live for seconds
Speed enables and encourages new microservice architectures
50. State of the Art in Web Scale
Microservice Architectures
AWS Re:Invent : Asgard to Zuul https://www.youtube.com/watch?v=p7ysHhs5hl0
Resiliency at Massive Scale https://www.youtube.com/watch?v=ZfYJHtVL1_w
Microservice Architecture https://www.youtube.com/watch?v=CriDUYtfrjs
http://www.infoq.com/presentations/scale-gilt
http://www.slideshare.net/mcculloughsean/itier-breaking-up-the-monolith-philly-ete
http://www.infoq.com/presentations/Twitter-Timeline-Scalability
http://www.infoq.com/presentations/twitter-soa
http://www.infoq.com/presentations/Zipkin
https://speakerdeck.com/mattheath/scaling-micro-services-in-go-highload-plus-plus-2014
51. Microservice Concerns
Tooling Configuration Discovery Routing Observability
Datastores
Operational: Orchestration and Deployment Infrastructure
Development: Languages and Container
52. Microservices
Edda
Archaius
!
Configuration
Asgard
Aminator
!
Tooling
Eureka
Prana
!
Discovery
Denominator
Zuul, Netty
Ribbon 2.0
!
Routing
Hystrix
Pytheus
SALP
!
Observability
Ephemeral datastores using Dynomite, Memcached, Astyanax, Staash, Priam, Cassandra
Manual Orchestration with Asgard and deployment on AWS or Eucalyptus
Java, Groovy, Scala, Clojure, Python, Node.js with AMI and Docker Containers
53. Microservices
Edda
Archaius
!
Configuration
Asgard
Aminator
!
Tooling
Eureka
Prana
!
Discovery
Denominator
Zuul, Netty
Ribbon 2.0
!
Routing
Hystrix
Pytheus
SALP
!
Observability
Ephemeral datastores using Dynomite, Memcached, Astyanax, Staash, Priam, Cassandra
Manual Orchestration with Asgard and deployment on AWS or Eucalyptus
Java, Groovy, Scala, Clojure, Python, Node.js with AMI and Docker Containers
Focus on global distribution, high scale and availability
54.
55.
56. Twitter Microservices
Decider
!!
Tooling Configuration
Finagle
Zookeeper
!
Discovery
Finagle
Netty
!
Routing
Zipkin
!!
Observability
Custom Cassandra-like datastore: Manhattan
Orchestration using Aurora deployment in datacenters using Mesos
Scala with JVM Container
57. Twitter Microservices
Decider
!!
Tooling Configuration
Finagle
Zookeeper
!
Discovery
Finagle
Netty
!
Routing
Zipkin
!!
Observability
Custom Cassandra-like datastore: Manhattan
Orchestration using Aurora deployment in datacenters using Mesos
Scala with JVM Container
Focus on efficient datacenter deployment at scale
58.
59.
60. Gilt Microservices
Decider
!!
Configuration
Ion Cannon
SBT
Rake
!
Tooling
Finagle
Zookeeper
!
Discovery
Akka
Finagle
Netty
!
Routing
Zipkin
!!
Observability
Datastores per Microservice using MongoDB, Postgres, Voldemort
Deployment on AWS
Scala and Ruby with Docker Containers
61. Gilt Microservices
Decider
!!
Configuration
Ion Cannon
SBT
Rake
!
Tooling
Finagle
Zookeeper
!
Discovery
Akka
Finagle
Netty
!
Routing
Zipkin
!!
Observability
Datastores per Microservice using MongoDB, Postgres, Voldemort
Deployment on AWS
Scala and Ruby with Docker Containers
Focus on fast development with Scala and Docker
62.
63. Hailo Microservices
Configuration
Hubot
Janky
Jenkins
!
Tooling
go-platform
!
Discovery
go-platform
RabbitMQ
!
Routing
Request trace
!
Observability
Datastore based on Cassandra
Deployment on AWS
Go using Docker
64. Hailo Microservices
Configuration
Hubot
Janky
Jenkins
!
Tooling
go-platform
!
Discovery
go-platform
RabbitMQ
!
Routing
Request trace
!
Observability
Datastore based on Cassandra
Deployment on AWS
Go using Docker
Focus on fast development at scale using Go
65.
66. Node.js Microservices
Several different approaches
!
Mostly small simple microservices
!
Focus on easy interface with
presentation code in javascript
!
AWS Lambda - preview only
http://senecajs.org/
http://aws.amazon.com/lambda/
67. Adrian’s Prototypes
Model and visualize microservices
Simulate interesting architectures
!
See github.com/adrianco/spigo
Simulate Protocol Interactions in Go
!
See github.com/adrianco/d3grow
Dynamic visualization
68. Web Scale Characteristics
●Brand new Microservices are deployed infrequently
●New versions deployed automatically/frequently
●No real need for general purpose orchestration
●Architectures use hundreds of microservices
●Each deployment is heavily customized
70. Orchestration for Applications
●Standard portable microservice based applications
●New versions deployed automatically/frequently
●Orchestration automated and standardized
●Architectures likely based on tens of microservices
●Opportunity: Docker Hub as the enterprise app store
71. Next Generation Applications
?
!
Configuration
?
!
Tooling
?
!
Discovery
?
!
Routing
?
!
Observability
Datastores: Ephemeral, Orchestrated or DBaaS
Operational: Many orchestration choices across public and private clouds
Development: Components assembled from Docker Hub as a composable “app store”
72. Next Generation Applications
?
!
Configuration
?
!
Tooling
?
!
Discovery
?
!
Routing
?
!
Observability
Datastores: Ephemeral, Orchestrated or DBaaS
Operational: Many orchestration choices across public and private clouds
Development: Components assembled from Docker Hub as a composable “app store”
Fill in the gaps, rapidly evolving ecosystem choices
77. Any Questions?
● Battery Ventures http://www.battery.com
● Adrian’s Tweets @adrianco and Blog http://perfcap.blogspot.com
● Slideshare http://slideshare.com/adriancockcroft
!
● Monitorama Opening Keynote Portland OR - May 7th, 2014 - Video available
● GOTO Chicago Opening Keynote May 20th, 2014 - Video available
● Qcon New York – Speed and Scale - June 11th, 2014 - Video available
● Structure - Cloud Trends - San Francisco - June 19th, 2014 - Video available
● GOTO Copenhagen/Aarhus – Fast Delivery - Denmark – Sept 25th, 2014
● DevOps Enterprise Summit - San Francisco - Oct 21-23rd, 2014 #DOES14 - Videos available
● GOTO Berlin - Migrating to Microservices - Germany - Nov 6th, 2014
● AWS Re:Invent - Cloud Native Cost Optimization - Las Vegas - November 14th, 2014
Disclosure: some of the companies mentioned may be Battery Ventures Portfolio Companies
See www.battery.com for a list of portfolio investments