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

Continuous Delivery @RentTheRunway

Continuous Delivery @RentTheRunway

Presented at the TimesOpen "Transitioning to Continuous Delivery" Event.

This talk covers how Rent the Runway achieved continuous delivery in the face of legacy code, the ongoing effort to improve our deployment pipeline and how we define "good enough".

63e2f6b0de6ae817af2e185b82aa05c2?s=128

Mark Wunsch

July 22, 2014
Tweet

Transcript

  1. Continuous Delivery @RentTheRunway @markwunsch

  2. None
  3. How RTR achieved Continuous Delivery in the face of legacy

    code, the ongoing effort to improve our Deployment Pipeline, and how we define good enough.
  4. Continuous Delivery You’re doing continuous delivery when: • Your software

    is deployable throughout its lifecycle • Your team prioritizes keeping the software deployable over working on new features • Anybody can get fast, automated feedback on the production readiness of their systems any time somebody makes a change to them • You can perform push-button deployments of any version of the software to any environment on demand http://martinfowler.com/bliki/ContinuousDelivery.html Martin Fowler
  5. Technical Debt

  6. None
  7. None
  8. Swimlane

  9. Swimlane “…a group of services within a boundary such that

    any failure within that boundary is contained within the boundary and the failure does not propagate or affect services outside of said boundary.” http://akfpartners.com/techblog/2008/05/30/fault-isolative-architectures-or-"swimlaning"/ Fault Isolative Architectures or “Swimlaning”
  10. Fault Detection & Fault Isolation http://akfpartners.com/techblog/2008/05/30/fault-isolative-architectures-or-"swimlaning"/ Fault Isolative Architectures or

    “Swimlaning”
  11. PDP User Static Grid Home Checkout

  12. PDP User Static Grid Home Checkout Heroku Engine Yard Rackspace

    views assets base api_clients
  13. None
  14. None
  15. None
  16. None
  17. None
  18. run Rack::URLMap.new({ "/home" => RTR::HomeApp, "/pages" => RTR::PagesApp, "/grid" =>

    RTR::GridApp, "/designers" => RTR::DesignersApp, "/pdp" => RTR::PDPApp, "/user" => RTR::UserApp, "/account" => RTR::AccountApp, "/self_service" => RTR::SelfServiceApp, "/shortlist" => RTR::ShortlistApp, "/appointments" => RTR::ShowroomApp, "/ourrunway" => RTR::MomentsApp, "/order" => RTR::CheckoutApp, "/queue" => RTR::QueueApp, "/" => RTR::HomeApp })
  19. Storefront base api_clients *

  20. None
  21. • You can perform push-button deployments of any version of

    the software to any environment on demand
  22. http://www.thinkgeek.com/product/15a5/

  23. • Your software is deployable throughout its lifecycle

  24. GitHub Flow https://guides.github.com/introduction/flow/index.html

  25. http://martinfowler.com/bliki/FeatureToggle.html Flaggregator™

  26. • Anybody can get fast, automated feedback on the production

    readiness of their systems any time somebody makes a change to them
  27. Fashionator: fashionator at your service! Fashionator: DEPLOY: rtr_ruby_storefront[v2014.07.21.1622] was deployed

    to sf01.prod.renttherunway.it,sf02.prod.renttherunway.it,sf03.prod.renttherunway.it Mark: good robot Fashionator: *:゜☆ヽ(*’∀’*)/☆゜:。*。 Fashionator™ https://hubot.github.com/
  28. • Your team prioritizes keeping the software deployable over working

    on new features
  29. Good Enough

  30. • Daily Deploy • Release Quarterback • diminishing returns •

    YAGNI
  31. Kaizen 改善

  32. None
  33. None
  34. None
  35. Everyone deserves a Cinderella Experience

  36. None
  37. None