¿Qué es la infraestructura inmutable?

Un ordenador portátil ejecutando código en una sala de servidores

Autores

Annie Badman

Staff Writer

IBM Think

Derek Robertson

Staff Writer

IBM Think

¿Qué es la infraestructura inmutable?

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.

¿Cómo funciona la infraestructura inmutable?

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.

Aprovisionamiento con infraestructura como código

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.

Implementación a través de canalizaciones de CI/CD

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.

  • Jenkins: pipelines de CI/CD basados en servidor que automatizan la creación, las pruebas y la implementación con un amplio ecosistema de complementos (más de 1800 complementos) para personalizar las canalizaciones de compilación, prueba e implementación.
  • Acciones de GitHub: plataforma CI/CD basada en eventos integrada en repositorios de GitHub, activada por confirmaciones de código, solicitudes de extracción o programaciones sin necesidad de servidores externos.

  • Ansible (Red Hat): principalmente una herramienta de gestión de configuración, pero también se utiliza para implementaciones. Utiliza guías de estrategias YAML para la automatización sin agentes y no requiere instalación de software en nodos gestionados, a diferencia de Puppet o Chef. 

Almacenamiento de datos externo

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. 

Recuperación

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.

Las últimas novedades sobre tecnología, respaldadas por conocimientos de expertos

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.

¡Gracias! Se ha suscrito.

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.

Beneficios de la infraestructura inmutable

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.

Estado de servidor predecible

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.

Escalabilidad horizontal mejorada

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.

Seguridad mejorada

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.

Mixture of Experts | 12 de diciembre, episodio 85

Descifrar la IA: resumen semanal de noticias

Únase a nuestro panel de ingenieros, investigadores, responsables de producto y otros profesionales de talla mundial que se abren paso entre el bullicio de la IA para ofrecerle las últimas noticias y conocimientos al respecto.

Desafíos de la infraestructura inmutable

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.

Diagrama de flujo ilustrativo que representa las conexiones
Soluciones relacionadas
IBM Turbonomic

Escale automáticamente su infraestructura de TI actual para obtener un mayor rendimiento a un coste menor.

Explore IBM Turbonomic
Soluciones AIOps

Descubra cómo la IA para operaciones de TI ofrece los conocimientos que necesita para impulsar un rendimiento empresarial excepcional.

Explore las soluciones AIOps
Servicios de consultoría en automatización

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.

Explore los servicios de consultoría para la automatización
Dé el siguiente paso

Descubra cómo la IA para operaciones de TI ofrece conocimientos para impulsar un rendimiento empresarial excepcional.

Explore Turbonomic Explore las soluciones AIOps