Les deux termes sont très différents.
Commençons par immutability
, ce qui signifie littéralement «pas de mutations» ou «pas de changements». Dans le sens DevOps, cela signifie qu'une fois que vous avez créé un artefact, qu'il s'agisse d'une image de conteneur, ou d'une image de machine virtuelle, ou peut-être d'un package à partir du code compilé - vous déclarez que vous ne le modifierez jamais. Souvent, si des modifications sont nécessaires, vous déclarez qu'une nouvelle version de "chose" sera créée à la place.
Le terme idempotence
signifie que lorsque les modifications sont appliquées plusieurs fois, l'état est muté (modifié) une seule fois . Premièrement, il suppose déjà que des changements vont être appliqués, ce qui signifie que vous ne pouvez pas avoir quelque chose à la fois immuable et que des actions idempotentes lui sont faites (aucune action ne lui est faite par contrat).
Dans l'utilisation des outils de gestion de configuration, idempotence
est utilisé dans certains cas lors de l'application du même changement plusieurs fois. Comme pour ajouter la ligne qui dit localhost
au /etc/hosts
fichier, vous n'avez pas vraiment besoin de plusieurs lignes de ce type et si une existe déjà, il est sûr de ne pas essayer d'ajouter à nouveau.
Est également idempotent
un terme utilisé pour décrire les actions qui tentent de changer les choses, tandis que immutable
est utilisé pour décrire les noms (objets) qui sont définis par rapport aux modifications qui leur sont apportées.
Pourquoi un immutable
objet est-il utile? Parce que lorsque vous le copiez, par exemple d'un environnement de développement vers qa vers la production. Vous en savez déjà beaucoup (mais pas tout) sur la manière dont il va se comporter. Dans de nombreux cas, les pièces qui fonctionnent seront cohérentes et les pièces cassées seront également cohérentes.
Pourquoi les idempotent
actions sont-elles utiles? Parce que lorsque vous souhaitez modifier l'état d'un objet, dans de nombreux cas, il est utile de vérifier uniquement que la modification a été appliquée et d'appliquer les modifications au cas où cela serait nécessaire. Par exemple, lorsqu'un élément de configuration dans un fichier est manquant ou a la mauvaise valeur, il est utile de l'ajouter une seule fois ou de le modifier une seule fois tout en appliquant l'action plusieurs fois. Dans de nombreux autres cas, comme les fichiers journaux , vous ne voulez pas avoir d'actions idempotentes car vous voulez souvent ajouter une autre ligne chaque fois qu'un événement se produit.
the state is not changed.
que l'État reste tel que le système de gestion de la configuration le prévoit . Par conséquent, les systèmes idempotents à sens unique et les systèmes immuables sont similaires