Feb 15 2011

Episode 108: Continuous Deployment


Continually improve and iterate with continuous deployment.

News and Follow/Ups – 01:16

  • Our 30 days are up
  • 30 Day challenges for YOU
    • TDD for 30 days
    • Use a different text editor for 30 days
    • Try Inbox to zero each day
    • Use version control religiously
  • Square Troubles

Geek Tools – 06:57

Webapps – 10:57

Continuous Deployment – 15:32

  • What is it?
    • Small pieces of effort, applied frequently
    • Example:
      • The CI tool pushes out the complete deployment of the staging site, tests it, then, if successful, triggers an update to the live site.
  • Who’s doing it?
    • Etsy – They push out their code 25 times a day
    • Google/Chrome
    • Ebay
    • Flickr (3-10 times a day)
  • Why?
    • The aim is to increase quality of software
    • Reduce delivery time
    • In many firms, application release events are high stress and high-risk activities involving multiple teams
    • When you make changes, run your tests, and then eyeball things to make sure everything’s cool, you’re really just doing unstructured integration testing.  You’re likely to miss regressions, unintentional bugs in seemingly unrelated systems, etc.
    • Advantages
      • Reduces pressure to get last-minute fixes in, as there will be another release the following day.
      • Great for performance testing/optimisation -the effect of a change can be measured on the live site within hours of the change being made.
      • Early warning of broken/incompatible code
      • Immediate feedback to developers on the quality, functionality, or system-wide impact of code they are writing
      • Reduces those late night debugging marathons
    • Disadvantages
      • Initial setup time required
        • You have to have very good test coverage
      • Requires a fully automated deployment process
      • Requires a fully automated release process, including generation of release notes from the issues tracking database, emailing of announcements.
      • If you do a mid-day update, people may notice the loss of service.
      • Some risk of rolling out broken code to customers. You need very good test coverage.
  • How
    • Automate everything
    • Avoid Branching
    • Every developer should commit to the main line once a day
    • Must have plan for rollbacks and it is best if it is automated
    • Real-time reporting
  • Tools