¿Qué es la infraestructura como código?
fondo negro y azul
Infraestructura como código

La infraestructura como código (IaC) automatiza el suministro de infraestructura, lo que permite a su organización desarrollar, implementar y escalar aplicaciones en Cloud con mayor velocidad, menor riesgo y menor costo.


¿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 vídeo, "¿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 middleware, redes, almacenamiento, etc., por personal experto.

La virtualización y el desarrollo nativo en Cloud elimina el problema de la gestión de hardware físico, lo que permite a los desarrolladores suministrar sus propios servidores virtuales o contenedores bajo demanda. 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 gobernada 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). 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 retorno de la inversión mejorado: 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 Cloud. 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.

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 Cloud, 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, usted especifica el estado final deseado de la infraestructura que desea suministrar y el software de la 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 procesal, 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, usted ingresa una dirección y el GPS hace el resto, trazando la ruta más rápida y evitando el tráfico por usted, pero probablemente necesite un experto que le diga por qué se tomaron las decisiones que se tomaron. Las indicaciones paso a paso se basan en la experiencia personal; el proveedor conoce la ruta y por qué la eligió, pero si usted encuentra obstáculos o desea optimizar la ruta, debe llamar para pedir ayuda o hacer el trabajo usted 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 por usted. Ansible es una opción popular para automatizar el suministro de contenedores de Docker y despliegues 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 Cloud.

Terraform colabora con todos los proveedores de Cloud 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 (p. Ej., 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 profundizar en la elección de una herramienta IaC, consulte "Infraestructura como código: ¿Chef, Ansible, Puppet o Terraform?"


Infraestructura como código e IBM Cloud

Las funcionalidades de la IaC de IBM, que cuentan con plantillas personalizables y compartibles, pueden sentar las bases para modernizar aplicaciones, sin importar dónde se encuentre en su proceso de cambio hacia Cloud.

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.
  • Vea cómo la IaC complementa las funcionalidades de IBM DevOps.

Empiece con una cuenta de IBM Cloud hoy mismo.


Soluciones relacionadas

Cree, modernice y gestione aplicaciones

Cree, modernice y gestione aplicaciones de forma segura en cualquier nube, con confianza


DevOps Services on IBM Cloud

Cree, implemente y gestione aplicaciones nativas en Cloud ricas en seguridad en múltiples dispositivos, entornos y Clouds con las mejores prácticas de DevOps