¿Qué es la infraestructura como código (IaC)?
La infraestructura como código (IaC) automatiza el suministro de infraestructura, lo que permite a su organización desarrollar, implementar y escalar aplicaciones en la nube con mayor velocidad, menor riesgo y menor costo.
DevOps
Senderos de luz de movimiento de velocidad de túnel
¿Qué es la infraestructura como código (IaC)?

La infraestructura como código (IaC) utiliza un lenguaje de codificación descriptiva de alto nivel para automatizar el suministro de la infraestructura de TI. Esta automatización elimina la necesidad de que los desarrolladores suministren y gestionen manualmente servidores, sistemas operativos, conexiones de bases de datos, almacenamiento y otros elementos de la infraestructura cada vez que deseen desarrollar, probar o implementar una aplicación de software.

En una época en la que no es infrecuente que una empresa implemente cientos de aplicaciones en producción todos los días, y en la que la infraestructura se está constantemente renovando, derribando y ampliando y reduciendo en respuesta a las demandas de los desarrolladores y usuarios, es esencial para una organización automatizar la infraestructura para controlar los costos, reducir los riesgos y responder con rapidez a las nuevas oportunidades de negocio y las amenazas competitivas. La IaC hace posible esta automatización.

La IaC es también una práctica esencial de DevOps , indispensable para un ciclo de vida de entrega de software a un ritmo competitivo. Permite a los equipos de DevOps crear y versionar la infraestructura rápidamente de la misma manera que versionan el código de origen y realizar un seguimiento de estas versiones para evitar inconsistencias entre los entornos de TI que pueden generar problemas graves durante la implementación.

Sai Vennam analiza más detenidamente la IaC en el siguiente video, "¿Qué es la infraestructura como código?":

Beneficios de la infraestructura como código

El suministro de TI tradicional es un proceso costoso y laborioso y que requiere la configuración física del hardware, la instalación y la configuración del software del sistema operativo y la conexión a middlewareredesalmacenamiento, etc. por parte de personal experto.

La virtualización y el desarrollo nativo en la nube eliminan el problema de la gestión del hardware físico, lo que permite a los desarrolladores suministrar sus propios servidores virtuales o contenedores a pedido. Pero, el suministro de infraestructura virtualizada todavía distrae el enfoque de los desarrolladores de la codificación, aún requiere que repitan el trabajo de suministro para cada nueva implementación y no ofrece una manera fácil de rastrear los cambios del entorno y prevenir inconsistencias que impactan en las implementaciones.

La infraestructura como código (IaC) es el paso final para permitir a los desarrolladores "ordenar" de manera efectiva una infraestructura versionada completamente documentada mediante la ejecución de un script. Los beneficios son exactamente los que podría imaginar:

  • Tiempo de producción/lanzamiento más rápido: la automatización de la IaC acelera drásticamente el proceso de suministro de infraestructura para desarrollo, pruebas y producción (y para escalar o retirar la infraestructura de producción según sea necesario). Debido a que codifica y documenta todo, la IaC puede incluso automatizar el suministro de la infraestructura heredada, que de otro modo podría estar gestionada por procesos que requieren mucho tiempo (como extraer un ticket).

  • Consistencia mejorada, menos "desviación de configuración": la desviación de la configuración ocurre cuando los cambios de configuración puntuales y las actualizaciones dan como resultado entornos de desarrollo, prueba e implementación que no coinciden. Esto puede generar problemas en la implementación, vulnerabilidades de seguridad y riesgos al desarrollar aplicaciones y servicios que deben cumplir estrictos estándares de conformidad normativa. La IaC evita el desvío al suministrar el mismo entorno cada vez.

  • Desarrollo más rápido y eficiente: al simplificar el suministro y garantizar la consistencia de la infraestructura, la IaC puede acelerar con confianza cada fase del ciclo de vida de la entrega de software. Los desarrolladores pueden suministrar aislamiento de procesos y entornos de integración continua/implementación continua (CI/CD). El control de calidad puede suministrar rápidamente entornos de prueba de plena fidelidad. Operaciones pueden suministrar rápidamente la infraestructura para la seguridad y las pruebas de aceptación del usuario. Y cuando el código pasa las pruebas, la aplicación y la infraestructura de producción en la que se ejecuta se pueden implementar en un solo paso.

  • Protección contra el abandono: para maximizar la eficiencia en organizaciones sin IaC, el suministro generalmente se delega en unos pocos ingenieros cualificados o personal de TI. Si uno de estos especialistas abandona la organización, a veces quedan otros para reconstruir el proceso. La IaC garantiza que la inteligencia de suministro siempre permanezca en la organización.

  • Costos más bajos y mejor retorno de inversión: además de reducir drásticamente el tiempo, el esfuerzo y la habilidad especializada necesarios para suministrar y escalar la infraestructura, la IaC permite a las organizaciones aprovechar al máximo la estructura de costos basada en el consumo de la computación en la nube. También permite a los desarrolladores dedicar menos tiempo al saneamiento y más tiempo al desarrollo de soluciones de software innovadoras y de misión crítica.
Infraestructura inmutable frente a infraestructura mutable

Una decisión importante que se debe tomar al automatizar una infraestructura con Infraestructura como código (IaC) y al elegir una solución de IaC es si establecer una infraestructura mutable o inmutable

La infraestructura mutable es la infraestructura que se puede modificar o actualizar después de suministrase inicialmente. La infraestructura mutable ofrece a los equipos de desarrollo la flexibilidad para realizar personalizaciones puntuales del servidor para, por ejemplo, ajustarse más a los requisitos de desarrollo o aplicación o responder a un problema de seguridad emergente. Pero también debilita un beneficio clave de la IaC, la capacidad de mantener la consistencia entre implementaciones o en las versiones, y puede hacer que el seguimiento de la versión de la infraestructura sea mucho más difícil.

Por estas razones, la mayoría de las IaC se implementan como infraestructuras inmutables: una infraestructura que no se puede modificar una vez suministrada inicialmente. Si es necesario cambiar la infraestructura inmutable, debe reemplazarse por una nueva infraestructura. Debido a que la nueva infraestructura se puede poner en marcha rápidamente en la nube, especialmente con la IaC, la infraestructura inmutable es mucho más viable y práctica de lo que parece.

La infraestructura inmutable lleva la IaC a un siguiente paso lógico, fundamentalmente fortaleciendo la IaC para asegurar aún más los beneficios que ofrece. Todo ello no hace más que eliminar la desviación de la configuración y hace que sea aún más fácil mantener la consistencia entre el entorno de prueba y el de implementación. También facilita el mantenimiento y el seguimiento de las versiones de la infraestructura y revertir con confianza a cualquier versión cuando sea necesario.

Enfoque declarativo frente a imperativo

Al elegir una solución de IaC, también es importante comprender la diferencia entre un enfoque declarativo o imperativo de la automatización de la infraestructura.

En la mayoría de las organizaciones, el enfoque declarativo, también conocido como enfoque funcional, es el que mejor se ajusta. En el enfoque declarativo, es el usuario quien especifica el estado final deseado de la infraestructura que desea suministrar, y el software de IaC se encarga del resto: activando la máquina virtual (VM) o contenedor, instalando y configurando el software necesario, resolviendo las interdependencias entre el sistema y el software y gestionando el control de versiones. La principal desventaja del enfoque declarativo es que normalmente requiere un administrador especializado para configurarlo y gestionarlo, y estos administradores a menudo se especializan en su solución preferida.

En el enfoque imperativo, también conocido como enfoque procedimental, la solución le ayuda a preparar scripts de automatización que proporcionan a su infraestructura un paso específico cada vez. Si bien esto puede suponer más trabajo que gestionar a medida que escala, puede ser más fácil de entender para el personal administrativo existente y puede aprovechar los scripts de configuración que ya tiene implementados.

Elegir un enfoque declarativo o imperativo es similar a usar un GPS o seguir indicaciones paso a paso. Con un GPS, el usuario indica una dirección y el GPS hace el resto, trazando la ruta más rápida y evitando el tráfico, pero probablemente haría falta un experto para explicarle al usuario por qué se han tomado esas decisiones. Las indicaciones paso a paso se basan en la experiencia personal; el proveedor conoce la ruta y por qué la eligió, pero si el usuario encuentra obstáculos o quiere optimizar la ruta, debe llamar para pedir ayuda o hacer el trabajo por sí mismo.

Herramientas de infraestructura como código

Si bien hay muchas herramientas de IaC de código abierto disponibles, las herramientas más comúnmente adoptadas son Ansible y Terraform:

¿Qué es Ansible?

Ansible (enlace externo a ibm.com) es un proyecto comunitario de código abierto patrocinado por Red Hat que está diseñado para ayudar a las organizaciones a automatizar el suministro, la gestión de la configuración y la implementación de aplicaciones. Ansible, una herramienta de automatización declarativa, le permite crear "libros de tácticas" (escritos en el lenguaje de configuración YAML) para especificar el estado deseado para su infraestructura y luego realiza el suministro para el usuario. Ansible es una opción popular para automatizar el suministro de contenedores de Docker e implementaciones de Kubernetes

¿Qué es Terraform?

Terraform es otra herramienta de orquestación de infraestructura y suministro declarativo que permite a los ingenieros automatizar el suministro de todos los aspectos de su infraestructura empresarial local y basada en la nube.

Terraform colabora con todos los proveedores de nube destacados y le permite automatizar la creación de recursos en múltiples proveedores en paralelo, independientemente de dónde se encuentren los servidores físicos, servidores DNS o bases de datos. También puede suministrar aplicaciones escritas en cualquier lenguaje.

A diferencia de Ansible, Terraform no ofrece funcionalidades de gestión de la configuración, pero funciona mano a mano con herramientas de gestión de la configuración (por ejemplo, Cloud Formation) para suministrar automáticamente la infraestructura en el estado descrito por los archivos de configuración y para cambiar automáticamente el suministro de actualizaciones cuando sea necesario en respuesta a los cambios de configuración.

Para obtener un análisis más detallado para seleccionar una herramienta de IaC, consulte “Infraestructura como código: ¿Chef, Ansible, Puppet, o Terraform?"

Soluciones relacionadas
IBM® Cloud Schematics

Use Infraestructura como código para configurar y automatizar recursos para que pueda centrarse en sus aplicaciones clave.

Explore IBM® Cloud Schematics
Soluciones de IBM DevOps

Potente software DevOps para crear, implementar y gestionar aplicaciones nativas de la nube de alta seguridad en múltiples dispositivos, entornos y nubes.

Explore las soluciones de IBM DevOps
Recursos ¿Qué es DevOps?

DevOps acelera la entrega de software de mayor calidad al combinar y automatizar el trabajo de los equipos de desarrollo de software y operaciones de TI.

¿Qué es computación en la nube?

La computación en la nube le permite conectarse a la infraestructura mediante Internet y usar los recursos informáticos sin instalarlos ni mantenerlos en las instalaciones.

Infraestructura como código: ¿Chef, Ansible, Puppet, o Terraform?

Descubra cómo elegir una herramienta de Infraestructura como código.

Dé el siguiente paso

Basado en Terraform, IBM® Cloud Schematics es una solución simplificada para automatizar la gestión de la infraestructura y puede ayudar a las organizaciones a aumentar el rendimiento de las aplicaciones con un suministro y una orquestación consistentes.

Conozca más acerca de IBM® Cloud Schematics