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

Be gentle with your prod!

Be gentle with your prod!

Talk given at PHPTour 2016 in Clermont with @Genes0r

Olivier Dolbeau

May 24, 2016
Tweet

More Decks by Olivier Dolbeau

Other Decks in Programming

Transcript

  1. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Benjamin de Bernardi & Olivier Dolbeau
    Benjamin de Bernardi & Olivier Dolbeau

    View Slide

  2. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    @genes0r
    Lead Engineer
    Benjamin de Bernardi

    View Slide

  3. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    @odolbeau
    Web Architect
    Olivier Dolbeau

    View Slide

  4. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    100€ 25€ 25€ 25€
    100€ 25€

    View Slide

  5. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    15M
    20M
    10M
    5M
    1M
    2015
    2014
    2013
    2012
    2011
    2010
    2009
    25M
    members worldwide
    Over 25 million members and growing
    1.5 million+
    joining each month

    View Slide

  6. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r

    View Slide

  7. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    100+ people in the
    tech team

    View Slide

  8. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Lots of projects...

    View Slide

  9. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    A lot of features to test.

    View Slide

  10. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r

    View Slide

  11. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r

    View Slide

  12. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r

    View Slide

  13. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Deploying big
    features is too
    risky.
    It can’t be done for
    everyone at the same
    time anymore.

    View Slide

  14. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    It’s not
    always
    our
    fault!

    View Slide

  15. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Medias

    View Slide

  16. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r

    View Slide

  17. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Angry ops.

    View Slide

  18. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    An angry ops is
    too dangerous!
    We need to find a
    solution to maintain
    the website up even
    when the traffic is
    high.

    View Slide

  19. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Let’s define
    our needs.

    View Slide

  20. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Deactivate
    a feature
    in
    production

    View Slide

  21. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Activate a feature

    View Slide

  22. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Slowly rollout a new feature

    View Slide

  23. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Change A/B test configuration.

    View Slide

  24. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Feature Y is only for 10% of the Italian users...
    Feature Y is only for 10% of the Italian users...
    Feature X is for France and maybe Belgium
    Feature X is for France and maybe Belgium

    ?
    10%
    10%

    View Slide

  25. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Device agnostic

    View Slide

  26. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    No deployement

    View Slide

  27. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r

    View Slide

  28. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Feature flags
    Feature flags
    Feature flags
    Feature flags
    Feature flags

    View Slide

  29. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    A 'Feature Flag' (or Feature Toggle) is
    the ability to turn features (sub-
    sections) of your application on/off at a
    moments notice.
    Wikipedia

    View Slide

  30. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    What do we need?
    ● a storage to store all feature flags and their rules
    ● a admin interface to create / update / delete features flags
    ● a PHP library to use in our application

    View Slide

  31. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Existing solutions
    ● etsy / features
    ● joshuaestes / feature-toggle
    ● opensoft / rollout
    ● qandidate / toggle

    View Slide

  32. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Existing solutions
    ● etsy / features
    ● joshuaestes / feature-toggle
    ● opensoft / rollout
    ● qandidate / toggle
    deprecated

    View Slide

  33. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Existing solutions
    ● etsy / features
    ● joshuaestes / feature-toggle
    ● opensoft / rollout
    ● qandidate / toggle
    deprecated
    no storage logic

    View Slide

  34. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Existing solutions
    ● etsy / features
    ● joshuaestes / feature-toggle
    ● opensoft / rollout
    ● qandidate / toggle
    deprecated
    no storage logic
    Good choice!

    View Slide

  35. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Existing solutions
    ● etsy / features
    ● joshuaestes / feature-toggle
    ● opensoft / rollout
    ● qandidate / toggle
    deprecated
    no storage logic
    Good choice!
    Even better!

    View Slide

  36. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    http://labs.qandidate.
    com/blog/2014/08/18/a-new-feature-
    toggling-library-for-php/

    View Slide

  37. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Meet Qandidate\Toggle

    View Slide

  38. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Checking values: operators

    View Slide

  39. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Context

    View Slide

  40. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Putting it all together

    View Slide

  41. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r

    View Slide

  42. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    http://labs.qandidate.com/blog/2014/08/19/
    open-sourcing-our-feature-toggle-api-and-ui/
    API
    UI

    View Slide

  43. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    How it works for us?

    View Slide

  44. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    What will we explain?
    Storages
    Operators & Context
    Strategies
    Devices
    Administration

    View Slide

  45. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Storages

    View Slide

  46. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Storages
    APCu
    Our own implementations.

    View Slide

  47. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    ● Primary data store
    ● 1 key containing all toggles
    ● 1 key / toggle containing its
    configuration (encoded JSON)

    View Slide

  48. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    ● Cache layer (60 seconds)
    ● Encapsulation FTW
    ● Encoded JSON
    APCu

    View Slide

  49. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Strategies

    View Slide

  50. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Strategies

    View Slide

  51. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Operators

    View Slide

  52. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    >=
    >=
    LessThan
    LessThanEqual
    MatchesRegex
    Percentage
    Available operators
    EqualsTo
    GreaterThan
    GreaterThanEqual
    InSet
    =
    [...]
    <
    %%
    %
    >

    View Slide

  53. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    >=
    >=
    LessThan
    LessThanEqual
    MatchesRegex
    Percentage
    Available operators
    EqualsTo
    GreaterThan
    GreaterThanEqual
    InSet
    =
    [...]
    <
    %%
    %
    >

    View Slide

  54. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r

    View Slide

  55. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Implementation

    View Slide

  56. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Implementation - Context

    View Slide

  57. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Implementation - Context
    Mainly focused on the user.

    View Slide

  58. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Implementation - Context
    Can be website centric.

    View Slide

  59. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Implementation - Context
    Can also be feature centric.

    View Slide

  60. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Implementation - Manager

    View Slide

  61. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Implementation - Views

    View Slide

  62. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Implementation - Views

    View Slide

  63. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Devices

    View Slide

  64. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Mobile apps
    API Flags
    Native flags

    View Slide

  65. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Internal Flags
    Export JSON
    Get JSON

    View Slide

  66. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Internal Flags

    View Slide

  67. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Name
    Internal Flags

    View Slide

  68. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Strategy
    Internal Flags

    View Slide

  69. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Conditions
    Internal Flags

    View Slide

  70. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Context key
    Internal Flags

    View Slide

  71. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Flaggr
    Open Source
    Android : blablacar/flaggr-android
    iOS : blablacar/flaggr-ios (soon)

    View Slide

  72. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r

    View Slide

  73. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r

    View Slide

  74. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    We have 100+ toggles.

    View Slide

  75. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    We can define toggles / devices

    View Slide

  76. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Name
    Strategy
    Conditions
    summary Actions

    View Slide

  77. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r

    View Slide

  78. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Example

    View Slide

  79. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r

    View Slide

  80. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r

    View Slide

  81. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Rules :
    1. Displayed in France only
    a. Will be activated for other countries later (BE, PL, NL)
    2. Two kinds of results
    a. Beginners only
    b. Cheapest rides
    3. Only for logged users
    4. Activate for 50% of the users to control the impact

    View Slide

  82. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Flag

    View Slide

  83. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Implementation

    View Slide

  84. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r

    View Slide

  85. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Feature flags?

    View Slide

  86. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Yes.

    View Slide

  87. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Questions?

    View Slide

  88. PHP Tour Clermont-Ferrand 2016 - Be gentle with your production @odolbeau & @genes0r
    Thank you
    https://joind.in/talk/202e1
    BlaBlaCar is hiring !

    View Slide