quill containers
TRANSCRIPT
Our Container Journeyso Far…@andybritcliffe
Making people think
Who are Quill?
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
We’re building a software platform to achieve this at global scale…using containers
Underpinned by Technology
A Backstory
• 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
The Challenge
• A very brittle monolithic application• An ever growing list of requirements• Fast moving competitive landscape • A small team – 6 Devs + 1 DevOps
We Faced…
• 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
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
Our Solution
• Dokku (and Docker) • Heroku like deployment capability…without the
cost ☺• Open source• Docker centric• Cloud agnostic• Extensible
Container Tooling
• 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
The Result
1. Log into our deployment dashboard2. Select Git repo of service, add env variables3. Choose number of instances (scale FTW)4. Click
Our Deployment Process Today
• 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
How is it Going?
• Feature development was painful• To ship we had to:
• Co-ordinate team leads• Notify clients• Have downtime ☹
Previously
• 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
Final Thoughts
• 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
• 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…
Making people think
Thank you@andybritcliffe
www.quillcontent.com