

# REL 8  Comment implémenter les modifications ?
<a name="w2aac19b9b9b9"></a>

Des modifications contrôlées sont nécessaires pour au moins deux raisons : déployer de nouvelles fonctionnalités et s'assurer que les charges de travail et l'environnement d'exploitation fonctionnent avec des logiciels connus et peuvent être corrigés ou remplacés de manière prévisible. Si les modifications ne sont pas contrôlées, il est difficile de prédire leur effet ou de résoudre les problèmes qui en découlent. 

**Topics**
+ [REL08-BP01 Utiliser des runbooks pour les activités standard telles que le déploiement](rel_tracking_change_management_planned_changemgmt.md)
+ [REL08-BP02 Intégrer les tests fonctionnels dans le cadre de votre déploiement](rel_tracking_change_management_functional_testing.md)
+ [REL08-BP03 Intégrer les tests de résilience dans le cadre de votre déploiement](rel_tracking_change_management_resiliency_testing.md)
+ [REL08-BP04 Effectuer le déploiement à l'aide d'une infrastructure immuable](rel_tracking_change_management_immutable_infrastructure.md)
+ [REL08-BP05 Déployer les modifications avec l'automatisation](rel_tracking_change_management_automated_changemgmt.md)

# REL08-BP01 Utiliser des runbooks pour les activités standard telles que le déploiement
<a name="rel_tracking_change_management_planned_changemgmt"></a>

 Les runbooks sont les procédures prédéfinies destinées à parvenir à un résultat spécifique. Utilisez des runbooks pour effectuer des tâches manuelles ou automatiques standard. Il peut s'agir du déploiement d'une charge de travail, de l'application de correctifs à une charge de travail ou de la modification du DNS. 

 Par exemple, mettez en place des processus [pour assurer la sécurité des restaurations pendant les déploiements](https://aws.amazon.com/builders-library/ensuring-rollback-safety-during-deployments). Pour garantir la fiabilité d’un service, il est essentiel de s'assurer que vous pouvez restaurer un déploiement sans interruption pour vos clients. 

 Concernant les procédures de runbook, commencez par un processus manuel efficace valide, mettez-le en œuvre dans le code et, le cas échéant, déclenchez son exécution automatique. 

 Même pour les charges de travail sophistiquées hautement automatisées, les runbooks restent utiles pour [exécuter des tests de simulation de pannes](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/test-reliability.html#GameDays) ou répondre à des exigences rigoureuses en matière de rapports et d'audit. 

 Notez que les playbooks sont utilisés en réponse à des incidents spécifiques et que les runbooks le sont pour obtenir des résultats spécifiques. En règle générale, les runbooks sont destinés aux activités de routine, tandis que les playbooks sont utilisés pour répondre à des événements non réguliers. 

 **Anti-modèles courants :** 
+  Exécution de modifications imprévues de la configuration en production. 
+  Ignorer les étapes de votre plan afin d'accélérer le déploiement, ce qui entraîne un échec du déploiement. 
+  Effectuez des modifications sans tester l'annulation de la modification. 

 **Avantages liés au respect de cette bonne pratique :** Une planification efficace des modifications augmente votre capacité à exécuter correctement la modification, car vous êtes conscient de tous les systèmes concernés. Vous gagnez en confiance si vous réussissez à valider des modifications que vous apportez aux environnements de test. 

 **Niveau de risque exposé si cette bonne pratique n'est pas respectée :** Débit 

## Directives d'implémentation
<a name="implementation-guidance"></a>
+  Obtenez des réponses cohérentes et rapides à des événements bien compris en documentant les procédures dans des runbooks. 
  +  [Concepts AWS Well-Architected Framework : runbook](https://wa.aws.amazon.com/wat.concept.runbook.en.html) 
+  Utilisez le principe de l'infrastructure en tant que code pour définir votre infrastructure. En ayant recours à AWS CloudFormation ou à un tiers de confiance pour définir votre infrastructure, vous pouvez utiliser le contrôle de version et suivre les modifications apportées à la version du logiciel. 
  +  Utilisez AWS CloudFormation ou un fournisseur tiers de confiance pour définir votre infrastructure. 
    +  [Qu'est-ce qu'AWS CloudFormation ?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 
  +  Créez des modèles qui sont singuliers et découplés, en utilisant de bons principes de conception de logiciels. 
    +  Déterminez les autorisations, les modèles et les responsables de l'implémentation 
      + [ Contrôle de l'accès avec Gestion des identités et des accès AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html)
    +  Utilisez le contrôle de code source, comme AWS CodeCommit ou un outil tiers de confiance, pour le contrôle de version. 
      +  [Qu'est-ce qu'AWS CodeCommit ?](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) 

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

 **Documents connexes :** 
+  [Partenaire APN : partenaires pouvant vous aider à créer des solutions de déploiement automatisées](https://aws.amazon.com/partners/find/results/?keyword=devops) 
+  [AWS Marketplace : produits pouvant être utilisés pour automatiser vos déploiements](https://aws.amazon.com/marketplace/search/results?searchTerms=DevOps) 
+  [Concepts AWS Well-Architected Framework : runbook](https://wa.aws.amazon.com/wat.concept.runbook.en.html) 
+  [Qu'est-ce qu'AWS CloudFormation ?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 
+  [Qu'est-ce qu'AWS CodeCommit ?](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) 

   **Exemples connexes :** 
+  [Automatisation des opérations avec les playbooks et les runbooks](https://wellarchitectedlabs.com/operational-excellence/200_labs/200_automating_operations_with_playbooks_and_runbooks/) 

# REL08-BP02 Intégrer les tests fonctionnels dans le cadre de votre déploiement
<a name="rel_tracking_change_management_functional_testing"></a>

 Les tests fonctionnels sont exécutés dans le cadre du déploiement automatisé. Si les critères de réussite ne sont pas respectés, le pipeline est arrêté ou annulé. 

 Ces tests sont exécutés dans un environnement de préproduction, qui est mis en place avant la production dans le pipeline. Idéalement, cela s'effectue dans le cadre d'un pipeline de déploiement. 

 **Niveau de risque exposé si cette bonne pratique n'est pas respectée :** Débit 

## Directives d'implémentation
<a name="implementation-guidance"></a>
+  Intégrez les tests fonctionnels dans le cadre de votre déploiement. Les tests fonctionnels sont exécutés dans le cadre du déploiement automatisé. Si les critères de réussite ne sont pas respectés, le pipeline est arrêté ou annulé. 
  +  Appelez AWS CodeBuild lors de « l'action de test » de vos pipelines de publication de logiciels modélisés dans AWS CodePipeline. Cette fonctionnalité vous permet d'exécuter facilement divers tests sur votre code, en particulier des tests unitaires, des analyses de code statique et des tests d'intégration. 
    +  [AWS CodePipeline ajoute la prise en charge des tests unitaires et des tests d'intégration personnalisés avec AWS CodeBuild](https://aws.amazon.com/about-aws/whats-new/2017/03/aws-codepipeline-adds-support-for-unit-testing/) 
  +  Utilisez les solutions AWS Marketplace pour exécuter des tests automatisés dans le cadre de votre pipeline de distribution de logiciels. 
    +  [Automatisation des tests logiciels](https://aws.amazon.com/marketplace/solutions/devops/software-test-automation) 

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

 **Documents connexes :** 
+  [AWS CodePipeline ajoute la prise en charge des tests unitaires et des tests d'intégration personnalisés avec AWS CodeBuild](https://aws.amazon.com/about-aws/whats-new/2017/03/aws-codepipeline-adds-support-for-unit-testing/) 
+  [Automatisation des tests logiciels](https://aws.amazon.com/marketplace/solutions/devops/software-test-automation) 
+  [Qu'est-ce que AWS CodePipeline ?](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 

# REL08-BP03 Intégrer les tests de résilience dans le cadre de votre déploiement
<a name="rel_tracking_change_management_resiliency_testing"></a>

 Les tests de résilience (basés sur les [principes de l'ingénierie du chaos](https://principlesofchaos.org/)) sont exécutés dans le cadre du pipeline de déploiement automatisé dans un environnement de préproduction. 

 Ces tests sont mis en place et exécutés dans le pipeline dans un environnement de préproduction. Ils doivent également être exécutés en production, mais dans le cadre des [https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/test-reliability.html#GameDays](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/test-reliability.html#GameDays). 

 **Niveau de risque exposé si cette bonne pratique n'est pas respectée :** Moyenne entreprise 

## Directives d'implémentation
<a name="implementation-guidance"></a>
+  Intégrez les tests de résilience dans le cadre de votre déploiement. Utilisez l'ingénierie du chaos qui est la discipline d'expérimentation d'une charge de travail afin d'améliorer votre confiance en sa capacité à supporter des conditions instables en production. 
  +  Les tests de résilience injectent des défaillances ou une dégradation des ressources pour vérifier que votre charge de travail répond avec le niveau de résilience prévue à la conception. 
    +  [Atelier Well-Architected : niveau 300 : test de la résilience d’EC2 RDS et de S3](https://wellarchitectedlabs.com/Reliability/300_Testing_for_Resiliency_of_EC2_RDS_and_S3/README.html) 
  +  Ces tests peuvent être exécutés régulièrement dans des environnements de préproduction dans des pipelines de déploiement automatisés. 
  +  Ils doivent également être exécutés en production, dans le cadre des tests de simulation de panne. 
  +  Si vous utilisez les principes de l'ingénierie du chaos, proposez des hypothèses sur les performances de votre charge de travail dans différentes situations, puis testez vos hypothèses à l'aide de tests de résilience. 
    +  [Principes de l'ingénierie du chaos](https://principlesofchaos.org/) 

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

 **Documents connexes :** 
+  [Principes de l'ingénierie du chaos](https://principlesofchaos.org/) 
+  [Qu'est qu'AWS Fault Injection Simulator (AWS FIS) ?](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html) 

 **Exemples connexes :** 
+  [Atelier Well-Architected : niveau 300 : test de la résilience d’EC2 RDS et de S3](https://wellarchitectedlabs.com/Reliability/300_Testing_for_Resiliency_of_EC2_RDS_and_S3/README.html) 

# REL08-BP04 Effectuer le déploiement à l'aide d'une infrastructure immuable
<a name="rel_tracking_change_management_immutable_infrastructure"></a>

 Une infrastructure immuable est un modèle qui exige qu'aucune mise à jour, aucune application de correctifs de sécurité ni aucun changement de configuration ne se produise sur place sur les charges de travail de production. Lorsqu'un changement est nécessaire, l'architecture est intégrée à la nouvelle infrastructure et déployée en production. 

 L'implémentation la plus courante du paradigme d'infrastructure immuable est le ***serveur immuable***. Cela signifie que si un serveur a besoin d'une mise à jour ou d'un correctif, de nouveaux serveurs sont déployés au lieu de mettre à jour ceux déjà utilisés. Ainsi, au lieu de se connecter au serveur via le protocole SSH et de mettre à jour la version logicielle, chaque modification de l'application commence par une transmission logicielle au référentiel de code, par exemple, git push. Les modifications n’étant pas autorisées dans une infrastructure immuable, vous pouvez être sûr de l'état du système déployé. Les infrastructures immuables sont, par nature, plus cohérentes, plus fiables et plus prévisibles. De plus, elles simplifient de nombreux aspects du développement et du fonctionnement des logiciels. 

 Utilisez un déploiement Canari ou bleu/vert lors du déploiement d'applications dans des infrastructures immuables. 

 [https://martinfowler.com/bliki/CanaryRelease.html](https://martinfowler.com/bliki/CanaryRelease.html) consiste à diriger un petit nombre de vos clients vers la nouvelle version, généralement exécutée sur une seule instance de service (la version Canari). Examinez ensuite en profondeur les modifications de comportement ou les erreurs générées. Vous pouvez supprimer le trafic du Canary si vous rencontrez des problèmes critiques et faire basculer les utilisateurs vers la version précédente. Si le déploiement est réussi, vous pouvez le continuer à la vitesse souhaitée, tout en surveillant les modifications (pour éviter les erreurs), jusqu’à ce qu’il soit terminé. AWS CodeDeploy peut être configuré avec une configuration de déploiement qui permettra un déploiement Canari. 

 [https://martinfowler.com/bliki/BlueGreenDeployment.html](https://martinfowler.com/bliki/BlueGreenDeployment.html) est semblable au déploiement Canari, si ce n'est qu'un parc complet de l'application est déployé en parallèle. Vos déploiements alternent entre deux piles (bleu et vert). Une fois encore, vous pouvez faire basculer le trafic vers la nouvelle version et revenir à l'ancienne si vous rencontrez des problèmes lors du déploiement. Généralement, tout le trafic est commuté en même temps. Vous pouvez toutefois également utiliser des fractions de votre trafic vers chaque version pour modifier l'adoption de la nouvelle version à l'aide des capacités de routage DNS pondéré d'Amazon Route 53. AWS CodeDeploy et AWS Elastic Beanstalk peuvent être configurés avec une configuration de déploiement qui permet un déploiement bleu/vert. 

![\[Diagramme illustrant un déploiement bleu/vert avec AWS Elastic Beanstalk et Amazon Route 53\]](http://docs.aws.amazon.com/fr_fr/wellarchitected/2022-03-31/framework/images/blue-green-deployment.png)


 Avantages d'une infrastructure immuable : 
+  **Réduction des dérives de configuration :** en remplaçant fréquemment les serveurs à partir d'une configuration de base connue et contrôlée par les versions, l'infrastructure est **réinitialisée** à un état connu, ce qui évite les dérives de configuration. 
+  **Déploiements simplifiés**: les déploiements sont simplifiés, car ils n'ont pas besoin de prendre en charge les mises à niveau. Les mises à niveau sont simplement de nouveaux déploiements. 
+  **Déploiements atomiques fiables :** les déploiements se terminent avec succès ou aucune modification n'est apportée. Le processus de déploiement est ainsi plus fiable. 
+  **Déploiements plus sûrs avec des processus de restauration et de récupération rapides :** les déploiements sont plus sûrs, car la version de travail précédente n'est pas modifiée. Vous pouvez la restaurer si des erreurs sont détectées. 
+  **Environnements de test et de débogage cohérents :** étant donné que tous les serveurs utilisent la même image, il n'y a pas de différence entre les environnements. Une version est déployée dans plusieurs environnements. Cela permet d’éviter les environnements incohérents tout en simplifiant les tests et le débogage. 
+  **Capacité de mise à l'échelle accrue :** la capacité de mise à l'échelle automatique est négligeable, car les serveurs utilisent une image de base tout en étant cohérents et répétables. 
+  **Chaîne d'outils simplifiée**: la chaîne d'outils est simplifiée. Vous pouvez en effet supprimer les outils de gestion de la configuration qui prennent en charge les mises à niveau des logiciels de production. Aucun outil ou agent supplémentaire n'est installé sur les serveurs. Les modifications sont apportées à l'image de base, testées et déployées. 
+  **Sécurité accrue :** en refusant toutes les modifications apportées aux serveurs, vous pouvez désactiver le protocole SSH sur les instances et supprimer les clés. Cela vous permet de réduire le vecteur d'attaque tout en améliorant la sécurité de votre organisation. 

 **Niveau de risque exposé si cette bonne pratique n'est pas respectée :** Moyenne entreprise 

## Directives d'implémentation
<a name="implementation-guidance"></a>
+  Effectuez le déploiement à l'aide d'une infrastructure immuable. Une infrastructure immuable est un modèle dans le cadre duquel aucune mise à jour, aucun correctif de sécurité ni aucune modification de configuration n'est effectué *sur place* sur les systèmes de production. Si un changement est nécessaire, une nouvelle version de l'architecture est créée et déployée en production. 
  +  [Présentation d'un déploiement bleu/vert](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html#welcome-deployment-overview-blue-green) 
  +  [Déploiement progressif d'applications sans serveur](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/automating-updates-to-serverless-apps.html) 
  +  [Infrastructure inaltérable : fiabilité, cohérence et confiance grâce à l'inaltérabilité](https://medium.com/@adhorn/immutable-infrastructure-21f6613e7a23) 
  +  [CanaryRelease](https://martinfowler.com/bliki/CanaryRelease.html) 

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

 **Documents connexes :** 
+  [CanaryRelease](https://martinfowler.com/bliki/CanaryRelease.html) 
+  [Déploiement progressif d'applications sans serveur](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/automating-updates-to-serverless-apps.html) 
+  [Infrastructure inaltérable : fiabilité, cohérence et confiance grâce à l'inaltérabilité](https://medium.com/@adhorn/immutable-infrastructure-21f6613e7a23) 
+  [Présentation d'un déploiement bleu/vert](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html#welcome-deployment-overview-blue-green) 
+  [L'Amazon Builders' Library : Garantir la sécurité des restaurations pendant les déploiements](https://aws.amazon.com/builders-library/ensuring-rollback-safety-during-deployments) 

# REL08-BP05 Déployer les modifications avec l'automatisation
<a name="rel_tracking_change_management_automated_changemgmt"></a>

 Les déploiements et l'application de correctifs sont automatisés pour éliminer l'impact négatif. 

 Les modifications apportées aux systèmes de production sont l'un des secteurs de risque les plus importants pour de nombreuses organisations. Nous considérons les déploiements comme un problème de premie ordre à résoudre, tout comme les problèmes opérationnels que le logiciel rencontre. Aujourd'hui, il convient d'appliquer l'automatisation dès que les opérations le permettent, y compris lors des tests et du déploiement de modifications, lors de l'ajout ou de la suppression de capacités et lors de la migration des données. AWS CodePipeline vous permet de gérer les étapes nécessaires à la libération de votre charge de travail. Cela englobe un état de déploiement utilisant AWS CodeDeploy pour automatiser le déploiement du code d'application sur les instances Amazon EC2, les instances sur site, les fonctions Lambda sans serveur ou les services Amazon ECS. 

**Recommandations**  
 Bien que les principes traditionnels suggèrent de garder les interventions humaines dans la boucle des procédures opérationnelles les plus complexes, nous vous conseillons justement d'automatiser ces mêmes procédures pour cette raison. 

 **Anti-modèles courants :** 
+  Modifications manuelles 
+  Saut des étapes de votre automatisation via les flux de travail d'urgence. 
+  Non suivi de vos plans. 

 **Avantages liés au respect de cette bonne pratique :** L'utilisation de l'automatisation pour déployer toutes les modifications élimine le risque d'introduction d'erreurs humaines et permet de tester avant de changer la production afin de s'assurer que vos plans sont suivis. 

 **Niveau de risque exposé si cette bonne pratique n'est pas respectée :** Moyenne entreprise 

## Directives d'implémentation
<a name="implementation-guidance"></a>
+  Automatisez votre pipeline de déploiement. Le déploiement des pipelines vous permet d'une part d'invoquer des tests automatisés et la détection des anomalies et, d'autre part, d'arrêter le pipeline à une certaine étape avant le déploiement en production ou de restaurer automatiquement l'environnement d'avant la modification. 
  +  [L'Amazon Builders' Library : Garantir la sécurité des restaurations pendant les déploiements](https://aws.amazon.com/builders-library/ensuring-rollback-safety-during-deployments) 
  +  [L'Amazon Builders' Library : Aller plus vite avec la distribution continue](https://aws.amazon.com/builders-library/going-faster-with-continuous-delivery/) 
    +  Utilisez AWS CodePipeline ou un produit tiers de confiance pour définir et exécuter vos pipelines. 
      +  Configurez le pipeline pour démarrer lorsqu'une modification est apportée à votre référentiel de code. 
        +  [Qu'est-ce qu'AWS CodePipeline ?](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 
      +  Utilisez Amazon Simple Notification Service (Amazon SNS) and Amazon Simple Email Service (Amazon SES) pour envoyer des notifications sur les problèmes dans le pipeline ou pour intégrer un outil de chat d'équipe, comme Amazon Chime. 
        +  [Qu'est-ce qu'Amazon Simple Notification Service ?](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) 
        +  [Qu'est-ce que Amazon SES ?](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/Welcome.html) 
        +  [Qu'est-ce qu'Amazon Chime ?](https://docs.aws.amazon.com/chime/latest/ug/what-is-chime.html) 
        +  [Automatisez les messages de chat avec les webhooks.](https://docs.aws.amazon.com/chime/latest/ug/webhooks.html) 

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

 **Documents connexes :** 
+  [Partenaire APN : partenaires pouvant vous aider à créer des solutions de déploiement automatisées](https://aws.amazon.com/partners/find/results/?keyword=devops) 
+  [AWS Marketplace : produits pouvant être utilisés pour automatiser vos déploiements](https://aws.amazon.com/marketplace/search/results?searchTerms=DevOps) 
+  [Automatisez les messages de chat avec les webhooks.](https://docs.aws.amazon.com/chime/latest/ug/webhooks.html) 
+  [L'Amazon Builders' Library : Garantir la sécurité des restaurations pendant les déploiements](https://aws.amazon.com/builders-library/ensuring-rollback-safety-during-deployments) 
+  [L'Amazon Builders' Library : Aller plus vite avec la distribution continue](https://aws.amazon.com/builders-library/going-faster-with-continuous-delivery/) 
+  [Qu'est-ce que AWS CodePipeline ?](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 
+  [Qu'est-ce que CodeDeploy ?](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 
+  [le gestionnaire de correctifs AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-patch.html) 
+  [Qu'est-ce que Amazon SES ?](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/Welcome.html) 
+  [Qu'est-ce qu'Amazon Simple Notification Service ?](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) 

 **Vidéos connexes :** 
+  [AWS Summit 2019: CI/CD on AWS](https://youtu.be/tQcF6SqWCoY) 