Mathias Rosenthal - Fotolia

Evaluar Conozca los pros y contras de las tecnologías, productos y proyectos que está considerando.

Construir una secuencia de infraestructura como código en la nube

Comprenda las etapas para administrar la infraestructura como código, desde el control de fuente hasta el despliegue de la activación, y cómo estas funciones se pueden lograr a través de los servicios en la nube.

Los desarrolladores han hecho de los contenedores, las funciones sin servidor y los microservicios la base de las aplicaciones nativas de la nube modernas por muchas razones, pero la simplicidad operativa no es una de ellas. La fragmentación de sistemas cliente-servidor o basados ​​en web monolíticos en numerosos contenedores de microservicios y funciones en la nube multiplica la cantidad de componentes que el personal de TI debe configurar, implementar, actualizar y monitorear.

Los factores subyacentes que impulsaron este cambio a tal enjambre de ejecutables son la estandarización, la integración y la automatización. La estandarización permite a los desarrolladores reutilizar el mismo código, imagen o plantilla innumerables veces con poco esfuerzo. La integración permite que los procesos abarquen el desarrollo de software hasta la implementación de recursos. La automatización permite que estos componentes integrados y estandarizados se procesen mediante el desarrollo de software y las operaciones en la nube, lo que elimina la intervención manual y los errores involuntarios.

Muchas etiquetas y palabras de moda describen tales canalizaciones automatizadas, pero se pueden resumir en tres categorías:

  • Infraestructura como código (IaC), que transforma las configuraciones de recursos en la nube en código editable que se compila en servicios implementados.
  • Secuencia de DevOps, o secuencia CI/CD, que define las herramientas de automatización particulares que se utilizan para llevar el código de la aplicación de un repositorio de código fuente a una función ejecutable o en la nube implementable.
  • GitOps, que utiliza el sistema de administración de código fuente de Git para escribir aplicaciones, crear secuencias, aprovisionar y administrar recursos (particularmente clústeres de Kubernetes) e implementar aplicaciones.

¿Qué hay en una secuencia de DevOps o IaC?

La automatización de un extremo a otro es una consecuencia de la mentalidad, los procesos y la estructura organizativa de DevOps. Independientemente de si se lo llama IaC o GitOps, una secuencia de CI/CD operativa requiere una integración perfecta de los equipos de desarrollo de software y operaciones de TI.

En una secuencia impulsada por eventos, las funciones sin servidor pueden iniciar muchos pasos. Estos se pueden reducir a cuatro categorías o funciones principales:

  1. Un repositorio de código para aplicaciones, microservicios, funciones sin servidor y código IaC;
  2. Un ciclo de compilación y prueba para compilar código en un ejecutable, VM o imagen de contenedor, o pasos de implementación y configuración de IaC;
  3. Liberar la puesta en escena de artefactos y las pruebas beta para poner en escena y probar el código compilado, las imágenes y las configuraciones sin afectar la infraestructura de producción en un entorno donde los desarrolladores pueden iterar rápidamente para corregir errores y revertir versiones fallidas; y
  4. Liberar a producción aquellos artefactos que pasen las pruebas beta. La secuencia debe admitir múltiples estrategias de lanzamiento, como lanzamientos azul/verde, canario o continuos.
En una secuencia de DevOps impulsada por eventos, la finalización exitosa de una etapa desencadena la siguiente.

Aunque las secuencias de DevOps se combinan comúnmente con el desarrollo de aplicaciones, esos cuatro pasos también se aplican a las secuencia de IaC. Recuerde que código es la palabra operativa en infraestructura como código. El objetivo son configuraciones repetibles y reutilizables, que requieren un repositorio de código para administrar las descripciones de IaC, ya sea en YAML, Jinja o en un lenguaje específico de dominio.

Al igual que con el software de aplicación, IaC significa que los desarrolladores compilan, integran y prueban configuraciones en entornos de preproducción. Asimismo, cada paso en un proceso IaC puede ser desencadenado por eventos, como un registro de código en el repositorio o la finalización exitosa de verificaciones de sintaxis o conjuntos de pruebas beta. Entonces, la herramienta relevante realiza automáticamente la tarea.

Cómo crear una secuencia de IaC con servicios en la nube

Los entornos en la nube son adecuados para las secuencias de infraestructura como código de DevOps por varias razones:

  • La flexibilidad y mutabilidad de los recursos virtuales;
  • La disponibilidad de servicios de secuencias administrados y sin servidor que no requieren una infraestructura operada por el cliente o una instalación inicial; y
  • API, funciones de automatización integral y soporte para herramientas de automatización de terceros que facilitan los desencadenantes desatendidos y la ejecución de los pasos del proceso.

La siguiente tabla compara las herramientas de IaC de DevOps en cada categoría en los principales servicios en la nube.

Los principales proveedores de la nube ofrecen herramientas para abarcar el proceso de DevOps, desde repositorios de código hasta implementaciones automatizadas.

Todos estos servicios en la nube proporcionan documentación, interfaces y ejemplos para la integración con herramientas externas de IaC y CI/CD. Por lo tanto, una organización puede construir entornos de TI modernos con IaC, como usar Terraform para desarrollar scripts de implementación de recursos independientes de la nube y aplicarlos a cualquiera de los entornos de nube.

Secuencias de IaC: adaptables a muchas situaciones

Un beneficio principal de las secuencias de DevOps es su flexibilidad para adaptarse a casi cualquier situación. Los procesos de IaC no son diferentes.

Este ejemplo del blog de AWS DevOps ilustra los conceptos y el flujo de trabajo, que incluye los siguientes pasos:

  1. Un desarrollador cambia el código de IaC y lo confirma en un repositorio, CodeCommit en este caso, pero a menudo en un servicio Git o Git.
  2. Un administrador de flujo de trabajo como CodePipeline o una función dirigida por eventos (Lambda, Azure Functions) detecta la comisión y activa una compilación de código.
  3. El motor de compilación, ya sea CodeBuild, Terraform u otra herramienta de IaC, crea una instancia de un entorno informático y ejecuta los comandos de compilación especificados.
  4. El motor de implementación de IaC (en este ejemplo es CloudFormation, pero podría ser Terraform, Ansible, Deployment Manager o un producto similar) aprovisiona los recursos del entorno de compilación y ejecuta una verificación de validación en la configuración.
  5. Si se valida la configuración de la infraestructura, IaC procesa el archivo de configuración y crea el entorno.

Como ilustra este ejemplo, todas las herramientas necesarias en una secuencia de infraestructura como código están disponibles como servicios en la nube sin servidor que no requieren una infraestructura dedicada. Se pueden configurar y escalar rápidamente para cumplir con cualquier requisito. Otra ventaja de las herramientas basadas en la nube es su estrecha integración con la infraestructura, la base de datos y los servicios de aplicaciones, lo que elimina la complejidad de las redes y la interfaz con múltiples sistemas.

Investigue más sobre Desarrollo de aplicaciones

Close