L'idempotence désigne une fonction pouvant être exécutée plusieurs fois, mais produisant toujours le même résultat. Il s'agit d'un principe phare du DevOps. Découvrez tout ce que vous devez savoir !
La dernière fois que vous avez effectué un achat en ligne, vous avez probablement cliqué sur un bouton « Payer maintenant ». Et par accident ou par impatience, vous avez peut-être pressé ce bouton plusieurs fois...
Heureusement, cette erreur n'a pas eu d'effet. Même si vous cliquez à plusieurs reprises, le paiement n'a lieu qu'une seule fois. C'est grâce à l'idempotence.
Qu'est-ce que l'idempotence ?
En mathématiques ou en programmation, l'idempotence désigne toute opération pouvant être exécutée plusieurs fois sans changer le résultat final après la première itération.
Ce terme technique fut inventé par Benjamin Peirce : un mathématicien américain du XIXème siècle ayant enseigné à Harvard pendant plus de 50 ans. Il a employé ce mot pour désigner les éléments algébriques immuables. La définition littérale est « de même puissance », du latin « idem » signifiant « même » et de l'ancien français « potence » signifiant « puissance ».
Différents éléments d'un code informatique peuvent avoir une propriété d'idempotence. C'est le cas des fonctions, des méthodes, des requêtes ou encore des déclarations.
À quoi sert l'idempotence ?
L'idempotence compte parmi les pratiques DevOps pour le développement d'applications. Elle assure une expérience de qualité, sécurisée, pour les utilisateurs et les développeurs.
Ce concept est par exemple au cœur du design de l'outil Ansible, permettant aux administrateurs système de gérer leurs serveurs. Ce logiciel permet d'automatiser les processus de création de serveurs, en créant constamment les mêmes serveurs et en les déployant automatiquement. Les comportements idempotents assurent qu'un seul dossier soit créé sur chaque serveur, et qu'un nombre exact de serveurs soit créé.
Il existe de nombreuses façons d'utiliser la fonction d'idempotence. Les ingénieurs peuvent l'utiliser pour laisser un orchestrateur prendre différentes routes tout en s'assurant que la destination soit la même. Si une fonction est appelée et que la route qu'elle prend échoue, elle peut essayer un autre itinéraire. Le résultat à destination sera toujours le même.
Le comportement idempotent est encore plus important dans le domaine du cloud computing. Lorsque de multiples comptes peuvent être connectés simultanément, accéder depuis différents lieux et différents appareils, mis à jour depuis de multiples comptes utilisateurs, et que les données sont transférées d'un lieu à l'autre, un design idempotent aide à gérer l'état de l'application de façon plus efficace et sans erreur.
Les fonctions HTTP idempotentes
Les fonctions HTTP sont une bonne illustration de l'idempotence. La méthode GET permet de retrouver des informations depuis un endpoint HTTP, et toute information demandée par GET sera toujours la même.
Ce comportement se manifeste par exemple en actualisant votre navigateur internet. Celui-ci récupère les informations auprès d'une adresse IP. Si GET n'était pas idempotent, des pages web pourraient s'ajouter et s'accumuler à chaque rafraîchissement.
Les fonctions DELETE et PUT sont aussi idempotentes. PUT permet de définir une valeur, et continue ensuite à définir la même valeur. En revanche, POST n'est pas idempotent et peut ajouter des éléments à une collection.On l'utilise par exemple pour ajouter une somme à un compte bancaire.
Conclusion : l'idempotence, garantie d'une constance
L'idempotence est essentielle en DevOps, car l'expérience de développement et les logiciels produits doivent être constants. Tout doit fonctionner de la même manière sur n'importe quel environnement ou système d'exploitation.
Afin de découvrir toutes les pratiques, techniques et outils DevOps, vous pouvez choisir DevUniversity. Notre formation à distance vous permet d'acquérir toutes les compétences de l'ingénieur DevOps. Découvrez DevUniversity dès maintenant !