· continuous delivery

Continous Delivery: Reliable software development through automation

Talk I gave to undergraduate students at the University of Pittsburgh as part of Computer Science Department’s Tech Talk series where industry members give talks about topics not typically covered in undergraduate computer science course work. The talk covers the basics of source control, test automation, and deployment automation using git, Travis CI, and capistrano.


In much of today’s technology industry there is a focus on getting ideas from paper to implementation and in front of users as quickly as possible. This allows for rapid iteration of the software with real feedback from users to drive the direction of the project, which features are needed, which can be improved, and which can be removed. Continuous delivery is a software design practice that attempts to shorten this cycle time in a way that minimizes risk through build repeatability, test automation, and deployment automation.

In this talk, I hope to demonstrate the effectiveness of the principles of continuous delivery by taking us through the evolution of a software design process using a simple web application to drive the examples. We will start with a process which uses none of the concepts of continuous delivery and slowly adds them (using specific tools as examples) so that we can see the philosophy of each step along the way. Some of the tools that will be discussed include git, Travis CI, and Capistrano. Attendees will walk away with the tools and experience necessary to begin implementing the discussed principles in their own projects at a small scale.