Recommandations pour la normalisation des outils et des processus

S’applique à cette recommandation de liste de contrôle d’excellence opérationnelle Azure Well-Architected Framework :

OE :04 Optimisez les processus de développement logiciel et d’assurance qualité en suivant des pratiques éprouvées dans le secteur en matière de développement et de test. Pour la désignation de rôle sans ambiguïté, standardisez les pratiques entre les composants tels que les outils, le contrôle de code source, les modèles de conception d’application, la documentation et les guides de style.

Guide associé : Améliorer la vitesse de génération | Utiliser l’intégration continue

Ce guide décrit les recommandations relatives à la définition de normes pour les outils et processus de développement logiciel. La définition de pratiques cohérentes conduit à une équipe de charge de travail efficace et à un travail de haute qualité. Les équipes hautement performantes utilisent des outils et des processus éprouvés pour réduire les efforts gaspiller et les erreurs de code potentielles.

Stratégies de conception

La première étape de l’optimisation des pratiques de développement consiste à normaliser les outils et les processus. Lorsque cela est possible, utilisez des solutions éprouvées par le secteur plutôt que de développer des solutions internes. Pour optimiser davantage vos pratiques, adoptez des outils à faible code et sans code. Ces outils vous permettent de concentrer vos efforts sur votre application et de vous faire gagner du temps. Pour tous les outils et processus que vous normalisez, implémentez la formation afin que vos équipes les comprennent et les utilisent efficacement. Pour définir des normes qui vous permettent d’optimiser vos pratiques de développement, tenez compte des recommandations suivantes.

Utiliser des outils connus et matures prêts à l’emploi

Utilisez des outils connus et matures prêts à l’emploi et standardisez leur utilisation. Les équipes d’ingénierie hautement efficaces adoptent les meilleurs outils de leur catégorie. Cette approche réduit la nécessité de développer des solutions pour la planification, le développement, le test, la collaboration et l’intégration continue et la livraison continue (CI/CD). De nombreuses entreprises offrent aux développeurs le choix entre quelques outils, mais toutes les options sont des outils standard pour le organization et sont validées en interne. Plus important encore, choisissez des outils qui répondent aux exigences de votre charge de travail. Les outils prêts à l’emploi doivent fournir les fonctions suivantes :

  • Planification du travail et gestion des backlogs

  • Contrôle de version et référentiels

  • Pipelines CI/CD

  • Tests, tels que l’intégration, la fumée, l’utilisateur synthétique, la simulation, le chaos et d’autres tests de qualité

  • Développement du code

Dans certains cas, un outil ou une suite d’outils peut fournir plusieurs fonctions. Assurez-vous que vous comprenez les fonctionnalités de vos outils et leurs limitations afin qu’ils répondent à vos besoins dans toutes les fonctions.

Déterminez si vous devez investir dans des outils coûteux ou des versions Premium d’outils. Considérez le temps et les efforts de développement de vos propres solutions par rapport aux fonctionnalités fournies par les outils Premium. Tenez compte des coûts ponctuels par rapport aux coûts récurrents. Dans la plupart des cas, les outils prêts à l’emploi offrent une valeur plus élevée à votre équipe.

Utilisez des outils à faible code, sans code et IA lorsque cela est pratique. Les outils à faible code et sans code permettent aux développeurs expérimentés de gagner du temps en leur permettant de connecter facilement des fonctionnalités plutôt que d’effectuer l’ensemble du processus de développement de code. Ces outils permettent également aux membres de l’équipe de charge de travail qui ne sont peut-être pas des développeurs formés de contribuer au fonctionnement de la charge de travail. Les outils d’IA peuvent aider au développement de code, aux révisions et à l’optimisation.

Normaliser votre stratégie de branchement

Choisissez un modèle basé sur une jonction lorsque cela est possible. La branche basée sur des jonctions maintient l’équipe de développement de charge de travail synchronisée et encourage la livraison continue. Définissez des stratégies de branche pour protéger les branches importantes, comme la branche main. Pour plus d’informations, consultez Adopter une stratégie de création de branches Git et Stratégies et paramètres de branche.

Évaluer les métriques pour quantifier l’efficacité du développement

Les équipes de développement logiciel et d’assurance qualité ne peuvent s’améliorer que si elles peuvent quantifier leur efficacité. Pour quantifier l’efficacité, ils doivent identifier les métriques qui mesurent la vitesse du développeur et définissent des indicateurs de performance clés. Voici quelques exemples de ces métriques :

  • Fréquence de déploiement : nombre de déploiements que chaque développeur déploie chaque jour.

  • Délai : temps nécessaire pour qu’une tâche ou un récit utilisateur passe du backlog à un déploiement de production.

  • Temps moyen de résolution : temps moyen consacré à la résolution des bogues ou des défauts dans le code.

  • Taux d’échec des modifications : pourcentage de modifications qui entraînent un échec.

Pour aider les parties prenantes et l’équipe de charge de travail à suivre facilement la vitesse, visualisez les indicateurs de performance clés à l’aide de tableaux de bord ou d’autres outils de création de rapports.

Standardiser la façon dont votre équipe de charge de travail écrit, examine et documente le code

Standardisez la façon dont votre équipe de charge de travail écrit, examine et documente le code à l’aide d’un guide de style. Un style standard facilite la collaboration et aide à intégrer de nouveaux développeurs. Pour travailler efficacement, les nouveaux développeurs doivent savoir comment l’équipe de charge de travail fonctionne. Un guide de style avec des normes clairement définies peut faciliter leur processus d’entraînement. Dans le guide de style, définissez des normes pour les langages de développement, les bibliothèques, les frameworks et d’autres conventions.

Lorsque cela est pratique, utilisez des outils pour appliquer des normes de mise en forme du code. Par exemple, Visual Studio propose plusieurs outils qui analysent le code à la recherche de style, de qualité, de facilité de maintenance, de conception et d’autres problèmes. Pour l’infrastructure en tant que code (IaC), vous pouvez utiliser Checkov ou Terrascan pour Terraform.

Pour garantir la cohérence et éviter toute confusion potentielle, le guide de style doit inclure des conventions de nommage standard pour les artefacts, les environnements, les branches, les builds et les exécutions.

Vous devez également définir des directives et des normes pour le degré de variation autorisé dans vos environnements. S’il existe de nouveaux langages, frameworks ou autres technologies que les membres de l’équipe de charge de travail souhaitent ajouter à la liste standard, implémentez un processus d’utilisation de ces outils dans un bac à sable ou un environnement inférieur. Testez leur viabilité et remplacez les technologies existantes le cas échéant.

Utilisez les enregistrements de décision d’architecture (ADR) pour conserver un enregistrement historique des décisions de conception de votre équipe de charge de travail. Les ADR aident vos équipes à conserver une nouvelle compréhension de la charge de travail. Ils aident également les nouveaux membres de l’équipe à en savoir plus sur les décisions de conception prises pendant le cycle de vie de la charge de travail. Assurez-vous que les ADR sont contrôlés par la version.

Dans votre ADR, incluez :

  • Outils et technologies spécifiques, par exemple à l’aide de SQL ou NoSQL, que votre équipe choisit.

  • Les raisons des décisions de votre équipe.

  • Autres options qui ont été envisagées, ce qui permet de contextualiser la décision finale.

  • Exigences fonctionnelles et non fonctionnelles qui sont prises en compte dans les décisions.

  • Contexte du processus décisionnel, comme le problème qui a été traité.

Mettre en œuvre des normes pour traiter la dette technique

Adoptez une mentalité selon laquelle la dette technique est intentionnelle et nécessaire pour les livrables de votre équipe de charge de travail. Cet état d’esprit motive votre équipe à prendre en compte et à résoudre la dette technique régulièrement afin d’éviter l’accumulation. Résoudre la dette technique comme une tâche périodique dans le backlog.

Par exemple, supposons que votre équipe soit normalisée sur une bibliothèque. Au fil du temps, vous devez basculer vers une autre bibliothèque pour de nouvelles fonctionnalités dans la charge de travail. Cette transition pourrait entraîner une dette technique. Souvent, des transitions comme celle-ci peuvent laisser l’équipe de charge de travail prendre en charge deux technologies, car elles ne peuvent pas effectuer une transition complète en douceur. L’équipe de charge de travail doit hiérarchiser la fin de la transition, car lorsque la charge de travail atteint la nouvelle fonctionnalité, les parties prenantes sont satisfaites et sont moins susceptibles de prendre en compte la dette technique.

Normaliser la façon dont vous appliquez le contrôle de version à vos artefacts

Standardisez la façon dont vous appliquez le contrôle de version à vos artefacts et comment le contrôle de version est exposé en interne et en externe. Par exemple, les systèmes orientés client doivent exposer leur version en cours d’exécution dans l’interface utilisateur. Cette technique est utile lorsque l’équipe de charge de travail résout les problèmes, car le client peut facilement communiquer la version qu’il utilise. Les interfaces REST peuvent exposer des versions pour certains composants ou bases de données. Vous pouvez utiliser une table spécifique dans les métadonnées d’un schéma pour exposer la version du schéma.

Utilisez des modèles de conception d’application éprouvés pour vous assurer que votre application est fiable, performante et sécurisée. Utilisez ces modèles pour gagner du temps et des efforts par rapport au développement de vos propres solutions pour votre application. Choisissez les modèles qui profitent à votre charge de travail. Passez régulièrement en revue les modèles de conception pour vous assurer que vous utilisez les bons modèles à mesure que votre charge de travail évolue.

Implémenter une approche shift-left pour les tests

Implémentez une approche de décalage à gauche pour les tests en effectuant des tests unitaires tôt et souvent tout au long du processus de développement. Les tests fréquents dans chaque environnement de développement aident les développeurs à gagner en confiance dans leurs applications. Pour vous aider à créer votre stratégie de test avec une approche décalée à gauche, tenez compte des principes suivants :

  • Écrire des tests au niveau le plus bas possible. Privilégiez les tests avec le moins de dépendances externes et exécutez des tests dans le cadre de la build.

  • Écrivez des tests une seule fois et exécutez des tests partout, y compris en production. Écrivez des tests que vous pouvez exécuter dans chaque environnement de développement sans prendre en compte les facteurs spécifiques à un environnement, comme les secrets ou les configurations chiffrés.

  • Concevez votre charge de travail à des fins de test. Lorsque vous développez votre application, faites de la testabilité une exigence.

  • Traitez le code de test comme du code d’application. Appliquez les mêmes normes de qualité et de développement au code d’application et au code de test. Stockez le code de test en même temps que le code d’application. Développez et gérez du code de test avec du code d’application. Pour garantir la qualité des tests, ignorez les tests qui ne sont pas fiables.

  • Envisagez de tester la propriété, qui est basée sur la propriété de la charge de travail. Votre équipe de charge de travail est propriétaire de ses tests et ne doit pas s’appuyer sur d’autres équipes pour tester leur code.

  • Automatisez les tests autant que possible. Le code automatisé soulage la charge de travail de votre équipe et applique une qualité cohérente.

Pour obtenir des instructions détaillées sur l’implémentation d’une stratégie de test DevOps, consultez Test Maj gauche avec des tests unitaires.

Exigez des pratiques DevSecOps dans le cadre de vos procédures d’exploitation standard. Votre équipe de charge de travail doit comprendre les pratiques de sécurité liées au développement logiciel et à l’assurance qualité. Ils doivent suivre ces pratiques sans exception. Pour plus d’informations, consultez Guide de cycle de vie du développement de la sécurité.

Implémenter des normes pour l’attribution de noms et l’étiquetage des ressources

L’implémentation de conventions d’étiquetage et de nommage est une bonne pratique pour la gestion et l’organisation des ressources Azure. Les conventions d’étiquetage et de nommage permettent d’identifier, de classer et de regrouper des ressources en fonction d’attributs courants, tels que l’environnement, l’application, le propriétaire ou le centre de coûts. Ils permettent également la sécurité, l’automatisation, la création de rapports et la gouvernance des ressources entre les abonnements et les groupes de ressources.

Voici quelques-uns des avantages de l’utilisation de conventions d’étiquetage et de nommage standardisés :

  • Elles fournissent cohérence et clarté pour l’identification et la gestion des ressources, facilitant la découverte et la recherche dans les Portail Azure, PowerShell, l’interface CLI et les API.
  • Ils permettent le filtrage et le regroupement de ressources à des fins de facturation, de surveillance, de sécurité et de conformité.
  • Ils prennent en charge la gestion du cycle de vie des ressources, comme l’approvisionnement, la désaffectation, la sauvegarde et la récupération.
  • Elles sont essentielles à des fins de sécurité. Si vous rencontrez un incident de sécurité, il est essentiel d’identifier rapidement les systèmes affectés, les fonctions prises en charge par ces systèmes et l’impact potentiel sur l’entreprise.

Pour plus d’informations sur l’utilisation de conventions de nommage pour vos ressources cloud, consultez Définir votre convention de nommage. Pour plus d’informations sur l’application de balises de métadonnées à vos ressources cloud, consultez Définir votre stratégie d’étiquetage.

Facilitation Azure

  • Azure DevOps est une collection de services que vous pouvez utiliser pour créer une pratique de développement collaborative, efficace et cohérente. Azure DevOps regroupe les solutions suivantes :

    • Azure Pipelines fournit des services de génération et de mise en production pour prendre en charge le CI/CD de vos applications.

    • Azure Boards est un outil de gestion du travail basé sur le web qui prend en charge les pratiques Agile telles que Scrum et Kanban.

    • Azure Repos est un outil de contrôle de version qui prend en charge le système de contrôle de version distribué Git et le système Team Foundation Version Control.

    • Azure Test Plans est une solution de gestion des tests basée sur un navigateur qui fournit des fonctionnalités requises pour les tests manuels planifiés, les tests d’acceptation des utilisateurs, les tests exploratoires et la collecte de commentaires des parties prenantes.

    • Azure Artifacts est utilisé pour permettre aux développeurs de partager efficacement leur code et de gérer leurs packages.

  • GitHub Actions pour Azure est un outil que vous pouvez utiliser pour automatiser les processus CI/CD. Il s’intègre directement à Azure pour simplifier les déploiements. Vous pouvez créer des flux de travail qui créent et testent chaque demande de tirage dans votre dépôt, ou déployer des demandes de tirage fusionnées en production.

  • GitHub Projects est un outil de gestion du travail que vous pouvez utiliser pour créer des tableaux Kanban, des rapports, des tableaux de bord et d’autres fonctions.

  • Les outils à faible code et sans code incluent :

  • Les modèles Azure Resource Manager et Bicep sont des outils natifs Azure que vous pouvez utiliser pour déployer IaC. Terraform est un autre outil IaC pris en charge par Azure que vous pouvez utiliser pour déployer et gérer l’infrastructure.

  • Visual Studio est un outil de développement robuste qui s’intègre à Azure et prend en charge de nombreux langages.

  • GitHub Copilot est un service IA qui agit en tant que programmeur de paire et fournit des suggestions de style de saisie semi-automatique pendant que vous codez. Copilot est disponible en tant qu’extension dans Visual Studio et plusieurs autres outils de développement.

  • Azure Load Testing est un service de test de charge complètement managé que vous pouvez utiliser pour générer une charge à grande échelle en simulant le trafic pour vos applications, quel que soit l’emplacement où elles sont hébergées.

Liste de contrôle de l’excellence opérationnelle

Reportez-vous à l’ensemble complet de recommandations.