Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Taming the Kraken - How Operations enables developer productivity

Nathen Harvey
April 24, 2012
6.2k

Taming the Kraken - How Operations enables developer productivity

Are you having trouble launching new features because of friction between development and operations? At CustomInk, we've reduced this friction by making changes to our teams, processes, and tools. Come find out what we've been up to and learn how you can implement similar changes in your own environment.

There's always a bit of tension when getting features from idea to production. In this talk, we'll look at some of the changes CustomInk has made to reduce this friction and keep the new features coming. Gone are the days of bi-monthly deploys, office pools dedicated to guessing when this deploy will be rolled back, and the ceremony surrounding the deploy-rollback-fix-deploy cycle. Today, ideas flow from product managers to developers to production with ease thanks to a number of changes that we've made to our teams, processes and tools.

Nathen Harvey

April 24, 2012
Tweet

Transcript

  1. CustomInk Founded in 1999 40+ million requests to our app

    servers each week Over 1 million customers @nathenharvey
  2. How it used to be One team working on a

    few applications simultaneously Two-week sprints Operations team deploys the code at the end of each sprint @nathenharvey
  3. It worked relatively well except... There were often merge conflicts

    which lead to... merge conflicts Small changes sat for days waiting to be deployed @nathenharvey
  4. It worked relatively well except... Deploys were often rolled back

    because of an issue with one part of the new code Our team grew @nathenharvey
  5. You might have a problem if... A deploy is like

    the High School Prom @nathenharvey
  6. Change the Process Emphasize minimizing work in process Product managers

    help prioritize the work to be done @nathenharvey
  7. Disposable Servers Staging and verifying many small changes in one

    or two staging environments doesn't work Each topic branch must have its own staging environment @nathenharvey
  8. Infrastructure as Code Enable the reconstruction of the business from

    nothing but a source code repository an application data backup and bare metal resources -Jesse Robins, Opscode @nathenharvey
  9. Chef First, come up with your policy / specification Abstract

    the resources in your spec Write recipes Package recipes in cookbooks Apply recipes to nodes @nathenharvey
  10. Let the Vagrants gather! Hobo Jungle One git repository with

    a Vagrantfile for launching each application @nathenharvey
  11. Testing every topic branch "master" is ALWAYS deployable We use

    Jenkins to test every branch Custom Capistrano scripts make it easy! cap jenkins:create cap jenkins:build cap jenkins:status cap jenkins:console cap jenkins:delete @nathenharvey
  12. Greenscreen Big Visible Chart (BVC) to monitor our builds Sinatra

    app with simple configuration @nathenharvey
  13. Getting better... Change the process Automation for disposable servers Easy

    development environments Testing every branch @nathenharvey
  14. Deploying the Apps Wait, how many apps does it take

    to make a custom t-shirt? @nathenharvey
  15. Deploying the Apps Lots of identical deploy logic in each

    application Inconsistent deploy behavior Need a way to streamline this @nathenharvey
  16. Stay on "topic" Use the "Topic" of our Campfire room

    to sequence deploys Product manager help with sequencing, when it's important @nathenharvey
  17. Announcing the deploy Still some ceremony here Automate the ceremony

    Changelog and compare URL posted to Campfire Blog updated Email sent @nathenharvey
  18. Getting better... Change the process Automation for disposable servers Easy

    development environments Testing every branch Stay on "topic" Automate the ceremony @nathenharvey
  19. What's changed? People get agitated if / when deploys slow

    down Deploy one thing at a time Everyone deploys Rollbacks are now the exception @nathenharvey
  20. How can YOU get started? Look at the process Look

    at the culture Automate, automate, automate Enable everyone Use the right tools! @nathenharvey
  21. Other tools that we use git / GitHub - github.com

    Vagrant - vagrantup.com Chef - opscode.com @nathenharvey
  22. Other tools that we use Jenkins - jenkins-ci.org Greenscreen -

    CustomInk's GitHub Campfire - 37signals @nathenharvey
  23. Other tools that we use Capistrano - GitHub Caphub -

    Railsware's GitHub @nathenharvey