I due termini sono molto diversi.
Cominciamo con immutability
, che significa letteralmente "nessuna mutazione" o "nessun cambiamento". Nel senso di DevOps, significa che una volta che hai creato un artefatto, che si tratti di un'immagine contenitore, di un'immagine VM, o forse di un pacchetto dal codice compilato, dichiari che non lo cambierai mai. Spesso, se sono necessarie modifiche, si dichiara che verrà invece creata una nuova versione di "cosa".
Il termine idempotence
indica che quando le modifiche vengono applicate più volte, lo stato viene modificato (modificato) una sola volta . In primo luogo, presuppone già che verranno applicate delle modifiche, il che significa che non è possibile avere qualcosa di immutabile e di avere azioni idempotenti (non vengono eseguite azioni mediante contratto).
Nell'uso degli strumenti di gestione della configurazione, idempotence
viene utilizzato in alcuni casi quando si applica la stessa modifica più volte. Come aggiungere la riga che dice localhost
al /etc/hosts
file, non hai davvero bisogno di più di queste righe e se ne esiste già una è sicuro non provare ad aggiungere di nuovo.
Inoltre idempotent
è un termine usato per descrivere le azioni che tentano di cambiare le cose, mentre immutable
è usato per descrivere i nomi (oggetti) che si contrappongono ai cambiamenti fatti a loro.
Perché un immutable
oggetto è utile? Perché quando lo copi, ad esempio da un ambiente di sviluppo a qa in produzione. Sai già abbastanza (ma non tutto) riguardo a come si comporterà. In molti casi, le parti che lavorano saranno coerenti e anche le parti rotte saranno coerenti.
Perché le idempotent
azioni sono utili? Perché quando si desidera modificare uno stato di un oggetto, in molti casi è utile verificare solo che la modifica sia stata applicata e applicare le modifiche nel caso sia necessario. Ad esempio, quando un elemento di configurazione in un file manca o ha un valore errato, è utile aggiungerlo solo una volta o modificarlo una sola volta mentre si applica l'azione più volte. In molti altri casi, come i file di registro , non si desidera eseguire azioni idempotenti perché spesso si desidera aggiungere un'altra riga ogni volta che si verifica un evento.
the state is not changed.
ma invece che lo stato rimane come previsto dal sistema di gestione della configurazione. Quindi, i sistemi idempotenti unidirezionali e i sistemi immutabili sono simili