Los dos términos son muy diferentes.
Comencemos con immutability
, lo que literalmente significa "sin mutaciones" o "sin cambios". En el sentido de DevOps, significa que una vez que haya creado un artefacto, ya sea una imagen de contenedor o una imagen de VM, o tal vez un paquete de código compilado, declara que nunca lo cambiará. A menudo, si se requieren cambios, usted declara que se creará una nueva versión de "cosa".
El término idempotence
significa que cuando los cambios se aplican varias veces, el estado muta (cambia) solo una vez . Primero, ya supone que se aplicarán cambios, lo que significa que no se puede hacer algo inmutable y que se le hagan acciones idempotentes (no se realizan acciones por contrato).
En el uso de herramientas de gestión de configuración, idempotence
se utiliza en algunos casos cuando se aplica el mismo cambio varias veces. Al igual que agregar la línea que dice localhost
al /etc/hosts
archivo, realmente no necesita múltiples líneas de este tipo y si ya existe una, es seguro no intentar agregar nuevamente.
También idempotent
es un término usado para describir acciones que intentan cambiar cosas, mientras que immutable
se usa para describir sustantivos (objetos) que se comparan con los cambios que se les han hecho.
¿Por qué es immutable
útil un objeto? Porque cuando lo copia, por ejemplo, desde un entorno de desarrollo a qa a producción. Ya sabes bastante (pero no todo) sobre cómo se va a comportar. En muchos casos, las partes que funcionan serán consistentes, y las partes que están rotas también serán consistentes.
¿Por qué son idempotent
útiles las acciones? Porque cuando desea cambiar el estado de algún objeto, en muchos casos es útil verificar solo que el cambio se haya aplicado y aplicar cambios solo en caso de que sea necesario. Por ejemplo, cuando falta un elemento de configuración en un archivo o tiene un valor incorrecto, es útil agregarlo solo una vez o cambiarlo solo una vez mientras se aplica la acción varias veces. En muchos otros casos, como los archivos de registro , no desea tener acciones idempotentes porque a menudo desea agregar otra línea cada vez que ocurre algún evento.
the state is not changed.
sino que el estado sigue siendo la forma en que el sistema de gestión de la configuración lo dicta. Por lo tanto, los sistemas idempotentes unidireccionales y los sistemas inmutables son similares