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

Le versioning des APIs REST par la pratique

Le versioning des APIs REST par la pratique

Quand on souhaite publier des APIs avec par exemple, une solution d' API Management, on évoque régulièrement le versionning. Cette pratique répond à des contraintes projet mais apporte malheureusement son lot de complexité.

Imaginez, vous travaillez sur un produit qui expose des APIs à plusieurs clients. Vous devez leur proposer des évolutions et nouvelles fonctionnalités tout en maîtrisant l'existant.
Comment faire évoluer et proposer vos APIs à certains clients sans pénaliser les autres? Quelle stratégie adopter? Quelles solutions techniques peut-on mettre en place simplement?

Lors de cet atelier, vous (re)découvrirez et mettrez en pratique des conseils que j'ai pu mettre en oeuvre et qui m'ont aidé lors de mes derniers projets.

Au travers d'un cas concret basé sur une architecture microservices, nous allons définir la stratégie à mettre en oeuvre, les différentes possibilités d'implémentation ainsi que leurs contraintes.
Nous les challengerons ensuite en apportant différentes évolutions (ajout d'un nouveau client ou de nouvelles fonctionnalités).

A l’issue de cet atelier, nous aurons une vue complète et mis en pratique différentes manières d'appréhender le versionning d'APIs.

Alexandre Touret

January 25, 2023
Tweet

More Decks by Alexandre Touret

Other Decks in Programming

Transcript

  1. 2023
    Merci à nos sponsors

    View Slide

  2. Le versioning
    des APIs REST
    par la pratique
    Alexandre TOURET
    SnowcampIO

    View Slide

  3. Alexandre TOURET
    Architecte logiciel
    @touret_alex
    blog.touret.info
    alexandre-touret
    Qui suis-je?

    View Slide

  4. We design payments technology
    that powers the growth of millions
    of businesses around the world.
    Who are we?

    View Slide

  5. Sommaire
    Un peu de
    théorie
    Présentation
    du workshop
    Go!

    View Slide

  6. Un peu de théorie

    View Slide

  7. Une application de gestion de librairie

    View Slide

  8. Sous le capot

    View Slide

  9. Version initiale avec un client
    j ’ ’ é é
    des descriptions
    j é ’

    Prise en considération de la sécurité
    (autorisations, habilitations)
    Roadmap de notre produit
    Besoin de
    versionner nos
    APIS?

    View Slide

  10. Q ’ - q ’ ?
    On versionne les changements bloquants sur le contrat de services
    (opérations ou données)

    View Slide

  11. • Une modification bloquante dans le contrat de services
    Par exemple : dans notre objet Book un auteur devient une liste

    C’ -à-dire ?
    Q ’ - q ’ q ?

    View Slide

  12. Comment spécifier la version ?
    URL
    Exemple
    /v1/api/books
    Header HTTP
    Exemple
    X-API-VERSION : v1
    Content-Type
    Exemple
    Accept:
    application/vnd.myn
    ame.v1+json

    View Slide

  13. Ou?
    Dans la
    gateway?
    Dans
    chaque
    backend?
    Dans le
    code?
    Sur chaque
    service ou
    sur

    des
    services?

    View Slide

  14. • é ’URL
    • Le changement de version représente des changements
    bloquants
    Google
    • é ’URL
    • j à V1…
    Spotify
    • é ’URL
    • j à V1…
    Apple
    Et les grands du web?

    View Slide

  15. • Est- q j’ ?
    • Comment gérer le versioning ?
    • Combien de versions puis-je gérer en même temps ?
    • Quelle est la compatibilité de la plateforme?
    • Quelle est votre gestion de configuration et quels sont les impacts?
    • Quid de la sécurité?
    Quelques questions à se poser

    View Slide

  16. Vous pouvez néanmoins positionner une version dans ’UR .
    Elle ne sera pas modifiée tant que le contrat de services ne sera pas
    rompu
    Si vous voulez repousser ’ du
    versioning

    View Slide

  17. https://cloud.google.com/blog/products/api-management/common-
    misconceptions-about-api-versioning?hl=en
    Pour aller plus loin

    View Slide

  18. Le workshop

    View Slide

  19. Les sources et solutions
    https://github.com/alexandre-touret/rest-apis-versioning-workshop
    https://github.com/alexandre-touret/rest-apis-versioning-solution

    View Slide

  20. La gestion de configuration

    View Slide

  21. • Utilisation des releases/tags faits
    avec GIT
    • Adaptez et versionnez également
    votre configuration (ex. les charts
    helm …)
    Comment gérer la configuration
    (simplement)?

    View Slide

  22. • 1 livrable par branche ou tag
    • JAR, ZIP, Charts HELM, Image Docker
    • Idéalement les livrables sont agnostiques (sans configuration)
    • La configuration est portée par un référentiel
    • Statique : ex. environnement Gitlab et fichiers associés
    • Dynamique: serveur de configuration
    Quels seront les livrables et configurations
    associées?

    View Slide

  23. La sécurité

    View Slide

  24. https://openfeedback.io
    /snowcamp23

    View Slide

  25. D ’ !
    Follow & get in touch
    @touret_alex
    linkedin.com/in/atouret
    blog.worldline.tech
    @WorldlineTech
    Follow our tech team: Follow me:

    View Slide

  26. Explore our jobs in tech:
    careers.worldline.com
    Want to shape
    how the world pays
    and get paid?

    View Slide