DevOps en Azure abarca un amplio rango de servicios que cubren el ciclo completo de desarrollo de un producto. Los módulos que componen este software como servicio (SaaS) son los siguientes (Microsoft Docs, s.f.-b):
Azure DevOps es un conjunto de servicios y herramientas para lograr una buena administración en todo el ciclo de vida del desarrollo de software, ya que soporta la mayoría de las plataformas de desarrollo, así como lenguajes de programación.
Construcción (build) de aplicaciones
Azure Devops no se centra en organizaciones que son de un extremo a otro de Microsoft o Windows. Azure DevOps proporciona una plataforma que es:
La automatización de construcción/compilación (build) es el proceso de automatizar la recuperación de código fuente, compilarlo en código binario, ejecutar pruebas automatizadas y publicarlo en un repositorio centralizado compartido. La automatización de la construcción es fundamental para el éxito de los procesos de DevOps.
La automatización de la construcción permite la integración continua (CI). Por lo tanto, el papel de CI en el proceso de compilación automatizado es que CI utiliza la automatización de compilación para verificar los registros y permitir que los equipos detecten problemas con anticipación.
Hay cinco beneficios principales de la automatización de la construcción:
Cuando se logra automatizar la construcción, las pruebas y, por último, la liberación del código, los equipos tanto de desarrollo como de tecnologías de información podrán realizar múltiples tareas como los cambios y resolución de errores en corto tiempo y también tomarán decisiones con más rapidez.
Despliegue (deploy) de aplicaciones
En las versiones anteriores de Azure DevOps, si la aplicación necesitaba implementarse en varios servidores, la comunicación remota de Windows PowerShell debía habilitarse manualmente. Los puertos necesarios se abrían y el agente de implementación se instalaba en cada uno de los servidores. Las canalizaciones se administraban manualmente si se requería realizar múltiples implementaciones.
Todos los desafíos anteriores se han manejado sin problemas con la introducción de los grupos de implementación.
El grupo de implementación instala un agente de implementación en cada uno de los servidores de destino del grupo configurado e indica al canal de lanzamiento que implemente gradualmente la aplicación en todos estos servidores que pertenecen al grupo de implementación. Se pueden crear múltiples tuberías (pipelines) para las implementaciones, de modo que la última versión de la aplicación se pueda proporcionar de manera escalonada a los múltiples grupos de usuarios para validar las características recién introducidas.
Los grupos de implementación son un conjunto de servidores que tienen instalados agentes y representan los entornos de desarrollo, prueba y producción; estos grupos solo se utilizan en las canalizaciones típicas y son diferentes a los trabajos de implementación, ya que estos son un conjunto de tareas de implementación que se definen en un archivo YAML para realizar una tarea en específico.
Con los grupos de implementación puedes realizar los siguiente:
Los grupos de implementación son muy útiles en las organizaciones con múltiples proyectos y una de las ventajas de estos grupos es que cuando se crea uno nuevo, este se provisiona automáticamente en los grupos que corresponden a cada proyecto.
Automatización de despliegues
El despliegue continuo (CD) es el proceso de crear, configurar, probar e implementar desde un entorno de construcción hasta uno de producción. Varios entornos de pruebas crean una canalización de lanzamiento para la automatización de nueva infraestructura y la implementación de nuevas compilaciones. Los siguientes entornos tienen tareas de integración, carga y pruebas de validación de los usuarios finales que se ejecutan e iteran progresivamente. La integración continua (CI) es la que inicia el proceso de despliegue continuo hasta el final de las pruebas de validación de la aplicación.
El despliegue continuo (DC) en sí mismo es un conjunto de procesos, herramientas y técnicas que permiten la entrega rápida, confiable y continua de software. Entonces, CD no se trata solo de configurar una tubería, aunque esa parte es importante. El CD trata sobre la creación de un entorno de trabajo que tiene las siguientes características (Microsoft Docs, s.f.-a):
CD es una práctica esbelta y su meta es mantener la producción actualizada utilizando la ruta más corta desde la disponibilidad hasta el control de las versiones, así como nuevos paquetes de implementación. Gracias a la automatización se minimizan los tiempos de mitigación o resolución de incidentes, así como los tiempos de implementación.
Crear una tubería de construcción con Azure Pipelines
Aprenderás cómo crear una tubería (pipeline) básica de DevOps utilizando la plataforma como servicio de Microsoft. Lo primero que tienes que hacer es crear una cuenta en Azure DevOps Services.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Cuando se te presente la opción, usa la de “Empezar gratis.” Esto hará que se cree una organización a la cual tu cuenta será asociada para la creación de proyectos.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Después de un par de minutos te llevará a la consola de administración para la organización creada. La consola te pedirá crear un proyecto para empezar los servicios asociados.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Para este ejercicio crea un proyecto privado. Con él aprenderás los pasos necesarios para habilitar una tubería (pipeline) desde la plataforma. En este ejemplo se creó un proyecto llamado “TecMilenio”.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Una vez creado el proyecto se habilitarán todos los módulos de Azure Devops. En la sección de Overview podrás ver los tableros de control y métricas asociadas al proyecto. En la sección de tableros podrás llevar la administración del proyecto usando tableros de tareas tipo Kanban y otras herramientas de administración de proyectos.
Tu tablero Kanban convierte tu trabajo pendiente en un letrero interactivo que proporciona un flujo visual de trabajo. A medida que el trabajo avanza, desde la idea hasta su finalización, actualiza los elementos del tablero. Cada columna representa una etapa de trabajo. Cada tarjeta representa un elemento de la lista de trabajos pendientes, una historia de usuario o un error en esa etapa del trabajo.
En la sección de repositorios encontrarás la información necesaria para subir un repositorio a una nube administrada por Microsoft. Si tu repositorio ya existe en otro servicio, como GIthub, puedes generar las llaves privadas para clonarlo y darle seguimiento desde esta plataforma.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Cuando todo esto esté definido, podrás crear tu primera tubería (pipeline). Al hacer clic en esa pestaña, se presenta la opción para crearla. Hay que hacer clic en el botón de “Create Pipeline.”
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Al presionar el botón se detona una interfaz de tipo “wizard”. En el primer paso te va a preguntar dónde almacenas tu código, aunque Azure DevOps tiene la posibilidad de interconectarse con múltiples plataformas de resguardo de código (Perforce, SourceSafe, Github, etc.). En este ejemplo usarás la cuenta de Github que utilizaste para tu práctica de GitOps en la sección anterior.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Para poder realizar la conexión, Azure DevOps Pipelines te pedirá que autentifiques tus credenciales con Github utilizando la interfaz OAuth provista por Git. Hay que teclear el usuario y contraseña que usas para acceder al repositorio donde se almacenó el código fuente que creaste.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Como Github usa autenticación de dos factores se enviará un código de verificación al correo que tienes registrado en tu cuenta de Github. Hay que teclear el código en la ventana provista para ese efecto.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Después de realizar la verificación, hay que seleccionar los repositorios a los cuales se les otorgará acceso de administración a Azure DevOps Pipeline. Es recomendable que otorgues solo los permisos al repositorio de ejemplo para efectos de esta práctica y después añadas otros repositorios, según sea necesario.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Concluyendo este paso, habilita el paso de “Selección” en el wizard. En este paso hay que determinar el repositorio que se utilizará como detonador de las acciones de la tubería (pipeline).
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Al hacer esto, aparece un diálogo para seleccionar los repositorios a los cuales se les habilitarán las acciones de la tubería. En este ejemplo tienes que escoger la opción de “Repositorios selectos” y pulsar el selector para marcar solamente el repositorio creado para esta práctica.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
En el siguiente paso hay que escoger la cuenta de Microsoft a la cual se asociarán los cargos y otras acciones administrativas del Pipeline. Utiliza la que asociaste al principio con la Organización Devops.
Al culminar esta acción, se habilitará la sección de “Configurar” dentro del “wizard” de la tubería. Aquí se te presentan las opciones de crear un pipeline sencillo y modificarlo manualmente o la de usar un machote de YAML provisto por Microsoft para los escenarios más comunes. En este ejemplo, seleccionarás la configuración inicial o “starter”.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Azure DevOps se encargará de leer el repositorio y crear un YAML sugerido para el proyecto en cuestión. Como el repositorio a usarse en este ejemplo son scripts sencillos en Python, se genera un YAML sencillo que puedes modificar manualmente para complementarlo.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Una vez definido el YAML, este se compilará y será asignado a una tarea en Azure DevOps para validar que los pasos sean correctos. El job de esta configuración inicial fallará y el motivo es que no has activado una cuenta gratuita de Azure DevOps. Para eso hay que llenar el formulario en el cual se solicita el acceso a los servidores de procesamiento paralelo gratuitos.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Al finalizar el formulario solo queda esperar la respuesta de Microsoft para construir y probar nuevos pipelines usando Azure DevOps.
Tuberías multietapas
Antes, Azure DevOps solo ofrecía vistas de compilación y versiones de manera separada para los usuarios. Esto era un poco diferente a comparación de otras plataformas como Jenkins, con lo cual ya se podían crear canalizaciones unificadas. Ahora, Azure DevOps puede crear canalizaciones multietapas con el archivo YAML y configurar las canalizaciones para hacer integraciones continuas (CI), despliegues continuos (CD) o ambas (Goyal, 2019).
Puedes organizar los trabajos (jobs) en las tuberías por etapas. Las etapas son las divisiones principales en una tubería: "construir esta aplicación", "ejecutar estas pruebas" e "implementar en preproducción" son buenos ejemplos de etapas. Son límites lógicos en su canalización donde puedes pausar la canalización y realizar varias comprobaciones.
Cada canal tiene al menos una etapa, incluso si no la define explícitamente. También puede organizar las etapas en un gráfico de dependencia para que una etapa se ejecute antes que otra. Hay un límite de 256 trabajos por etapa.
Cuando Azure DevOps define varias etapas en una canalización, de forma predeterminada, se ejecutan secuencialmente en el orden en que las define en el archivo YAML. La excepción a esto es cuando agrega dependencias. Con las dependencias, las etapas se ejecutan en el orden de los requisitos marcados con la etiqueta dependsOn. Las tuberías deben contener al menos una etapa sin dependencias.
Las tuberías por etapas brindan mejoras y facilidad al usuario en el portal de canalizaciones (tuberías) para administrarlas correctamente. La canalización por medio de YAML reemplaza lo que logran las compilaciones como las versiones. Algunas de las ventajas que se tiene sobre las versiones es que el código YAML está con el código de la aplicación, por lo que cuando el código se tiene que ramificar, también se ramifica la canalización del archivo YAML y gracias a esto se puede modificar la compilación en su rama sin modificar las demás.
Azure DevOps es un servicio para desarrolladores de software como servicio (SaaS), especialmente para grupos de soporte que desean diseñar trabajos, colaborar con otros equipos en el desarrollo de código, compilar y enviar aplicaciones y software. También incorpora algunas de las herramientas más avanzadas disponibles en el mercado y además es una opción extraordinaria para organizar una cadena de herramientas DevOps. Es una mezcla de las tecnologías más simples y, por lo tanto, los equipos de desarrollo pueden crear aplicaciones con las mejores prácticas. Azure DevOps funciona con configuraciones de nube pública y privada.
Asegúrate de: