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

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

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

  4. We design payments technology that powers the growth of millions

    of businesses around the world. Who are we?
  5. Sommaire Un peu de théorie Présentation du workshop Go!

  6. Un peu de théorie

  7. Une application de gestion de librairie

  8. Sous le capot

  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?
  10. Q ’ - q ’ ? On versionne les changements

    bloquants sur le contrat de services (opérations ou données)
  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 ?
  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
  13. Ou? Dans la gateway? Dans chaque backend? Dans le code?

    Sur chaque service ou sur ’ des services?
  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?
  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
  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
  17. https://cloud.google.com/blog/products/api-management/common- misconceptions-about-api-versioning?hl=en Pour aller plus loin

  18. Le workshop

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

  20. La gestion de configuration

  21. • Utilisation des releases/tags faits avec GIT • Adaptez et

    versionnez également votre configuration (ex. les charts helm …) Comment gérer la configuration (simplement)?
  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?
  23. La sécurité

  24. https://openfeedback.io /snowcamp23

  25. D ’ ! Follow & get in touch @touret_alex linkedin.com/in/atouret

    blog.worldline.tech @WorldlineTech Follow our tech team: Follow me:
  26. Explore our jobs in tech: careers.worldline.com Want to shape how

    the world pays and get paid?