The ModCloth Platform team has been building a Docker-based continuous delivery pipeline. This presentation discusses that project and how we build containers at ModCloth. The topics include what goes into our containers; how to optimize builds to use the Docker build cache effectively; useful development workflows (including using fig); and the key decision to treat containers as processes instead of mini-vms. This presentation will also discuss (and demo!) the workflow we’ve adopted for building containers and how we’ve integrated container builds with our CI.
2. brief prologue
“rafe” (rafecolton on the internets)
software engineer, platform @ modcloth
using docker in prod since v0.7.0
*todo: explain “doing the old thing the new way”
8. motivations
• simplify application architecture
• support a variety of application languages
• make provisioning and deployment more accessible
9. motivations
• simplify application architecture
• support a variety of application languages
• make provisioning and deployment more accessible
goals
• push-button provisioning and deployment
• consolidated, pluggable platform
• move to linux
10. motivations
• simplify application architecture
• support a variety of application languages
• make provisioning and deployment more accessible
goals
• push-button provisioning and deployment
• consolidated, pluggable platform
• move to linux
bonus points
• chatops
• actual button for provisioning and deployment
11. motivations
goals
bonus points
• chatops
• actual button for provisioning and deployment
does docker
facilitate such a
solution?
• simplify application architecture
• support a variety of application languages
• make provisioning and deployment more accessible
• push-button provisioning and deployment
• consolidated, pluggable platform
• move to linux
25. challenges
• overall complexity
• maintainability
• image consistency
• container reliability
• log aggregation
• monitoring
lessons
• don’t do the new thing the old way
• consider division of responsibility
29. observations
docker is an excellent packaging and distribution system
containers are the canonical building block for a continuous delivery pipeline
54. so what did we learn? (or, through what did you sleep?)
stuff:
• the complexity will come naturally (so don’t force it)
• be intentional about your Dockerfile
55. so what did we learn? (or, through what did you sleep?)
stuff:
• the complexity will come naturally (so don’t force it)
• be intentional about your Dockerfile
• docker is an excellent packaging and distribution system
• containers are the canonical building blocks
56. so what did we learn? (or, through what did you sleep?)
stuff:
• the complexity will come naturally (so don’t force it)
• be intentional about your Dockerfile
• docker is an excellent packaging and distribution system
• containers are the canonical building blocks
• consider division of responsibility between the host and the container
• don’t do the new thing the old way (do the old thing the new way!)
57. brief epilogue
goal: move to linux
=> all apps (less one) now employing docker/ansible/linux
58. brief epilogue
goal: move to linux
=> all apps (less one) now employing docker/ansible/linux
goal: consolidated, pluggable platform
=> shared monitoring, log aggregation, & load balancing services
59. brief epilogue
goal: move to linux
=> all apps (less one) now employing docker/ansible/linux
goal: consolidated, pluggable platform
=> shared monitoring, log aggregation, & load balancing services
goal: push-button provisioning and deployment
=> it works, minimal magic… and it’s well documented
60. brief epilogue
goal: move to linux
=> all apps (less one) now employing docker/ansible/linux
goal: consolidated, pluggable platform
=> shared monitoring, log aggregation, & load balancing services
goal: push-button provisioning and deployment
=> it works, minimal magic… and it’s well documented
could easily be maintained by only two people… dun dun dun
62. brief epilogue
I’m job hunting…
…and I haven’t shot anything yet.
so if you’re hiring, come talk to me after the show.
twitter: @rafecolton
github: rafecolton
rafecolton.com