Compartir a través de


Patrón de DevOps

Codifica desde una ubicación única y despliega en múltiples destinos en entornos de desarrollo, pruebas y producción que pueden estar en tu centro de datos local, nubes privadas o la nube pública.

Contexto y problema

La continuidad, la seguridad y la confiabilidad de la implementación de aplicaciones son esenciales para las organizaciones y los equipos de desarrollo.

Las aplicaciones suelen requerir código refactorizado para ejecutarse en cada entorno de destino. Esto significa que una aplicación no es completamente portátil. Debe actualizarse, probarse y validarse a medida que se mueve a través de cada entorno. Por ejemplo, el código escrito en un entorno de desarrollo debe volver a escribirse para que funcione en un entorno de prueba y volver a escribirlo cuando finalmente llega a un entorno de producción. Además, este código está vinculado al host. Esto aumenta el costo y la complejidad de mantener la aplicación. Cada versión de la aplicación está vinculada a cada entorno. La mayor complejidad y duplicación aumentan el riesgo de seguridad y calidad del código. Además, el código no se puede volver a implementar fácilmente cuando se eliminan los hosts con error de restauración o se implementan hosts adicionales para administrar los aumentos de la demanda.

Solución

El patrón de DevOps permite compilar, probar e implementar una aplicación que se ejecuta en varias nubes. Este patrón une la práctica de la integración continua y la entrega continua. Con la integración continua, el código se compila y prueba cada vez que un miembro del equipo confirma un cambio en el control de versiones. La entrega continua automatiza cada paso de una compilación a un entorno de producción. Juntos, estos procesos crean un proceso de versión que admite la implementación en diversos entornos. Con este patrón, puede redactar el código y, a continuación, implementar el mismo código en un entorno local, nubes privadas diferentes y las nubes públicas. Las diferencias en el entorno requieren un cambio en un archivo de configuración en lugar de cambios en el código.

patrón de DevOps

Con un conjunto coherente de herramientas de desarrollo en entornos locales, de nube privada y de nube pública, puede implementar una práctica de integración continua y entrega continua. Las aplicaciones y los servicios implementados mediante el patrón de DevOps son intercambiables y se pueden ejecutar en cualquiera de estas ubicaciones, aprovechando las características y funcionalidades de la nube pública y local.

El uso de una pipeline de lanzamiento de DevOps te ayuda a:

  • Inicie una nueva compilación basada en confirmaciones de código en un único repositorio.
  • Implemente automáticamente el código recién compilado en la nube pública para realizar pruebas de aceptación de usuarios.
  • Implemente automáticamente en una nube privada una vez que el código haya superado las pruebas.

Problemas y consideraciones

El patrón de DevOps está diseñado para garantizar la coherencia entre implementaciones independientemente del entorno de destino. Sin embargo, las funcionalidades varían en entornos locales y en la nube. Considere los siguientes puntos:

  • ¿Están disponibles las funciones, los puntos de conexión, los servicios y otros recursos de la implementación en las ubicaciones de implementación de destino?
  • ¿Los artefactos de configuración se almacenan en ubicaciones a las que se puede acceder entre nubes?
  • ¿Funcionarán los parámetros de implementación en todos los entornos de destino?
  • ¿Están disponibles propiedades específicas de recursos en todas las nubes de destino?

Para más información, consulte Desarrollo de plantillas de Azure Resource Manager para la coherencia en la nube.

Además, tenga en cuenta los siguientes puntos al decidir cómo implementar este patrón:

Escalabilidad

Los sistemas de automatización de implementación son el punto de control clave en los patrones de DevOps. Las implementaciones pueden variar. La selección del tamaño correcto del servidor depende del tamaño de la carga de trabajo esperada. Las máquinas virtuales son más difíciles de escalar que los contenedores. Sin embargo, para usar contenedores para el escalado, el proceso de compilación debe ejecutarse con contenedores.

Disponibilidad

La disponibilidad en el contexto de DevPattern significa poder recuperar cualquier información de estado asociada al flujo de trabajo, como resultados de pruebas, dependencias de código u otros artefactos. Para evaluar los requisitos de disponibilidad, tenga en cuenta dos métricas comunes:

  • Objetivo de tiempo de recuperación (RTO) especifica cuánto tiempo puede pasar sin un sistema.

  • Objetivo de punto de recuperación (RPO) indica la cantidad de datos que puede permitirse perder si una interrupción del servicio afecta al sistema.

En la práctica, RTO y RPO implican redundancia y copia de seguridad. En la nube global de Azure, la disponibilidad no es una cuestión de recuperación de hardware (que forma parte de Azure), sino que garantiza el mantenimiento del estado de los sistemas DevOps. En Azure Stack Hub, la recuperación de hardware puede ser una consideración.

Otra consideración importante al diseñar el sistema usado para la automatización de la implementación es el control de acceso y la administración adecuada de los derechos necesarios para implementar servicios en entornos en la nube. ¿Qué derechos se necesitan para crear, eliminar o modificar implementaciones? Por ejemplo, normalmente se requiere un conjunto de derechos para crear un grupo de recursos en Azure y otro para implementar servicios en el grupo de recursos.

Manejabilidad

El diseño de cualquier sistema basado en el patrón de DevOps debe tener en cuenta la automatización, el registro y las alertas de cada servicio en toda la cartera. Use servicios compartidos, un equipo de aplicaciones, o ambos, y realice un seguimiento de las directivas de seguridad y la gobernanza también.

Implemente entornos de producción y entornos de desarrollo y pruebas en grupos de recursos independientes en Azure o Azure Stack Hub. Después, puede supervisar los recursos de cada entorno y acumular los costos de facturación por grupo de recursos. También puede eliminar recursos como un conjunto, lo que resulta útil para las implementaciones de prueba.

Cuándo usar este patrón

Use este patrón si:

  • Puede desarrollar código en un entorno que satisfaga las necesidades de los desarrolladores e implementarlo en un entorno específico de la solución, donde puede resultar difícil desarrollar código nuevo.
  • Puede usar el código y las herramientas que prefieran sus desarrolladores, siempre y cuando sean capaces de seguir el proceso de integración continua y entrega continua en el modelo de DevOps.

Este patrón no se recomienda:

  • Si no puede automatizar la infraestructura, los recursos de aprovisionamiento, la configuración, la identidad y las tareas de seguridad.
  • Si los equipos no tienen acceso a los recursos de nube híbrida para implementar un enfoque de integración continua o desarrollo continuo (CI/CD).

Pasos siguientes

Para obtener más información sobre los temas introducidos en este artículo:

  • Consulte la documentación de Azure DevOps para más información sobre Azure DevOps y las herramientas relacionadas, incluidos Azure Repos y Azure Pipelines.
  • Consulte la familia de productos y soluciones de Azure Stack para obtener más información sobre toda la cartera de productos y soluciones.

Cuando esté listo para probar el ejemplo de la solución, continúe con la guía de implementación de la solución de CI/CD híbrida de DevOps . La guía de implementación proporciona instrucciones paso a paso para implementar y probar sus componentes. Aprenderá a implementar una aplicación en Azure y Azure Stack Hub mediante una canalización híbrida de integración continua y entrega continua (CI/CD).