Saturday 2:35 p.m.–3:05 p.m.
Ship it: Deployments with Pip
- Audience level:
- Systems Administration
Gone are the days where creating system packages or scp-ing tar balls were required for deployment. With Pip, Fabric, and Jenkins we've developed a pipeline to simplify deployments and rollbacks that dove-tails into configuration management and virtualization. New machines can come fully deployed and ready to rock at a moments notice allowing you to scale out nodes quickly and painlessly.
Deployment is a simple idea in theory but can be difficult in practice. Many mechanisms exist but few work very well with python being deployed across multiple operating systems in a [service oriented architecture](http://en.wikipedia.org/wiki/Service-oriented_architecture). One issue we've faced with a [SOA](http://en.wikipedia.org/wiki/Service-oriented_architecture "Not the Sons of Anarchy") is that you can end up with many projects rolling their own deployment mechanism which results in many half-baked deployment pipelines. This can create a large pain point in transitioning people from one team to another. Bug fixes can be committed quickly but it can be a royal pain in getting the changes out and live. To help alleviate that pain we've come up with a generic package-centric deployment strategy that focuses on Python but also supports other languages like NodeJS. The deployment strategy leverages technologies like [Jenkins](http://jenkins-ci.org/), [Pip](https://pip.readthedocs.org/en/latest/), [Virtualenv](http://virtualenv.readthedocs.org/en/latest/), and [Fabric](http://www.fabfile.org/) to allow for quick deployments that result in code being isolated from other services and native libraries on the node. This talk will introduce a deployment pipeline that uses Python packages as the main deployment strategy and the mess it helped clean up. I will go into how the pieces fit together for this deployment, some of the successes had with this mechanism as well as some of the pain points in using it.