Friday, June 29, 2012

Continuous Delivery at Ancestry.com

I work for an organization whose main product resides in the “monolith, over-the-wall, deploy once a quarter” world. We are in the process of migrating to the “SaaS, Dev/Ops, CD” world. This migration has proven non-trivial to say the least. Ancestry.com recently completed a similar process which is detailed here http://www.youtube.com/watch?v=DoSrsjimXjE. I found the presentation to be very informative and decided to blog about key learning’s I had. Hope you will find them useful as well. (The slides are a bit ahead of the audio).

The first ~16 minutes is a review of Opscode Private Chef. I’ve used Chef and it’s an excellent tool. But I’m going to focus on the challenges and learning regarding the migration from one set of practices to another. There is a lot of good stuff in the Opscode portion (“infrastructure is code”).

Ancestry’s definition…“Continuous Deliver is reliably releasing high quality software fast through automated build, test, configuration and deployment.” Fast is critical because they want to increase the rate they can deliver value to the customer. You will see this theme repeated during the presentation. http://www.youtube.com/watch?v=DoSrsjimXjE&t=17m3s

Key benefits of CD: Increase flow of value to customer, Increase feedback rate, Lower risk due to smaller batch sizes. http://www.youtube.com/watch?v=DoSrsjimXjE&t=18m1s

“Doing CD right means being agile, not just doing Agile.” I call this ‘what’s right, not who’s right.’ http://www.youtube.com/watch?v=DoSrsjimXjE&t=18m39s

CD eliminates “Emergency” deployments and all the bureaucratic rigidness it entails. http://www.youtube.com/watch?v=DoSrsjimXjE&t=26m17s

"Ultimately, what [CD] enabled, it enabled the development teams to own their services and applications from cradle to grave." (Emphasis added) http://www.youtube.com/watch?v=DoSrsjimXjE&t=26m58s

"Because the infrastructure was working on [the developers] behalf, they were able to focus on the service itself, and focus on owning that, and providing what the customer really needs and wants." (Emphasis added) http://www.youtube.com/watch?v=DoSrsjimXjE&t=27m06s

“Extending Agile into the enterprise put pressure on ops to change their methods and practices too.” We are lucky here as our Ops team is already (trying) to work under the Agile model. Getting better at it, too! http://www.youtube.com/watch?v=DoSrsjimXjE&t=27m57s

“Engineering Productivity” The bridge between ops and dev.  EP consists of AppOps, CD Tools and Test Infrastructure teams. EP’s mission is to accelerate development. There is a need for a third group to act as a buffer between Ops and Development. At ancestry this group does a lot of the Opscode Chef work. Our organization is attempting to have ops file both the operations role and the AppOps role with mixed results. http://www.youtube.com/watch?v=DoSrsjimXjE&t=31m15s

“Adopt a service model that enables development to do what they need quickly and easily, getting infrastructure out of the way. Rule #1: Developers don’t want to mess with or own ops infrastructure. Rule #2, If you don’t provide infrastructure and services to enable Rule #1, then developers break Rule #1.” The key to having these two rules obeyed is a CD platform (SaaS). http://www.youtube.com/watch?v=DoSrsjimXjE&t=32m40s

"Store your infrastructure code in source control." Enough said. http://www.youtube.com/watch?v=DoSrsjimXjE&t=35ms20

You can’t do CD without automated configuration and automated deployment. Ancestry uses Opscode Chef for both. Not having those automated tools makes you slow. Slow means you’re not doing CD. http://www.youtube.com/watch?v=DoSrsjimXjE&t=37m50s

All new services are configured with a fully provisioned CD pipeline, from build through production. Not the other way around. http://www.youtube.com/watch?v=DoSrsjimXjE&t=39m50s

"Deployment is monitored and overseen by the team itself." Clearly the development teams have accountability for production systems. They don’t go into exactly how that is done, unfortunately. My guess is that development has responsibility for a portion of production monitoring. http://www.youtube.com/watch?v=DoSrsjimXjE&t=47m54s

There it is. The entire presentation is well worth the time if you are doing CD and Dev/Ops and is highly recommended.

No comments:

Post a Comment