Un par de semanas atrás, estaba leyendo en un periódico la historia de un niño malasio de 12 años. El niño durante un año estuvo desarrollando un videojuego de zombies.
Al no contar con computadora todo lo hizo con una que rentaba en un cibercafé; un mal día el dueño del cibercafé decidió eliminar el proyecto pensando que era un virus.
Esta historia no termino mal debido a que estamos hablando de un niño que sufre asma, vive en una comunidad pobre de Malasia y que logro hacer viral su historia.
Al combinar todos estos factores el niño termino con una computadora nueva, recuperaron su juego, lo visitó del ministro de la juventud de Malasia y ahora puede vender su juego a un precio mayor del que tenía pensado.
Desafortunadamente muchos de nosotros no podemos perder el código de un año de trabajo y salir bien parados ante nuestros clientes. Probablemente ni siquiera podamos hacer viral nuestra historia.
Lo mas desafortunado, es que en mi experiencia dando cursos para empresas de diferentes sectores me he encontrado muchos casos donde ese riesgo existe. A veces el único mecanismo de control de código es una carpeta con montones de carpetas de código en el equipo de un solo desarrollador. Y ni hablar de cuando hay un fallo y toca actualizar una versión diferente a la actual o cuando hay que diagnosticar por qué el sistema solo falla en algunos equipos o en todos tras una actualización “pequeña” o casos mas extremos como cuando el desarrollador deja la empresa y alguien mas debe corregir errores urgentes.
Por esa razón decidí escribir este post sobre Azure DevOps, una de las herramientas que llevo ocupando desde hace varios años en sus diversas transformaciones.
Aunque es difícil usar todas las herramientas disponibles y el control de código solo es un aspecto muy pequeño a considerar. El comenzar a usar poco a poco algunas de ellas puede ayudarnos en nuestra labor como desarrolladores de software y conforme pasa el tiempo podemos ir implementado algunas otras para no estancarnos solo usando los repositorios de código.
Antes comenzar con Azure DevOps
En lugar de ir directo a la herramienta platiquemos de algunos conceptos importantes, comenzando por el de DevOps (dejando un poco de lado que proviene de las palabras Development y Operations).
He visto mas de 20 definiciones sobre lo que es DevOps, de todas esas, lo que he visto que la mayoría tienen en común es que DevOps es un tema referente a cultura y no a herramientas tecnológicas y lo que se busca es ofrecer valor a los usuarios. Otra característica de DevOps es que ese valor debe ofrecerse de forma continua y ágil.
Otros dos conceptos muy relacionados son los de CI (Continuous Integration/Integración Continua) y CD (Continuous Delivery/Entrega Continua).
CI normalmente se refiere a la capacidad de que los desarrolladores pongan su código junto al de otros miembros del equipo y que al hacer esto, el código sea compilado y probado. Normalmente este proceso es automático y se ejecuta cada vez que un desarrollador guarda sus cambios en un repositorio de código.
CD es el proceso de compilar, probar y liberar el código a los ambientes de desarrollo o de producción. Al igual que la Integración Continua el proceso normalmente se hace de forma automática apoyándose de diferentes herramientas.
Otro concepto clave es el de monitoreo, las compañías deben analizar las métricas o registros de los desarrollos y de la infraestructura sobre la que se ejecutan cuando estos ya están en producción. El objetivo del monitoreo es minimizar el tiempo de detección y respuesta ante fallos de la aplicación o fallos de rendimiento.
Hay muchos mas conceptos relacionados a DevOps, siendo los anteriores los que con mas frecuencia he visto. Por esta razón de momento no me extenderé poniendo mas definiciones.
Ahora si, hablemos de Azure DevOps
Azure DevOps básicamente es un servicio de nube para colaborar durante el desarrollo de código, desde el control de las versiones del código fuente hasta la distribución del software pasando por varias fases referentes a la comunicación entre el equipo de desarrollo. Es decir nos ofrece herramientas de comunicación, de integración y liberación continua.
Actualmente Azure DevOps esta conformado por cinco servicios:
-
Azure Pipelines:
Este servicio es el que contiene las herramientas de CI y CD que se pueden conectar con prácticamente cualquier lenguaje de programación. Además de que puede trabajar sin problema con repositorios Git.
-
Azure Boards:
Es el servicio enfocado a llevar el seguimiento del proyecto a través de tableros Kanban, backlogs, tableros para el equipo y reportes personalizados.
-
Azure Repos:
Permite crear repositorios privados para el código fuente. Estos repositorios se pueden crear de forma ilimitada y contienen funcionalidades avanzadas para el manejo de los archivos del código.
-
Azure Artifacts:
Permite crear manejadores Maven, NuGet y npm públicos y privados, estos manejadores pueden trabajar de forma simple con las herramientas de Azure Pipelines.
-
Azure Test Plans:
Contiene herramientas para crear pruebas manuales y exploratorias, también tiene algunas herramientas para obtener retroalimentación de los stakeholders.
Lo mejor de todo es que uno puede empezar a probar con los esquemas gratuitos
Recursos
Algunos recursos para aprender sobre el tema que me parecieron muy buenos son los siguientes.
Presentando Azure DevOps – https://www.consultorinternet.com/2018/09/presentando-azure-devops.html
Learn DevOps – https://docs.microsoft.com/en-us/azure/devops/learn/what-is-devops
What is Azure DevOps Services? – https://docs.microsoft.com/en-us/azure/devops/user-guide/what-is-azure-devops-services?view=vsts
Introducing Azure DevOps – https://azure.microsoft.com/en-us/blog/introducing-azure-devops/
What is DevOps? – https://aws.amazon.com/devops/what-is-devops
Effective DevOps (libro gratuito) – https://azure.microsoft.com/en-us/resources/effective-devops/
Si te interesa conocer un poco mas sobre la aplicación práctica de Azure DevOps y estas en la CDMX, el próximo sábado 24 de Noviembre estaré participando en este evento gratuito junto a otros especialistas en tecnologías Microsoft. Hablaremos de Azure DevOps con Serverless, Bots, Apps Móviles, Kubernetes, etc. Si quieres conocer sobre próximos eventos presenciales y virtuales suscríbete en el formulario de la parte superior del post.