SlideShare a Scribd company logo
1 of 45
What It Really Takes to Build a Container
Platform
10 Things We Learned the Hard Way
Matt Butcher
Platform Architect at Deis
Matt is responsible for
defining Deis v2 and
overseeing what he likes to
call…
The Great Kubernetes Rebase
11/18/2015 Putting Containers into Production
This is not a commercial for Deis
11/18/2015 Putting Containers into Production
Our View (Subject to Change)
• Component architecture is haute couture.
• Containers are the idea vehicle for
contemporary architecture
• Avoid the “thrown over the wall” problem by
building good tools
11/18/2015 Putting Containers into Production
Background
Deis v1
• Focus: Better Heroku for
You
• Docker to the max
• Mostly Go
• Flexibility, but no services
• Big success
Deis v2
• Focus: PaaS as a Set of
Microservices
• Kubernetes to the max
• Still mostly Go
• Building blocks
• About 40% complete
11/18/2015 Putting Containers into Production
Top Ten List of Things We Learned the
Wrong Way
11/18/2015 Putting Containers into Production
Hard
SAY “YES” TO OBJECT STORAGE
Lesson 10
11/18/2015 Putting Containers into Production
… and probably
“no” to network
file systems
11/18/2015 Putting Containers into Production
11/18/2015 Putting Containers into Production
Mistake: We assumed everyone wanted a
single storage solution.
Solution: Focus on object storage for core
components
Object Storage vs. Network FS
Object Storage
• Standard interface: S3 API
• Dozens of nearly uniform
implementations
• Unit of work: object (file)
Filesystem/Block Storage
• POSIX-ish, lots of standards
• Too many choices for
implementation
• Lots of variants with
important discrepancies
• But can handle streaming
11/18/2015 Putting Containers into Production
TURTLES ALL THE WAY DOWN
Lesson 9
11/18/2015 Putting Containers into Production
The strange things we do for security
11/18/2015 Putting Containers into Production
11/18/2015 Putting Containers into Production
Mistake: We built our containers inside of
containers (insecure).
Solution: Well…
Docker and Security
• Running containers:
relatively small set of
issues
• Building containers is
much riskier
11/18/2015 Putting Containers into Production
“What if we ran Docker in a VM in a container?”
11/18/2015 Putting Containers into Production
Kubernetes Node
Container
VM (Qemu)
Build Container
THE CLUSTERBOMB
Lesson 8
11/18/2015 Putting Containers into Production
HA clustering is hard. Ask etcd.
11/18/2015 Putting Containers into Production
11/18/2015 Putting Containers into Production
Mistake: We used Etcd in a naïve way,
assuming clustering was fairly dynamic.
Solution: Spend lots more time
hardening clustering solutions.
DOCKER IS A WHALE ON THE MOVE
Lesson 7
11/18/2015 Putting Containers into Production
11/18/2015 Putting Containers into Production
Mistake: We committed to stay on the
latest release of Docker within the 1.x line
(SemVer).
Solution: Hang back until a particular
version emerges as stable.
Docker doesn’t do
SemVer
11/18/2015 Putting Containers into Production
SINK THE TITANIC WHILE IT’S STILL AT
HARBOR
Lesson 6
11/18/2015 Putting Containers into Production
11/18/2015 Putting Containers into Production
Mistake: Underestimate the complexity
of a fully operational container platform.
Solution: Testing of as many varieties as
possible.
Testing with vim and vigor
11/18/2015 Putting Containers into Production
http://is.gd/GWKfGv
GOPHERS ARE AWESOME…ISH
Lesson 5
11/18/2015 Putting Containers into Production
Five Things I Love About Go
1. Great tools
2. Static compilation is huge for containers
3. Rich libraries, esp. for networking
4. Easy to learn
5. Cross-platform (for very small definitions of
“platform”)
11/18/2015 Putting Containers into Production
11/18/2015 Putting Containers into Production
Mistake: We might have been just a little
starry eyed.
Solution: Accept the limitations.
O Go, Y U NO…
11/18/2015 Putting Containers into Production
http://meme.wikia.com/wiki/File:Y_u_no_sketch.png
Trouble in Paradise
• “Go is easy” == simple
syntax, verbose code
• Package management
• Package management
• Package management
11/18/2015 Putting Containers into Production
YOUR TEAM IS LIKE YOUR UNDERPANTS
Lesson 4
11/18/2015 Putting Containers into Production
They can only stretch so far
11/18/2015 Putting Containers into Production
Microservice Architecture
11/18/2015 Putting Containers into Production
http://assets2.ignimgs.com/2014/06/24/ready-player-one-book-art-1280jpg-b68ca1_1280w.jpg
11/18/2015 Putting Containers into Production
Mistake: Microservice all the things, but
without a plan for maintenance.
Solution: Process saves the day.
ALL YOUR SCHEDULERS ARE BELONG TO
US
Lesson 3
11/18/2015 Putting Containers into Production
Somebody set up us the bomb!
11/18/2015 Putting Containers into Production
11/18/2015 Putting Containers into Production
Mistake: “Support all of the schedulers”
means “support the weakest scheduler”
Solution: Choose just one, and choose
based on power & flexibility.
MONOREPOS ARE EVIL
Lesson 2
11/18/2015 Putting Containers into Production
Monorepos
Pros
• All the code is in just one
place.
• Everyone gets alerted on
everything.
• Simplifies builds,
documentation, issue
queue, etc.
Cons
• Huge dependency tree
• Everyone gets alerted on
everything
• Stable and “preview” mixed
• Monorepo vs. microservice
• Our users couldn’t
effectively re-use
11/18/2015 Putting Containers into Production
11/18/2015 Putting Containers into Production
Mistake: One repo with everything in it!
(Hey! Google does it!)
Solution: Break out microservices into
their own repo.
KUBERNETES FLOATS MY BOAT
Lesson 1
11/18/2015 Putting Containers into Production
But it’s a very big and complex boat
11/18/2015 Putting Containers into Production
http://is.gd/bUGF1J
11/18/2015 Putting Containers into Production
Mistake: “Kubernetes is easy! After all,
we only have to support one scheduler!”
Solution: Educate, cooperate, and build
really good tooling!
Package Management
Make working with
Kubernetes as easy
as…
$ helm install redis-
cluster
11/18/2015 Putting Containers into Production
Github.com/deis/helm
Conclusion
• Our guiding philosophy: containers for
microservices without “throwing over the
wall”
• We’ve learned some lessons along the way
• But the bottom line: Containers are the right
bet for the microservice architecture.
11/18/2015 Putting Containers into Production
11/18/2015 Putting Containers into Production

More Related Content

Viewers also liked

ContainerDays NYC 2016: "From Hello World to Real World: Building a Productio...
ContainerDays NYC 2016: "From Hello World to Real World: Building a Productio...ContainerDays NYC 2016: "From Hello World to Real World: Building a Productio...
ContainerDays NYC 2016: "From Hello World to Real World: Building a Productio...DynamicInfraDays
 
ContainerDays NYC 2016: "Observability and Manageability in a Container Envir...
ContainerDays NYC 2016: "Observability and Manageability in a Container Envir...ContainerDays NYC 2016: "Observability and Manageability in a Container Envir...
ContainerDays NYC 2016: "Observability and Manageability in a Container Envir...DynamicInfraDays
 
ContainerDays NYC 2015: "How Yodle Cleaned Up the Mess Using Containers and M...
ContainerDays NYC 2015: "How Yodle Cleaned Up the Mess Using Containers and M...ContainerDays NYC 2015: "How Yodle Cleaned Up the Mess Using Containers and M...
ContainerDays NYC 2015: "How Yodle Cleaned Up the Mess Using Containers and M...DynamicInfraDays
 
ContainerDays Boston 2015: "A Brief History of Containers" (Jeff Victor & Kir...
ContainerDays Boston 2015: "A Brief History of Containers" (Jeff Victor & Kir...ContainerDays Boston 2015: "A Brief History of Containers" (Jeff Victor & Kir...
ContainerDays Boston 2015: "A Brief History of Containers" (Jeff Victor & Kir...DynamicInfraDays
 
ContainerDays Boston 2015: "CoreOS: Building the Layers of the Scalable Clust...
ContainerDays Boston 2015: "CoreOS: Building the Layers of the Scalable Clust...ContainerDays Boston 2015: "CoreOS: Building the Layers of the Scalable Clust...
ContainerDays Boston 2015: "CoreOS: Building the Layers of the Scalable Clust...DynamicInfraDays
 
ContainerDays Boston 2016: "Docker For the Developer" (Borja Burgos)
ContainerDays Boston 2016: "Docker For the Developer" (Borja Burgos)ContainerDays Boston 2016: "Docker For the Developer" (Borja Burgos)
ContainerDays Boston 2016: "Docker For the Developer" (Borja Burgos)DynamicInfraDays
 
ContainerDays NYC 2016: "The Secure Introduction Problem: Getting Secrets Int...
ContainerDays NYC 2016: "The Secure Introduction Problem: Getting Secrets Int...ContainerDays NYC 2016: "The Secure Introduction Problem: Getting Secrets Int...
ContainerDays NYC 2016: "The Secure Introduction Problem: Getting Secrets Int...DynamicInfraDays
 
ContainerDays NYC 2016: "State of the Persistence Art: Present Best Practices...
ContainerDays NYC 2016: "State of the Persistence Art: Present Best Practices...ContainerDays NYC 2016: "State of the Persistence Art: Present Best Practices...
ContainerDays NYC 2016: "State of the Persistence Art: Present Best Practices...DynamicInfraDays
 
ContainerDays Boston 2016: "Hiding in Plain Sight: Managing Secrets in a Cont...
ContainerDays Boston 2016: "Hiding in Plain Sight: Managing Secrets in a Cont...ContainerDays Boston 2016: "Hiding in Plain Sight: Managing Secrets in a Cont...
ContainerDays Boston 2016: "Hiding in Plain Sight: Managing Secrets in a Cont...DynamicInfraDays
 
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...DynamicInfraDays
 
ContainerDays NYC 2016: "Containers in Azure: Understanding the Microsoft Con...
ContainerDays NYC 2016: "Containers in Azure: Understanding the Microsoft Con...ContainerDays NYC 2016: "Containers in Azure: Understanding the Microsoft Con...
ContainerDays NYC 2016: "Containers in Azure: Understanding the Microsoft Con...DynamicInfraDays
 

Viewers also liked (11)

ContainerDays NYC 2016: "From Hello World to Real World: Building a Productio...
ContainerDays NYC 2016: "From Hello World to Real World: Building a Productio...ContainerDays NYC 2016: "From Hello World to Real World: Building a Productio...
ContainerDays NYC 2016: "From Hello World to Real World: Building a Productio...
 
ContainerDays NYC 2016: "Observability and Manageability in a Container Envir...
ContainerDays NYC 2016: "Observability and Manageability in a Container Envir...ContainerDays NYC 2016: "Observability and Manageability in a Container Envir...
ContainerDays NYC 2016: "Observability and Manageability in a Container Envir...
 
ContainerDays NYC 2015: "How Yodle Cleaned Up the Mess Using Containers and M...
ContainerDays NYC 2015: "How Yodle Cleaned Up the Mess Using Containers and M...ContainerDays NYC 2015: "How Yodle Cleaned Up the Mess Using Containers and M...
ContainerDays NYC 2015: "How Yodle Cleaned Up the Mess Using Containers and M...
 
ContainerDays Boston 2015: "A Brief History of Containers" (Jeff Victor & Kir...
ContainerDays Boston 2015: "A Brief History of Containers" (Jeff Victor & Kir...ContainerDays Boston 2015: "A Brief History of Containers" (Jeff Victor & Kir...
ContainerDays Boston 2015: "A Brief History of Containers" (Jeff Victor & Kir...
 
ContainerDays Boston 2015: "CoreOS: Building the Layers of the Scalable Clust...
ContainerDays Boston 2015: "CoreOS: Building the Layers of the Scalable Clust...ContainerDays Boston 2015: "CoreOS: Building the Layers of the Scalable Clust...
ContainerDays Boston 2015: "CoreOS: Building the Layers of the Scalable Clust...
 
ContainerDays Boston 2016: "Docker For the Developer" (Borja Burgos)
ContainerDays Boston 2016: "Docker For the Developer" (Borja Burgos)ContainerDays Boston 2016: "Docker For the Developer" (Borja Burgos)
ContainerDays Boston 2016: "Docker For the Developer" (Borja Burgos)
 
ContainerDays NYC 2016: "The Secure Introduction Problem: Getting Secrets Int...
ContainerDays NYC 2016: "The Secure Introduction Problem: Getting Secrets Int...ContainerDays NYC 2016: "The Secure Introduction Problem: Getting Secrets Int...
ContainerDays NYC 2016: "The Secure Introduction Problem: Getting Secrets Int...
 
ContainerDays NYC 2016: "State of the Persistence Art: Present Best Practices...
ContainerDays NYC 2016: "State of the Persistence Art: Present Best Practices...ContainerDays NYC 2016: "State of the Persistence Art: Present Best Practices...
ContainerDays NYC 2016: "State of the Persistence Art: Present Best Practices...
 
ContainerDays Boston 2016: "Hiding in Plain Sight: Managing Secrets in a Cont...
ContainerDays Boston 2016: "Hiding in Plain Sight: Managing Secrets in a Cont...ContainerDays Boston 2016: "Hiding in Plain Sight: Managing Secrets in a Cont...
ContainerDays Boston 2016: "Hiding in Plain Sight: Managing Secrets in a Cont...
 
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
 
ContainerDays NYC 2016: "Containers in Azure: Understanding the Microsoft Con...
ContainerDays NYC 2016: "Containers in Azure: Understanding the Microsoft Con...ContainerDays NYC 2016: "Containers in Azure: Understanding the Microsoft Con...
ContainerDays NYC 2016: "Containers in Azure: Understanding the Microsoft Con...
 

Similar to ContainerDays NYC 2015: "What It Really Takes to Build a Container Platform" (Matt Butcher)

My Journey to Becoming a Docker Captain
My Journey to Becoming a Docker CaptainMy Journey to Becoming a Docker Captain
My Journey to Becoming a Docker CaptainAjeet Singh Raina
 
Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...
Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...
Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...Daniel Bryant
 
Docker - A high level introduction to dockers and containers
Docker - A high level introduction to dockers and containersDocker - A high level introduction to dockers and containers
Docker - A high level introduction to dockers and containersDr Ganesh Iyer
 
Object Oriented Containers - Applying SOLID Principles to Docker/Container De...
Object Oriented Containers - Applying SOLID Principles to Docker/Container De...Object Oriented Containers - Applying SOLID Principles to Docker/Container De...
Object Oriented Containers - Applying SOLID Principles to Docker/Container De...Nitin Bhide
 
d2iq, d2iq konvoy, day 2 operations, lifecycle management, mayadata, mayadata...
d2iq, d2iq konvoy, day 2 operations, lifecycle management, mayadata, mayadata...d2iq, d2iq konvoy, day 2 operations, lifecycle management, mayadata, mayadata...
d2iq, d2iq konvoy, day 2 operations, lifecycle management, mayadata, mayadata...MayaData Inc
 
10 tips for Cloud Native Security
10 tips for Cloud Native Security10 tips for Cloud Native Security
10 tips for Cloud Native SecurityKarthik Gaekwad
 
Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture Apigee | Google Cloud
 
StackEngine Demo - Docker Austin
StackEngine Demo - Docker AustinStackEngine Demo - Docker Austin
StackEngine Demo - Docker AustinBoyd Hemphill
 
DevSecOps in a cloudnative world
DevSecOps in a cloudnative worldDevSecOps in a cloudnative world
DevSecOps in a cloudnative worldKarthik Gaekwad
 
Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...
Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...
Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...Codemotion
 
Dockerize it all
Dockerize it allDockerize it all
Dockerize it allPuneet Behl
 
Murat Karslioglu, VP Solutions @ OpenEBS - Containerized storage for containe...
Murat Karslioglu, VP Solutions @ OpenEBS - Containerized storage for containe...Murat Karslioglu, VP Solutions @ OpenEBS - Containerized storage for containe...
Murat Karslioglu, VP Solutions @ OpenEBS - Containerized storage for containe...Outlyer
 
RedisConf18 - Using Redis as a Backend in a Serverless Application With Kubeless
RedisConf18 - Using Redis as a Backend in a Serverless Application With KubelessRedisConf18 - Using Redis as a Backend in a Serverless Application With Kubeless
RedisConf18 - Using Redis as a Backend in a Serverless Application With KubelessRedis Labs
 
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery AnalyticsDevoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery AnalyticsLuca Milanesio
 
How to share a Kubernetes cluster securely through Lens spaces
How to share a Kubernetes cluster securely through Lens spacesHow to share a Kubernetes cluster securely through Lens spaces
How to share a Kubernetes cluster securely through Lens spacesLibbySchulze
 
Real World CI/CD with Kubernetes
Real World CI/CD with KubernetesReal World CI/CD with Kubernetes
Real World CI/CD with KubernetesOpsta
 
Docker for Developers
Docker for DevelopersDocker for Developers
Docker for Developersnine
 
Out of the Blue - the Workflow in Bluemix Development
Out of the Blue - the Workflow in Bluemix DevelopmentOut of the Blue - the Workflow in Bluemix Development
Out of the Blue - the Workflow in Bluemix DevelopmentOliver Busse
 

Similar to ContainerDays NYC 2015: "What It Really Takes to Build a Container Platform" (Matt Butcher) (20)

My Journey to Becoming a Docker Captain
My Journey to Becoming a Docker CaptainMy Journey to Becoming a Docker Captain
My Journey to Becoming a Docker Captain
 
Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...
Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...
Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...
 
Docker - A high level introduction to dockers and containers
Docker - A high level introduction to dockers and containersDocker - A high level introduction to dockers and containers
Docker - A high level introduction to dockers and containers
 
Object Oriented Containers - Applying SOLID Principles to Docker/Container De...
Object Oriented Containers - Applying SOLID Principles to Docker/Container De...Object Oriented Containers - Applying SOLID Principles to Docker/Container De...
Object Oriented Containers - Applying SOLID Principles to Docker/Container De...
 
d2iq, d2iq konvoy, day 2 operations, lifecycle management, mayadata, mayadata...
d2iq, d2iq konvoy, day 2 operations, lifecycle management, mayadata, mayadata...d2iq, d2iq konvoy, day 2 operations, lifecycle management, mayadata, mayadata...
d2iq, d2iq konvoy, day 2 operations, lifecycle management, mayadata, mayadata...
 
10 tips for Cloud Native Security
10 tips for Cloud Native Security10 tips for Cloud Native Security
10 tips for Cloud Native Security
 
Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture
 
StackEngine Demo - Docker Austin
StackEngine Demo - Docker AustinStackEngine Demo - Docker Austin
StackEngine Demo - Docker Austin
 
DevSecOps in a cloudnative world
DevSecOps in a cloudnative worldDevSecOps in a cloudnative world
DevSecOps in a cloudnative world
 
Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...
Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...
Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...
 
Dockerize it all
Dockerize it allDockerize it all
Dockerize it all
 
Murat Karslioglu, VP Solutions @ OpenEBS - Containerized storage for containe...
Murat Karslioglu, VP Solutions @ OpenEBS - Containerized storage for containe...Murat Karslioglu, VP Solutions @ OpenEBS - Containerized storage for containe...
Murat Karslioglu, VP Solutions @ OpenEBS - Containerized storage for containe...
 
RedisConf18 - Using Redis as a Backend in a Serverless Application With Kubeless
RedisConf18 - Using Redis as a Backend in a Serverless Application With KubelessRedisConf18 - Using Redis as a Backend in a Serverless Application With Kubeless
RedisConf18 - Using Redis as a Backend in a Serverless Application With Kubeless
 
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery AnalyticsDevoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
 
How to share a Kubernetes cluster securely through Lens spaces
How to share a Kubernetes cluster securely through Lens spacesHow to share a Kubernetes cluster securely through Lens spaces
How to share a Kubernetes cluster securely through Lens spaces
 
Real World CI/CD with Kubernetes
Real World CI/CD with KubernetesReal World CI/CD with Kubernetes
Real World CI/CD with Kubernetes
 
Kubernetes Security
Kubernetes SecurityKubernetes Security
Kubernetes Security
 
Up GitLab Presentation 2015
Up GitLab Presentation 2015Up GitLab Presentation 2015
Up GitLab Presentation 2015
 
Docker for Developers
Docker for DevelopersDocker for Developers
Docker for Developers
 
Out of the Blue - the Workflow in Bluemix Development
Out of the Blue - the Workflow in Bluemix DevelopmentOut of the Blue - the Workflow in Bluemix Development
Out of the Blue - the Workflow in Bluemix Development
 

Recently uploaded

Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 

Recently uploaded (20)

Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 

ContainerDays NYC 2015: "What It Really Takes to Build a Container Platform" (Matt Butcher)

  • 1. What It Really Takes to Build a Container Platform 10 Things We Learned the Hard Way
  • 2. Matt Butcher Platform Architect at Deis Matt is responsible for defining Deis v2 and overseeing what he likes to call… The Great Kubernetes Rebase 11/18/2015 Putting Containers into Production
  • 3. This is not a commercial for Deis 11/18/2015 Putting Containers into Production
  • 4. Our View (Subject to Change) • Component architecture is haute couture. • Containers are the idea vehicle for contemporary architecture • Avoid the “thrown over the wall” problem by building good tools 11/18/2015 Putting Containers into Production
  • 5. Background Deis v1 • Focus: Better Heroku for You • Docker to the max • Mostly Go • Flexibility, but no services • Big success Deis v2 • Focus: PaaS as a Set of Microservices • Kubernetes to the max • Still mostly Go • Building blocks • About 40% complete 11/18/2015 Putting Containers into Production
  • 6. Top Ten List of Things We Learned the Wrong Way 11/18/2015 Putting Containers into Production Hard
  • 7. SAY “YES” TO OBJECT STORAGE Lesson 10 11/18/2015 Putting Containers into Production
  • 8. … and probably “no” to network file systems 11/18/2015 Putting Containers into Production
  • 9. 11/18/2015 Putting Containers into Production Mistake: We assumed everyone wanted a single storage solution. Solution: Focus on object storage for core components
  • 10. Object Storage vs. Network FS Object Storage • Standard interface: S3 API • Dozens of nearly uniform implementations • Unit of work: object (file) Filesystem/Block Storage • POSIX-ish, lots of standards • Too many choices for implementation • Lots of variants with important discrepancies • But can handle streaming 11/18/2015 Putting Containers into Production
  • 11. TURTLES ALL THE WAY DOWN Lesson 9 11/18/2015 Putting Containers into Production
  • 12. The strange things we do for security 11/18/2015 Putting Containers into Production
  • 13. 11/18/2015 Putting Containers into Production Mistake: We built our containers inside of containers (insecure). Solution: Well…
  • 14. Docker and Security • Running containers: relatively small set of issues • Building containers is much riskier 11/18/2015 Putting Containers into Production
  • 15. “What if we ran Docker in a VM in a container?” 11/18/2015 Putting Containers into Production Kubernetes Node Container VM (Qemu) Build Container
  • 16. THE CLUSTERBOMB Lesson 8 11/18/2015 Putting Containers into Production
  • 17. HA clustering is hard. Ask etcd. 11/18/2015 Putting Containers into Production
  • 18. 11/18/2015 Putting Containers into Production Mistake: We used Etcd in a naïve way, assuming clustering was fairly dynamic. Solution: Spend lots more time hardening clustering solutions.
  • 19. DOCKER IS A WHALE ON THE MOVE Lesson 7 11/18/2015 Putting Containers into Production
  • 20. 11/18/2015 Putting Containers into Production Mistake: We committed to stay on the latest release of Docker within the 1.x line (SemVer). Solution: Hang back until a particular version emerges as stable.
  • 21. Docker doesn’t do SemVer 11/18/2015 Putting Containers into Production
  • 22. SINK THE TITANIC WHILE IT’S STILL AT HARBOR Lesson 6 11/18/2015 Putting Containers into Production
  • 23. 11/18/2015 Putting Containers into Production Mistake: Underestimate the complexity of a fully operational container platform. Solution: Testing of as many varieties as possible.
  • 24. Testing with vim and vigor 11/18/2015 Putting Containers into Production http://is.gd/GWKfGv
  • 25. GOPHERS ARE AWESOME…ISH Lesson 5 11/18/2015 Putting Containers into Production
  • 26. Five Things I Love About Go 1. Great tools 2. Static compilation is huge for containers 3. Rich libraries, esp. for networking 4. Easy to learn 5. Cross-platform (for very small definitions of “platform”) 11/18/2015 Putting Containers into Production
  • 27. 11/18/2015 Putting Containers into Production Mistake: We might have been just a little starry eyed. Solution: Accept the limitations.
  • 28. O Go, Y U NO… 11/18/2015 Putting Containers into Production http://meme.wikia.com/wiki/File:Y_u_no_sketch.png
  • 29. Trouble in Paradise • “Go is easy” == simple syntax, verbose code • Package management • Package management • Package management 11/18/2015 Putting Containers into Production
  • 30. YOUR TEAM IS LIKE YOUR UNDERPANTS Lesson 4 11/18/2015 Putting Containers into Production
  • 31. They can only stretch so far 11/18/2015 Putting Containers into Production
  • 32. Microservice Architecture 11/18/2015 Putting Containers into Production http://assets2.ignimgs.com/2014/06/24/ready-player-one-book-art-1280jpg-b68ca1_1280w.jpg
  • 33. 11/18/2015 Putting Containers into Production Mistake: Microservice all the things, but without a plan for maintenance. Solution: Process saves the day.
  • 34. ALL YOUR SCHEDULERS ARE BELONG TO US Lesson 3 11/18/2015 Putting Containers into Production
  • 35. Somebody set up us the bomb! 11/18/2015 Putting Containers into Production
  • 36. 11/18/2015 Putting Containers into Production Mistake: “Support all of the schedulers” means “support the weakest scheduler” Solution: Choose just one, and choose based on power & flexibility.
  • 37. MONOREPOS ARE EVIL Lesson 2 11/18/2015 Putting Containers into Production
  • 38. Monorepos Pros • All the code is in just one place. • Everyone gets alerted on everything. • Simplifies builds, documentation, issue queue, etc. Cons • Huge dependency tree • Everyone gets alerted on everything • Stable and “preview” mixed • Monorepo vs. microservice • Our users couldn’t effectively re-use 11/18/2015 Putting Containers into Production
  • 39. 11/18/2015 Putting Containers into Production Mistake: One repo with everything in it! (Hey! Google does it!) Solution: Break out microservices into their own repo.
  • 40. KUBERNETES FLOATS MY BOAT Lesson 1 11/18/2015 Putting Containers into Production
  • 41. But it’s a very big and complex boat 11/18/2015 Putting Containers into Production http://is.gd/bUGF1J
  • 42. 11/18/2015 Putting Containers into Production Mistake: “Kubernetes is easy! After all, we only have to support one scheduler!” Solution: Educate, cooperate, and build really good tooling!
  • 43. Package Management Make working with Kubernetes as easy as… $ helm install redis- cluster 11/18/2015 Putting Containers into Production Github.com/deis/helm
  • 44. Conclusion • Our guiding philosophy: containers for microservices without “throwing over the wall” • We’ve learned some lessons along the way • But the bottom line: Containers are the right bet for the microservice architecture. 11/18/2015 Putting Containers into Production
  • 45. 11/18/2015 Putting Containers into Production