BT

Continuous Deployment Variables and Solutions

by Aslan Brooke on Jul 14, 2013 |

Paul Biggar, co-founder of CircleCI, presented on "the many ways to deploy continuously" at RubyConf 2013 in April of this year. The frequency at which deployments happen qualifies the term "continuous" and directly influences the deployment problem space. The presentation aggregates solution information gathered from CircleCI's own customer base, Facebook, IMVU, Etsy, Heroku, and Google. They found that every company does deployment slightly differently and that there isn't just one solution for deploying continuously. 

Paul shared details about how deployment solutions are going to have processes involving code, databases changes, units of deployment, deployment speed, testing, and monitoring. He said the variables affecting the development of these deployment solutions include speed of new features, code complexity, software architecture, software design, number of engineers, and the state of monitoring.

Paul explained that the most common solution to managing the transition state during deployment to production, the "Race", was to deploy code that supports new and old functionality. This requires engineers to program functionality so that new code can safely run side by side with old code. Databases present an additional challenge of stored state. At first it seems like updating everything else in the application first and allowing the app to handle both versions of a database would be enough, before ultimately changing the version of the database. However In some cases changing SQL databases causes so much locking that the only reasonable choice is to create a new database table for each version and migrate the data out of band. The application would be coded to check for the new table and fall back to the old table if the data is not present. NoSQL has become popular in part because it can avoid the locking scenario. 

The presentation covers additional aspects of deployment including unit of deployment, speed, validation through testing, and verification through monitoring. While these are non-functional requirements of deployment, the level of these capabilities determine to what degree deployment is continuous.

Hello stranger!

You need to Register an InfoQ account or to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Discuss

Educational Content

General Feedback
Bugs
Advertising
Editorial
InfoQ.com and all content copyright © 2006-2013 C4Media Inc. InfoQ.com hosted at Contegix, the best ISP we've ever worked with.
Privacy policy
BT