Die beiden Begriffe sind sehr unterschiedlich.
Beginnen wir mit immutability
, was wörtlich "keine Mutationen" oder "keine Veränderungen" bedeutet. Im Sinne von DevOps bedeutet dies, dass Sie nach dem Erstellen eines Artefakts, sei es ein Container-Image oder ein VM-Image oder ein Paket aus kompiliertem Code, erklären, dass Sie es niemals ändern werden. Wenn Änderungen erforderlich sind, erklären Sie häufig, dass stattdessen eine neue Version von "thing" erstellt wird.
Der Begriff idempotence
bedeutet, dass bei mehrmaliger Anwendung von Änderungen der Status nur einmal mutiert (geändert) wird . Erstens wird bereits davon ausgegangen, dass Änderungen vorgenommen werden, was bedeutet, dass Sie nicht sowohl unveränderliche als auch idempotente Aktionen ausführen können (vertraglich werden keine Aktionen ausgeführt).
Bei der Verwendung von Konfigurationsverwaltungstools idempotence
wird in einigen Fällen verwendet, wenn dieselbe Änderung mehrmals angewendet wird. Wie beim Hinzufügen der Zeile, localhost
die der /etc/hosts
Datei sagt , benötigen Sie nicht wirklich mehrere solcher Zeilen, und wenn bereits eine vorhanden ist, können Sie sicher nicht versuchen, erneut anzuhängen.
Dies idempotent
ist auch ein Begriff, der verwendet wird, um Aktionen zu beschreiben , die versuchen, Dinge zu ändern, während er immutable
verwendet wird, um Substantive (Objekte) zu beschreiben , die gegen Änderungen an ihnen gesetzt werden.
Warum ist ein immutable
Objekt nützlich? Denn wenn Sie es kopieren, zum Beispiel von einer Entwicklungsumgebung über QA bis zur Produktion. Sie wissen bereits ziemlich viel (aber nicht alles) darüber, wie es sich verhalten wird. In vielen Fällen sind die Teile, die funktionieren, konsistent, und die Teile, die defekt sind, sind ebenfalls konsistent.
Warum sind idempotent
Aktionen nützlich? Wenn Sie den Status eines Objekts ändern möchten, ist es in vielen Fällen hilfreich, nur zu überprüfen, ob die Änderung angewendet wurde, und Änderungen nur dann anzuwenden, wenn dies erforderlich ist. Wenn beispielsweise ein Konfigurationselement in einer Datei fehlt oder den falschen Wert hat, ist es hilfreich, es nur einmal hinzuzufügen oder nur einmal zu ändern, während Sie die Aktion mehrmals anwenden. In vielen anderen Fällen, z. B. bei Protokolldateien , möchten Sie keine idempotenten Aktionen ausführen, da Sie häufig jedes Mal, wenn ein Ereignis eintritt, eine weitere Zeile anhängen möchten.
the state is not changed.
dass der Status so bleibt, wie es das Konfigurationsmanagementsystem vorschreibt. Daher sind idempotente