Compartir a través de


Recomendaciones para estandarizar herramientas y procesos

Se aplica a esta recomendación de lista de comprobación de excelencia operativa de Azure Well-Architected Framework:

OE:04 Optimice los procesos de desarrollo y control de calidad de software siguiendo prácticas de desarrollo y pruebas contrastadas en el sector. Para una designación inequívoca de roles, estandarice las prácticas en todos los componentes, como herramientas, control de código fuente, patrones de diseño de aplicaciones, documentación y guías de estilo.

En esta guía se describen las recomendaciones para definir estándares para herramientas y procesos de desarrollo de software. Definir prácticas consistentes conduce a un equipo de carga de trabajo eficiente y a un trabajo de alta calidad. Los equipos de alto rendimiento utilizan herramientas y procesos probados en el sector para minimizar el esfuerzo desperdiciado y los posibles errores de código.

Estrategias clave de diseño

El primer paso para optimizar las prácticas de desarrollo es estandarizar herramientas y procesos. Cuando sea posible, use soluciones probadas en el sector en lugar de desarrollar soluciones internas. Para optimizar aún más sus prácticas, adopte herramientas de código bajo y sin código. Estas herramientas le permiten centrar sus esfuerzos en la aplicación y ayudarle a ahorrar tiempo. Para todas las herramientas y procesos que normalice, implemente el entrenamiento para que los equipos comprendan y los usen de forma eficaz. Para definir estándares que ayuden a optimizar sus prácticas de desarrollo, considere las siguientes recomendaciones.

Usar herramientas conocidas y maduras prefabricadas

Utilice herramientas conocidas y maduras disponibles en el mercado y estandarice su uso. Los equipos de ingeniería altamente eficaces adoptan las mejores herramientas de su clase. Este enfoque minimiza la necesidad de desarrollar soluciones para planear, desarrollar, probar, colaborar e integración continua y entrega continua (CI/CD). Muchas empresas ofrecen a los desarrolladores una opción entre algunas herramientas, pero todas las opciones son herramientas estándar para la organización y se validan internamente. Lo más importante es elegir herramientas que cumplan los requisitos de la carga de trabajo. Las herramientas disponibles comercialmente deben proporcionar las siguientes funciones:

  • Planificación del trabajo y administración del trabajo pendiente

  • Control de versiones y repositorios

  • Canalizaciones de CI/CD

  • Pruebas, como integración, humo, usuario sintético, simulación, caos y otras pruebas de calidad

  • Desarrollo de código

En algunos casos, una herramienta o un conjunto de herramientas pueden proporcionar varias funciones. Asegúrese de comprender las funcionalidades de las herramientas y sus limitaciones para que cumplan sus requisitos en todas las funciones.

Determine si debe invertir en herramientas costosas o versiones premium de herramientas. Considere el tiempo y el esfuerzo que implica desarrollar sus propias soluciones en comparación con las funciones que ofrecen las herramientas premium. Considere los costes únicos frente a los costes periódicos. En la mayoría de los casos, las herramientas disponibles en el mercado proporcionan un mayor valor a su equipo.

Use herramientas de bajo código, sin código e inteligencia artificial cuando sea práctico. Las herramientas de poco código y sin código ahorran tiempo a los desarrolladores experimentados al permitirles conectar fácilmente la funcionalidad en lugar de realizar todo el proceso de desarrollo de código. Estas herramientas también permiten a los miembros del equipo de trabajo que quizás no sean desarrolladores capacitados contribuir al funcionamiento de la carga de trabajo. Las herramientas de IA pueden ayudar con el desarrollo, la revisión y la optimización del código.

Estandarizar la estrategia de bifurcación

Elija un modelo basado en troncos siempre que sea posible. La bifurcación basada en troncos mantiene sincronizado el equipo de desarrollo de cargas de trabajo y fomenta la entrega continua. Defina directivas de rama para proteger ramas importantes, como la rama principal. Para obtener más información, consulte Adoptar una estrategia de bifurcación de Git y Políticas y configuraciones de rama.

Evaluación de métricas para cuantificar la eficacia del desarrollo

Los equipos de desarrollo de software y control de calidad solo pueden mejorar si pueden cuantificar su eficacia. Para cuantificar la eficacia, deben identificar las métricas que miden la velocidad del desarrollador y definen kpi. Algunos ejemplos de estas métricas son:

  • Frecuencia de implementación: el número de implementaciones que cada desarrollador implementa cada día.

  • Lead time: El tiempo que tarda una tarea o historia de usuario en pasar desde el backlog hasta una implementación en producción.

  • Tiempo medio para la resolución: el tiempo medio que se dedica a corregir errores o defectos en el código.

  • Tasa de errores de cambio: el porcentaje de cambios que producen un error.

Para ayudar a las partes interesadas y al equipo de carga de trabajo a realizar un seguimiento fácil de la velocidad, visualice los KPI mediante paneles u otras herramientas de generación de informes.

Estandarizar la forma en que el equipo de carga de trabajo escribe, revisa y documenta el código

Estandarice la forma en que el equipo de carga de trabajo escribe, revisa y documenta el código mediante una guía de estilo. Un estilo estándar facilita la colaboración y ayuda a incorporar nuevos desarrolladores. Para trabajar de forma eficaz, los nuevos desarrolladores necesitan saber cómo opera el equipo de carga de trabajo. Una guía de estilo con estándares claramente definidos puede facilitar su proceso de formación. En la guía de estilo, defina estándares para lenguajes de desarrollo, bibliotecas, marcos y otras convenciones.

Cuando sea práctico, use herramientas para aplicar estándares de formato de código. Por ejemplo, Visual Studio ofrece varias herramientas que examinan el código para conocer el estilo, la calidad, el mantenimiento, el diseño y otros problemas. Para la infraestructura como código (IaC), puede usar Checkov o Terrascan para Terraform.

Para garantizar la coherencia y evitar posibles confusiones, la guía de estilo debe incluir convenciones de nomenclatura estándar para artefactos, entornos, ramas, compilaciones y ejecuciones.

También debe establecer directrices y estándares para el grado permitido de varianza en sus entornos. Si hay nuevos lenguajes, marcos u otras tecnologías que los miembros del equipo de carga de trabajo desean agregar a la lista estándar, implemente un proceso para usar esas herramientas en un entorno aislado o inferior. Pruebe su viabilidad y reemplace las tecnologías existentes cuando proceda.

Utilice registros de decisión de arquitectura (ADRs) para mantener un registro histórico de las decisiones de diseño del equipo de trabajo. Las ADR ayudan a los equipos a mantener una comprensión nueva de la carga de trabajo. También ayudan a los nuevos miembros del equipo a obtener información sobre las decisiones de diseño que se toman durante el ciclo de vida de la carga de trabajo. Asegúrese de que las ADR estén gestionadas mediante control de versiones.

En su ADR, incluya:

  • Herramientas y tecnologías específicas, por ejemplo, con SQL o NoSQL, que el equipo elija.

  • Las razones para las decisiones de su equipo.

  • Otras opciones que se consideraron, lo que ayuda a contextualizar la decisión final.

  • Requisitos funcionales y no funcionales que se tienen en cuenta en las decisiones.

  • El contexto del proceso de toma de decisiones, como el problema que se solucionó.

Implementación de estándares para abordar la deuda técnica

Adopte una mentalidad en la que la deuda técnica es intencionada y necesaria para las entregas del equipo de trabajo. Esta mentalidad motiva a su equipo a considerar y abordar la deuda técnica periódicamente para evitar la acumulación. Aborde la deuda técnica como una tarea periódica en el trabajo pendiente.

Por ejemplo, supongamos que su equipo se estandariza en el uso de una biblioteca. Con el tiempo, debe cambiar a otra biblioteca para incorporar nueva funcionalidad en el flujo de trabajo. Esa transición podría dar lugar a deudas técnicas. Con frecuencia, transiciones como esta pueden dejar al equipo de trabajo soportando dos tecnologías porque no logran una transición de manera fluida. El equipo de carga de trabajo debe priorizar la finalización de la transición porque cuando la carga de trabajo logra la nueva funcionalidad, las partes interesadas están satisfechos y tienen menos probabilidades de considerar la deuda técnica.

Estandarizar cómo aplicar el control de versiones a los artefactos

Normalice cómo aplica el control de versiones a los artefactos y cómo el control de versiones se expone interna y externamente. Por ejemplo, los sistemas orientados al cliente deben exponer su versión en ejecución en la interfaz de usuario. Esta técnica es útil cuando el equipo de cargas de trabajo soluciona problemas porque el cliente puede comunicar fácilmente qué versión usa. Las interfaces REST pueden exponer versiones para determinados componentes o bases de datos. Puede usar una tabla específica en los metadatos de un esquema para exponer la versión del esquema.

Use patrones de diseño de aplicaciones probadas en el sector para asegurarse de que la aplicación sea confiable, eficaz y segura. Use estos patrones para ahorrar tiempo y esfuerzo en comparación con el desarrollo de sus propias soluciones para la aplicación. Elija los patrones que beneficien su carga de trabajo. Revise periódicamente los patrones de diseño para asegurarse de que usa los patrones adecuados a medida que evoluciona la carga de trabajo.

Implementar un enfoque de desplazamiento a la izquierda para las pruebas

Implemente un enfoque de desplazamiento a la izquierda para las pruebas realizando pruebas unitarias de modo anticipado y frecuente durante todo el proceso de desarrollo. Las pruebas frecuentes en cada entorno de desarrollo ayudan a los desarrolladores a ganar confianza en sus aplicaciones. Para ayudar a crear su estrategia de prueba con un enfoque de desplazamiento a la izquierda, considere los siguientes principios:

  • Escriba pruebas en el nivel más bajo posible. Favorezca las pruebas con la menor cantidad de dependencias externas y ejecute pruebas como parte de la compilación.

  • Escriba pruebas una vez y ejecute pruebas en todas partes, incluida la producción. Escriba pruebas que pueda ejecutar en cada entorno de desarrollo sin tener en cuenta factores específicos de un entorno, como configuraciones o secretos cifrados.

  • Diseñe la carga de trabajo para realizar pruebas. Cuando desarrolle su aplicación, convierta la capacidad de prueba en un requisito.

  • Trate el código de prueba como código de aplicación. Aplique los mismos estándares de calidad y desarrollo al código de aplicación y al código de prueba. Almacene el código de prueba junto con el código de la aplicación. Desarrolle y mantenga el código de prueba con el código de la aplicación. Para garantizar la calidad de las pruebas, descarte las pruebas que no sean confiables.

  • Considere la propiedad de las pruebas, basada en la propiedad de la carga de trabajo. El equipo de cargas de trabajo posee sus pruebas y no debe depender de otros equipos para probar su código.

  • Automatice las pruebas tanto como sea posible. El código automatizado alivia la carga de su equipo de carga de trabajo y exige una calidad constante.

Implemente una variedad de tipos de pruebas, como unidades, humo, integración y pruebas de aceptación. Para obtener una revisión detallada de estos tipos de pruebas, consulte la sección pruebas de la guía de recomendaciones de la cadena de suministro de cargas de trabajo .

Requerir prácticas de DevSecOps como parte de los procedimientos operativos estándar. El equipo de cargas de trabajo debe comprender las prácticas de seguridad relacionadas con el desarrollo de software y la garantía de calidad. Deben seguir estas prácticas sin excepción. Para obtener más información, consulte Guía del ciclo de vida de desarrollo de seguridad.

Implementación de estándares para asignar nombres y etiquetado a los recursos

La implementación de convenciones de etiquetado y nomenclatura es un procedimiento recomendado para administrar y organizar recursos de Azure. Las convenciones de etiquetado y nomenclatura ayudan a identificar, clasificar y agrupar recursos en función de atributos comunes, como entorno, aplicación, propietario o centro de costos. También permiten la seguridad, la automatización, los informes y la gobernanza de los recursos entre suscripciones y grupos de recursos.

Algunas de las ventajas de usar el etiquetado estandarizado y las convenciones de nomenclatura son:

  • Proporcionan coherencia y claridad para la identificación y administración de recursos, lo que facilita la detección y búsqueda en Azure Portal, PowerShell, la CLI y las API.
  • Habilitan el filtrado y la agrupación de recursos con fines de facturación, supervisión, seguridad y cumplimiento.
  • Admiten la administración del ciclo de vida de los recursos, como el aprovisionamiento, la retirada, la copia de seguridad y la recuperación.
  • Son esenciales para fines de seguridad. Si se produce un incidente de seguridad, es fundamental identificar rápidamente los sistemas afectados, las funciones que admiten esos sistemas y el posible impacto empresarial.

Para obtener más información sobre el uso de convenciones de nomenclatura para los recursos en la nube, consulte Definición de la convención de nomenclatura. Para obtener más información sobre cómo aplicar etiquetas de metadatos a los recursos en la nube, consulte Definición de la estrategia de etiquetado.

Facilitación de Azure

  • Azure DevOps es una colección de servicios que puede usar para crear una práctica de desarrollo colaborativa, eficaz y coherente. Azure DevOps agrupa las siguientes soluciones:

    • Azure Pipelines proporciona servicios de integración y entrega para apoyar el CI/CD de tus aplicaciones.

    • Azure Boards es una herramienta de administración de trabajo basada en web que admite prácticas ágiles como Scrum y Kanban.

    • Azure Repos es una herramienta de control de versiones que admite el sistema de control de versiones distribuido de Git y el sistema de control de versiones de Team Foundation .

    • Azure Test Plans es una solución de administración de pruebas basada en explorador que proporciona funcionalidades necesarias para pruebas manuales planeadas, pruebas de aceptación de usuarios, pruebas exploratorias y recopilación de comentarios de las partes interesadas.

    • Azure Artifacts se usa para permitir que los desarrolladores compartan de forma eficaz su código y administren sus paquetes.

  • Acciones de GitHub para Azure es una herramienta que puede usar para automatizar procesos de CI/CD. Se integra directamente con Azure para simplificar las implementaciones. Puede crear flujos de trabajo que compilen y prueben cada solicitud de incorporación de cambios en el repositorio o implementar solicitudes de incorporación de cambios combinadas en producción.

  • GitHub Projects es una herramienta de gestión de tareas que puede usar para crear tableros Kanban, informes, tableros de control y otras funciones.

  • Entre las herramientas de código bajo y sin código se incluyen:

  • Las plantillas de Azure Resource Manager y Bicep son herramientas nativas de Azure que puede usar para implementar IaC. Terraform es otra herramienta de IaC compatible con Azure que puede usar para implementar y administrar la infraestructura.

  • Visual Studio es una herramienta de desarrollo sólida que se integra con Azure y admite muchos lenguajes.

  • GitHub Copilot es un servicio de inteligencia artificial que actúa como compañero de programación y proporciona sugerencias de autocompletado mientras programas. Copilot está disponible como una extensión en Visual Studio y otras herramientas de desarrollo.

  • Azure Load Testing es un servicio de pruebas de carga totalmente administrado que puede usar para generar una carga a gran escala mediante la simulación del tráfico para las aplicaciones, independientemente de dónde se hospeden.

Alineación de la organización

Cloud Adoption Framework para Azure proporciona instrucciones generales y recomendaciones para etiquetar y asignar nombres a recursos de Azure, así como reglas y ejemplos específicos para distintos tipos de recursos.

Lista de comprobación de la excelencia operativa

Consulte el conjunto completo de recomendaciones.