3. We deliver bespoke, high-quality content across
an unparalleled number of topics, formats and
languages.
Clients include Shop Direct, STA Travel, LA Fitness, Reckitt
Benckiser, 888.com, WPP, Aegis and Publicis.
Our mission is to build the most compelling
content experiences for brands
4. We’re building a software platform to achieve this
at global scale…using containers
Underpinned by Technology
6. • Software started out simple to support the business
as it grew
• VC investment in May 2014
• I joined 8 months ago (Sept 2014) as CTO
• At that point we had a large single RoR application (e.
g. Article class > 600 LOC)
• A test suite running time of >1 hour :-/
Where we were
9. • A very brittle monolithic application
• An ever growing list of requirements
• Fast moving competitive landscape
• A small team – 6 Devs + 1 DevOps
We Faced…
10.
11. • Enhance speed to market
• Provide fault tolerance and ability to easily scale
• Ensure tech ops first class citizen
• Focus on developer productivity and happiness
We Drew up a Plan – Our Goals
12. In response we adopted a Microservices
architecture* and as a result needed build, ops
and deployment infrastructure to enable this…
Our Approach
*Why we chose this is a topic for another talk
15. • Dokku (and Docker)
• Heroku like deployment capability…without the
cost ☺
• Open source
• Docker centric
• Cloud agnostic
• Extensible
Container Tooling
16. • Consul - service discovery and config
• HA Proxy - routing and load balancing
• InfluxDB - metric tracking
• Pingdom* - health checks
• Papertrail* - logs
Other Key Tools
*Paid for but worth every penny
18. 1. Log into our deployment dashboard
2. Select Git repo of service, add env variables
3. Choose number of instances (scale FTW)
4. Click
Our Deployment Process Today
19.
20. • Immutable infrastructure (new VMs provisioned) and
application code deployed in containers via Dokku
• DNS setup and service(s) registered in Consul
• Routing/Load Balancing setup in HA Proxy
• Logging and metrics service configured for Papertrail
and InfluxDB
Under the Hood
22. • Feature development was painful
• To ship we had to:
• Co-ordinate team leads
• Notify clients
• Have downtime ☹
Previously
23. • Shipping features several times a day with no downtime
• > 15 new services deployed in last 4 months
• Shipping new features without regression
• A standardised way of deployment across languages
(Ruby, Go and Node)
Now
26. • Give us easy and repeatable polyglot deployments
• Give us cloud portability
• Give us the ability to run actual production code
locally (debugging heaven)
Specifically on Containers
27. • Tech ops is complex - a number of tools need to be
understood by the team
• Patching and upgrade challenges
• Careful of NIH syndrome for Orchestration. At larger
scale things like Kubernetes and Docker Compose
are definitely in play
Be aware though…