La infraestructura inmutable es la práctica de reemplazar, no modificar, servidores y otros recursos de TI cuando se necesitan cambios.
Las organizaciones pueden gestionar la infraestructura a través de dos enfoques: mutable e inmutable. La infraestructura inmutable reemplaza los servidores por completo en lugar de modificarlos. La infraestructura mutable modifica los servidores existentes, aplicando actualizaciones, parches y cambios de configuración directamente a los servidores de producción.
Dado que modifica principalmente los servidores existentes, la infraestructura mutable puede parecer más eficiente. Sin embargo, dos factores suelen hacer que la infraestructura inmutable sea más práctica y preferible.
En primer lugar, elcloud computing y la contenerización han transformado la velocidad de implementación. Las organizaciones ahora pueden reemplazar máquinas virtuales (VM) y contenedores en minutos en lugar de las horas requeridas para los servidores físicos. Las herramientas de automatización de infraestructuras pueden aprovisionar y configurar nuevos servidores y recursos de TI y aplicar cambios uniformes a escala.
En segundo lugar, la infraestructura inmutable puede reducir significativamente la desviación de la configuración, una característica común de la infraestructura mutable, en la que un sistema diverge gradualmente de su estado previsto a medida que se acumulan los cambios. La desviación de la configuración es especialmente común cuando los problemas de red interrumpen el proceso de implementación, provocando actualizaciones parciales o fallidas. Esta desviación puede provocar un rendimiento deficiente, vulnerabilidades de seguridad y violaciones del cumplimiento.
Por ejemplo, al implementar una actualización de seguridad en 100 servidores de producción, las herramientas de automatización pueden crear 100 nuevos servidores con la actualización preinstalada y validarlos de forma aislada. Una vez validados, redireccionan el tráfico y retiran los servidores antiguos, todo en cuestión de minutos sin tiempo de inactividad.
La infraestructura inmutable sigue un flujo de trabajo de tres fases: aprovisionar nuevos recursos, implementarlos y permitir la recuperación instantánea cuando sea necesario.
Este flujo de trabajo se aplica a servidores, contenedores, máquinas virtuales, funciones o cualquier otro recurso de infraestructura a lo largo de su ciclo de vida.
El aprovisionamiento crea automáticamente nuevos componentes de infraestructura de TI que utilizan la infraestructura como código (IaC), una práctica que utiliza plantillas declarativas o código para definir los estados previstos de la infraestructura.
Para actualizar un entorno inmutable, los equipos crean un recurso completamente nuevo con la configuración definida en lugar de utilizar SSH (un protocolo de red para el acceso seguro a servidores remotos) para modificar los existentes.
A continuación, todos los cambios en la infraestructura se documentan en sistemas de control de versiones como Git, lo que garantiza que sean probados y reproducibles.
Las herramientas de aprovisionamiento comunes incluyen:
Terraform: La plataforma de infraestructura como código de HashiCorp aprovisiona y gestiona la infraestructura a través de AWS, Google Cloud, Azure y on-premises a través de sus API, con sintaxis HCL declarativa y archivos de estado para realizar un seguimiento de los cambios.
Docker: crea imágenes de contenedores ligeras basadas en sistemas de archivos en capas y virtualización a nivel de sistema operativo, principalmente en sistemas Linux, pero también en Windows y macOS, lo que permite una implementación más rápida que las máquinas virtuales tradicionales.
Packer: herramienta de HashiCorp que crea imágenes de máquina idénticas simultáneamente para múltiples proveedores de servicios en la nube y plataformas (AMIs para AWS, plantillas de VMware, contenedores) a partir de una única configuración JSON o HCL.
AWS CloudFormation: herramienta nativa de AWS basada en plantillas JSON/YAML para aprovisionar recursos de AWS con detección integrada de reversión y desviación.
Pulumi: plataforma IaC que utiliza lenguajes de programación familiares (Python, TypeScript, Go) en lugar de lenguajes específicos de dominio, lo que permite a los desarrolladores utilizar construcciones de programación estándar como bucles y condicionales.
Vale la pena mencionar que Puppet y Chef se diseñaron originalmente para infraestructura mutable, donde actualizan los servidores en el lugar, aunque algunos equipos ahora los adaptan junto con enfoques inmutables.
Las implementaciones en infraestructuras inmutables son atómicas: o bien tienen éxito por completo o no se producen en absoluto. Este enfoque se alinea con las prácticas de DevOps y los pipelines de integración continua, que hacen hincapié en las pruebas automatizadas, la iteración rápida y las implementaciones fiables.
Las herramientas de automatización implementan la nueva versión del recurso, redirigen el tráfico hacia ella y luego retiran la anterior. Si surgen problemas durante la implementación, el recurso antiguo permanece intacto y operativo, lo que elimina el tiempo de inactividad y los riesgos de dependencia.
Las herramientas comunes de implementación y orquestación incluyen:
Kubernetes: plataforma de orquestación de contenedores de código abierto que gestiona aplicaciones en contenedores nativas de la nube a escala mediante autorreparación, escalado automático y actualizaciones continuas en clústeres de máquinas.
Dado que los servidores de la infraestructura inmutable son efímeros y se reemplazan constantemente, los datos persistentes deben almacenarse externamente. Las organizaciones utilizan bases de datos en la nube, almacenamiento en bloque o servicios de almacenamiento de objetos para mantener los datos separados de los servidores que se sustituyen.
Cuando un nuevo servidor se conecta, se vuelve a conectar a los datos existentes a través de estos sistemas de almacenamiento externos. La configuración y los metadatos suelen vivir en sistemas de control de versiones como Git.
Cada actualización crea una nueva instancia, manteniendo una imagen limpia para la reversión. Las mismas herramientas de automatización que aprovisionan e implementan pueden restaurar versiones anteriores en cuestión de minutos. Los equipos vuelven a implementar la imagen anterior en lugar de depurar y solucionar los problemas de los servidores modificados, lo que reduce en gran medida el trabajo de detección que tradicionalmente se requiere cuando fallan los cambios en la gestión de la configuración.
Boletín del sector
Manténgase al día sobre las tendencias más importantes e intrigantes del sector en materia de IA, automatización, datos y mucho más con el boletín Think. Consulte la Declaración de privacidad de IBM.
Su suscripción se enviará en inglés. Encontrará un enlace para darse de baja en cada boletín. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.
Los beneficios de una infraestructura inmutable están relacionados en gran medida con el proceso de implementación, cuya inmutabilidad lo hace más simple y consistente.
La infraestructura inmutable elimina los estados ambiguos del servidor mediante implementaciones atómicas: las actualizaciones se realizan correctamente o no se realizan en absoluto.
Las infraestructuras mutables corren el riesgo de actualizaciones parciales que conducen a estados "intermedios" impredecibles, con características que los administradores no conocen del todo. Esta situación puede dificultar la resolución de problemas y aumentar los riesgos de seguridad.
Una infraestructura inmutable elimina la posibilidad de tal estado. Si falla una actualización, el servidor permanece en su estado bien documentado. Si tiene éxito, el nuevo servidor llega completamente configurado y probado.
La infraestructura inmutable ayuda a permitir un rápido escalado horizontal, la práctica de satisfacer la demanda añadiendo un mayor número de máquinas más pequeñas a una red (en lugar de una máquina grande). Un sistema escalado horizontalmente es más tolerante a fallos y puede reducir los cuellos de botella de procesamiento distribuyendo su carga de trabajo.
Este enfoque se logra mediante el uso de equilibradores de carga, que distribuyen el tráfico de red entre varios servidores para mejorar el rendimiento. Herramientas como Nginx y AWS Elastic Load Balancing (ELB) de Amazon ayudan a respaldar esta práctica mediante el uso de un algoritmo para asignar las solicitudes de los usuarios al servidor más eficiente en un momento determinado.
Esta combinación de equilibrio de carga y orquestación de contenedores hace que la infraestructura inmutable, con sus plantillas reproducibles, sea esencial para mantener varios servidores idénticos en poco tiempo. Esta configuración puede ser especialmente útil cuando las redes esperan picos de tráfico masivos, como durante unas vacaciones de compras o la venta de entradas. También ayuda a la hora de coordinar entre regiones del mundo en las que el tráfico tiene picos en horas diferentes y, a veces, superpuestas.
La infraestructura inmutable refuerza la seguridad al eliminar los "estados de copo de nieve" impredecibles (servidores con configuraciones desconocidas después de actualizaciones fallidas) y mantener registros de auditoría completos de todos los cambios.
Cada servidor se ajusta exactamente al archivo de imagen de origen que lo describe, lo que facilita la identificación de vulnerabilidades de seguridad, como instalaciones de software no autorizadas o escaladas de privilegios, y la ejecución de auditorías de seguridad. Los sistemas de control de versiones rastrean cada cambio realizado en el sistema, incluido quién lo hizo, cuándo y por qué. Este historial inmutable permite un análisis forense y una respuesta a incidentes más rápidos. Los equipos pueden identificar inmediatamente las configuraciones comprometidas y volver a estados conocidos si es necesario.
Una infraestructura inmutable también elimina la necesidad de utilizar inicios de sesión Secure Shell (SSH) para editar los servidores in situ, lo que reduce la superficie de ataque general de la red.
La inmutabilidad también presenta compensaciones en comparación con una infraestructura tradicional mutable, principalmente en cuanto al almacenamiento de datos.
En una infraestructura mutable, un servidor puede escribir datos críticos de la aplicación en el disco local, lo que hace que sea peligroso o potencialmente perjudicial para el sistema eliminar y reemplazar ese servidor y disco. Por lo tanto, en una infraestructura inmutable, los datos deben almacenarse externamente, lo que añade un nivel adicional de complejidad al sistema.
Este método se puede realizar utilizando almacenamiento de datos externo, como bases de datos en la nube, almacenamiento en bloque o almacenamiento de objetos. Cuando una nueva máquina virtual se conecta, puede volver a conectarse de manera fluida con los datos existentes a través de este almacenamiento. Las organizaciones suelen mantener la configuración y los metadatos en sistemas de control de versiones como Git.
Sin embargo, a veces se cuestiona la verdadera "inmutabilidad" de una infraestructura inmutable. Esta limitación se debe a que los datos de usuario de la red almacenados externamente están en un estado de flujo constante y, por lo tanto, no se pueden comparar con un estado conocido.
Escale automáticamente su infraestructura de TI actual para obtener un mayor rendimiento a un coste menor.
Descubra cómo la IA para operaciones de TI ofrece los conocimientos que necesita para impulsar un rendimiento empresarial excepcional.
Vaya más allá de la simple automatización de tareas para gestionar procesos de alto perfil, orientados al cliente y generadores de ingresos con adopción y escala integradas.