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

Frequent Releases & Major Changes

Frequent Releases & Major Changes

At Vinted, we deploy our code hundreds of times per day into production. While offering a lot of advantages, continuous deployment also introduces its own set of challenges. Release of major changes, like big features or considerable refactorings, is one of them. How to release a sizeable improvement without stopping deploying continuously?

Mindaugas Mozūras

May 26, 2016
Tweet

More Decks by Mindaugas Mozūras

Other Decks in Programming

Transcript

  1. frequent releases
    &
    major changes

    View Slide

  2. codingfearlessly.com
    mmozuras
    mmozuras

    View Slide

  3. View Slide

  4. VINTED

    View Slide

  5. MAKE SECOND-HAND THE
    FIRST CHOICE WORLDWIDE

    View Slide

  6. View Slide

  7. team evolution

    View Slide

  8. everyone together
    BE
    Web
    BE
    BE

    View Slide

  9. functional
    BE
    BE
    BE
    BE
    Web
    Web
    iOS
    And
    And
    And
    iOS
    iOS
    backend web mobile

    View Slide

  10. cross-functional
    gem yo secret ■pants
    might magic

    View Slide

  11. cross-functional

    View Slide

  12. people with all skills

    View Slide

  13. people with all skills

    View Slide

  14. people with all skills

    View Slide

  15. backend web design
    iOS android analysis

    View Slide

  16. backend web design
    iOS android analysis
    operations

    View Slide

  17. teamwork

    View Slide

  18. releases

    View Slide

  19. releases in the old days
    by another department

    View Slide

  20. View Slide

  21. releases today
    by the team

    View Slide

  22. releases today at Vinted
    hundreds per day

    View Slide

  23. releases today at Vinted
    hundreds per day

    View Slide

  24. +19 -2

    View Slide

  25. how to release
    major changes?

    View Slide

  26. +2000 -42

    View Slide

  27. how to release
    major changes?

    View Slide

  28. piece by piece?

    View Slide

  29. piece by piece?

    View Slide

  30. long release cycles?

    View Slide

  31. long release cycles?

    View Slide

  32. long-lived branches?

    View Slide

  33. long-lived branches?

    View Slide

  34. separate release
    from deployment?

    View Slide

  35. release
    make feature/code
    available for users

    View Slide

  36. deploy
    put feature/code
    in production

    View Slide

  37. separate release
    from deployment!

    View Slide

  38. science
    &
    feature flags
    &
    ab tests

    View Slide

  39. science

    View Slide

  40. View Slide

  41. View Slide

  42. sphinx -> elasticsearch

    View Slide

  43. major
    refactoring

    View Slide

  44. trust the tests?

    View Slide

  45. trust the tests?

    View Slide

  46. run old & new code

    View Slide

  47. run old & new code
    log differences

    View Slide

  48. run old & new code
    log differences
    remove differences

    View Slide

  49. github/scientist

    View Slide

  50. View Slide

  51. View Slide

  52. duration
    matches
    mismatches

    View Slide

  53. View Slide

  54. sphinx -> elasticsearch

    View Slide

  55. feature flags

    View Slide

  56. View Slide

  57. feature
    flags/toggles/switches/flippers

    View Slide

  58. glorified if statement

    View Slide

  59. View Slide

  60. View Slide

  61. View Slide

  62. just turn it on?

    View Slide

  63. View Slide

  64. ab tests

    View Slide

  65. View Slide

  66. View Slide

  67. View Slide

  68. admin
    svc-ab
    svc-1 svc-2 svc-3
    data

    View Slide

  69. admin
    svc-ab
    svc-1 svc-2 svc-3
    data
    write ab config

    View Slide

  70. admin
    svc-ab
    svc-1 svc-2 svc-3
    data
    read ab config

    View Slide

  71. admin
    svc-ab
    svc-1 svc-2 svc-3
    data
    write events

    View Slide

  72. admin
    svc-ab
    svc-1 svc-2 svc-3
    data

    View Slide

  73. svc-ab
    svc-1 svc-2 svc-3 android iOS

    View Slide

  74. vinted/ab
    vinted/ab-ios
    vinted/ab-java

    View Slide

  75. release a feature
    to a percentage

    View Slide

  76. release a feature
    to half of a city

    View Slide

  77. release
    to everyone

    View Slide

  78. View Slide

  79. major changes

    View Slide

  80. science
    &
    feature flags
    &
    ab tests

    View Slide

  81. separate release
    from deployment

    View Slide

  82. thanks!
    mmozuras
    mmozuras

    View Slide