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 en su lugar, aplicando actualizaciones, parches y cambios de configuración directamente a los servidores de producción.
Debido a 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, la computación en la nube y la contenerización y la contenerización han transformado la velocidad de despliegue. 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 infraestructura 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 despliegue, lo que provoca actualizaciones parciales o fallidas. Esta desviación puede conducir a un rendimiento deficiente, vulnerabilidades de seguridad y violaciones de cumplimiento.
Por ejemplo, al desplegar 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, desplegarlos 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 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.
Todos los cambios de infraestructura se documentan en sistemas de control de versiones como Git, lo que garantiza que se prueben y sean reproducibles.
Las herramientas de aprovisionamiento comunes incluyen:
Terraform: la plataforma de infraestructura como código de HashiCorp aprovisiona y gestiona la infraestructura en AWS, Google Cloud, Azure y entornos 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 ligeros 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 un despliegue más rápido 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 la nube y plataformas (AMIs para AWS, plantillas de VMware, contenedores Docker) 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 reversión y detección de desviaciones integradas.
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 una infraestructura mutable, donde actualizan los servidores en el lugar, aunque algunos equipos ahora los adaptan junto con enfoques inmutables.
Los despliegues en infraestructura inmutable son atómicos: 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 enfatizan las pruebas automatizadas, la iteración rápida y los despliegues confiables.
Las herramientas de automatización despliegan la nueva versión del recurso, redirigen el tráfico hacia ella y luego dan de baja la anterior. Si surgen problemas durante el despliegue, el recurso antiguo permanece intacto y operativo, eliminando el tiempo de inactividad y los riesgos de dependencia.
Las herramientas comunes de despliegue y orquestación incluyen:
Kubernetes: plataforma de orquestación de contenedores de código abierto que gestiona aplicaciones nativas de la nube en contenedores a escala a través de la autocorrección, el escalado automático y las actualizaciones continuas en clústeres de máquinas.
Debido a que los servidores de la infraestructura inmutable son efímeros (se reemplazan constantemente), los datos persistentes deben almacenarse externamente. Las organizaciones utilizan servicios de bases de datos en la nube, de almacenamiento en bloques o de almacenamiento de objetos para mantener datos separados de los servidores que se reemplazan.
Cuando un nuevo servidor se conecta, se vuelve a conectar a los datos existentes a través de estos sistemas de almacenamiento externo. 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 y despliegan pueden restaurar versiones anteriores en 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 de la industria
Manténgase al día sobre las tendencias más importantes e intrigantes de la industria sobre IA, automatización, datos y más con el boletín Think. Consulte la Declaración de privacidad de IBM.
Su suscripción se entregará en inglés. En cada boletín, encontrará un enlace para darse de baja. 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 despliegue, cuya inmutabilidad lo hace más simple y coherente.
La infraestructura inmutable elimina los estados ambiguos del servidor a través de despliegues atómicos: las actualizaciones se realizan correctamente o no se realizan.
Las infraestructuras mutables corren el riesgo de actualizaciones parciales que conducen a estados "intermedios" impredecibles, con características que los administradores no conocen por completo. 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 agregando una mayor cantidad 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 fallas 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 poner en marcha varios servidores idénticos con poca antelación. Esta configuración puede ser especialmente útil cuando las redes esperan picos masivos de tráfico, como durante un día festivo de compras o la venta de boletos. También ayuda a la hora de coordinar entre regiones globales donde el tráfico tiene picos en horas diferentes y, a veces, superpuestas.
La infraestructura inmutable fortalece la seguridad al eliminar los impredecibles "estados de copo de nieve" (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 simplifica 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 retroceder a estados conocidos si es necesario.
Una infraestructura inmutable también elimina la necesidad de utilizar inicios de sesión de Secure Shell (SSH) para editar servidores en el lugar, 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 a la característica de almacenamiento de datos.
En una infraestructura mutable, un servidor puede escribir datos críticos de aplicaciones 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 agrega un nivel adicional de complejidad al sistema.
Este método se puede realizar mediante el uso de almacenamiento de datos externo, como bases de datos en la nube, almacenamiento en bloques o almacenamiento de objetos. Cuando una nueva máquina virtual se conecta, puede volver a conectarse perfectamente con los datos existentes a través de este almacenamiento externo. Las organizaciones generalmente mantienen 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 menores costos.
Descubra cómo la IA para las operaciones de TI ofrece los insights que necesita para ayudar a impulsar un rendimiento empresarial excepcional.
Vaya más allá de la simple automatización de tareas para manejar procesos de alto perfil, orientados al cliente que generan ingresos con adopción y escala integradas.