Mieux gérer le versioning et la migration des API
Les API évoluent au même rythme que les activités d’une entreprise. Dans cet article, nous vous livrons 5 conseils pour éviter la catastrophe lorsque l’on doit modifier des API.
Le versioning et la migration des API sont généralement associés à un acte malheureux. Celles-ci sont directement connectées aux activités d’une entreprise, elles-mêmes en proie à des ajustements permanents. Toutefois, si certaines mesures sont prises, ces modifications peuvent être mieux appréhendées. Voici 5 conseils et stratégies que Brian Ponterelli, le CEO de Inversoft, a bien voulu partager pour limiter les risques.
1 – Documentez votre plan dans le temps
Lorsqu’on développe une API, il est préférable de tenir compte d’un calendrier préparatoire des futures mises à jour ou versions qui risqueraient de rompre toute forme de compatibilité. Pour éviter de subir la colère des utilisateurs, Brian Ponterelli recommande aux développeurs de partager un calendrier des événements qui puisse documenter chaque changement susceptible d’affecter les clients.
« Nous l’avons ajouté à la documentation et aux notes de versions, et cela fonctionne plutôt bien », constate-t-il. « Il existe de nombreuses autres façons, mais tant que la documentation est présente, vous avez tout bon ».
2 – Opter pour la gestion sémantique de versions
La gestion sémantique de versions est la convention de nommage par défaut dans l’industrie pour la sortie des mises à jour. Selon Brian Ponterelli, s’appuyer sur cette méthode permet de conserver le contrôle du changement de versions. Ce format standard, qui a été adopté par la plupart des acteurs du secteur, comme Oracle ou Google, spécifie clairement le numéro de version ainsi que les éventuelles évolutions du niveau de compatibilité.
Pour les clients qui maîtrisent la gestion sémantique de versions – et beaucoup le sont, assure Brian Ponterelli -, le suivi des modifications est ainsi simple. Pour ceux qui ne connaissent pas le concept, les documents sur le sujet sont nombreux.
3 – Mettre en place une stratégie de migration et de rétro-compatibilité
Une fois confrontés aux déploiements d’une nouvelle version, les développeurs sont souvent obligés de casser la comptabilité. Une compatibilité sur laquelle les clients comptent. S’ils déploient et tombent sur quelques surprises, il s’agit d’un mauvais scenario, assure Brian Ponterelli.
Selon lui, le meilleur moyen de contourner cela est de mettre en place une stratégie de migration claire. Cela porte notamment sur l’identification des compatibilités essentielles, qu’il convient de conserver et ne doivent pas être cassées. Si une stratégie globale ne peut pas être initiée, Brian Ponterelli recommande alors de créer des adaptateurs garantissant une compatibilité rétro-active, capables de restaurer les fonctions cœurs.
Le spécialiste suggère également de commencer le versioning avec les gros clients, qui migrent plutôt lentement. Cela permet de disposer de plus de temps pour régler les éventuels problèmes et créer ces adaptateurs.
4 – Des couches d’abstraction
En plus de gérer ces formes de compatibilité, les développeurs peuvent aussi ajouter des couches d’abstractions qui indiquent les fréquences de mises à jour, recommande encore l’expert. Il distingue les API sujettes à des mises à jour fréquentes, comme celles d’Amazon, de celles qui restent intactes sur de longues périodes.
Avec ce dispositif, les clients disposent d’un accès sur les fréquences de montée en version et ont une meilleure compréhension de l’ensemble et une meilleure visibilité.
5 – Evaluez le Cloud hybride
Déployer une approche hybride permet aussi aux utilisateurs de se prémunir contre les problèmes de compatibilité, assure encore Brian Ponterelli. En conservant certaines dépendances sur site, les utilisateurs peuvent s’appuyer sur leur propre version de l’API.
C’est un point clé, soutient-il, lorsqu’il s’agit de composer avec des API qui gèrent de nombreuses fonctions. Même si cette stratégie hybride peut être plus coûteuse, cela peut éviter les aléas liés à la gestion des API.