

# OPS 5. Comment réduire les défauts, faciliter les corrections et améliorer le flux dans la production ?
<a name="ops-05"></a>

 Adoptez des approches qui améliorent l’entrée des modifications en production et qui permettent une refactorisation, des retours rapides sur la qualité et la correction de bogues. Cela permet d’accélérer l’entrée des modifications bénéfiques en production, de limiter le déploiement de problèmes et d’identifier et de corriger rapidement les problèmes introduits par les activités de déploiement. 

**Topics**
+ [

# OPS05-BP01 Utilisation du contrôle de version
](ops_dev_integ_version_control.md)
+ [

# OPS05-BP02 Test et validation des modifications
](ops_dev_integ_test_val_chg.md)
+ [

# OPS05-BP03 Utilisation de systèmes de gestion de la configuration
](ops_dev_integ_conf_mgmt_sys.md)
+ [

# OPS05-BP04 Utiliser des systèmes de gestion du développement et du déploiement
](ops_dev_integ_build_mgmt_sys.md)
+ [

# OPS05-BP05 Gestion des correctifs
](ops_dev_integ_patch_mgmt.md)
+ [

# OPS05-BP06 Partager les normes de conception
](ops_dev_integ_share_design_stds.md)
+ [

# OPS05-BP07 Mise en œuvre de pratiques visant à améliorer la qualité du code
](ops_dev_integ_code_quality.md)
+ [

# OPS05-BP08 Utilisation de plusieurs environnements
](ops_dev_integ_multi_env.md)
+ [

# OPS05-BP09 Procéder à des modifications fréquentes, mineures et réversibles
](ops_dev_integ_freq_sm_rev_chg.md)
+ [

# OPS05-BP10 Automatisation complète de l’intégration et du déploiement
](ops_dev_integ_auto_integ_deploy.md)

# OPS05-BP01 Utilisation du contrôle de version
<a name="ops_dev_integ_version_control"></a>

 Utilisez le contrôle de version pour activer le suivi des modifications et des versions. 

 De nombreux services AWS offrent des fonctionnalités de contrôle de version. Utilisez un système de révision ou de [contrôle des sources](https://aws.amazon.com/devops/source-control/) comme [Git](https://aws.amazon.com/devops/source-control/git/) pour gérer le code et d’autres artefacts, tels que les modèles [AWS CloudFormation](https://aws.amazon.com/cloudformation/) de contrôle de versions de votre infrastructure. 

 **Résultat escompté :** vos équipes collaborent sur le code. Une fois fusionné, le code est cohérent et aucune modification n’est perdue. Les erreurs sont facilement corrigées grâce à une gestion des versions appropriée. 

 **Anti-modèles courants :** 
+  Vous avez développé et stocké le code sur votre poste de travail. Un problème de stockage s’est produit sur le poste de travail et vous avez perdu le code. 
+  Après avoir remplacé le code existant par vos modifications, vous redémarrez votre application et elle n’est plus utilisable. Vous ne pouvez pas annuler la modification. 
+  Vous disposez d’un verrou d’écriture sur un fichier de rapport que quelqu’un d’autre doit modifier. Il vous contacte pour vous demander d’arrêter de travailler dessus afin qu’il puisse effectuer ses tâches. 
+  Votre équipe de recherche a travaillé sur une analyse détaillée qui façonnera vos futurs travaux. Quelqu’un a accidentellement enregistré sa liste d’achats sur le rapport final. Vous ne pouvez pas annuler la modification et vous devrez recréer le rapport. 

 **Avantages liés au respect de cette bonne pratique :** en utilisant les fonctionnalités de contrôle de version, vous pouvez revenir facilement aux bons états connus et aux versions précédentes, et limiter le risque de perte de ressources. 

 **Niveau d’exposition au risque si cette bonne pratique n’est pas respectée :** élevé 

## Directives d’implémentation
<a name="implementation-guidance"></a>

 Maintenez les ressources dans des référentiels avec contrôle de version. Cela permet le suivi des modifications, le déploiement de nouvelles versions, la détection des modifications apportées aux versions existantes, et le retour à des versions antérieures (par exemple, la restauration à un état correct connu en cas de défaillance). Intégrez les fonctionnalités de contrôle de version de vos systèmes de gestion de la configuration dans vos procédures. 

## Ressources
<a name="resources"></a>

 **Bonnes pratiques associées :** 
+  [OPS05-BP04 Utiliser des systèmes de gestion du développement et du déploiement](ops_dev_integ_build_mgmt_sys.md) 

 **Vidéos connexes :** 
+ [AWS re:Invent 2023 - How Lockheed Martin builds software faster, powered by DevSecOps ](https://www.youtube.com/watch?v=Q1OSyxYkl5w)
+ [AWS re:Invent 2023 - How GitHub operationalizes AI for team collaboration and productivity ](https://www.youtube.com/watch?v=cOVvGaiusOI)

# OPS05-BP02 Test et validation des modifications
<a name="ops_dev_integ_test_val_chg"></a>

 Chaque changement déployé doit être testé pour éviter des erreurs de production. Cette bonne pratique est axée sur les tests des changements du contrôle des versions à la création d’artefacts. En plus des changements du code de l’application, les tests doivent inclure l’infrastructure, la configuration, les contrôles de sécurité et les procédures opérationnelles. Les tests peuvent prendre de nombreuses formes, des tests unitaires à l’analyse des composants d’un logiciel (SCA). Le fait de pousser les tests encore plus loin dans le processus d’intégration et de livraison de logiciels entraîne une plus grande certitude de la qualité des artefacts. 

 Votre organisation doit développer des normes de test pour tous les artefacts logiciels. Les tests automatisés réduisent la quantité de travail et évitent les erreurs de test manuel. Des tests manuels peuvent être nécessaires dans certains cas. Les développeurs doivent avoir accès aux résultats des tests automatisés pour créer des boucles de commentaires qui améliorent la qualité du logiciel. 

 **Résultat escompté :** les changements apportés au logiciel sont testés avant d’être livrés. Les développeurs ont accès aux résultats des tests et aux validations. Votre organisation a une norme de test qui s’applique à tous les changements apportés au logiciel. 

 **Anti-modèles courants :** 
+  Vous déployez un nouveau changement apporté au logiciel sans aucun test. Il ne s’exécute pas en production, ce qui entraîne une panne. 
+  De nouveaux groupes de sécurité sont déployés avec AWS CloudFormation sans être testés dans un environnement de préproduction. Les groupes de sécurité empêchent les clients d’atteindre votre application. 
+  Une méthode est modifiée mais il n’existe aucun test d’unité. Le logiciel échoue quand il est déployé en production. 

 **Avantages de l’établissement de cette bonne pratique :** le taux d’échec des changements dans les déploiements de logiciels est réduit. La qualité du logiciel s’améliore. Les développeurs ont une meilleure connaissance de la viabilité de leur code. Des politiques de sécurité peuvent être déployées en toute confiance pour soutenir la conformité de l’organisation. Les changements apportés à l’infrastructure, tels que les mises à jour de la politique de mise à l’échelle automatique, sont testés à l’avance pour répondre aux besoins du trafic. 

 **Niveau d’exposition au risque si cette bonne pratique n’est pas respectée :** élevé 

## Directives d’implémentation
<a name="implementation-guidance"></a>

 Des tests sont réalisés sur tous les changements, du code de l’application à l’infrastructure, dans le cadre de votre pratique d’intégration continue. Les résultats des tests sont publiés afin que les développeurs disposent d’une rétroaction rapide. Votre organisation a une norme de test que tous les changements doivent respecter. 

 Utilisez la puissance de l’IA générative avec Amazon Q Developer pour améliorer la productivité des développeurs et la qualité du code. Amazon Q Developer comprend la génération de suggestions de code (basées sur de grands modèles de langage), la production de tests unitaires (y compris les conditions limites) et l’amélioration de la sécurité du code par la détection et la correction des vulnérabilités de sécurité. 

 **Exemple client** 

 Dans le cadre de leur pipeline d’intégration continue, AnyCompany Retail réalise plusieurs types de test sur tous les artefacts logiciels. L’entreprise pratique le développement axé sur les tests afin que tous les logiciels bénéficient de tests d’unités. Une fois l’artefact créé, elle exécute des tests de bout en bout. Une fois cette première série de tests terminée, elle exécute une analyse de la sécurité des applications statiques qui cherchent des vulnérabilités connues. Les développeurs reçoivent des messages indiquant que chaque palier de test est validé. Une fois tous les tests terminés, l’artefact logiciel est stocké dans un référentiel d’artefacts. 

### Étapes d’implémentation
<a name="implementation-steps"></a>

1.  Collaborez avec les parties prenantes dans votre organisation pour développer une norme de test pour les artefacts logiciels. Quels tests standards tous les artefacts doivent-ils valider ? Des exigences en termes de conformité ou de réglementation doivent-elles être incluses dans la couverture des tests ? Faut-il réaliser des tests de qualité du code ? Qui doit être informé de la fin des tests ? 

   1.  [L’architecture de référence du pipeline de déploiement AWS](https://pipelines.devops.aws.dev/) contient une liste officielle des types de tests qui peuvent être réalisés sur des artefacts logiciels dans le cadre d’un pipeline d’intégration. 

1.  Instrumentalisez votre application avec les tests nécessaires en fonction de la norme de test de votre logiciel. Chaque ensemble de tests doit être réalisé en moins de dix minutes. Les tests doivent être exécutés dans le cadre d’un pipeline d’intégration. 

   1.  Utilisez [Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html), un outil d’IA générative qui peut vous aider à créer des cas de tests unitaires (y compris des conditions limites), à générer des fonctions à l’aide de code et de commentaires, et à implémenter des algorithmes connus. 

   1.  Utilisez [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) pour tester le code de votre application afin de détecter d’éventuels défauts. 

   1.  [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) vous permet de réaliser des tests sur les artefacts logiciels. 

   1.  [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) peut orchestrer vos tests logiciels dans un pipeline. 

## Ressources
<a name="resources"></a>

 **Bonnes pratiques associées :** 
+  [OPS05-BP01 Utilisation du contrôle de version](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_version_control.html) 
+  [OPS05-BP06 Partage des normes de conception](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_share_design_stds.html) 
+  [OPS05-BP07 Mise en œuvre de pratiques visant à améliorer la qualité du code](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_code_quality.html) 
+  [OPS05-BP10 Automatisation complète de l’intégration et du déploiement](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_auto_integ_deploy.html) 

 **Documents connexes :** 
+  [Adopter une approche de développement piloté par les tests](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/development-best-practices.html) 
+  [Accélération du cycle de développement de vos logiciels avec Amazon Q](https://aws.amazon.com/blogs/devops/accelerate-your-software-development-lifecycle-with-amazon-q/) 
+  [Amazon Q Developer, désormais disponible pour le grand public, inclut des aperçus de nouvelles fonctionnalités destinées à réinventer l’expérience des développeurs](https://aws.amazon.com/blogs/aws/amazon-q-developer-now-generally-available-includes-new-capabilities-to-reimagine-developer-experience/) 
+  [L’aide-mémoire ultime pour utiliser Amazon Q Developer dans votre environnement de développement intégré](https://community.aws/content/2eYoqeFRqaVnk900emsknDfzhfW/the-ultimate-cheat-sheet-for-using-amazon-q-developer-in-your-ide) 
+  [Shift-Left Workload, tirant parti de l’IA pour la création de tests](https://community.aws/content/2gBZtC94gPzaCQRnt4P0rIYWuBx/shift-left-workload-leveraging-ai-for-test-creation) 
+  [Centre de développement Amazon Q](https://aws.amazon.com/developer/generative-ai/amazon-q/) 
+  [10 façons de créer des applications plus rapidement avec Amazon CodeWhisperer](https://aws.amazon.com/blogs/devops/10-ways-to-build-applications-faster-with-amazon-codewhisperer/) 
+  [Au-delà de la couverture du code avec Amazon CodeWhisperer](https://aws.amazon.com/blogs/devops/looking-beyond-code-coverage-with-amazon-codewhisperer/) 
+  [Bonnes pratiques pour une ingénierie de requête avec Amazon CodeWhisperer](https://aws.amazon.com/blogs/devops/best-practices-for-prompt-engineering-with-amazon-codewhisperer/) 
+  [Pipeline de test AWS CloudFormation automatisé avec TaskCat et CodePipeline](https://aws.amazon.com/blogs/devops/automated-cloudformation-testing-pipeline-with-taskcat-and-codepipeline/) 
+  [Création d’un pipeline CI/CD AWS DevSecOps de bout en bout avec les outils open source SCA, SAST et DAST](https://aws.amazon.com/blogs/devops/building-end-to-end-aws-devsecops-ci-cd-pipeline-with-open-source-sca-sast-and-dast-tools/) 
+  [Démarrer avec les applications de test sans serveur](https://aws.amazon.com/blogs/compute/getting-started-with-testing-serverless-applications/) 
+  [Mon pipeline CI/CD est mon capitaine de versions](https://aws.amazon.com/builders-library/cicd-pipeline/) 
+  [Livre blanc Mise en pratique de l’intégration continue/livraison continue sur le livre blanc AWS](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html) 

 **Vidéos connexes :** 
+  [Implement an API with Amazon Q Developer Agent for Software Development](https://www.youtube.com/watch?v=U4XEvJUvff4) 
+  [Installing, Configuring, & Using Amazon Q Developer with JetBrains IDEs (How-to)](https://www.youtube.com/watch?v=-iQfIhTA4J0) 
+  [Mastering the art of Amazon CodeWhisperer - YouTube playlist](https://www.youtube.com/playlist?list=PLDqi6CuDzubxzL-yIqgQb9UbbceYdKhpK) 
+  [AWS re:Invent 2020: Testable infrastructure: Integration testing on AWS](https://www.youtube.com/watch?v=KJC380Juo2w) 
+  [AWS Summit ANZ 2021 - Driving a test-first strategy with CDK and test driven development](https://www.youtube.com/watch?v=1R7G_wcyd3s) 
+  [Testing Your Infrastructure as Code with AWS CDK](https://www.youtube.com/watch?v=fWtuwGSoSOU) 

 **Ressources connexes :** 
+  [Architecture de référence du pipeline de déploiement AWS – Application](https://pipelines.devops.aws.dev/application-pipeline/index.html) 
+  [Pipeline AWS Kubernetes DevSecOps](https://github.com/aws-samples/devsecops-cicd-containers) 
+  [Exécution de tests d’unités pour une application Node.js de GitHub à l’aide d’AWS CodeBuild](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild.html) 
+  [Utilisation de Serverspec pour le développement axé sur les tests du code d’infrastructure](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/use-serverspec-for-test-driven-development-of-infrastructure-code.html) 

 **Services connexes :** 
+  [Amazon Q Developer](https://aws.amazon.com/q/developer/) 
+  [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) 
+  [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
+  [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 

# OPS05-BP03 Utilisation de systèmes de gestion de la configuration
<a name="ops_dev_integ_conf_mgmt_sys"></a>

 Utilisez des systèmes de gestion de la configuration pour effectuer et suivre les modifications de la configuration. Ces systèmes réduisent les erreurs causées par les processus manuels et diminuent le niveau d’effort nécessaire au déploiement des modifications. 

La gestion de la configuration statique définit des valeurs lors de l’initialisation d’une ressource. Elles doivent rester cohérentes tout au long de la durée de vie de cette ressource. La gestion dynamique de la configuration définit des valeurs à l’initialisation qui peuvent ou sont censées changer pendant la durée de vie d’une ressource. Par exemple, vous pouvez définir une touche à bascule de fonctionnalité pour activer les fonctionnalités de votre code par le biais d’une modification de configuration, ou modifier le niveau de détail du journal lors d’un incident.

Les configurations doivent être déployées dans un état connu et cohérent. Vous devez utiliser l’inspection automatisée pour surveiller en permanence les configurations des ressources dans les environnements et les régions. Ces contrôles doivent être définis sous forme de code et de gestion automatisés afin de garantir que les règles sont appliquées de manière cohérente dans tous les environnements. Les modifications apportées aux configurations doivent être mises à jour par le biais de procédures de contrôle des modifications convenues et appliquées de manière cohérente, dans le respect du contrôle des versions. La configuration des applications doit être gérée indépendamment du code de l’application et de l’infrastructure. Cela permet un déploiement cohérent dans plusieurs environnements. Les modifications de configuration n’entraînent pas la reconstruction ou le redéploiement de l’application. 

 **Résultat escompté :** vous effectuez la configuration, la validation et le déploiement dans le cadre de votre pipeline d’intégration et de livraison continues (CI/CD). Vous assurez la surveillance pour vérifier que les configurations sont correctes. Cela permet de minimiser l’impact sur les utilisateurs finaux et les clients. 

 **Anti-modèles courants :** 
+  Vous mettez manuellement à jour la configuration des serveurs Web de votre flotte, et un certain nombre de serveurs ne répondent plus en raison d’erreurs de mise à jour. 
+  Vous mettez à jour manuellement votre flotte de serveurs d’applications pendant plusieurs heures. L’incohérence de la configuration pendant la modification entraîne des comportements inattendus. 
+  Quelqu’un a mis à jour vos groupes de sécurité et vos serveurs Web ne sont plus accessibles. Sans savoir ce qui a changé, vous passez beaucoup de temps à enquêter sur la question, ce qui prolonge votre temps de reprise. 
+  Vous mettez en production une configuration de préproduction via le pipeline CI/CD sans validation. Vous exposez les utilisateurs et les clients à des données et à des services incorrects. 

 **Avantages liés au respect de cette bonne pratique :** l’adoption de systèmes de gestion de la configuration réduit le niveau d’effort nécessaire pour effectuer et suivre les changements, ainsi que la fréquence des erreurs causées par les procédures manuelles. Les systèmes de gestion de la configuration fournissent des garanties en matière de gouvernance, de conformité et d’exigences réglementaires. 

 **Niveau d’exposition au risque si cette bonne pratique n’est pas respectée :** moyen 

## Directives d’implémentation
<a name="implementation-guidance"></a>

 Les systèmes de gestion de la configuration sont utilisés pour suivre et mettre en œuvre les modifications apportées aux configurations des applications et de l’environnement. Ils sont également utilisés pour réduire les erreurs causées par les processus manuels, pour rendre les modifications de configuration reproductibles et vérifiables, et pour réduire le niveau d’effort. 

 Sur AWS, vous pouvez utiliser [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) pour surveiller continuellement vos configurations de ressources AWS [à travers les comptes et les régions](https://docs.aws.amazon.com/config/latest/developerguide/aggregate-data.html). Il vous permet de suivre leur historique de configuration, de comprendre comment une modification de la configuration affecterait d’autres ressources et de les auditer par rapport aux configurations attendues ou souhaitées avec [AWS Config Rules](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) et [AWS Config Conformance Packs](https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html). 

 Pour les configurations dynamiques de vos applications exécutées sur des instances Amazon EC2, AWS Lambda, des conteneurs , des applications mobiles ou des appareils IoT, vous pouvez les utiliser [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html) pour les configurer, les valider, les déployer et les surveiller dans vos environnements. 

### Étapes d’implémentation
<a name="implementation-steps"></a>

1.  Identifiez les responsables de la configuration. 

   1.  Informez les responsables de la configuration de tout besoin en matière de conformité, de gouvernance ou de réglementation. 

1.  Identifiez les éléments de configuration et les livrables. 

   1.  Les éléments de configuration sont toutes les configurations d’application et d’environnement concernées par un déploiement au sein de votre pipeline CI/CD. 

   1.  Les livrables incluent les critères de réussite, la validation et ce qui doit être surveillé. 

1.  Sélectionnez les outils de gestion de la configuration en fonction des besoins de votre entreprise et de votre pipeline de livraison. 

1.  Envisagez des déploiements pondérés tels que les déploiements canary pour les modifications de configuration importantes, afin de minimiser l’impact des configurations incorrectes. 

1.  Intégrez la gestion de votre configuration dans votre pipeline CI/CD. 

1.  Validez toutes les modifications apportées. 

## Ressources
<a name="resources"></a>

 **Bonnes pratiques associées :** 
+  [OPS06-BP01 Planifier les modifications infructueuses](ops_mit_deploy_risks_plan_for_unsucessful_changes.md) 
+  [OPS06-BP02 Déploiements de tests](ops_mit_deploy_risks_test_val_chg.md) 
+  [OPS06-BP03 Adoption de stratégies de déploiement sûres](ops_mit_deploy_risks_deploy_mgmt_sys.md) 
+  [OPS06-BP04 Automatiser les tests et les annulations](ops_mit_deploy_risks_auto_testing_and_rollback.md) 

 **Documents connexes :** 
+ [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html)
+ [Accélérateur de zone de destination AWS](https://aws.amazon.com/solutions/implementations/landing-zone-accelerator-on-aws/)
+ [AWS Config](https://aws.amazon.com/config/)
+ [ Présentation de AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html)
+  [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html) 
+ [ Présentation de AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)
+  [Outils pour développeurs AWS](https://aws.amazon.com/products/developer-tools/) 
+ [AWS CodeBuild](https://aws.amazon.com/codebuild/)
+ [AWS CodePipeline](https://aws.amazon.com/codepipeline/)
+ [AWS CodeDeploy](https://aws.amazon.com/codedeploy/)

 **Vidéos connexes :** 
+ [AWS re:Invent 2022 - Proactive governance and compliance for AWS workloads](https://youtu.be/PpUnH9Y52X0?si=82wff87KHXcc6nbT)
+ [AWS re:Invent 2020: Achieve compliance as code using AWS Config](https://youtu.be/m8vTwvbzOfw?si=my4DP0FLq1zwKjho)
+ [Manage and Deploy Application Configurations with AWS AppConfig](https://youtu.be/ztIxMY3IIu0?si=ovYGsxWOBysyQrg0)

# OPS05-BP04 Utiliser des systèmes de gestion du développement et du déploiement
<a name="ops_dev_integ_build_mgmt_sys"></a>

 Utilisez des systèmes de gestion du développement et du déploiement. Ces systèmes réduisent les erreurs causées par les processus manuels et diminuent le niveau d’effort nécessaire au déploiement des modifications. 

 Dans AWS, vous pouvez créer des pipelines d’intégration continue/de déploiement continu (CI/CD) à l’aide de services tels que les [outils pour développeurs AWS](https://aws.amazon.com/products/developer-tools/) (par exemple, [AWS CodeBuild](https://aws.amazon.com/codebuild/), [AWS CodePipeline](https://aws.amazon.com/codepipeline/) et [AWS CodeDeploy](https://aws.amazon.com/codedeploy/)). 

 **Résultat escompté :** vos systèmes de gestion du développement et du déploiement prennent en charge le système d’intégration et de livraison continues (CI/CD) de votre entreprise, qui fournit des fonctionnalités permettant d’automatiser des déploiements sécurisés avec les configurations appropriées. 

 **Anti-modèles courants :** 
+  Après avoir compilé votre code sur votre système de développement, vous copiez l’exécutable sur vos systèmes de production et il ne démarre pas. Les fichiers journaux locaux indiquent qu’il n’a pas fonctionné en raison de dépendances manquantes. 
+  Vous créez avec succès votre application avec de nouvelles fonctionnalités dans votre environnement de développement et soumettez le code à l’assurance qualité (QA). L’assurance qualité échoue, car il manque des ressources statiques. 
+  Vendredi, après de nombreux efforts, vous avez réussi à créer manuellement votre application dans votre environnement de développement, y compris vos nouvelles fonctionnalités codées. Lundi, vous ne pouvez pas répéter les étapes qui vous ont permis de créer votre application avec succès. 
+  Vous effectuez les tests que vous avez créés pour votre nouvelle version. Ensuite, vous passez la semaine suivante à configurer un environnement de test et à exécuter tous les tests d’intégration existants, suivis des tests de performances. Le nouveau code a un impact inacceptable sur les performances et doit être redéveloppé, puis retesté. 

 **Avantages liés au respect de cette bonne pratique :** en fournissant des mécanismes pour gérer les activités de construction et de déploiement, vous réduisez le niveau d’effort nécessaire pour effectuer des tâches répétitives, vous libérez les membres de votre équipe pour qu’ils puissent se concentrer sur leurs tâches créatives de grande valeur et vous limitez l’introduction d’erreurs provenant des procédures manuelles. 

 **Niveau de risque encouru si cette bonne pratique n’est pas respectée :** moyen 

## Directives d’implémentation
<a name="implementation-guidance"></a>

 Les systèmes de gestion du développement et du déploiement sont utilisés pour suivre et mettre en œuvre les modifications, réduire les erreurs causées par les processus manuels et limiter le niveau d’effort requis pour des déploiements sûrs. Automatisez entièrement le pipeline d’intégration et de déploiement à partir du code d’enregistrement et par le biais du développement, des tests, du déploiement et de la validation. Cela permet de réduire les délais, de diminuer les coûts, d’augmenter la fréquence des modifications, de limiter le niveau d’effort et d’accroître la collaboration. 

### Étapes d’implémentation
<a name="implementation-steps"></a>

![\[Schéma illustrant un pipeline CI/CD utilisant AWS CodePipeline et des services connexes\]](http://docs.aws.amazon.com/fr_fr/wellarchitected/latest/framework/images/deployment-pipeline-tooling.png)


 

1.  Utilisez un système de contrôle de version pour stocker et gérer les ressources (tels que des documents, du code source et des fichiers binaires). 

1.  Utilisez CodeBuild pour compiler votre code source, exécute des tests unitaires et produit des artefacts prêts à être déployés. 

1.  Utilisez CodeDeploy comme un service de déploiement qui automatise les déploiements d’applications vers des instances [Amazon EC2](https://aws.amazon.com/ec2/), des instances sur site, des [fonctions AWS Lambda sans serveur](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ou [Amazon ECS](https://aws.amazon.com/ecs/). 

1.  Surveillez vos déploiements. 

## Ressources
<a name="resources"></a>

 **Bonnes pratiques associées :** 
+  [OPS06-BP04 Automatiser les tests et les annulations](ops_mit_deploy_risks_auto_testing_and_rollback.md) 

 **Documents connexes :** 
+  [Outils pour développeurs AWS](https://aws.amazon.com/products/developer-tools/) 
+  [Présentation de AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
+ [AWS CodeBuild](https://aws.amazon.com/codebuild/)
+  [Présentation de AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 

 **Vidéos connexes :** 
+ [AWS re:Invent 2022 - AWS Well-Architected best practices for DevOps on AWS](https://youtu.be/hfXokRAyorA)

# OPS05-BP05 Gestion des correctifs
<a name="ops_dev_integ_patch_mgmt"></a>

 Procédez à la gestion des correctifs afin de profiter des fonctionnalités, de résoudre les problèmes et de rester conforme à la gouvernance. Automatisez la gestion des correctifs pour réduire les erreurs causées par les processus manuels, pour permettre la mise à l’échelle et pour réduire le niveau d’efforts nécessaire aux correctifs. 

 La gestion des correctifs et des vulnérabilités fait partie de vos activités de gestion des bénéfices et des risques. Il est préférable d’avoir des infrastructures immuables et de déployer des charges de travail dans des états de bon fonctionnement connus et vérifiés. Lorsque cela n’est pas viable, l’application de correctifs est la seule solution. 

 [AWS Health](https://aws.amazon.com/premiumsupport/technology/aws-health/) est la source d’informations faisant autorité sur les événements de cycle de vie planifiés et les autres événements nécessitant des actions qui affectent l’intégrité de vos ressources AWS Cloud. Vous devez être au courant des modifications à venir et des mises à jour à effectuer. Les principaux événements de cycle de vie planifiés sont envoyés au moins six mois à l’avance. 

 [Amazon EC2 Image Builder](https://aws.amazon.com/image-builder/) fournit des pipelines pour mettre à jour les images des machines. Dans le cadre de la gestion des correctifs, envisagez que des images [Amazon Machine Image](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html       ) (AMI) utilisent un [pipeline d’images AMI](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html) ou des images de conteneur avec un [pipeline d’images Docker](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-container-pipeline.html), pendant que AWS Lambda fournit des modèles pour des environnements d’[exécution personnalisés et des bibliothèques supplémentaires](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html) pour supprimer les vulnérabilités. 

 Vous devez gérer les mises à jour des images [Amazon Machine Image](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) pour les images Linux ou Windows Server à l’aide d’[Amazon EC2 Image Builder](https://aws.amazon.com/image-builder/). Vous pouvez utiliser [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) avec votre pipeline existant pour gérer les images Amazon ECS et les images Amazon EKS. Lambda comprend les [fonctionnalités de gestion des versions](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html). 

 L’application de correctifs ne doit pas être effectuée sur les systèmes de production sans avoir effectué un test préalable dans un environnement sûr. Les correctifs ne doivent être appliqués que s’ils favorisent la réalisation d’un résultat opérationnel ou métier. Sur AWS, vous pouvez utiliser [AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-patch.html) pour automatiser le processus d’application des correctifs aux systèmes gérés et planifier l’activité à l’aide de [Systems Manager Maintenance Windows](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-maintenance.html). 

 **Résultat escompté :** vos images AMI et images de conteneur sont corrigées, mises à jour et prêtes à être lancées. Vous pouvez suivre l’état de toutes les images déployées et déterminer la conformité des correctifs. Vous êtes en mesure de rendre compte de l’état actuel et de disposer d’un processus pour répondre à vos besoins en matière de conformité. 

 **Anti-modèles courants :** 
+  On vous demande d’appliquer tous les nouveaux correctifs de sécurité dans un délai de deux heures, ce qui entraîne de multiples pannes dues à l’incompatibilité de l’application avec les correctifs. 
+  Une bibliothèque non corrigée entraîne des conséquences imprévues, car des parties inconnues y utilisent des failles pour accéder à votre charge de travail. 
+  Vous corrigez automatiquement les environnements de développement sans en informer les développeurs. Vous recevez plusieurs réclamations des développeurs indiquant que leur environnement ne fonctionne plus correctement. 
+  Vous n’avez pas corrigé le logiciel sur une instance persistante. Lorsque vous rencontrez un problème avec le logiciel et que vous contactez le fournisseur, celui-ci vous informe que la version n’est pas prise en charge et que vous devez effectuer appliquer un correctif à un niveau spécifique pour recevoir de l’aide. 
+  Un correctif récemment publié pour le logiciel de chiffrement que vous avez utilisé présente des améliorations significatives de performances. Votre système non corrigé présente des problèmes de performances qui persistent suite à l’absence de correctifs. 
+  Vous êtes averti d’une vulnérabilité de type « jour zéro » nécessitant une correction d’urgence et vous devez corriger manuellement tous vos environnements. 
+  Vous n’êtes pas au courant des actions critiques nécessaires pour maintenir vos ressources, telles que les mises à jour de version obligatoires, car vous ne passez pas en revue les événements de cycle de vie planifiés à venir ni les autres informations. Vous perdez un temps critique pour la planification et l’exécution, ce qui entraîne des changements d’urgence pour vos équipes et un impact potentiel ou une durée d’indisponibilité imprévue. 

 **Avantages liés au respect de cette bonne pratique :** en établissant un processus de gestion des correctifs, y compris vos critères d’application des correctifs et la méthodologie de distribution dans vos environnements, vous pouvez mettre à l’échelle les niveaux de correctifs et créer des rapports sur ces niveaux. Cela fournit des garanties concernant les correctifs de sécurité et assure une visibilité claire sur l’état des correctifs connus en cours de mise en place. Cela encourage aussi l’adoption des fonctions et fonctionnalités désirées, l’élimination rapide des problèmes et le respect durable de la gouvernance. Mettez en œuvre des systèmes de gestion des correctifs et d’automatisation pour réduire le niveau d’effort nécessaire au déploiement des correctifs et limiter les erreurs causées par les processus manuels. 

 **Niveau d’exposition au risque si cette bonne pratique n’est pas respectée :** moyen 

## Directives d’implémentation
<a name="implementation-guidance"></a>

 Appliquez des correctifs aux systèmes pour corriger les problèmes, obtenir des fonctionnalités souhaitées et rester conforme à la politique de gouvernance et aux exigences d’assistance du fournisseur. Dans les systèmes immuables, déployez avec l’ensemble de correctifs approprié pour obtenir le résultat souhaité. Automatisez le mécanisme de gestion des correctifs afin de réduire le temps écoulé avant l’application des correctifs, d’éviter les erreurs causées par les processus manuels et de limiter le niveau d’efforts nécessaire pour appliquer les correctifs. 

### Étapes d’implémentation
<a name="implementation-steps"></a>

 Pour Amazon EC2 Image Builder 

1.  Avec Amazon EC2 Image Builder, spécifiez les détails du pipeline : 

   1.  Créez un pipeline d’images et nommez-le. 

   1.  Définissez le calendrier et le fuseau horaire du pipeline. 

   1.  Configurez toutes les dépendances. 

1.  Choisissez une recette : 

   1.  Sélectionnez une recette existante ou créez-en une. 

   1.  Sélectionnez le type d’image. 

   1.  Donnez un nom et une version à votre recette. 

   1.  Sélectionnez votre image de base. 

   1.  Ajoutez des composants de build et incluez-les dans le registre cible. 

1.  Facultatif : définissez la configuration de votre infrastructure. 

1.  Facultatif : définissez les paramètres de configuration. 

1.  Révisez les paramètres. 

1.  Gérez régulièrement l’hygiène des recettes. 

 Pour le gestionnaire de correctifs de Systems Manager : 

1.  Créez un référentiel de correctifs. 

1.  Sélectionnez une méthode d’opérations d’application de correctifs. 

1.  Activez le reporting et l’analyse de conformité. 

## Ressources
<a name="resources"></a>

 **Bonnes pratiques associées :** 
+  [OPS06-BP04 Automatiser les tests et les annulations](ops_mit_deploy_risks_auto_testing_and_rollback.md) 

 **Documents connexes :** 
+ [Présentation d’Amazon EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html)
+ [Création d’un pipeline d’images à l’aide d’Amazon EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html)
+ [Création d’un pipeline d’images de conteneurs](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-container-pipeline.html)
+  [Gestionnaire de correctifs d’AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-patch.html) 
+ [Utilisation du gestionnaire de correctifs](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-console.html)
+ [Utilisation des rapports de conformité des correctifs](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-compliance-reports.html)
+ [Outils pour développeurs AWS](https://aws.amazon.com/products/developer-tools)

 **Vidéos connexes :** 
+  [CI/CD for Serverless Applications on AWS](https://www.youtube.com/watch?v=tEpx5VaW4WE) 
+  [Design with Ops in Mind](https://youtu.be/uh19jfW7hw4) 

   **Exemples connexes :** 
+ [Tutoriels du gestionnaire de correctifs AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-tutorials.html)

# OPS05-BP06 Partager les normes de conception
<a name="ops_dev_integ_share_design_stds"></a>

 Partagez les bonnes pratiques entre les équipes pour sensibiliser et maximiser les bénéfices des efforts de développement. Documentez-les et mettez-les à jour au fur et à mesure de l’évolution de votre architecture. Si votre organisation applique des normes partagées, il est essentiel de prévoir des mécanismes permettant de demander des ajouts, des modifications et des exceptions aux normes. Sans cette possibilité, les normes deviennent une contrainte à l’innovation. 

 **Résultat escompté :** les normes de conception sont partagées par toutes les équipes de vos organisations. Ils sont documentés et conservés au up-to-date fur et à mesure de l'évolution des meilleures pratiques. 

 **Anti-modèles courants :** 
+ Deux équipes de développement ont chacune créé un service d’authentification des utilisateurs. Vos utilisateurs doivent conserver un ensemble distinct d’informations d’identification pour chaque partie du système à laquelle ils veulent accéder. 
+ Chaque équipe gère sa propre infrastructure. Une nouvelle exigence de conformité impose une modification de votre infrastructure et chaque équipe la met en œuvre de manière différente.

 **Avantages liés au respect de cette bonne pratique :** l’utilisation de normes communes favorise l’adoption de bonnes pratiques et maximise les avantages des efforts de développement. La documentation et la mise à jour des normes de conception permettent à votre organisation de up-to-date respecter les meilleures pratiques et les exigences de sécurité et de conformité. 

 **Niveau d’exposition au risque si cette bonne pratique n’est pas respectée :** moyen 

## Directives d’implémentation
<a name="implementation-guidance"></a>

 Partagez les bonnes pratiques existantes, les normes de conception, les listes de contrôle, les procédures d’exploitation, les conseils et les exigences de gouvernance entre les équipes. Prévoyez des procédures pour demander des modifications, des ajouts et des exceptions aux normes de conception afin de favoriser l’amélioration et l’innovation. Assurez-vous que les équipes sont au courant du contenu publié. Disposer d'un mécanisme permettant de maintenir les normes de conception au up-to-date fur et à mesure que de nouvelles pratiques exemplaires apparaissent. 

 **Exemple client** 

 AnyCompany Retail dispose d'une équipe d'architecture interfonctionnelle qui crée des modèles d'architecture logicielle. Cette équipe construit l’architecture en y intégrant les aspects de conformité et de gouvernance. Les équipes qui adoptent ces normes communes bénéficient des avantages de la conformité et de la gouvernance intégrées. Elles peuvent rapidement s’appuyer sur la norme de conception. L’équipe d’architecture se réunit tous les trimestres pour évaluer les modèles d’architecture et les mettre à jour si nécessaire. 

### Étapes d’implémentation
<a name="implementation-steps"></a>

1.  Identifiez une équipe interfonctionnelle qui sera chargée de développer et de mettre à jour les normes de conception. Cette équipe travaillera avec les parties prenantes de votre organisation pour élaborer des normes de conception, des procédures d’exploitation, des listes de contrôle, des conseils et des exigences de gouvernance. Documentez les normes de conception et partagez-les au sein de votre organisation. 

   1.  [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) permet de créer des portefeuilles représentant les normes de conception en utilisant l’infrastructure en tant que code. Vous pouvez partager des portefeuilles entre plusieurs comptes. 

1.  Mettre en place un mécanisme pour maintenir les normes de conception au up-to-date fur et à mesure que de nouvelles pratiques exemplaires sont identifiées. 

1.  Si les normes de conception sont appliquées de manière centralisée, il faut prévoir un processus pour demander des modifications, des mises à jour et des exemptions. 

 **Niveau d’effort du plan d’implémentation :** moyen. L’élaboration d’un processus de création et de partage des normes de conception peut nécessiter une coordination et une coopération avec les parties prenantes de votre organisation. 

## Ressources
<a name="resources"></a>

 **Bonnes pratiques associées :** 
+  [OPS01-BP03 Évaluer les exigences de gouvernance](ops_priorities_governance_reqs.md) – Les exigences de gouvernance influencent les normes de conception. 
+  [OPS01-BP04 Évaluation des exigences de conformité](ops_priorities_compliance_reqs.md) – La conformité est un élément essentiel de la création de normes de conception. 
+  [OPS07-BP02 Assurer un examen cohérent de l’état de préparation opérationnelle](ops_ready_to_support_const_orr.md) – Les listes de contrôle de la disponibilité opérationnelle constituent un mécanisme de mise en œuvre des normes de conception lors de la conception de votre charge de travail. 
+  [OPS11-BP01 Définir un processus d’amélioration continue](ops_evolve_ops_process_cont_imp.md) – La mise à jour des normes de conception fait partie de l’amélioration continue. 
+  [OPS11-BP04 Effectuer la gestion des connaissances](ops_evolve_ops_knowledge_management.md) – Dans le cadre de votre pratique de gestion des connaissances, documentez et partagez les normes de conception. 

 **Documents connexes :** 
+ [Automatisez AWS Backup nous avec AWS Service Catalog](https://aws.amazon.com/blogs/mt/automate-aws-backups-with-aws-service-catalog/)
+ [AWS Service Catalog Compte amélioré en usine](https://aws.amazon.com/blogs/mt/aws-service-catalog-account-factory-enhanced/)
+ [Comment Expedia Group a créé une offre de base de données en tant que service (DBaaS) en utilisant AWS Service Catalog](https://aws.amazon.com/blogs/mt/how-expedia-group-built-database-as-a-service-dbaas-offering-using-aws-service-catalog/)
+ [Assurer la visibilité sur l’utilisation des modèles d’architecture cloud](https://aws.amazon.com/blogs/architecture/maintain-visibility-over-the-use-of-cloud-architecture-patterns/)
+ [Simplifiez le partage de vos AWS Service Catalog portefeuilles dans une AWS Organizations configuration](https://aws.amazon.com/blogs/mt/simplify-sharing-your-aws-service-catalog-portfolios-in-an-aws-organizations-setup/)

 **Vidéos connexes :** 
+ [AWS Service Catalog — Mise en route](https://www.youtube.com/watch?v=A9kKy6WhqVA)
+ [AWS re:Invent 2020 : Gérez vos AWS Service Catalog portefeuilles comme un expert](https://www.youtube.com/watch?v=lVfXkWHAtR8)

 **Exemples connexes :** 
+ [AWS Service Catalog Architecture de référence](https://github.com/aws-samples/aws-service-catalog-reference-architectures)
+ [AWS Service Catalog Atelier](https://catalog.us-east-1.prod.workshops.aws/workshops/d40750d7-a330-49be-9945-cde864610de9/en-US)

 **Services connexes :** 
+  [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) 

# OPS05-BP07 Mise en œuvre de pratiques visant à améliorer la qualité du code
<a name="ops_dev_integ_code_quality"></a>

 Mettez en place des pratiques pour améliorer la qualité du code et limiter les failles. Parmi les exemples, citons le développement piloté par les tests, les révisions de code, l’adoption de normes et la programmation en binôme. Incorporez ces pratiques dans votre processus d’intégration et de livraison continues. 

 **Résultat escompté :** votre organisation utilise des bonnes pratiques comme les révisions de code ou la programmation en binôme pour améliorer la qualité du code. Les développeurs et les opérateurs adoptent les bonnes pratiques en matière de qualité du code dans le cadre du cycle de vie du développement logiciel. 

 **Anti-modèles courants :** 
+  Vous livrez du code à la branche principale de votre application sans effectuer de révision du code. La modification est automatiquement déployée en production et provoque une panne. 
+  Une nouvelle application est développée sans aucun test d’unité, de bout en bout ou d’intégration. Il n’y a aucun moyen de tester l’application avant son déploiement. 
+  Vos équipes procèdent à des modifications manuelles en production pour corriger les défauts. Les modifications ne sont pas soumises à des tests ou à des révisions de code et ne sont pas saisies ou enregistrées dans le cadre des processus d’intégration et de livraison continues. 

 **Avantages liés au respect de cette bonne pratique :** en adoptant des pratiques visant à améliorer la qualité du code, vous contribuez à minimiser les problèmes introduits dans la production. Les bonnes pratiques en matière de qualité du code incluent la programmation en binôme, les révisions de code et la mise en œuvre d’outils de productivité basés sur l’IA. 

 **Niveau d’exposition au risque si cette bonne pratique n’est pas respectée :** moyen 

## Directives d’implémentation
<a name="implementation-guidance"></a>

 Mettez en œuvre des pratiques visant à améliorer la qualité du code afin de minimiser les défauts avant leur déploiement. Utilisez des pratiques telles que le développement piloté par les tests, les révisions de code et la programmation en binôme pour améliorer la qualité de votre développement. 

 Utilisez la puissance de l’IA générative avec Amazon Q Developer pour améliorer la productivité des développeurs et la qualité du code. Amazon Q Developer comprend la génération de suggestions de code (basées sur de grands modèles de langage), la production de tests unitaires (y compris les conditions limites) et l’amélioration de la sécurité du code par la détection et la correction des vulnérabilités de sécurité. 

 **Exemple client** 

 AnyCompany Retail adopte plusieurs pratiques pour améliorer la qualité du code. La société a adopté le développement piloté par les tests comme norme d’écriture des applications. Pour certaines nouvelles fonctionnalités, elle demande aux développeurs de programmer en binôme pendant un sprint. Chaque demande d’extraction est soumise à une révision du code par un développeur principal avant d’être intégrée et déployée. 

### Étapes d’implémentation
<a name="implementation-steps"></a>

1.  Adoptez des pratiques de qualité du code telles que le développement piloté par les tests, les révisions de code et la programmation en binôme dans votre processus d’intégration et de livraison continues. Utilisez ces techniques pour améliorer la qualité des logiciels. 

   1.  Utilisez [Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html), un outil d’IA générative qui peut vous aider à créer des cas de tests unitaires (y compris des conditions limites), à générer des fonctions à l’aide de code et de commentaires, à implémenter des algorithmes connus, à détecter les violations des politiques de sécurité et les vulnérabilités dans votre code, à détecter les secrets, à scanner l’infrastructure en tant que code (IaC), à documenter le code et à apprendre plus rapidement des bibliothèques de code tierces. 

   1.  [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) peut fournir des recommandations de programmation pour le code Java et Python en utilisant le machine learning. 

 **Niveau d’effort du plan d’implémentation :** moyen. Il existe de nombreuses façons de mettre en œuvre cette bonne pratique, mais il peut être difficile de la faire adopter par l’organisation. 

## Ressources
<a name="resources"></a>

 **Bonnes pratiques associées :** 
+  [OPS05-BP02 Test et validation des modifications](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_test_val_chg.html) 
+  [OPS05-BP06 Partage des normes de conception](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_share_design_stds.html) 

 **Documents connexes :** 
+  [Adopter une approche de développement piloté par les tests](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/development-best-practices.html) 
+  [Accélération du cycle de développement de vos logiciels avec Amazon Q](https://aws.amazon.com/blogs/devops/accelerate-your-software-development-lifecycle-with-amazon-q/) 
+  [Amazon Q Developer, désormais disponible pour le grand public, inclut des aperçus de nouvelles fonctionnalités destinées à réinventer l’expérience des développeurs](https://aws.amazon.com/blogs/aws/amazon-q-developer-now-generally-available-includes-new-capabilities-to-reimagine-developer-experience/) 
+  [L’aide-mémoire ultime pour utiliser Amazon Q Developer dans votre environnement de développement intégré](https://community.aws/content/2eYoqeFRqaVnk900emsknDfzhfW/the-ultimate-cheat-sheet-for-using-amazon-q-developer-in-your-ide) 
+  [Shift-Left Workload, tirant parti de l’IA pour la création de tests](https://community.aws/content/2gBZtC94gPzaCQRnt4P0rIYWuBx/shift-left-workload-leveraging-ai-for-test-creation) 
+  [Centre de développement Amazon Q](https://aws.amazon.com/developer/generative-ai/amazon-q/) 
+  [10 façons de créer des applications plus rapidement avec Amazon CodeWhisperer](https://aws.amazon.com/blogs/devops/10-ways-to-build-applications-faster-with-amazon-codewhisperer/) 
+  [Au-delà de la couverture du code avec Amazon CodeWhisperer](https://aws.amazon.com/blogs/devops/looking-beyond-code-coverage-with-amazon-codewhisperer/) 
+  [Bonnes pratiques pour une ingénierie de requête avec Amazon CodeWhisperer](https://aws.amazon.com/blogs/devops/best-practices-for-prompt-engineering-with-amazon-codewhisperer/) 
+  [Guide du logiciel Agile](https://martinfowler.com/agile.html) 
+  [Mon pipeline CI/CD est mon capitaine de versions](https://aws.amazon.com/builders-library/cicd-pipeline/) 
+  [Automatisez les révisions de code avec Amazon CodeGuru Reviewer](https://aws.amazon.com/blogs/devops/automate-code-reviews-with-amazon-codeguru-reviewer/) 
+  [Adopter une approche de développement piloté par les tests](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/development-best-practices.html) 
+  [Comment DevFactory crée de meilleures applications avec Amazon CodeGuru](https://aws.amazon.com/blogs/machine-learning/how-devfactory-builds-better-applications-with-amazon-codeguru/) 
+  [Programmation en binôme](https://martinfowler.com/articles/on-pair-programming.html) 
+  [RENGA Inc. automatise les révisions de code avec Amazon CodeGuru](https://aws.amazon.com/blogs/machine-learning/renga-inc-automates-code-reviews-with-amazon-codeguru/) 
+  [L’art du développement agile : le développement piloté par les tests](http://www.jamesshore.com/v2/books/aoad1/test_driven_development) 
+  [Pourquoi les révisions de code sont importantes (et font gagner du temps \$1)](https://www.atlassian.com/agile/software-development/code-reviews) 

 **Vidéos connexes :** 
+  [Implement an API with Amazon Q Developer Agent for Software Development](https://www.youtube.com/watch?v=U4XEvJUvff4) 
+  [Installing, Configuring, & Using Amazon Q Developer with JetBrains IDEs (How-to)](https://www.youtube.com/watch?v=-iQfIhTA4J0) 
+  [Mastering the art of Amazon CodeWhisperer - YouTube playlist](https://www.youtube.com/playlist?list=PLDqi6CuDzubxzL-yIqgQb9UbbceYdKhpK) 
+  [AWS re:Invent 2020: Continuous improvement of code quality with Amazon CodeGuru](https://www.youtube.com/watch?v=iX1i35H1OVw) 
+  [AWS Summit ANZ 2021 - Driving a test-first strategy with CDK and test driven development](https://www.youtube.com/watch?v=1R7G_wcyd3s) 

 **Services connexes :** 
+  [Amazon Q Developer](https://aws.amazon.com/q/developer/) 
+  [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) 
+  [Amazon CodeGuru Profiler](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html) 

# OPS05-BP08 Utilisation de plusieurs environnements
<a name="ops_dev_integ_multi_env"></a>

 Utilisez plusieurs environnements pour expérimenter, développer et tester votre charge de travail. Utilisez des niveaux de contrôle croissants lorsque les environnements approchent de la production pour vous assurer que votre charge de travail fonctionnera correctement une fois déployée. 

 **Résultat escompté :** vous disposez de plusieurs environnements qui répondent à vos besoins en matière de conformité et de gouvernance. Vous testez et promouvez le code dans les différents environnements jusqu’à la production. 

1.  Pour ce faire, votre organisation établit une zone de destination, qui assure la gouvernance, les contrôles, l’automatisation des comptes, la mise en réseau, la sécurité et l’observabilité opérationnelle. Gérez ces fonctionnalités de zone de destination en utilisant plusieurs environnements. Un exemple courant est celui d’une organisation d’environnement de test (sandbox) chargée de développer et de tester des modifications apportées à une zone de destination basée sur [AWS Control Tower](https://aws.amazon.com/controltower/), qui inclut [AWS IAM Identity Center](https://aws.amazon.com/iam/identity-center/) et des politiques telles que les [politiques de contrôle des services (SCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html). Tous ces éléments peuvent avoir un impact significatif sur l’accès aux Comptes AWS et leur fonctionnement dans la zone de destination. 

1.  En plus de ces services, vos équipes étendent les capacités des zones de destination avec des solutions publiées par AWS et les partenaires AWS ou des solutions personnalisées développées au sein de votre organisation. Les exemples de solutions publiées par AWS incluent [Configurations personnalisées d’AWS Control Tower (CfCT)](https://aws.amazon.com/solutions/implementations/customizations-for-aws-control-tower/) et [AWS Control Tower Account Factory pour Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html). 

1.  Votre organisation applique les mêmes principes en matière de test, de promotion du code et de modification des politiques pour la zone de destination via les environnements sur le chemin de la production. Cette stratégie offre un environnement de zone de destination stable et sécurisé à vos équipes chargées des applications et des charges de travail. 

 **Anti-modèles courants :** 
+  Vous effectuez un développement dans un environnement de développement partagé et un autre développeur remplace vos modifications de code. 
+  Les contrôles de sécurité restrictifs sur votre environnement de développement partagé vous empêchent d’expérimenter de nouveaux services et fonctionnalités. 
+  Vous effectuez des tests de charge sur vos systèmes de production et provoquez une panne pour vos utilisateurs. 
+  Une erreur critique entraînant une perte de données s’est produite en production. Dans votre environnement de production, vous essayez de recréer les conditions qui ont conduit à la perte de données afin de pouvoir identifier comment elle s’est produite et empêcher qu’elle ne se reproduise. Pour éviter toute perte de données supplémentaire pendant les tests, vous devez rendre l’application indisponible aux utilisateurs. 
+  Vous explorez un service multilocataire et n’êtes pas en mesure de répondre à la demande d’un client pour un environnement dédié. 
+  Il se peut que vous ne réalisiez pas toujours des tests, mais lorsque vous le faites, vous procédez dans votre environnement de production. 
+  Vous pensez que la simplicité d’un environnement unique l’emporte sur la portée de l’impact des modifications au sein de l’environnement. 
+  Vous améliorez une fonctionnalité clé de la zone de destination, mais cette modification réduit la capacité de votre équipe à vendre des comptes pour de nouveaux projets ou pour vos charges de travail existantes. 
+  Vous appliquez de nouveaux contrôles à vos Comptes AWS, mais la modification a un impact sur la capacité de votre équipe chargée des charges de travail à déployer des modifications dans leurs Comptes AWS. 

 **Avantages liés au respect de cette bonne pratique :** lorsque vous déployez plusieurs environnements, vous pouvez prendre en charge simultanément plusieurs environnements de développement, de test et de production sans créer de conflits entre les développeurs ou les communautés d’utilisateurs. Pour les fonctionnalités complexes telles que les zones de destination, cela réduit considérablement le risque de modifications, simplifie le processus d’amélioration et réduit le risque de mises à jour critiques de l’environnement. Les organisations qui utilisent des zones de destination tirent naturellement parti des comptes multiples dans leur environnement AWS, avec les configurations de structure de compte, de gouvernance, de réseau et de sécurité. Au fil du temps, à mesure que votre entreprise grandit, la zone de destination peut évoluer pour sécuriser et organiser vos charges de travail et vos ressources. 

 **Niveau d’exposition au risque si cette bonne pratique n’est pas respectée :** moyen 

## Directives d’implémentation
<a name="implementation-guidance"></a>

 Utilisez plusieurs environnements et fournissez aux développeurs des environnements de test (sandbox) avec des contrôles réduits au minimum pour faciliter l’expérimentation. Fournissez des environnements de développement individuels pour permettre le travail en parallèle, ce qui augmente l’agilité du développement. Mettez en œuvre davantage de contrôles rigoureux dans les environnements proches de la production pour offrir aux développeurs la liberté d’innover. Utilisez l’infrastructure en tant que code et les systèmes de gestion de la configuration pour déployer des environnements configurés de manière cohérente par rapport aux contrôles de production pour veiller au bon fonctionnement des systèmes lorsqu’ils sont déployés. Lorsque les environnements ne sont pas en cours d’utilisation, désactivez-les pour éviter les coûts associés à des ressources inutilisées (par exemple, les systèmes de développement en soirée et les week-ends). Déployez des environnements équivalents à la production lors des tests de charge pour accroître les résultats valides. 

 Les équipes chargées de l’ingénierie des plateformes, de la mise en réseau et des opérations de sécurité gèrent souvent les capacités au niveau de l’organisation avec des exigences distinctes. La séparation des comptes ne suffit pas à fournir et à maintenir des environnements distincts pour l’expérimentation, le développement et les tests. Dans ce type de cas, créez des instances distinctes d’AWS Organizations. 

## Ressources
<a name="resources"></a>

 **Documents connexes :** 
+ [Instance Scheduler sur AWS](https://aws.amazon.com/solutions/implementations/instance-scheduler-on-aws/)
+  [Présentation de AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 
+ [ Organisation de votre environnement AWS à l’aide de plusieurs comptes - Organisations multiples - Test des modifications apportées à votre environnement AWS global ](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/multiple-organizations.html#test-changes-to-your-overall-aws-environment)
+ [Guide AWS Control Tower](https://catalog.workshops.aws/control-tower)

# OPS05-BP09 Procéder à des modifications fréquentes, mineures et réversibles
<a name="ops_dev_integ_freq_sm_rev_chg"></a>

 Les modifications fréquentes, légères et réversibles limitent la portée et l’impact d’une modification. Lorsqu’elles sont utilisées conjointement avec des systèmes de gestion des modifications, des systèmes de gestion de configuration et des systèmes de construction et de livraison, les modifications fréquentes, mineures et réversibles limitent la portée et l’impact d’une modification. Cela se traduit par une résolution plus efficace des problèmes et par des corrections plus rapides avec la possibilité d’annuler les modifications effectuées. 

 **Anti-modèles courants :** 
+  Vous déployez une nouvelle version de votre application tous les trimestres avec une fenêtre de modification qui signifie qu’un service principal est désactivé. 
+  Vous modifiez fréquemment le schéma de votre base de données sans suivre les modifications apportées à vos systèmes de gestion. 
+  Vous effectuez des mises à jour manuelles sur place, en remplaçant les installations et les configurations existantes, sans aucun plan de restauration clair. 

 **Avantages de l’établissement de cette bonne pratique :** les efforts de développement sont plus rapides en déployant fréquemment de petites modifications. Lorsque les changements sont minimes, il est beaucoup plus facile d’identifier s’ils ont des conséquences inattendues et ils sont plus faciles à annuler. Lorsque les changements sont réversibles, les risques de mise en œuvre d’une modification sont minimes, car la récupération est simplifiée. Le processus de modification présente un risque réduit et l’impact de l’échec d’une modification est réduit. 

 **Niveau d’exposition au risque si cette bonne pratique n’est pas respectée :** faible 

## Directives d’implémentation
<a name="implementation-guidance"></a>

 Ayez recours à des modifications fréquentes, légères et réversibles pour limiter leur portée et leur impact. Cela facilite la résolution des problèmes, contribue à accélérer les corrections et offre la possibilité d’annuler une modification. Cela augmente également la vitesse à laquelle vous pouvez apporter de la valeur à votre entreprise. 

## Ressources
<a name="resources"></a>

 **Bonnes pratiques associées :** 
+  [OPS05-BP03 Utilisation de systèmes de gestion de la configuration](ops_dev_integ_conf_mgmt_sys.md) 
+  [OPS05-BP04 Utiliser des systèmes de gestion du développement et du déploiement](ops_dev_integ_build_mgmt_sys.md) 
+  [OPS06-BP04 Automatiser les tests et les annulations](ops_mit_deploy_risks_auto_testing_and_rollback.md) 

 **Documents connexes :** 
+ [Implémentation de microservices sur AWS](https://docs.aws.amazon.com/whitepapers/latest/microservices-on-aws/microservices-on-aws.html)
+ [Microservices – Observabilité](https://docs.aws.amazon.com/whitepapers/latest/microservices-on-aws/observability.html)

# OPS05-BP10 Automatisation complète de l’intégration et du déploiement
<a name="ops_dev_integ_auto_integ_deploy"></a>

 Automatisez la création, le déploiement et le test de la charge de travail. Cela permet de réduire les erreurs découlant des processus manuels, ainsi que les efforts nécessaires au déploiement des modifications. 

 Appliquez des métadonnées à l’aide des [balises de ressource](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) et de [Groupes de ressources AWS](https://docs.aws.amazon.com/ARG/latest/APIReference/Welcome.html) en suivant une [stratégie de balisage](https://aws.amazon.com/answers/account-management/aws-tagging-strategies/) cohérente pour permettre l’identification de vos ressources. Balisez vos ressources pour l’organisation, la comptabilité analytique, les contrôles d’accès et le ciblage de l’exécution des activités d’opérations automatisées. 

 **Résultat escompté :** les développeurs utilisent des outils pour fournir du code et le promouvoir jusqu’à la production. Les développeurs n’ont pas besoin de se connecter à la AWS Management Console pour fournir des mises à jour. Il existe une piste d’audit complète des modifications et de la configuration, répondant aux besoins de gouvernance et de conformité. Les processus sont reproductibles et standardisés entre les équipes. Les développeurs sont libres de se concentrer sur le développement et les envois de code, ce qui augmente la productivité. 

 **Anti-modèles courants :** 
+  Vendredi, vous avez fini de créer le code de votre branche de fonctionnalité. Lundi, après avoir exécuté vos scripts de test de la qualité du code et chacun de vos scripts de tests unitaires, vous vérifiez votre code pour la prochaine version prévue. 
+  Vous êtes chargé de coder un correctif pour un problème critique affectant un grand nombre de clients en production. Après avoir testé le correctif, vous validez votre code et envoyez un e-mail à l’équipe de gestion des modifications pour demander l’autorisation de le déployer en production. 
+  En tant que développeur, vous vous connectez à la AWS Management Console pour créer un environnement de développement à l’aide de méthodes et de systèmes non standard. 

 **Avantages liés au respect de cette bonne pratique :** en mettant en œuvre des systèmes automatisés de gestion de la création et du déploiement, vous réduisez les erreurs causées par les processus manuels et diminuez l’effort de déploiement des changements, ce qui permet aux membres de votre équipe de se concentrer sur la création de valeur ajoutée. Vous accélérez la vitesse de livraison au fur et à mesure que vous progressez jusqu’à la production. 

 **Niveau d’exposition au risque si cette bonne pratique n’est pas respectée :** bas 

## Directives d’implémentation
<a name="implementation-guidance"></a>

 Utilisez des systèmes de gestion du développement et du déploiement afin de suivre et de mettre en œuvre des modifications, de réduire les erreurs causées par les processus manuels et de réduire le niveau d’efforts. Automatisez entièrement le pipeline d’intégration et de déploiement à partir du code d’enregistrement et par le biais du développement, des tests, du déploiement et de la validation. Cela permet de raccourcir les délais, d’augmenter la fréquence des modifications, de réduire le niveau d’effort, d’accélérer la mise sur le marché, d’augmenter la productivité et de renforcer la sécurité de votre code jusqu’à la production. 

## Ressources
<a name="resources"></a>

 **Bonnes pratiques associées :** 
+  [OPS05-BP03 Utilisation de systèmes de gestion de la configuration](ops_dev_integ_conf_mgmt_sys.md) 
+  [OPS05-BP04 Utiliser des systèmes de gestion du développement et du déploiement](ops_dev_integ_build_mgmt_sys.md) 

 **Documents connexes :** 
+  [Présentation de AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
+  [Présentation de AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 

 **Vidéos connexes :** 
+ [AWS re:Invent 2022 - AWS Well-Architected best practices for DevOps on AWS](https://youtu.be/hfXokRAyorA)