Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 des pratiques de développement et de test éprouvées par l’industrie. Pour une désignation univoque des rôles, standardisez les pratiques entre les composants tels que les outils, le contrôle de code source, les modèles de conception d’applications, la documentation et les guides de style. |
|---|
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 chargée de la charge de travail efficace et à un travail de haute qualité. Les équipes hautement performantes utilisent des outils et des processus éprouvés pour limiter les efforts inutiles et les erreurs de code potentielles.
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 vous aident à 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 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 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 de la réplication
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 les efforts nécessaires au 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 disponibles dans le commerce 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 d’IA peuvent aider au développement, aux révisions et à l’optimisation 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 maintient l’équipe de développement 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 mesures :
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 chargée de la charge de travail à suivre facilement la vélocité, visualisez les KPI à l’aide de tableaux de bord ou d’autres outils de génération de rapports.
Standardisez la façon dont votre équipe chargée de la charge de travail écrit, révise et documente le code
Standardisez la façon dont votre équipe chargée de la charge de travail écrit, révise et documente le code via un guide de style. Un style standard facilite la collaboration et l’intégration de nouveaux développeurs. Pour travailler efficacement, les nouveaux développeurs doivent savoir comment fonctionne l’équipe chargée de la 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 livrables de votre équipe. Cet état d’esprit motive votre équipe à envisager et à traiter régulièrement les dettes techniques afin d’éviter leur accumulation. Traitez la dette technique comme une tâche régulièrement récurrente dans la réplication.
Par exemple, supposons que votre équipe ait adopté une bibliothèque comme standard. 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 amener l'équipe responsable de la charge de travail à gérer deux technologies, parce qu'elle ne peut pas complètement effectuer la transition en douceur. 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 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.
Mettre en œuvre une approche de décalage vers la gauche
Mettez en œuvre une approche de décalage vers la gauche 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 à gagner en confiance dans leurs applications. Pour vous aider à créer votre stratégie de test avec une approche de décalage vers la 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 du 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 clés secrètes ou les configurations chiffrées.
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.
Considérez la propriété des tests, qui est basée sur la propriété des charges 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é allège la charge de travail de votre équipe et garantit une qualité constante.
Implémentez divers types de tests, tels que l’unité, la fumée, l’intégration et les tests d’acceptation. Pour obtenir un examen détaillé de ces types de tests, consultez la section test du guide de recommandation de la chaîne d’approvisionnement de la charge de travail .
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 sur le 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 offre l’une des 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 workflows qui construisent et testent chaque pull request vers votre dépôt, ou déployer en production les pull requests fusionnées.
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 d'IA qui agit comme un assistant de programmation et propose des suggestions de saisie automatique au fur et à mesure que vous écrivez votre code. 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.
Liens connexes
- Adopter une stratégie de branchement Git
- Stratégies et paramètres de branche
- modèles de conception cloud
- Vitesse du développeur
- Développer votre stratégie de nommage et d’étiquetage pour les ressources Azure
- Centre de ressources DevOps
- Activer DevSecOps avec Azure et GitHub
- Vue d’ensemble de l’analyse du code source
- Guide du cycle de vie du développement de la sécurité
- Sécurité dans DevOps (DevSecOps)
- test shift à gauche avec des tests unitaires
- Série vidéo : Présentation de GitHub Copilot
Liste de contrôle de l’excellence opérationnelle
Reportez-vous à l’ensemble complet de recommandations.