Partager via


Recommandations pour la normalisation des outils et des processus

S’applique à cette recommandation de liste de contrôle Azure Well-Architected Framework Operational Excellence :

OE :04 Optimisez les processus de développement de logiciels et d'assurance qualité en suivant les pratiques éprouvées du secteur d’activité pour les tests et le développement. Pour une désignation de rôle non ambiguë, normaliser 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 connexe : 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 de logiciels. La définition de pratiques cohérentes conduit à une équipe de charge de travail efficace et à un travail de haute qualité. Les équipes performantes utilisent des outils et des processus éprouvés par le secteur pour réduire les efforts perdus et les erreurs de code potentielles.

Stratégies de conception

La première étape de l’optimisation des pratiques de développement consiste à standardiser les outils et processus. Si 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 aider à gagner du temps. Pour tous les outils et processus que vous normalisez, implémentez la formation afin que vos équipes comprennent et les utilisent efficacement. Pour définir des normes qui permettent d’optimiser vos pratiques de développement, tenez compte des recommandations suivantes.

Utiliser des outils bien connus et matures hors-plateau

Utilisez des outils bien connus et matures hors plateau et normalisez leur utilisation. Les équipes d’ingénierie hautement efficaces adoptent les outils les plus performants. 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 un choix entre quelques outils, mais toutes les options sont des outils standard pour l’organisation et sont validées en interne. Plus important encore, choisissez les 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 du backlog

  • 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 de 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 entre les fonctions.

Déterminez si vous devez investir dans des outils coûteux ou des versions Premium d’outils. Considérez le temps et l’effort de développement de vos propres solutions par rapport aux fonctionnalités fournies par les outils Premium. Considérez les 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 de faible code, sans code et IA quand 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 se connecter facilement aux 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 formés aux développeurs de contribuer au fonctionnement de la charge de travail. Les outils IA peuvent vous aider à développer, réviser et optimiser du code.

Normaliser votre stratégie de branchement

Choisissez un modèle basé sur une jonction lorsque cela est possible. Le branchement basé sur le tronc permet à l'équipe de développement de la charge de travail de rester synchronisée et encourage la livraison continue. Définissez des stratégies de branche pour protéger les branches importantes, comme la branche principale. Pour plus d’informations, consultez Adopter une stratégie de branchement Git et des stratégies et des paramètres de branche.

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

Les équipes de développement de logiciels 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 les 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 d’exécution : 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.

Normaliser la façon dont votre équipe de charge de travail écrit, passe en revue et documente du code

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

Lorsqu’il 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 pour le style, la qualité, la maintenance, la 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é autorisé de variance dans vos environnements. S’il existe de nouveaux langages, infrastructures 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 environnement bac à sable ou 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 à maintenir une nouvelle compréhension de la charge de travail. Ils aident également les nouveaux membres de l’équipe à découvrir les décisions de conception prises pendant le cycle de vie de la charge de travail. Vérifiez que les RDR sont contrôlés par la version.

Dans votre ADR, incluez :

  • Outils et technologies spécifiques, par exemple en utilisant SQL ou NoSQL, que votre équipe choisit.

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

  • D’autres options qui ont été prises en compte, 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é résolu.

Mettre en œuvre des normes pour régler la dette technique

Adoptez un état d'esprit selon lequel la dette technique est intentionnelle et nécessaire pour les produits livrables de votre équipe de travail. Cet état d’esprit motive votre équipe à prendre en compte et à résoudre régulièrement la dette technique pour éviter l’accumulation. Résolvez la dette technique en tant que 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 peut entraîner une dette technique. Souvent, les transitions telles que celles-ci peuvent laisser l’équipe de charge de travail prendre en charge deux technologies, car elles ne peuvent pas effectuer une transition complète. L’équipe de charge de travail doit hiérarchiser 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

Normalisez 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 côté 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 bénéficient à 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 décalée vers la gauche pour tester

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

  • Écrire des tests au niveau le plus bas possible. Privilégiez les tests avec les dépendances externes les plus rares 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 la production. Écrivez des tests que vous pouvez exécuter dans chaque environnement de développement sans tenir compte des facteurs spécifiques à un environnement, tels que les secrets chiffrés ou les configurations.

  • Concevez votre charge de travail pour les tests. Lorsque vous développez votre application, faites de la testabilité une exigence.

  • Traitez le code de test comme 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 possède ses tests et ne doit pas compter sur d’autres équipes pour tester leur code.

  • Automatisez les tests autant que possible. Le code automatisé élimine le fardeau de votre équipe de charge de travail 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 Shift testing left with unit tests.

Exiger 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 de logiciels et à l’assurance qualité. Ils doivent suivre ces pratiques sans exception. Pour plus d’informations, consultez le guide de cycle de vie du développement de sécurité.

Implémenter des normes pour nommer et marquer des ressources

L’implémentation de conventions d’étiquetage et d’affectation de noms est une bonne pratique pour la gestion et l’organisation des ressources Azure. Les conventions d’étiquetage et d’affectation de noms permettent d’identifier, de classer et de regrouper les ressources en fonction des 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 des conventions de marquage et d’affectation de noms standardisées :

  • Ils fournissent une cohérence et une clarté pour l’identification et la gestion des ressources, ce qui facilite la découverte et la recherche dans les Portail Azure, PowerShell, l’interface CLI et les API.
  • Ils permettent de filtrer et de regrouper des 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, telles que l’approvisionnement, la désaffectation, la sauvegarde et la récupération.
  • Ils sont essentiels à 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 que ces systèmes prennent en charge et l’impact potentiel sur l’entreprise.

Pour plus d’informations sur l’utilisation de conventions d’affectation de noms pour vos ressources cloud, consultez Définir votre convention d’affectation de noms. 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 de travail basé sur le web qui prend en charge les pratiques Agiles 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 sur votre référentiel, ou déployer des demandes de tirage fusionnées en production.

  • GitHub Projects est un outil de gestion de 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 sont les suivants :

  • 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 pair et fournit des suggestions de style de saisie semi-automatique à mesure 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 entièrement 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ù ils sont hébergés.

Alignement organisationnel

Cloud Adoption Framework pour Azure fournit des instructions générales et des recommandations pour l’étiquetage et le nommage des ressources Azure, ainsi que des règles et des exemples spécifiques pour différents types de ressources.

Liste de contrôle d’excellence opérationnelle

Reportez-vous à l’ensemble complet de recommandations.