REL 8: Comment implémenter les modifications ?
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.
Ressources
AWS Summit 2019: CI/CD on AWS
What Is AWS CodePipeline?
What Is CodeDeploy?
Overview of a Blue/Green Deployment
Deploying Serverless Applications Gradually
The Amazon Builders' Library: Ensuring rollback safety during deployments
The Amazon Builders' Library: Going faster with continuous delivery
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
CanaryRelease
AWS Marketplace: products that can be used to automate your deployments
APN Partner: partners that can help you create automated deployment solutions
Bonnes pratiques:
-
Utiliser des runbooks pour les activités standard telles que le déploiement: Les runbooks sont les étapes prédéfinies utilisées pour obtenir des résultats spécifiques. 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 ou de la modification du DNS.
-
Intégrer 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é.
-
Intégrer les tests de résilience dans le cadre de votre déploiement: Les tests de résilience (dans le cadre de l'ingénierie du chaos) sont exécutés dans le cadre du pipeline de déploiement automatisé dans un environnement préproduction.
-
Déploiement à l'aide d'une infrastructure immuable: Il s'agit d'un modèle qui exige qu'aucune mise à jour, application de correctifs de sécurité ou qu'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.
-
Déployer les modifications avec à l'automatisation: Les déploiements et l'application de correctifs sont automatisés pour éliminer l'impact négatif.
Plan d'amélioration
Utiliser des runbooks pour les activités standard telles que le déploiement
AWS Well-Architected Framework: Concepts: Runbook
- Utilisez AWS CloudFormation ou un fournisseur tiers de confiance pour définir votre
infrastructure.
What is AWS CloudFormation? - Créez des modèles qui sont singuliers et découplés, en utilisant de bons principes
de conception de logiciels.
- Déterminer les autorisations, les modèles et les responsables de l'implémentation
Controlling access with AWS Identity and Access Management - Utilisez le contrôle de code source, comme AWS CodeCommit ou un outil tiers de confiance,
pour le contrôle de version.
What is AWS CodeCommit?
- Déterminer les autorisations, les modèles et les responsables de l'implémentation
Intégrer les tests fonctionnels dans le cadre de votre déploiement
- 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 Adds Support for Unit and Custom Integration Testing with AWS CodeBuild - Utilisez les solutions AWS Marketplace pour exécuter des tests automatisés dans le
cadre de votre pipeline de distribution de logiciels.
Software test automation
Intégrer les tests de résilience dans le cadre de votre déploiement
- 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.
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3 - Ces tests peuvent être exécutés régulièrement dans des environnements de préproduction dans des pipelines de déploiement automatisés.
- Elles doivent également être exécutées en production, dans le cadre des jours de jeu planifiés.
- 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.
Principles of Chaos Engineering
Déploiement à l'aide d'une infrastructure immuable
Overview of a Blue/Green Deployment
Deploying Serverless Applications Gradually
CanaryRelease
Déployer les modifications avec à l'automatisation
The Amazon Builders' Library: Ensuring rollback safety during deployments
The Amazon 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 qu'il s'active lorsqu'une modification est apportée à
votre référentiel de code.
What is AWS CodePipeline? - Utilisez Amazon Simple Notification Service (SNS) et Amazon Simple Email Service (SES)
pour envoyer des notifications sur les problèmes dans le pipeline ou intégrer un outil
de chat comme Amazon Chime.
What is Amazon Simple Notification Service?
What is Amazon SES?
What is Amazon Chime?
Automate chat messages with webhooks.
- Configurez le pipeline pour qu'il s'active lorsqu'une modification est apportée à
votre référentiel de code.