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 full-size slide

  2. codingfearlessly.com
    mmozuras
    mmozuras

    View full-size slide

  3. MAKE SECOND-HAND THE
    FIRST CHOICE WORLDWIDE

    View full-size slide

  4. team evolution

    View full-size slide

  5. everyone together
    BE
    Web
    BE
    BE

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  8. cross-functional

    View full-size slide

  9. people with all skills

    View full-size slide

  10. people with all skills

    View full-size slide

  11. people with all skills

    View full-size slide

  12. backend web design
    iOS android analysis

    View full-size slide

  13. backend web design
    iOS android analysis
    operations

    View full-size slide

  14. releases in the old days
    by another department

    View full-size slide

  15. releases today
    by the team

    View full-size slide

  16. releases today at Vinted
    hundreds per day

    View full-size slide

  17. releases today at Vinted
    hundreds per day

    View full-size slide

  18. how to release
    major changes?

    View full-size slide

  19. how to release
    major changes?

    View full-size slide

  20. piece by piece?

    View full-size slide

  21. piece by piece?

    View full-size slide

  22. long release cycles?

    View full-size slide

  23. long release cycles?

    View full-size slide

  24. long-lived branches?

    View full-size slide

  25. long-lived branches?

    View full-size slide

  26. separate release
    from deployment?

    View full-size slide

  27. release
    make feature/code
    available for users

    View full-size slide

  28. deploy
    put feature/code
    in production

    View full-size slide

  29. separate release
    from deployment!

    View full-size slide

  30. science
    &
    feature flags
    &
    ab tests

    View full-size slide

  31. sphinx -> elasticsearch

    View full-size slide

  32. major
    refactoring

    View full-size slide

  33. trust the tests?

    View full-size slide

  34. trust the tests?

    View full-size slide

  35. run old & new code

    View full-size slide

  36. run old & new code
    log differences

    View full-size slide

  37. run old & new code
    log differences
    remove differences

    View full-size slide

  38. github/scientist

    View full-size slide

  39. duration
    matches
    mismatches

    View full-size slide

  40. sphinx -> elasticsearch

    View full-size slide

  41. feature flags

    View full-size slide

  42. feature
    flags/toggles/switches/flippers

    View full-size slide

  43. glorified if statement

    View full-size slide

  44. just turn it on?

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  51. vinted/ab
    vinted/ab-ios
    vinted/ab-java

    View full-size slide

  52. release a feature
    to a percentage

    View full-size slide

  53. release a feature
    to half of a city

    View full-size slide

  54. release
    to everyone

    View full-size slide

  55. major changes

    View full-size slide

  56. science
    &
    feature flags
    &
    ab tests

    View full-size slide

  57. separate release
    from deployment

    View full-size slide

  58. thanks!
    mmozuras
    mmozuras

    View full-size slide