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. 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
  2. 3 We develop the product current version One important feature

    is not completed…! Dear customer… Sent…
  3. 4 New version delivered on production ! A few hours

    later… Blocker bug detected on Feature
  4. Product journey features CONTEXT 5 PRICING QUOTE CONTRACT GUARANTEES CLAUSES

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

    DUPLICATION NOT YET IN PRODUCTION ALREADY IN PRODUCTION UNFINISHED GENERATE BLOCKER BUG
  6. 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
  7. 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
  8. 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/
  9. 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
  10. 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/
  11. 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
  12. 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/
  13. 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
  14. 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
  15. On my Product – Software architecture SOLUTIONS - FEATURE TOGGLES

    19 Feature Toggles API Business API Frontend App System Team
  16. 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
  17. 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/
  18. 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/