DevOps Zone is brought to you in partnership with:

Troy Hunt is a Software Architect and Microsoft MVP for Developer Security. He blogs regularly about security principles in software development at and is the author of the OWASP Top 10 for .NET developers series and free eBook of the same name. Troy is also the creator of the recently released Automated Security Analyser for ASP.NET Websites at Troy is a DZone MVB and is not an employee of DZone and has posted 68 posts at DZone. You can read more from them at their website. View Full User Profile

13 Keys to Continuous Delivery

  • submit to reddit
I've summarized some key takeaways from a ThoughtWorks quarterly update on Continuous Delivery that I attended some months ago. This took the form of a panel discussion with Martin Fowler, Evan Bottcher and Neal Ford. Smart guys, interesting topic and tantalising banner ad:

Flickr deploy ten times each day... why don't you?

The good news is that I didn’t hear anything that sounded too foreign. Either they were principles I’d written about, experienced firsthand or at least had a good understanding of. Usually it was all three but hearing the words from these guys in a very candid fashion is a great endorsement of the beliefs.

Here’s the “best of the best” in terms of the messages that really resonated with the crowd:

  1. Software that is not automatable is broken.

  2. Not being able to reproduce a production environment on demand is extremely risky.

  3. Get the computers to do the low value, automatable things (i.e. deployments) and let the humans focus on the high value work.

  4. If it hurts, do it more often (i.e. build and deploy).

  5. Any time a dev executes a repetitive task manually, all the servers get together late at night and laugh (always wondered why they looked so damn smug each morning).

  6. Everything – EVERYTHING – that is required for the app to be built and deployed must exist in source control.

  7. Get used to pushing into production regularly, it takes away the fear.

  8. Far too much emphasis is put on “it’s looking good” and “code complete” (downplays the risks yet to be faced by deployment).

  9. Every time you’ve done something for the third time, automate it!

  10. No test should remain un-automated that could be automated.

  11. Once you start automating, you find all sorts of ways of doing it better.

  12. Start pumping lorem ipsum text into change scripts and see if anyone notices (funny, I found a “If you are reading this I will buy you a coffee” statement in a standards doc last week; apparently I was the only one to spot it in the last year).

  13. Smells – sysadmins manually logging onto servers installing patches, prod server being thrown out the window (deployment to new one should be mundane), trying to “fix” an environment rather than just re-deploying.

Want more continuous integration and deployment goodness?  Try these:

  1. You're deploying it wrong! TeamCity, Subversion & Web Deploy part 1: Config transforms
  2. You're deploying it wrong! TeamCity, Subversion & Web Deploy part 2: MSBuild and deployable packages
  3. You're deploying it wrong! TeamCity, Subversion & Web Deploy part 3: Publishing with Web Deploy
  4. You're deploying it wrong! TeamCity, Subversion & Web Deploy part 4: Continuous builds with TeamCity
  5. You're deploying it wrong! TeamCity, Subversion & Web Deploy part 5: Web Deploy with TeamCity


Published at DZone with permission of Troy Hunt, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Afandi Merathi replied on Fri, 2012/03/16 - 11:39am

Thanks for the great summary! Really enjoy reading about this subject and need to follow the links through as well. I was wondering - are folks solving the ongoing patching updates using automation? Patches consume a major part of the weekend each month. Seems that automating that would be a great savings. Just curious if you have any experience/thoughts around this?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.