Adopción de prácticas de implementación seguras
Implemente límites de protección en el proceso de implementación para minimizar el efecto de errores o condiciones inesperadas. |
---|
Durante el ciclo de desarrollo, los artefactos de carga de trabajo pasan por muchos cambios a medida que se implementan y prueban y a medida que se corrigen los errores.
El proceso de implementación debe seguir un procedimiento operativo estándar. Cualquier cambio debe implementarse con el mismo nivel de rigor. Este principio se aplica del mismo modo al código, la configuración y todos los artefactos relacionados. La clave es aplicar prácticas seguras lo antes posible para que tenga previsibilidad en producción. Incluso si los errores llegan a los clientes, debería poder implementar los cambios de recuperación lo antes posible.
Escenario de ejemplo
Contoso Air ha desarrollado una aplicación web que permite al cliente reservar vuelos directamente a través de la aplicación. La aplicación se ha estado ejecutando en producción durante más de un año.
La aplicación se implementa completamente en Azure y se basa en Azure App Service, Azure Cosmos DB, Azure Functions, Azure Logic Apps y Azure Service Bus.
Codificación de estándares de implementación automatizada
Normalice el proceso para implementar cualquier cambio mediante procesos de implementación automatizados, como canalizaciones. Todos los entornos deben usar canalizaciones. Clasifique los recursos y las versiones por entorno para que sean fácilmente rastreables e identificables.
Los métodos de implementación coherentes reducen los problemas causados por errores de proceso y varianza y permiten centrar su esfuerzo en los problemas de la carga de trabajo.
La estandarización garantiza que la implementación se complete de forma segura, confiable y con repetibilidad.
La clasificación facilita la visualización de registros de implementaciones y problemas anteriores que se han producido. Es posible que pueda usar esa información para acelerar las operaciones de reversión y puesta al día.
Desafío de Contoso
- El equipo de cargas de trabajo de Contoso Air usa canalizaciones automatizadas de compilación e implementación, pero las implementaciones normalmente requieren intervención manual en toda la operación para cambiar y validar varias opciones de configuración.
- Debido a la intervención manual, hay errores frecuentes en la implementación, lo que hace que cada versión sea un evento altamente estresante y disruptivo para todo el equipo. La intervención manual también dificulta la reversión cuando se produce un error en una implementación.
Aplicación del enfoque y los resultados
- El equipo asigna tiempo para automatizar los cambios de configuración como parte de la implementación y para integrar la funcionalidad agregada en las canalizaciones de implementación existentes.
- Las opciones de configuración asociadas a cada entorno se externalizan a los archivos JSON respectivos que se guardan en el control de código fuente para una rastreabilidad adicional. Los ajustes que se consideran secretos se guardan en almacenes del almacén de secretos, que también se asignan a cada entorno.
- Todos los cambios se registran ahora durante la implementación, logrando una rastreabilidad completa para ayudar con la solución de problemas de los esfuerzos y las auditorías. El equipo también agrega pruebas automatizadas para validar los cambios de configuración en la canalización.
- A continuación, el equipo trabajará en la automatización completa de reversiones para optimizar aún más los procesos.
- Como resultado de la nueva automatización, las implementaciones han sido más confiables y predecibles, y la moral del equipo también ha aumentado.
Implementación a menudo
Implemente pequeñas actualizaciones incrementales con una cadencia regular.
El uso de este enfoque ayudará a mantener los casos de usuario y los elementos de trabajo administrables desde el punto de vista de la administración de proyectos y reducir el riesgo de problemas a gran escala cuando se produzca un error en las implementaciones.
Desafío de Contoso
- Los procesos de implementación del equipo históricamente han sido realizar versiones principales cada tres a cuatro meses. Esta práctica dificulta la validación de la versión. El equipo también ha tenido dificultades para solucionar problemas con tantas partes móviles.
- Las versiones problemáticas que requieren correcciones activas de versión media o deben revertirse y abandonarse se han producido varias veces.
- Las versiones son muy estresantes y se han tratado como situaciones de "todas las manos en la baraja", lo que ha afectado negativamente a la moral del equipo.
Aplicación del enfoque y los resultados
- Después de la última versión problemática, las partes interesadas solicitaron al equipo que se acerque mejor a las implementaciones. El equipo decidió cambiar sus prácticas para favorecer cambios frecuentes y pequeños. Limitarán el ámbito de cada versión a uno o (como máximo) algunos cambios relacionados que se prueban exhaustivamente a medida que la compilación se promueve en los entornos inferiores.
- Como resultado, las versiones se han vuelto mucho más eficientes y la calidad ha aumentado. Las versiones son más fáciles de validar y los problemas son más sencillos de solucionar.
- Tener una cadencia regular de versiones predecibles ha ayudado a restaurar la confianza y la moral del equipo. Los usuarios también se benefician. Con una mayor calidad de versión, ven menos interrupciones y obtienen acceso a nuevas características mucho antes.
Uso de un enfoque de exposición progresiva
Implemente las actualizaciones gradualmente, con la debida diligencia. Use modelos de implementación que le proporcionen el control para aumentar progresivamente el número de instancias y clientes hasta que todos adopten la actualización de forma segura.
Pruebe cada actualización de forma controlada para que los problemas se solucionen en una fase temprana de la producción. Evite implementar una actualización errónea que afecte a toda la base de clientes.
Compruebe si la actualización es compatible con versiones anteriores y posteriores.
Desafío de Contoso
- El equipo está viendo grandes ventajas de cambiar su enfoque para realizar versiones más pequeñas. Están dedicando menos tiempo a las versiones y se sienten energizados para continuar con el camino de realizar mejoras adicionales de excelencia operativa.
- A medida que experimentan con nuevas características, algunos de los cambios no han sido bien recibidos por los usuarios o han provocado un aumento de las llamadas de asistencia debido a la pronunciada curva de aprendizaje que conllevan.
- Se preguntan cómo pueden seguir innovando sus aplicaciones para maximizar la productividad de sus usuarios y, al mismo tiempo, minimizar el impacto de lanzar funciones que quizá no sean tan populares o fáciles de usar.
Aplicación del enfoque y los resultados
- Decidieron implementar un modelo de versión de características que expone nuevas características a los usuarios de forma incremental mediante marcas de características.
- Durante las fases de planificación de nuevas características, se define un criterio para seleccionar qué usuarios se expongan primero a la característica. En primer lugar, se selecciona un pequeño grupo de usuarios para recibir la nueva característica. En función de los comentarios del usuario, la característica se implementa en grupos sucesivamente más grandes hasta que todos los usuarios ejecuten la nueva versión. A medida que más usuarios se familiarizan con las nuevas características, el equipo de asistencia documenta los resultados de los casos de asistencia para compartirlos internamente y, potencialmente, rellenar las P+F externas.