Wow! The future is…now!And how we’re gonna deal with it
Why?• Keep this presentation as a reference for the
company
• Create a vision for you and share mine
• Motivate myself to keep up
• Convince stakeholders
• Buzzwords… yeah, just buzzwords
Sources of endless pain
• Bootstrap
• Develop
• Test
• Deploy
Sources of endless pain
• Develop
• Bootstrap!
• Test!
• Deploy
Thanks to bibstha
Thanks to bibstha
Thanks to bibstha
Thanks to bibstha
Docker: ?
• Is a platform to build, run and ship your applications
• Is a kind of git versioning for software
• How it was in Google back in a day
Thanks to bibstha
Thanks to bibstha
Docker: ??
• Just like the App Store, but open source
• You can pull anything and install it fast
• No approval required
• Anyone can host their private registry
Docker: upsides
• Fast startup
• Reproducible environments
• No need to install anything on your dev machine (except for the docker itself)
Docker: downsides
• Some old servers might need an upgrade
• Additional level of complexity
• MacOS incompatibilities
• No way to link containers on multiple machines (as of September 2014)
Typical workflow
Create a Dockerfile
Then build it…
Publish it
…and pronto!
Showcase time
Pretty much every-freaking-one• Spotify
• Mailgun
• AWS
• Yandex Cocaine
• Digital Ocean
• Create Digital
But wait, git introduced a level of complexity
as well…
– Our CEO
“…A-a-a-n-d from the business point of view?”
Yay!
• Bootstrap on dev machines
• Test under same conditions
• Stage same containers
• Deploy… yeah, same containers
Dockerize all the things!
Any way to automate that?
IaaS: AWS
• They simply made it right
• However, manual wiring is required
PaaS
• Google App Engine
• Heroku
12 Factor• I. Codebase. One codebase tracked in revision control, many deploys
• II. Dependencies. Explicitly declare and isolate dependencies
• III. Config. Store config in the environment
• IV. Backing Services. Treat backing services as attached resources
• V. Build, release, run. Strictly separate build and run stages
• VI. Processes. Execute the app as one or more stateless processes
• VII. Port binding. Export services via port binding
• VIII. Concurrency. Scale out via the process model
• IX. Disposability. Maximize robustness with fast startup and graceful shutdown
• X. Dev/prod parity. Keep development, staging, and production as similar as possible
• XI. Logs. Treat logs as event streams
• XII. Admin processes. Run admin/management tasks as one-off processes
Can I haz a PaaS?
• Sure thing!
• Docker to the rescue
CoreOS
• The world's first OS as a Service — patches are delivered as a continuous stream of updates.
• ChromeOS spin-off
• Every process is dockerized
• Cloud management made simple
Awesome dashboard
Awesome stuff
• Manage instances. Fleet.
• Service discovery. Etcd.
CoreOS: state of things
• Finally stable
• Amazon AMIs, Rackspace
• Bare Metal
Much like AWSBut private
So what we got
• Docker. Containers and isolation
• CoreOS. Service discovery and container management
Deis
Deis
• A PaaS on top of CoreOS
• Heroku-like experience
From developer’s POV
• $ git push heroku master
• $ git push deis master
Everyone’s freaking happy!
Summary !
Docker + CoreOS + Deis = AWESOME