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

Let's deploy on fridays

Let's deploy on fridays

Damien Mathieu

November 08, 2016
Tweet

More Decks by Damien Mathieu

Other Decks in Programming

Transcript

  1. Let’s deploy on
    fridays
    I’m not slacking off,
    I’m deploying.

    View Slide

  2. View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. Build instance
    • Poll, waiting for a build
    • Process a build
    • Build a container
    • Release the container

    View Slide

  15. View Slide

  16. Can you see it?
    Change is coming

    View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. Build instance
    • Poll, waiting for a build
    • Process a build
    • Build a container
    • Release the container

    View Slide

  21. Build instance
    • Poll, waiting for a
    build
    • Build a container
    • Release the
    container
    • Process a build

    View Slide

  22. Build instance
    • Poll, waiting for a
    build
    • Process a build
    • Build a container
    • Release the
    container

    View Slide

  23. View Slide

  24. View Slide

  25. View Slide

  26. View Slide

  27. Upgrade API
    version
    Upgrade
    fetching posts
    Upgrade
    fetching users
    Use uuids

    View Slide

  28. Team Communication

    View Slide

  29. Upgrade API
    version
    Upgrade
    fetching posts
    Upgrade
    fetching users
    Use uuids

    View Slide

  30. View Slide

  31. View Slide

  32. git revert

    View Slide

  33. View Slide

  34. DEPLOY!!!

    View Slide

  35. View Slide

  36. Canary
    deploys

    View Slide

  37. Request
    Server A Server B
    Router

    View Slide

  38. Request
    Server A Server B
    Router
    50% 50%

    View Slide

  39. Request
    Server A Server B
    Router
    50% 50%

    View Slide

  40. Request
    Server A Server B
    Router
    33% 33%
    Server C
    33%

    View Slide

  41. github.com/dmathieu/sidekiq-canary

    View Slide

  42. Refactoring and
    benchmarking

    View Slide

  43. View Slide

  44. Customer-facing
    changes

    View Slide

  45. View Slide

  46. Granularity

    View Slide

  47. View Slide

  48. Multitask

    View Slide

  49. Gradual rollouts

    View Slide

  50. Request
    99%
    1%
    Old code path New code path
    Server

    View Slide

  51. def partial_roll?(id)
    id % 100 < 1
    end
    if partial_roll?(user_id)
    call_new_method
    else
    call_old_method
    end

    View Slide

  52. Refactoring and
    benchmarking

    View Slide

  53. Customer-facing
    changes

    View Slide

  54. Feature flags

    View Slide

  55. View Slide

  56. Going further

    View Slide

  57. View Slide

  58. View Slide

  59. View Slide

  60. bit.ly/
    deploy-friday

    View Slide

  61. Thank you
    Damien MATHIEU

    View Slide

  62. View Slide

  63. Thank you
    Questions?
    [email protected] dmathieu

    View Slide