REL08-BP04 Déploiement à l'aide d'une infrastructure immuable - AWS Framework Well-Architected

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

REL08-BP04 Déploiement à l'aide d'une infrastructure immuable

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.

Suivez une stratégie de déploiement d’infrastructure immuable pour améliorer la fiabilité, la cohérence et la reproductibilité de vos déploiements de charges de travail.

Résultat souhaité : avec une infrastructure immuable, aucune modification sur place n’est autorisée pour exécuter les ressources de l’infrastructure dans le cadre d’une charge de travail. Lorsqu’une modification est nécessaire, un nouvel ensemble de ressources d’infrastructure contenant toutes les modifications nécessaires est déployé parallèlement à vos ressources existantes. Ce déploiement est validé automatiquement et, en cas de succès, le trafic est progressivement transféré vers ce nouvel ensemble de ressources.

Cette stratégie de déploiement s’applique notamment aux mises à jour logicielles, aux correctifs de sécurité, aux modifications de l’infrastructure, ainsi qu’aux mises à jour de la configuration et des applications.

Anti-modèles courants :

  • Modifications sur place des ressources d’infrastructure en cours d’exécution.

Avantages liés au respect de cette bonne pratique :

  • Cohérence accrue entre les environnements : comme il n’existe aucune différence dans les ressources d’infrastructure entre les environnements, la cohérence est améliorée et les tests simplifiés.

  • Réduction des dérives de configuration : en remplaçant fréquemment les ressources d’infrastructure à partir d’une configuration de base connue et contrôlée par les versions, l’infrastructure est réinitialisée à un état connu, testé et fiable, ce qui évite les dérives de configuration.

  • Déploiements atomiques fiables : les déploiements se terminent avec succès ou rien ne change, ce qui améliore la cohérence et la fiabilité du processus de déploiement.

  • 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 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.

  • Position de sécurité améliorée : en interdisant les modifications de l'infrastructure, les mécanismes d'accès à distance (tels queSSH) peuvent être désactivés. Vous pouvez ainsi réduire les vecteurs d’attaque tout en renforçant la sécurité de votre organisation.

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

Directives d’implémentation

Automation

Lors de la définition d’une stratégie de déploiement d’infrastructure immuable, il est recommandé de recourir autant que possible à l’automatisation afin d’accroître la reproductibilité et de minimiser le risque d’erreur humaine. Pour plus de détails, voir REL08-BP05 Déployer les modifications grâce à l'automatisation et Automatisation de déploiements sûrs et sans intervention directe.

Avec l’infrastructure en tant que code (IaC), les étapes de provisionnement, d’orchestration et de déploiement de l’infrastructure sont définies de manière programmatique, descriptive et déclarative et stockées dans un système de contrôle de source. L’utilisation de l’infrastructure en tant que code simplifie l’automatisation du déploiement de l’infrastructure et contribue à garantir l’immuabilité de cette dernière.

Modèles de déploiement

Lorsqu’une modification de la charge de travail est requise, la stratégie de déploiement d’infrastructure immuable impose le déploiement d’un nouvel ensemble de ressources d’infrastructure comprenant toutes les modifications nécessaires. Il est important que ce nouvel ensemble de ressources suive un schéma de déploiement qui minimise l’impact sur les utilisateurs. Il existe deux stratégies principales pour ce type de déploiement :

Déploiement Canary : 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 Canary). 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 continuer à le déployer à la vitesse souhaitée, tout en surveillant les modifications pour détecter les erreurs, jusqu'à ce que le déploiement soit complet. AWS CodeDeploy peut être configuré avec une configuration de déploiement qui permet un déploiement Canary.

Déploiement bleu/vert : semblable au déploiement Canary 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 transféré en une seule fois, mais vous pouvez également utiliser des fractions de votre trafic vers chaque version pour accélérer l'adoption de la nouvelle version en utilisant les fonctionnalités de DNS routage pondéré d'Amazon Route 53. AWS CodeDeploy et AWS Elastic Beanstalkpeut être configuré 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

Figure 8 : Déploiement bleu/vert avec AWS Elastic Beanstalk et Amazon Route 53

Détection des écarts

L’écart est défini comme tout changement qui fait qu’une ressource d’infrastructure présente un état ou une configuration différent de ce qui est attendu. Toute modification de configuration non gérée va à l’encontre de la notion d’infrastructure immuable et doit être détectée et corrigée afin de garantir la mise en œuvre d’une infrastructure immuable.

Étapes d’implémentation

  • Interdisez la modification sur place des ressources d’infrastructure en cours d’exécution.

    • Vous pouvez utiliser AWS Identity and Access Management (IAM) pour spécifier qui ou quoi peut accéder aux services et aux ressources AWS, gérer de manière centralisée les autorisations détaillées et analyser les accès pour affiner les autorisations entre elles. AWS

  • Automatisez le déploiement des ressources d’infrastructure pour améliorer la reproductibilité et minimiser le risque d’erreur humaine.

    • Comme décrit dans l'introduction du AWS livre blanc, l'automatisation est la pierre angulaire des AWS services et est prise en charge en interne pour tous les services, fonctionnalités et offres. DevOps

    • La précuisson de votre Amazon Machine Image (AMI) peut accélérer son lancement. EC2Image Builder est un AWS service entièrement géré qui vous aide à automatiser la création, la maintenance, la validation, le partage et le déploiement de solutions personnalisées, sécurisées et personnalisées pour up-to-date Linux ou WindowsAMI.

    • Les services qui prennent en charge l’automatisation incluent :

      • AWS Elastic Beanstalkest un service permettant de déployer et de faire évoluer rapidement des applications Web développées avec Java,. NET, Node.jsPHP, Python, Ruby, Go et Docker sur des serveurs courants tels qu'ApacheNGINX, Passenger etIIS.

      • AWS Protonaide les équipes de plateforme à connecter et à coordonner les différents outils dont vos équipes de développement ont besoin pour le provisionnement de l'infrastructure, les déploiements de code, la surveillance et les mises à jour. AWS Proton permet une infrastructure automatisée sous forme de provisionnement de code et de déploiement d'applications sans serveur et basées sur des conteneurs.

    • L'exploitation de l'infrastructure sous forme de code facilite l'automatisation du déploiement de l'infrastructure et contribue à garantir l'immuabilité de l'infrastructure. AWS fournit des services qui permettent la création, le déploiement et la maintenance de l'infrastructure de manière programmatique, descriptive et déclarative.

      • AWS CloudFormationaide les développeurs à créer AWS des ressources de manière ordonnée et prévisible. Les ressources sont écrites dans des fichiers texte en utilisant le YAML format JSON or. Les modèles nécessitent une syntaxe et une structure spécifiques, qui dépendent des types de ressources créées et gérées. Vous créez vos ressources dans JSON ou YAML avec n'importe quel éditeur de code, par exemple AWS Cloud9, vous les intégrez dans un système de contrôle de version, puis CloudFormation vous créez les services spécifiés de manière sûre et reproductible.

      • AWS Serverless Application Model (AWS SAM) est un framework open source sur lequel vous pouvez créer des applications sans serveur. AWS AWS SAM s'intègre à d'autres AWS services et constitue une extension de AWS CloudFormation.

      • AWS Cloud Development Kit (AWS CDK) est un cadre de développement logiciel open source que vous pouvez utiliser pour modéliser et allouer vos ressources d’applications cloud à l’aide de langages de programmation familiers. Vous pouvez l'utiliser AWS CDK pour modéliser l'infrastructure d'applications à l'aide de Python TypeScript, Java et. NET. AWS CDK Utilisations AWS CloudFormation en arrière-plan pour fournir des ressources de manière sûre et reproductible.

      • AWS Cloud Control APIintroduit un ensemble commun de fonctionnalités Create, Read, Update, Delete et List (CRUDL) APIs pour aider les développeurs à gérer leur infrastructure cloud de manière simple et cohérente. Le Cloud Control API Common APIs permet aux développeurs de gérer de manière uniforme le cycle de vie des services tiers AWS et des services tiers.

  • Mettez en œuvre des modèles de déploiement qui minimisent l’impact sur les utilisateurs.

  • Détectez les écarts de configuration ou d’état. Pour plus de détails, consultez Détection de modifications non gérées de la configuration des piles et des ressources.

Ressources

Bonnes pratiques associées :

Documents connexes :

Vidéos connexes :