docker at openbet, shutit and 2048 - ian miell
DESCRIPTION
OpenBet is a transactional gambling platform that's over 15 years old. Over the years we've accrued a lot of technical debt and have recently begun using docker to help tackle some of this. To this end we've built and open-sourced a built tool: http://ianmiell.github.io/shutit/ and https://github.com/ianmiell/shutit/ As a demo, we've used it to win at 2048, blogged about here: http://zwischenzugs.wordpress.com/2014/05/09/docker-shutit-and-the-perfect-2048-game/TRANSCRIPT
Docker at OpenBet
Ian MiellHead of DevOps, OpenBet
Overview
● Backgroundo Companyo Me
● Why Docker works for us● Why Dockerfiles don’t● Some CM bigotry● Intro to ShutIt
o “A tool for complex Docker deployments”
Background - What We Do
● Fifteen+ year-old companyo High-volume transactions
▪ Sports bets, casino bets, payments, messaging▪ Busiest day of the year: 43m+ money movements on
our systems (8,000+/s peak)● Compare: FTSE does 0.5m per day● Amazon ~400/s
▪ 200 sports bets bets per second on one customer● These are not independent transactions
My Background
● Joined as Developer 2001
● Tech Lead● Product Architect● Principal Developer● Support Engineer● Support Manager● Head of DevOps
o But we don’t really do DevOpso Highly responsive and skilled support teamo Extensive liaison with development teams to deploy fixeso Test, stage, pre-live, live deployment…o Charged with implementing new VM estate
Background - Technical Debt
● Wrong number of customers(~25, ~6 big ones)o Customers in arms race
▪ Each does things differentlyo Don’t care about technical debt - pressure to
deliver too great▪ Not unique to OpenBet!▪ Think “trading floor”
Development and Deployment
● No established process for local dev● Some teams rely on folklore to build their envs
(no, really)● Shared Dev Servers● No VMs
Clunky - never really tookEffort of building too great
Development and Deployment
● Each customer has different deployment policies● Very complex deployments● Wiki pages on how-to build everywhere● Bespoke Build Tool● Frustrating for support!● Enter Docker...
ShutIt
● Borne of frustration with our build process and limitations of Dockerfiles
● ShutIt is therefore:o Interactiveo Configurableo Programmableo Coherent
■ Framework designed to help manage spiralling complexity
“What about Chef/Puppet/Ansible?”
● CPA for moving target maintenance○ State is the enemy!
● We’re programmers comfortable managing code complexity○ Framework should enable, not limit
● Shallow learning curve from shell/other build tools
● Bad experience learning Chef● No-one delivered anything at OB with C/P/A● Hired Chef enthusiast/expert switched to ShutIt
Demo - Build Your Own ShutIt Server in 3 Minutes
Roadmap
● Orchestration○ Networked envs’ automation
● Smarter layer re-use○ Optimise builds
● Dockerfile integration?● Dockerfile translator?● Networked envs using Skydock
○ We’ve used this internally already● ?
Links
● http://shutit.tk● http://shutit.tk:8080● http://zwischenzugs.wordpress.com/● https://github.com/ianmiell/shutit● https://index.docker.io/search?q=imiell● http://uk.linkedin.com/pub/ian-miell/0/496/694