Saturday 1:40 p.m.–2:25 p.m.
Achieving Continuous Delivery: An Automation Story
- Audience level:
- Systems Administration
Continuos Deployment is the act of deploying software constantly. The idea is if "release early, release often" is good, releasing very often is better. It's not trivial. Automation is part of the battle, and testing is another. Learn to use tools like Jenkins and Ansible to move from deploying software once a month to 15 times every hour, and why you'll want to.
Continuous Deployment is the idea of changes to software being released at extremely frequent intervals as opposed to on a release timetable, and has become a popular method of deploying, in particular, hosted web applications. For many developers and operations professionals, the idea of continuous deployment is not just an end goal, but a process -- it's a continuum. At one end you start with manual deployment, running commands on boxes. Then you automate that. Then you might get a release down to one click to deploy everything, but different manual steps for quality assurance, and those "turn your keys all at once" moments that involve several guys locked in a server room on a Saturday night, just in case anything goes wrong. And something always does. Getting there to Continuous Deployment all the way is great, but getting there even part of the way (and implementing some of the concepts) can yield great improvements in one's day to day job of dealing with software releases. Along the way, you'll learn about using automation at maximum efficiency to make sure things don't go wrong, and when they do, that you can recover painlessly. This requires many things - an automated development environment that resembles production, a continuous integration system (like Jenkins), a stage environment that even more closely resembles production, integration tests running against this stage environment, and a production environment -- all connected together in sane ways. Combining them together, it's possible to have *software* decide when to ship code, not humans. In this talk, we'll show you how, giving specific examples of how some major companies got to exactly the place you are going. One of the tools we'll show off is Ansible, a powerful python-powered automation tool, which is one of the top 6 python projects on GitHub in terms of forks today (out of hundreds of thousands of projects). Ansible's really popular in DevOps circles, due to it's agent-less nature and very large toolbox of included modules. While it serves many other needs, it was also written specifically for the purpose of enabling zero-downtime rolling updates of infrastructure. We'll show how Ansible can interact with monitoring systems and load balancers to orchestrate updates of complex multi-tier environments, that happen while you sleep, allowing you more time to spend on the coding and IT tasks you want to spend time on, rather than repeating the same manual steps each time you deploy your software. No matter what automation tools you use or whether you adopt a C.D. workflow fully, the lessons learned on the path to continuous deployment will change the way you build, test, and release software for the better.