Consideraciones sobre DevOps
En este artículo se proporcionan consideraciones y recomendaciones para DevOps en Azure Landing Zones.
¿Qué es DevOps?
DevOps es la unión de personas, procesos y tecnología que sigue dando valor al desarrollo (Dev) y a las operaciones (Ops). Este enfoque fomenta la colaboración en equipo que crea procesos repetibles para ayudar a las organizaciones a funcionar de forma eficaz y a escala.
En el contexto de Azure Landing Zones, DevOps se convierte en el marco que guía a su equipo (o equipos) responsable de toda la administración del ciclo de vida de Azure Landing Zones en áreas como:
- Cómo organizar y definir límites con otros equipos para lograr el equilibrio adecuado entre autonomía y la gobernanza
- Cómo evolucionar continuamente el diseño de la arquitectura de la zona de aterrizaje de Azure (Ley de Conway)
- Cómo planear, priorizar e iterar la implementación de la arquitectura diseñada
- Implementación del control de versiones, la integración continua y la implementación continua para el código de la zona de aterrizaje de Azure
- Funcionamiento y respuesta a incidentes de sistemas y plataformas que posea
- El nivel de automatización que se aplica al aprovisionamiento y recuperación automática de la zona de aterrizaje de Azure
- Cómo colaborar con otros equipos de su organización de forma ágil y orientada a resultados
- Cómo crear una cultura generativa de seguridad, calidad, centrada en el usuario y el aprendizaje continuo
Las decisiones que tome al revisar los modelos operativos en la nube pueden influir en el uso del marco de DevOps.
Consideraciones de diseño de DevOps
Defina el marco de DevOps o armonícelo con la estrategia de adopción de DevOps y la nube de la organización. Incluya la definición de DevOps y los principios y prácticas que debe seguir el equipo. Asegúrese de conectar la estrategia de DevOps a la estrategia empresarial.
Establezca métricas que permitan a su equipo mejorar su rendimiento de DevOps. Los equipos de alto rendimiento usan una hipótesis para probar sus ideas, medirla para ver cómo funciona la hipótesis y, a continuación, realizar cambios según sea necesario. La intención final de DevOps es mejorar aspectos como la frecuencia de implementación, el tiempo medio para aplicar un cambio o el tiempo para restaurar un servicio degradado. Debe diseñar todas estas métricas para que finalmente influyan en el rendimiento empresarial general.
Determine las prácticas de DevOps que el equipo debe implementar primero en función de sus aptitudes actuales, y diseñe una hoja de ruta para aplicar de forma incremental nuevas prácticas que ayuden al equipo a mejorar sus métricas de DevOps. Invertir en capacidades y recursos de ingeniería es fundamental.
Determine la cadena de herramientas de DevOps que el equipo debe usar para implementar las prácticas de DevOps. Asegúrese de que las herramientas son coherentes con la estrategia general de DevOps para evitar escenarios de ecosistemas heterogéneos de DevOps que aumentan la complejidad de las implementaciones de cargas de trabajo o la zona de aterrizaje de Azure.
Evalúe el efecto que tienen las prácticas de DevOps implementadas y las herramientas de DevOps en el diseño de las zonas de aterrizaje de Azure.
Crea un plan de preparación para aumentar continuamente las aptitudes de su equipo. La aplicación global de un modelo de DevOps no establece de forma instantánea equipos con capacidad de DevOps.
Determine la topología del equipo que mejor se alinee con la estrategia de DevOps de su organización y el modelo operativo en la nube, y establezca límites, responsabilidades y dependencias claros entre los equipos.
Determine cómo el equipo responsable de las zonas de aterrizaje de Azure debe colaborar con otros equipos de su organización para capturar los nuevos requisitos de la zona de aterrizaje de Azure para actualizar el diseño y la implementación, resolver incidentes, minimizar las dependencias y alinearse con las prioridades empresariales.
Recomendaciones de DevOps
Las secciones siguientes contienen recomendaciones que le ayudarán a implementar el marco de DevOps dentro de su organización.
Definición del marco de DevOps
Para establecer el marco de DevOps, considere la posibilidad de usar los marcos que ya están disponibles para empezar con un conjunto de prácticas probadas predefinidas:
El Centro de recursos de Microsoft DevOps proporciona un amplio conjunto de definiciones, prácticas y funcionalidades que puede adaptar a la administración del ciclo de vida de la zona de aterrizaje de Azure, entre las que se incluyen:
Microsoft DevOps Dojo establece una taxonomía de DevOps basada en cuatro pilares fundamentales y ocho funcionalidades:
Definición de procedimientos de DevOps para la administración de zonas de aterrizaje de Azure
Tenga en cuenta los siguientes procedimientos de DevOps para las zonas de aterrizaje de Azure:
- Revise cómo administrar el ciclo de vida de desarrollo de zonas de aterrizaje de Azure como código.
- Consulte las consideraciones de seguridad de las zonas de aterrizaje de Azure en el espacio de DevOps.
Planeamiento del recorrido de implementación de DevOps
Defina y alinee el recorrido de implementación de DevOps con el plan de adopción de la nube de su organización.
- Determine dónde está el equipo actualmente en las siguientes áreas:
- Las prácticas de DevOps que el equipo ha adoptado para la administración de zonas de aterrizaje de Azure.
- Utilice herramientas como la Evaluación de la capacidad de DevOps para evaluar el estado actual del estado de DevOps de su equipo.
- Estructura actual del equipo, incluidos roles y responsabilidades y funciones en la nube de propiedad.
- Qué habilidades técnicas tiene su equipo.
- Qué modelo de operaciones en la nube sigue actualmente el equipo.
- Las prácticas de DevOps que el equipo ha adoptado para la administración de zonas de aterrizaje de Azure.
- Use el plan de adopción de la nube de su organización para definir un modelo deseado para el equipo.
- Establezca una hoja de ruta iterativa para implementar el modelo deseado en un modo iterativo e incremental que se alinee con la escala de tiempo de transformación de la organización.
Implementación de métricas de DevOps deseadas
Identifique qué métricas usará para medir el rendimiento de DevOps de su equipo. Use métricas para impulsar los hábitos deseados en el equipo que se conectan con los resultados empresariales. Establezca métricas para permitir que el equipo mida el impacto sobre las actividades. Haga que las métricas clave sean visibles para todos, ya que la transparencia promueve la confianza y impulsa la alineación con los objetivos de la organización.
Entre los ejemplos de métricas que miden el rendimiento de DevOps para mejorar el impacto empresarial se encuentras las siguientes:
Resultados empresariales:
- Use objetivos y resultados clave como herramienta para alejar a los equipos de una mentalidad de "salida" y hacia una mentalidad de "resultado". Por ejemplo, puede usar el número de cargas de trabajo que mejoraron su clasificación de cumplimiento con respecto al número de directivas implementadas en Azure.
- Satisfacción del cliente o del usuario final. Algunos ejemplos son Net Promoter Score (NPS), encuestas o entrevistas.
- Crecimiento empresarial. Entre los ejemplos se incluyen una mayor rentabilidad, el aumento de los ingresos y nuevas adquisiciones de orígenes de ingresos.
- Métricas de personas. Entre los ejemplos se encuentran Employee Net Promoter Score (eNPS), el uso, la retención y la satisfacción.
- Costos. Por ejemplo, puede usar la reducción de los costos.
Rendimiento de entrega de software:
- El tiempo que se tarda en hacer un cambio, en corregir un error, una nueva característica o cualquier otro cambio pase de idea a implementación y a producción.
- Frecuencia de implementación: las implementaciones por día de los cambios de código en producción.
- Tiempo medio de restauración: el tiempo necesario para restaurar el servicio en producción después de que se produzca un incidente.
- Porcentaje de error de cambio: el porcentaje de cambios en producción (por ejemplo, cambios de configuración) que provocan un error.
Calidad:
- Tasa de escape de defectos: el número de defectos identificados por los usuarios finales.
- Trabajo o reelaboración no planeados: el porcentaje de tiempo dedicado a realizar trabajos o reelaboraciones no planeadas.
- Errores activos: el número de errores que aún no se han corregido.
- Estado del código: el porcentaje de código que no se ha probado unitariamente.
Definición del ecosistema de tecnología de DevOps
La cadena de herramientas de DevOps que decide administrar el ciclo de vida de las zonas de aterrizaje de Azure afecta a:
- Sus estrategias para implementar los principios y prácticas de DevOps
- Consideraciones de seguridad para el ciclo de vida de DevOps
- El diseño general de la arquitectura de la administración del ciclo de vida de las zonas de aterrizaje de Azure
Use el marco de DevOps que definió anteriormente para identificar qué herramientas usar para cada uno de los procesos de DevOps. Elija las tecnologías de DevOps más adecuadas para las necesidades de los equipos, pero busque un equilibrio que le permita lograr la estandarización en toda la organización, pero evite demasiada complejidad o heterogeneidad en los ecosistemas de DevOps.
Entre los ejemplos de tecnologías de DevOps en diferentes fases de DevOps se encuentran:
- Planeamiento: Atlassian Jira, Atlassian Trello, Azure Boards y GitHub
- Integración continua (CI) y pruebas: Atlassian Bitbucket, Azure Repos, GitHub Repos, npm, NuGet, Selenium, SmartBear Selenium, SonarSource SonarQube y Zed Attack Proxy
- Entrega continua (CD): Atlassian Bamboo, Azure Pipelines, GitHub Actions, Jenkins, Octopus Deploy, Perforce Puppet y RedHat Ansible.
- Infraestructura como código: Bicep, Pulumi y Terraform
- Arranque: ArgoCD GitOps, Flux GitOps, Progress Chef y PowerShell Desired State Configuration (DSC)
- Operaciones: Azure Automation, Azure Monitor, CISCO Splunk, Grafana y Microsoft Power BI
- Colaboración y comentarios: Atlassian Confluence, Wikis de Azure DevOps, discusiones de GitHub, GitHub Wikis, Microsoft Teams, Slack y Stack Overflow
En el diagrama siguiente se muestra un marco de DevOps de ejemplo con la selección de cadena de herramientas de Azure DevOps:
En el diagrama siguiente se muestra un ejemplo de marco de DevOps con la selección de cadenas de herramientas de Azure DevOps y GitHub: