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

apidays Paris 2022 - Agile API delivery with Feature Toggles, Rafik Ferroukh, Allianz Technology

apidays
January 09, 2023

apidays Paris 2022 - Agile API delivery with Feature Toggles, Rafik Ferroukh, Allianz Technology

apidays Paris 2022 - APIs the next 10 years: Software, Society, Sovereignty, Sustainability
December 14, 15 & 16, 2022

Agile API delivery with Feature Toggles
Rafik Ferroukh, Software Architect at Allianz Technology
------

Check out our conferences at https://www.apidays.global/

Do you want to sponsor or talk at one of our conferences?
https://apidays.typeform.com/to/ILJeAaV8

Learn more on APIscene, the global media made by the community for the community:
https://www.apiscene.io

Explore the API ecosystem with the API Landscape:
https://apilandscape.apiscene.io/

Deep dive into the API industry with our reports:
https://www.apidays.global/industry-reports/

Subscribe to our global newsletter:
https://apidays.typeform.com/to/i1MPEW

apidays

January 09, 2023
Tweet

More Decks by apidays

Other Decks in Programming

Transcript

  1. © Allianz 2021
    Agile API delivery
    with Features Toggles
    Rafik FERROUKH
    [email protected]
    API DAYS
    Paris,
    December 2022

    View Slide

  2. Whoami






    [email protected]

    View Slide

  3. 2023 SERIES OF EVENT
    New York
    May 16&17
    Australia
    October 11&12
    Singapore
    April 12&13
    Helsinki & North
    June 5&6
    Paris
    SEPTEMBER
    London
    November
    15&16
    June 28-30
    SILICON VALLEY
    March 14&15
    Dubai & Middle East
    February 22&23

    View Slide

  4. 3
    We develop the
    product current
    version
    One important
    feature is not
    completed…!
    Dear customer…
    Sent…

    View Slide

  5. 4
    New version
    delivered on
    production !
    A few hours later…
    Blocker bug
    detected on
    Feature

    View Slide

  6. Product journey features
    CONTEXT
    5
    PRICING QUOTE CONTRACT
    GUARANTEES CLAUSES DUPLICATION
    NOT YET IN PRODUCTION ALREADY IN PRODUCTION

    View Slide

  7. Product features focus
    CONTEXT
    6
    PRICING QUOTE CONTRACT
    GUARANTEES CLAUSES DUPLICATION
    NOT YET IN PRODUCTION ALREADY IN PRODUCTION
    UNFINISHED
    GENERATE
    BLOCKER BUG

    View Slide

  8. Alert! How should i handle?
    CONTEXT
    7
    Not yet finished but must
    be delivered with the same
    delivery package
    if(NotProd()) {
    // "Clauses" feature code
    }
    Clauses

    View Slide

  9. Alert! How should i handle? #2
    CONTEXT
    8
    Delivered but generates
    blocker bug in production!
    CODE BUILD TEST RELEASE DEPLOY
    if(NotProd()) {
    // « Duplication » code
    }
    Duplication

    View Slide

  10. Feature Branches?
    FEATURE BRANCHES
    9
    A Feature Branch is a branch that contains one feature
    code
    https://nvie.com/posts/a-successful-git-branching-model/

    View Slide

  11. Limits
    FEATURE BRANCHES
    10
    MERGE
    CONFLICTS
    Feature branches without Toggles
    https://launchdarkly.com/blog/feature-branching-using-feature-flags/
    Feature A
    Clauses
    Feature B
    Duplication

    View Slide

  12. 11
    My coworker's reaction when their
    pull-request finally gets merged after
    a particularly long, intense code
    review
    My first attempt to merge a long-lived
    branch with master branch
    https://devhumor.com/

    View Slide

  13. Limits
    FEATURE BRANCHES
    12
    ONLY 1 TEST
    ENVIRONMENT
    MERGE
    CONFLICTS
    RISK
    OF DELAY
    NO UNFINISHED
    FEATURE TO
    DEPLOY
    Feature branches without Toggles
    https://launchdarkly.com/blog/feature-branching-using-feature-flags/
    Feature A
    Clauses
    Feature B
    Duplication

    View Slide

  14. Big cons
    CONTEXT
    13
    HARDED
    CODE
    REBUILD
    REDEPLOY
    MULTIPLICITY TIME/COST

    View Slide

  15. How can resolve?
    CONTEXT
    14
    Continuous
    delivery?
    Costs?
    Changes
    management?
    Time?
    Customer
    First
    Quality?

    View Slide

  16. Feature Toggle?
    FEATURE TOGGLES
    15
    Feature Toggle is a way to enable or disable a feature on the fly
    without coding, rebuild and redeploy
    Feature Toggles (often also refered to as Feature Flags) are a
    powerful technique, allowing teams to modify system behavior
    without changing code.
    Martin Fowler
    https://willmendesneto.com/posts/automating-launchdarkly-feature-flags-cleanup-in-your-codebase/

    View Slide

  17. How?
    FEATURE TOGGLES
    16
    SAME TEST
    ENVIRONMENT
    NO MERGE
    CONFLICTS
    MINIMIZE RISK
    OF DELAY
    UNFINISHED
    FEATURE CAN BE
    DEPLOYED
    Feature branches with Toggles
    https://launchdarkly.com/blog/feature-branching-using-feature-flags/
    Feature A
    Clauses
    Feature B
    Duplication

    View Slide

  18. Categories
    FEATURE TOGGLES
    17
    https://www.martinfowler.com/articles/feature-toggles.html
    https://www.flagship.io/feature-toggle-best-practices/
    https://devblogs.microsoft.com/devops/effective-patterns-for-
    feature-flags/
    Release Toggles allow incomplete and
    un-tested codepaths to be shipped to
    production as latent code which may
    never be turned on.
    Experiment Toggles are used to
    perform multivariate or A/B testing
    We might introduce an Ops Toggle
    when rolling out a new feature which
    has unclear performance implications
    so that system operators can disable or
    degrade that feature quickly in
    production if needed
    Permissioning Toggles are used to
    change the features or product
    experience that certain users receive
    Pete Hodgson

    View Slide

  19. Framework solutions
    FEATURE TOGGLES
    18
    Flaggr
    Togglz
    Spring
    Flags
    FF4J
    angular-feature-flags
    rollout.io

    View Slide

  20. On my Product – Software architecture
    SOLUTIONS - FEATURE TOGGLES
    19
    Feature
    Toggles
    API
    Business
    API
    Frontend
    App
    System
    Team

    View Slide

  21. Take Away
    TAKE AWAY
    20
    FASTER DEVELOPMENT
    CONTINUOUS DELIVERY
    TIMEBOX RESPECT
    HIGHER AVAILABILITY
    COMPLEX TEST STRATEGY
    WHAT TO TOGGLE ?
    REFACTO ENABLERS TO PLAN
    INTRUSIVE CODE

    View Slide

  22. 21
    1. Footnote lorem ipsum dolor sit amet, Consectetuer adipescing elit, sed diam Nonummy

    View Slide

  23. Next steps at Allianz
    NEXT STEPS
    22
    MIGRATION
    SSO
    ADMIN UI
    SHARING CANARY
    RELEASE

    View Slide

  24. Thank you !
    23

    View Slide

  25. On my Product ➔ Togglz?
    FEATURE TOGGLES
    24
    Feature Toggles solution
    implementation for Java
    Admin UI Additional options
    (Canary Release, IP, etc…)
    Integrable via SpringBoot
    https://www.togglz.org/

    View Slide

  26. Go further
    EXTRA
    25
    Tests A/B
    Canary Release Feature performance
    https://modern-ti.com/2021/10/17/devops-feature-flags-canary-release-blue-green-
    deployment-etc-quelle-technique-adopter-pour-repondre-aux-defis-du-deploiement-continu/

    View Slide

  27. Again further
    EXTRA
    26
    Custom product
    management
    https://codeahoy.com/2021/02/27/feature-flags/

    View Slide

  28. Again further
    EXTRA
    27
    Management of
    premium features
    https://devblogs.microsoft.com/devops/effective-patterns-for-feature-flags/

    View Slide