https://docs.microsoft.com/es-mx/learn/modules/azure-devops-devtest-labs/
Unidad 1: Introducción
Las prácticas modernas de desarrollo de software son compatibles con herramientas que abarcan prácticamente todos los aspectos del ciclo de vida de desarrollo de software. Microsoft ha creado un completo conjunto de herramientas que ayudan a las organizaciones a implementar prácticas de DevOps, desarrollar soluciones y ahorrar dinero al hacerlo. En este módulo aprenderá a elegir las herramientas adecuadas para admitir dichas prácticas.
Tailwind Traders ha experimentado con varios procesos y herramientas de desarrollo de software. Aun así, hasta ahora, no se ha producido ningún compromiso de la organización para cambiar a una mentalidad DevOps. Del mismo modo, no hay ningún esfuerzo previsto y coordinado para normalizar el uso de un conjunto de herramientas y procesos principales. Varias iniciativas nuevas de la empresa ponen de relieve la necesidad de una administración e implementación ágiles, repetibles y confiables de sistemas de software. Tailwind Traders considera que la adopción de herramientas y prácticas de DevOps es fundamental para el éxito futuro de la empresa.
En este módulo, obtendrá información sobre las diversas herramientas para los procesos de desarrollo de software que ofrece Microsoft. Explorará los criterios que usan los expertos para tomar decisiones.
Al final de este módulo, podrá elegir las herramientas y los servicios para los procesos de desarrollo de software que mejor se ajusten a los objetivos y las prácticas de su organización.
Unidad 2: Descripción de las opciones de productos
Los desarrolladores de software y los profesionales de operaciones se esfuerzan por crear sistemas de software que funcione que satisfagan las necesidades de la organización. Pero, a veces, los propósitos de sus objetivos a corto plazo se cruzan entre sí, lo que da lugar a problemas técnicos, retrasos y tiempos de inactividad.
DevOps es un concepto que combina filosofías y procedimientos para facilitar a los equipos técnicos la búsqueda de objetivos comunes. Para lograr esta alineación, las organizaciones emplean procedimientos y procesos que automatizan el desarrollo, el mantenimiento y la implementación continuos de sistemas de software. El objetivo consiste en agilizar la publicación de los cambios de software, garantizar la implementación continua del sistema y asegurar que todos los cambios cumplen un nivel alto de calidad.
Cuando se llevan a cabo correctamente, los procedimientos y procesos de DevOps abarcan prácticamente todos los aspectos de la empresa y el ciclo de vida de desarrollo de software, incluida la planificación, la administración de proyectos y la colaboración de los desarrolladores de software, y de los equipos de operaciones y de control de calidad. Las herramientas automatizan y aplican la mayoría de las prácticas y procesos, lo que dificulta y hace que sea innecesario buscar una solución alternativa.
DevOps requiere un cambio de mentalidad fundamental de arriba abajo. Las organizaciones no pueden limitarse a instalar herramientas de software o a adoptar servicios y esperar obtener todas las ventajas que promete DevOps.
En este módulo, se centrará solo en las herramientas de Microsoft que pueden ayudarle a lograr algunos de los objetivos de DevOps. Las organizaciones que no están preparadas para adoptar completamente la eficacia de DevOps pueden admitir equipos técnicos en sus actividades de desarrollo en la nube. Si le interesa obtener más información sobre DevOps en general, Microsoft Learn tiene varios módulos y rutas de aprendizaje que pueden ayudarle.
Las herramientas de Microsoft habilitan la administración de código fuente, la integración continua y la entrega continua (CI/CD), además de automatizar la creación de entornos de prueba. Parece que las funcionalidades de estas herramientas se superponen, por lo que en este módulo obtendrá información sobre las opciones de producto y cuándo elegir un producto en lugar de otro.
Opciones de producto
A nivel general, hay tres ofertas principales, y cada una tiene como objetivo un público y un caso de uso específicos, que proporcionan un conjunto diverso de herramientas, servicios, API de programación, etc.
Vídeo
- Existen 3 ofertas en Azure
Azure DevOps Services:
- es una suite de servicios que administra cada etapa del ciclo de vida del desarrollo del software
- Contiene una sofisticado administrador de proyecto y reportes
GitHub & Github Actions
- En GitHub los desarrolladores pueden publicar su código, aceptar contribuciones de la comunidad, ejecutarlo, aceptar mejoras, reportar bug’s y más, ideal para software libre
Azure DevTest Labs
- Es utilizado para administrar máquinas virtuales para pruebas, incluyendo configuración, aprovisionamiento, desaprovisionamiento automático
Azure DevOps Services
Azure DevOps Services es un conjunto de servicios que aborda cada fase del ciclo de vida de desarrollo de software.
- Azure Repos es un repositorio de código fuente centralizado en el que los profesionales de desarrollo de software, ingeniería DevOps y documentación pueden publicar su código para su revisión y colaboración.
- Azure Boards es un conjunto de administración de proyectos ágil que incluye paneles Kanban, informes, ideas de seguimiento y trabajo desde epopeyas de alto nivel hasta incidencias y elementos de trabajo.
- Azure Pipelines es una herramienta de automatización de canalizaciones de CI/CD.
- Azure Artifacts es un repositorio para hospedar artefactos, como código fuente compilado, que se puede incluir en los pasos de canalización de pruebas o de implementación.
- Azure Test Plans es una herramienta de pruebas automatizadas que se puede usar en una canalización de CI/CD para garantizar la calidad antes de publicar una versión de software.
Video
- Cuando se comienza crear una pipeline que habilita el CI/CD cada organización lo hace diferente, dependiendo de los requerimientos y puede encontrar un mix de tareas y herramientas
- Sin embargo a una serie de tareas comunes que CI/CD pipeline incluyen
- Normalmente comienzan recuperando la última versión del código desde un sistema de control de versiones
- Luego recupera las dependencias de un administrador de paquetes
- Luego lo compila en un archivo ejecutable o librería compartida
- Una vez este compilado moverá e código a una ubicación dentro de la red, donde podrá ser publicado para realizar pruebas
- Y finalmente publicado en un servidor de producción
- Sin embargo los pipelines pueden ser bastantes complicados con forme a la organización crece
- Por ejemplo tal vez quiera que una vez se recupere el código desde el sistema de control de versiones, quiera verificar los mensajes de los commit’s para ver que cumplen con los estándares, subir el número de versión del código y agregar un tag para marcar el punto de publicación, crear listas de to-do, crear items en sus sistema de control
- Luego después de compilar el código tal vez desee:
- Ejecutar un conjunto de pruebas iniciales, como pruebas unitarias, pruebas de integración o específicas, pruebas de rendimiento y análisis del código
- Para comprobar que los estándares del equipo y la industria son correctos
- Asegurando que el código esta libre de errores o malas prácticas
- Generar documentación XML desde el código
- Una vez que el código este compilado, tal vez desee publicar el código a un contenedor
- Y publicar el contenedor en un Hub y generar «Compose files» con la correcta configuración
- SI es un paquete compartido
- Podrá automatizar la publicación en el repositorio de paquetes
- Una vez el código este publicado en un ambiente de pruebas
- Podría ejecutar más pruebas como pruebas de aceptación del usuario o pruebas finales
- Y finalmente tal vez quiera enviar notificaciones para felicitar a su equipo u otro tipo
- Gracias a herramientas como
- Podrá crear complejos pipelines CI/CD
- Azure DevOps es una herramienta madura con un amplio conjunto de características que comenzó inicialmente como software de servidor local y evolucionó a una oferta de software como servicio (SaaS) de Microsoft.
GitHub y Acciones de GitHub
- GitHub es posiblemente el repositorio de código más popular del mundo para el software de código abierto.
- Git es una herramienta de administración de código fuente descentralizada, mientras que GitHub es una versión hospedada de Git que actúa como repositorio remoto principal.
- GitHub se basa en Git para proporcionar servicios relacionados para coordinar el trabajo, notificar incidencias y debatir sobre estas, entregar documentación, etc.
Proporciona las funcionalidades siguientes:
- Es un repositorio de código fuente compartido, que incluye herramientas que permiten que los desarrolladores realicen revisiones de código mediante la adición de comentarios y preguntas en una vista web del código fuente antes de que se pueda combinar en la base de código principal.
- Facilita la administración de proyectos, incluidos los paneles Kanban.
- Admite la emisión de informes, las discusiones y el seguimiento.
- Incluye herramientas de automatización de canalizaciones de CI/CD.
- Incluye una wiki para la documentación colaborativa.
- Se puede ejecutar desde la nube o localmente.
- Más relevante para este módulo, Acciones de GitHub permite la automatización del flujo de trabajo con desencadenadores para muchos eventos del ciclo de vida.
- Un ejemplo de esto es la automatización de una cadena de herramientas de CI/CD.
- Una cadena de herramientas es una combinación de herramientas de software que ayudan en la entrega, el desarrollo y la administración de aplicaciones de software a lo largo del ciclo de vida del desarrollo de sistemas
- La salida de una herramienta en la cadena de herramientas es la entrada de la siguiente herramienta en la cadena de herramientas.
- Las funciones típicas de las herramientas van desde la realización de actualizaciones de dependencias automatizadas hasta la creación y la configuración del software, la entrega de los artefactos de compilación a diferentes ubicaciones, las pruebas, etc.
- Al ser tan similares muchas de las características de GitHub y Azure DevOps, es probable que se pregunte qué producto debe elegir para la organización. Lamentablemente, es posible que no haya una respuesta clara.
- Aunque tanto Azure DevOps como GitHub permiten repositorios de código públicos y privados, GitHub tiene un largo historial con repositorios públicos y confían en él decenas de miles de propietarios de proyectos de código abierto.
- GitHub es una herramienta más ligera que Azure DevOps, y se centra en los desarrolladores individuales que contribuyen al código abierto
- Por otro lado, Azure DevOps se centra en el desarrollo empresarial, con herramientas de planeamiento y administración de proyectos más pesadas y un control de acceso más específico.
- NOTA: No está limitado a elegir entre Azure DevOps Services o GitHub y Acciones de GitHub. En la práctica, puede mezclar y combinar estos servicios en función de sus necesidades. Por ejemplo, puede usar los repositorios de GitHub con Azure Boards para el seguimiento de los elementos de trabajo.
Azure DevTest Labs
- Azure DevTest Labs proporciona un medio automatizado para administrar el proceso de compilación, configuración y anulación de máquinas virtuales que contienen las compilaciones de los proyectos de software
- De esta manera, los desarrolladores y los evaluadores pueden realizar pruebas en diferentes entornos y compilaciones.
- Esta funcionalidad no se limita a las máquinas virtuales. Cualquier cosa que se pueda implementar en Azure a través de una plantilla de Resource Manager se puede aprovisionar a través de DevTest Labs.
- El aprovisionamiento de entornos de laboratorio creados previamente con las herramientas y configuraciones necesarias ya instaladas supone un gran ahorro de tiempo para los desarrolladores y los profesionales de control de calidad.
- Supongamos que necesita probar una nueva característica en una versión anterior de un sistema operativo. Azure DevTest Labs puede configurar todo automáticamente a petición. Una vez completadas las pruebas, DevTest Labs puede apagar y desaprovisionar la máquina virtual, lo que ahorra dinero cuando no está en uso. Para controlar los costos, el equipo de administración puede restringir el número de laboratorios que se pueden crear, el tiempo de ejecución, etc.
Unidad 3: Análisis de los criterios de decisión
En esta unidad, analizará los criterios que emplean los expertos para elegir herramientas o servicios de DevOps para abordar necesidades empresariales específicas. Comprender estos criterios también puede ayudar a entender mejor las diferencias de cada producto.
¿Necesita automatizar y administrar la creación de laboratorios de pruebas?
Si su objetivo es automatizar la creación y la administración de un entorno de laboratorio de pruebas, considere la posibilidad de elegir Azure DevTest Labs. De las tres herramientas y servicios que hemos descrito, es el único que ofrece esta funcionalidad.
Aun así, puede automatizar el aprovisionamiento de nuevos laboratorios como parte de una cadena de herramientas mediante Azure Pipelines o Acciones de GitHub.
¿Está compilando software de código abierto?
Aunque Azure DevOps puede publicar repositorios de código públicos, GitHub es desde hace tiempo el host preferido para el software de código abierto. Si va a compilar software de código abierto, es probable que elija GitHub si no tiene ningún otro motivo que la visibilidad y la aceptación general de la comunidad de desarrollo de código abierto.
Los demás criterios de decisión son específicos para elegir entre Azure DevOps o GitHub.
En cuanto a la administración de código fuente y las herramientas de DevOps, ¿qué nivel de granularidad necesita para los permisos?
GitHub funciona en un modelo simple de permisos de lectura y escritura para cada característica, mientras que Azure DevOps tiene un conjunto de permisos mucho más pormenorizado que permite a las organizaciones restringir quién puede realizar la mayoría de las operaciones en todo el conjunto de herramientas.
Con respecto a la administración de código fuente y las herramientas de DevOps, ¿cómo de sofisticados han de ser los informes y la administración de proyectos?
Aunque GitHub tiene elementos de trabajo, incidencias y un panel Kanban, la administración de proyectos y la generación de informes es el área en la que destaca Azure DevOps. Azure DevOps es muy personalizable, lo que permite que un administrador agregue campos personalizados para capturar metadatos y otra información con cada elemento de trabajo. Por el contrario, la característica de incidencias de GitHub usa etiquetas como medio principal para ayudar a un equipo a clasificar los problemas.
En lo que respecta a la administración de código fuente y las herramientas de DevOps, ¿qué grado de integración con herramientas de terceros necesita?
Aunque no recomendamos específicamente ninguna herramienta de terceros, es importante que conozca las inversiones existentes en herramientas y servicios de su organización, y que evalúe cómo pueden afectar a su elección estas dependencias. Es probable que la mayoría de los proveedores que crean herramientas de DevOps creen enlaces o API que se puedan usar tanto en Azure Pipelines como en Acciones de GitHub. Aun así, es probable que merezca la pena el esfuerzo de validar esa hipótesis.
Unidad 4: Uso de Azure DevOps para administrar el ciclo de vida de desarrollo de aplicaciones
El equipo de desarrollo de software de Tailwind Traders trabaja en muchos proyectos diferentes, tanto para uso interno como externo. El equipo necesita proporcionar a los directivos y los patrocinadores del proyecto informes de nivel ejecutivo, incluidos gráficos de evolución, el seguimiento del progreso con epopeyas y el seguimiento de la información personalizada que es específica de Tailwind Traders en cada elemento de trabajo e informe de errores.
A medida que Tailwind Traders crece y contrata a proveedores externos y contratistas para llevar a cabo trabajo a corto plazo, el equipo directivo quiere asegurarse de que estas personas tienen acceso únicamente a la información que necesitan para realizar su trabajo.
¿Qué servicios deberíamos elegir?
En primer lugar, ¿Tailwind Traders necesita automatizar y administrar la creación de laboratorios de pruebas? No. Por lo tanto, en este escenario, Azure DevTest Labs no es un candidato, ya que no está diseñado para este caso de uso específico.
En segundo lugar, ¿Tailwind Traders compila software de código abierto? Aunque no se indica específicamente, Tailwind Traders crea sistemas internos y externos, como su sistema de comercio electrónico, que no es de código abierto. Por lo tanto, esto no es un aspecto que se deba tener en cuenta en este escenario.
En tercer lugar, ¿qué nivel de granularidad requiere Tailwind Traders para los permisos? Previamente, se indicó que Tailwind Traders contratará a empleados y proveedores temporales para el trabajo a corto plazo, por lo que el requisito de asignar permisos específicos es un aspecto importante que el equipo directivo tiene en consideración. En función de lo que hemos descrito en la unidad anterior, esta característica haría que Azure DevOps fuese el candidato principal. Con el uso de Azure DevOps, los administradores de Tailwind Traders también disponen de un conjunto de opciones más sólido para controlar los permisos en toda la cartera de trabajo.
En cuarto lugar, ¿necesita Tailwind Traders una solución de generación de informes y administración de proyectos sofisticada? Sí, las características sólidas de administración de proyectos y de generación de informes son unas de las principales consideraciones. De nuevo, dada la cantidad de personalización de elementos de trabajo y generación de informes que quiere el equipo de administración, es probable que Azure DevOps sea una buena opción.
En quinto lugar, ¿necesita Tailwind Traders una integración estrecha con alguna herramienta de DevOps de terceros? La integración de herramientas no aparecía como consideración principal para este escenario. Como ha visto en la unidad anterior, la mayoría de las herramientas de DevOps de terceros se integran tanto con Azure DevOps como con GitHub, por lo que es probable que el equipo encuentre las herramientas que necesita.
Unidad 5: Uso de GitHub para contribuir al software de código abierto
Tailwind Traders espera publicar una API que permita a terceros integrar sus propios inventarios de elementos nuevos y usados. Este enfoque permitiría a Tailwind Traders ofrecer una amplia variedad de productos directamente desde su sitio de comercio electrónico.
Aunque la implementación interna de la API es de código cerrado, Tailwind Traders quiere crear un conjunto de ejemplos que llamen a la API para realizar diversas acciones. El equipo necesita una plataforma para compartir código de ejemplo, recopilar comentarios sobre la API, permitir a los colaboradores informar de problemas y crear una comunidad en torno a las solicitudes de características.
¿Qué servicio debe elegir?
En primer lugar, ¿Tailwind Traders necesita automatizar y administrar la creación de laboratorios de pruebas? No. En este escenario, Azure DevTest Labs no es un candidato, ya que no está diseñado para este caso de uso.
En segundo lugar, ¿Tailwind Traders compila software de código abierto? Sí. Como se mencionó en una unidad anterior, los desarrolladores están habituados a ver este tipo de contenido disponible en GitHub. Con GitHub, los desarrolladores de Tailwind Traders pueden publicar su código, aceptar contribuciones de la comunidad para mejorar los ejemplos de código, aceptar comentarios e informes de errores, etc. Dado que este escenario implica código abierto, GitHub es el candidato principal.
En tercer lugar, ¿qué nivel de granularidad requiere el equipo de Tailwind Traders para asignar permisos? Aunque no se indique explícitamente, el hecho de que Tailwind Traders acepte contribuciones de la comunidad, emita informes y, por lo general, intente crear una comunidad de desarrolladores en torno a los ejemplos de API, las necesidades de permisos de la empresa son básicas: los usuarios pueden ver solamente o ver y escribir. Este es otro motivo por el que GitHub sería un buen candidato para este escenario.
En cuarto lugar, ¿necesita Tailwind Traders una solución de generación de informes y administración de proyectos sofisticada? De nuevo, dada la naturaleza de este proyecto, el equipo no requiere una solución sofisticada de generación de informes y administración de proyectos. En este escenario, no se requiere la fuerza de Azure DevOps Services.
En quinto lugar, ¿necesita Tailwind Traders una integración estrecha con alguna herramienta de DevOps de terceros? La integración de herramientas no aparecía como consideración principal para este escenario y no hace que se acepte ni descarte ninguna herramienta.
GitHub es la mejor opción para este escenario. Aunque se podría usar Azure DevOps para que el repositorio sea público, algunas de las otras características que afectan a la comunidad de desarrollo, como los comentarios o los informes de errores, serían menos accesibles.
Unidad 6: Uso de Azure DevTest Labs para administrar entornos de prueba
Tailwind Traders quiere ser más metódico y cuidadoso al enviar a producción nuevas versiones de su sitio web de comercio electrónico. La empresa ampliará su equipo de control de calidad (QA) y usará la nube para crear y hospedar máquinas virtuales. A través de este enfoque, crearán entornos de prueba que coincidan con el entorno de producción.
El equipo de administración tiene dudas sobre los costos de un entorno de prueba más automatizado. Por ejemplo, quiere asegurarse de que los profesionales de control de calidad no pierdan tiempo configurando el entorno de pruebas para que coincida con el entorno de producción. El equipo quiere asegurarse de que las máquinas virtuales se destruyan cuando ya no estén en uso. Le interesa limitar el número de máquinas virtuales que puede poner en marcha cada profesional de control de calidad. Además, el equipo quiere asegurarse de que cada entorno esté configurado correctamente y de forma coherente con el entorno de producción.
¿Qué servicio debe elegir?
En primer lugar, ¿Tailwind Traders necesita automatizar y administrar la creación de laboratorios de pruebas? Sí. Parece que se trata de un trabajo para Azure DevTest Labs ya que puede hacer todo lo que el equipo necesita llevar a cabo en este escenario.
Podríamos seguir evaluando los criterios de decisión, pero no hacen falta ni Azure DevOps ni GitHub para este escenario. Recuerde que tanto Azure DevOps como GitHub podrían usarse para crear versiones de producto que se pueden incluir automáticamente en las máquinas virtuales que cree con fines de prueba.
Video: 3.4.1 Elección de mejores herramientas para ayudar a que las organizaciones creen mejores soluciones
- DevOps es una práctica de desarrollo de software que promueve la colaboración entre los equipos de desarrollo y operaciones con el fin de una entrega de software más rápida y confiable
- Se le conoce como una cultura que conecta las personas y los procesos y la tecnología para ofrecer valor de manera constante dentro del ciclo de vida del desarrollo de software
- DevOps (Development / Operations)
- Al adoptar una cultura DevOps junto con las prácticas y herramientas los equipos adquieren la capacidad de responder mejor a las necesidades de los clientes, aumentar la confianza en las aplicaciones que crean logrando alcanzar los objetivos de manera más eficiente
- El desarrollo de software es un proceso que puede implicar una gran cantidad de trabajo manual y dar lugar a un montón de errores dentro del código
- Normalmente el equipo de desarrollo y operaciones no están sincronizados entre ellos lo que ralentiza la entrega de software, así como su desarrollo
- DevOps mejora todas las etapas del ciclo de desarrollo del software, la implementación y mantenimiento
- Busca agilizar los lanzamientos del software, garantizando la entrega continua y garantiza que todas la entregas cumplen con los estándares de calidad
- DevOps promueve la automatización reduciendo los posibles errores
- El ciclo de vida del desarrollo de software
- Se compone de varias fases:
- 1 Planeamiento: donde los equipos definen los objetivos, tareas, características y funcionalidades de las aplicaciones
- 2 Desarrollo: Se incluyen todos los aspectos de la programación escritura, pruebas, integración del código, de esta manera la compilación de este código se concentra en algo que se conoce como «artefactos de compilación» que se pueden implementar en varios entornos
- 3 Entrega: Es donde de implementan las aplicaciones en entornos productivos, es decir se libera la aplicación, aquí también se incluye la implementación y la configuración de la infraestructura
- 4 Operación: o funcionamiento implica mantener, supervisar las aplicaciones y solucionar posibles problemas que surjan en el entrono de producción
- Ademas de la etapas se deben incluir aspectos como:
- Flujo de trabajo
- Seguridad y conformidad
- Mejora Continua
- Colaboración
Herramientas para desarrollo en Azure
Azure DevOps Services
- Es un conjunto de servicios que abarcan todas las etapas del ciclo de desarrollo de software
- Azure Repos: es un repositorio de código fuente centralizado donde se puede publicar el código para revisión y colaboración
- Azure Boards: es un conjunto de administración de proyectos ágil que incluye KanBan, informes, ideas de seguimiento, control de incidencias
- Azure Pipelines: Herramienta de automatización de CI/CD
- Azure Artifacts: Es un repositorio para alojar artefactos como código fuente compilado
- Azure Test Plan: Es una herramienta de pruebas automatizadas
GitHub
- Git: es una herramienta que permite la administración del código de manera descentralizada
- GitHub: es una herramienta de administración de código hospedada y centralizada
- GitHUb se basa en Git para servicios relacionados, coordinar el trabajo, reporte de incidencias y debatir sobre estas
- Facilita la administración de los proyectos con paneles Kanban
- Informes, discusiones
- Proyectos públicos o privados
- Y es más ligera que Azure DevOps
- GitHUb se centra en desarrollares individuales y Azure DevOps en el desarrollo empresarial
Azure DevTest Labs
- Proporciona un medio automatizado para la administración de procesos de compilación, configuración y anulación de MV’s que contengan distintas versiones, o ambientes
- Por tanto los desarrolladores y los que las evalúan pueden realizar las pruebas en diferentes entornos
- No solo son MV sino que se pueden crear desde plantillas desde el Resources Manager