Amazon SAA-C03: Calcul, Auto Scaling et gestion des instances — Guide d'étude

Fait partie du AWS SAA-C03 — Guide d’étude complet. Entraînez-vous avec des réponses vérifiées dans le centre d’examens Amazon, ou passez des tests chronométrés sur ExamRoll.io.

Types d’instances EC2 et AMI

La sélection de la bonne famille d’instances EC2 est le fondement d’une couche de calcul bien architecturée, car la famille, la génération et la taille déterminent ensemble l’architecture CPU, le ratio mémoire/vCPU, la bande passante réseau et les accélérateurs disponibles. L’usage général (M6i, M7g, série T) convient aux tiers web équilibrés et aux charges de travail mixtes. Les instances optimisées pour le calcul (C7i, C7gn) sont adaptées aux simulations, à l’encodage, aux traitements par lots et aux frontaux web qui sont limités par le CPU. Les instances optimisées pour la mémoire (R7i, X2idn) ciblent les bases de données en mémoire et les caches. Les instances optimisées pour le stockage (I4i, D3) ciblent le NoSQL, HDFS et l’entreposage de données (data warehousing). Le calcul accéléré (P5, G5, Trn1, Inf) fournit des GPU ou des puces de ML. Les instances Graviton (suffixe g) offrent généralement un rapport prix/performance de 20 à 40 % supérieur pour les charges de travail à montée en charge horizontale (scale-out) qui se compilent sans problème pour ARM64.

La famille T est à capacité extensible (burstable) et utilise par défaut le mode standard, où les crédits CPU s’accumulent au repos et sont consommés lors des pics d’activité ; lorsque les crédits sont épuisés, la performance est limitée au niveau de base. Pour les charges de travail avec des pics imprévisibles — petits tiers web, dev/test, ou environnements Elastic Beanstalk soutenant un frontal à activité irrégulière — les instances T en mode illimité permettent à l’instance d’emprunter des crédits et de facturer une petite surtaxe par vCPU-heure de dépassement, évitant ainsi une limitation de performance visible par l’utilisateur. C’est pourquoi les problèmes de saturation brève du CPU dans les environnements Beanstalk sont généralement résolus en activant le mode illimité plutôt qu’en passant à une famille optimisée pour le calcul, plus coûteuse. Il est important de réserver la série T aux charges de travail réellement irrégulières avec une moyenne faible : une utilisation CPU soutenue en mode standard épuise les crédits en quelques minutes.

La mise à l’échelle verticale (passer à une taille supérieure au sein de la même famille) est limitée par la plus grande instance disponible, impose un temps d’arrêt pour le changement, introduit un point de défaillance unique (single point of failure) et ne peut pas répartir la charge de travail sur plusieurs Zones de disponibilité. Dès que la charge varie de manière significative, la mise à l’échelle horizontale avec un groupe Auto Scaling est la bonne solution.

Les AMI de référence (« Golden AMI ») intègrent le code applicatif, l’environnement d’exécution et les dépendances dans le snapshot racine, ce qui permet des lancements rapides et déterministes — un point essentiel lorsqu’un groupe Auto Scaling réagit à un pic de charge. Le bootstrapping via les données utilisateur (user-data) à chaque lancement ajoute des minutes de latence au pire moment possible.

Choix de stockage : Instance Store vs EBS, Snapshots et Fast Snapshot Restore

Les instances offrent deux substrats de stockage : le stockage d’instance (NVMe éphémère attaché à l’hôte physique) et Amazon EBS (stockage en mode bloc attaché au réseau). Le stockage d’instance offre la latence la plus faible possible, mais ses données sont détruites lors d’un arrêt, d’une mise en veille prolongée (hibernate), d’une terminaison ou d’une défaillance matérielle. Le considérer comme un stockage durable est une erreur courante et dangereuse — il ne convient que pour l’espace de travail temporaire (scratch space), les tampons, les caches ou les données répliquées, comme un nœud de données HDFS dont les répliques existent sur d’autres nœuds. Les données durables doivent être sur EBS, sauvegardées par des snapshots stockés dans S3.

Les snapshots sont incrémentiels et, une fois créés, indépendants. Ainsi, la restauration d’un snapshot sur un nouveau volume n’affecte jamais la source. La manière canonique de dupliquer un grand jeu de données de production dans un environnement de test est de créer un snapshot du volume source et de créer de nouveaux volumes à partir de ce snapshot. Cependant, les volumes restaurés à partir de snapshots chargent les blocs à la demande depuis S3 (lazy-loading) lors de la première lecture, ce qui provoque une latence d’E/S significative jusqu’à ce que chaque bloc soit hydraté. Ce même chargement à la demande affecte les nouvelles instances lancées à partir d’AMI dont les snapshots racines sont volumineux — elles semblent lentes pendant plusieurs minutes après leur lancement.

EBS Fast Snapshot Restore (FSR) élimine cette pénalité. Activez FSR sur le snapshot pour les Zones de disponibilité où le groupe ASG lance des instances, et les volumes créés à partir de celui-ci fourniront immédiatement leurs performances provisionnées complètes :

aws ec2 enable-fast-snapshot-restores \
  --availability-zones us-east-1a us-east-1b \
  --source-snapshot-ids snap-0123456789abcdef0

Ceci est essentiel lorsque les événements de montée en charge horizontale doivent ajouter de la capacité en quelques secondes plutôt qu’en quelques minutes.

Mise en réseau améliorée avec ENA et EFA

Le débit réseau annoncé évolue avec la taille de l’instance, mais il n’est atteignable que si le pilote Elastic Network Adapter (ENA) est présent. ENA fournit une mise en réseau améliorée basée sur SR-IOV, supportant jusqu’à 200 Gbit/s sur les instances les plus récentes. Les AMI modernes (Amazon Linux 2, Ubuntu récent, Windows) sont livrées avec ENA activé ; vérifiez avec :

aws ec2 describe-instances --instance-ids i-0abc \
  --query 'Reservations[].Instances[].EnaSupport'

modinfo ena | grep version
ethtool -i eth0

Sans ENA, les instances se rabattent silencieusement sur un débit plus faible et une gigue plus élevée, compromettant toute conception à faible latence, quel que soit le choix du groupe de placement.

Pour les opérations collectives à l’échelle de la microseconde — CFD, modélisation météorologique, dynamique moléculaire, entraînement de grands modèles — ajoutez un Elastic Fabric Adapter (EFA). EFA expose un transport qui contourne le système d’exploitation (OS-bypass) via Libfabric à MPI et NCCL, évitant ainsi complètement la pile réseau du noyau. EFA n’apporte ses avantages qu’au sein d’un groupe de placement en cluster sur les types d’instances pris en charge (c7gn, hpc7a, p5), et nécessite le pilote EFA ainsi qu’une version compatible de MPI (Open MPI, Intel MPI) ou de NCCL.

aws ec2 create-placement-group --group-name hpc-cg --strategy cluster
aws ec2 run-instances --instance-type hpc7a.96xlarge \
  --placement GroupName=hpc-cg \
  --network-interfaces InterfaceType=efa,DeviceIndex=0,SubnetId=subnet-abc

Groupes de placement

Les groupes de placement (Placement groups) contrôlent la topologie physique des instances :

TypeDispositionCas d’usage optimalContrainte / Impact en cas de défaillance
ClusterMême rack, réseau spine à faible latence 10/25/100 GbpsHPC, MPI, trading à faible latence, analytique fortement coupléeUnique AZ ; une défaillance de rack affecte tout
PartitionJusqu’à 7 partitions par AZ, matériel isoléHDFS, Cassandra, KafkaIsolation au niveau de la partition
SpreadChaque instance sur du matériel distinct, max 7 par AZPetites flottes critiquesLimite stricte du nombre d’instances

Un mauvais choix rend la fonctionnalité inutile. Un groupe de placement de type cluster ne peut pas s’étendre sur plusieurs AZ — il est intra-AZ par conception. Un groupe de type spread ne peut pas héberger une centaine de serveurs web en raison du plafond de sept instances par AZ. Le placement par partition, et non par spread, est l’outil approprié pour un cluster Kafka de 40 nœuds car il aligne le placement des répliques avec les domaines de pannes. Pour une haute disponibilité générale, ne limitez pas un ASG à un seul groupe de placement dans une seule AZ — répartissez l’ASG sur plusieurs AZ.

Pour l’analytique en streaming ou les charges de travail MPI nécessitant une latence minimale de nœud à nœud, la combinaison correcte est un groupe de placement de type cluster avec des instances activées pour ENA ; le cluster réduit le nombre de sauts (hops) et ENA fournit la capacité en paquets par seconde nécessaire pour concrétiser cet avantage de latence.

Auto Scaling Groups et Launch Templates

Un Auto Scaling group (ASG) est l’unité d’exécution qui maintient un nombre souhaité d’instances EC2 sur une ou plusieurs AZ, défini par trois entiers — MinSize, DesiredCapacity, MaxSize — et une liste de subnets. L’ASG lui-même ne décrit pas quoi lancer ; c’est la responsabilité d’un launch template, le remplaçant moderne des launch configurations. Les launch templates prennent en charge le versioning, les politiques d’instances mixtes, le mélange d’instances Spot/On-Demand, l’application d’IMDSv2, les réservations de capacité et les instances T en mode illimité. Un launch template référence une AMI, un ou plusieurs types d’instance, des groupes de sécurité, un profil d’instance IAM, des données utilisateur (user data) et des mappages de périphériques de stockage en mode bloc.

Le modèle canonique pour une application web stateless est AMI + Launch Template + ASG + ALB. L’AMI assure un démarrage rapide ; l’ALB (ou le NLB pour TCP/UDP) répartit le trafic et pilote les bilans de santé (health checks) ; l’ASG enregistre automatiquement les nouvelles instances dans le groupe cible et termine celles qui sont défectueuses. Un déploiement multi-AZ (au minimum deux AZ, trois pour les systèmes à quorum) est obligatoire — un ASG lié à un seul subnet ne peut pas survivre à une panne d’AZ car l’ASG lui-même ne peut pas lancer de remplacements tant que l’AZ est défaillante.

MyASG:
  Type: AWS::AutoScaling::AutoScalingGroup
  Properties:
    MinSize: 2
    MaxSize: 20
    DesiredCapacity: 4
    VPCZoneIdentifier: [subnet-a, subnet-b]
    TargetGroupARNs: [!Ref AppTargetGroup]
    LaunchTemplate:
      LaunchTemplateId: !Ref AppLT
      Version: !GetAtt AppLT.LatestVersionNumber
    HealthCheckType: ELB
    HealthCheckGracePeriod: 120

Politiques de scaling : Suivi de cible, par paliers, planifié, prédictif

Le scaling d’ASG comporte quatre modes, chacun résolvant un problème différent :

Le scaling dynamique a un retard inhérent — il ne réagit qu’après qu’une métrique a dépassé un seuil, et les nouvelles instances ont ensuite besoin de plusieurs minutes pour démarrer, s’enregistrer et monter en température (warm up). Pour une application métier où tous les utilisateurs arrivent à 09h00 et subissent 2 à 3 heures de lenteur pendant que l’ASG rattrape son retard, le scaling dynamique seul n’est pas la bonne réponse. Superposez des actions planifiées en amont du pic pour augmenter MinSize et DesiredCapacity avant que la demande n’arrive :

ScheduledAction:
  AutoScalingGroupName: web-asg
  ScheduledActionName: pre-sale-warmup
  Recurrence: "0 8 * * *"
  MinSize: 20
  DesiredCapacity: 30
  MaxSize: 200

Laissez ensuite le suivi de cible absorber la variabilité résiduelle. Le scaling prédictif est le bon choix lorsque la forme du pic est stable mais que son timing exact varie d’un jour à l’autre. Pour des arrêts prévisibles hors production (environnements de dev éteints les nuits et week-ends), une action planifiée pour passer à desired=0, min=0 le vendredi soir et redémarrer le lundi matin est la solution la moins coûteuse en termes de gestion — l’ASG lui-même sert de moteur de planification, aucune ‘glue’ Lambda ou EventBridge n’est requise.

Le choix de la métrique est tout aussi important que le choix de la politique. Le CPU fonctionne pour les charges de travail web limitées par le CPU, mais pour des workers pilotés par un backlog qui consomment depuis SQS, vous devez scaler sur la profondeur de la file d’attente, pas sur le CPU : un worker bloqué en attente d’I/O peut afficher 10 % de CPU pendant que des millions de messages s’accumulent. Utilisez ApproximateNumberOfMessagesVisible par instance, exposé comme une métrique personnalisée ou via la cible intégrée SQSQueueBacklogPerInstance :

backlog_per_instance = messages_visible / running_instances
target = acceptable_latency_seconds / avg_processing_seconds_per_msg
TargetTrackingConfiguration:
  CustomizedMetricSpecification:
    MetricName: BacklogPerInstance
    Namespace: MyApp/Scaling
    Statistic: Average
  TargetValue: 100

De même, les niveaux HTTP sensibles à la latence devraient suivre TargetResponseTime ou RequestCountPerTarget ; les applications limitées par la mémoire, le disque ou la latence d’un service en aval devraient publier une métrique personnalisée qui reflète le véritable goulot d’étranglement. Scaler sur le CPU alors que le CPU n’est pas la contrainte produit exactement le mode de défaillance où les instances ne scalent jamais horizontalement (scale out), les files d’attente s’allongent sans limite et l’ALB renvoie des erreurs 5xx.

Vérifications d’état et hooks de cycle de vie

Par défaut, les ASG utilisent les vérifications d’état EC2, qui détectent une défaillance de l’hyperviseur mais pas une défaillance applicative. L’activation des vérifications d’état ELB sur l’ASG délègue la décision de remplacement à la sonde de niveau applicatif de l’équilibreur de charge, ce qui est essentiel lorsque le système d’exploitation fonctionne correctement mais que le processus est bloqué. Définissez HealthCheckGracePeriod sur une durée suffisante pour que les données utilisateur (user data) se terminent ; sinon, les nouvelles instances sont terminées en boucle au milieu de leur bootstrap.

Le choix de l’équilibreur de charge affecte la signification de « sain » :

CaractéristiqueALBNLB
Couche7 (HTTP/HTTPS)4 (TCP/UDP/TLS)
Vérifications d’étatHTTP/HTTPS avec codes de statut et cheminsTCP par défaut ; HTTP en option
RoutageRègles basées sur l’hôte/le chemin/l’en-têteHash de flux
Idéal pourServices web/APILatence ultra-faible, adresses IP statiques, non-HTTP

Une application HTTP derrière un NLB effectuant uniquement des vérifications d’état TCP continuera de recevoir du trafic d’une instance qui accepte les connexions mais renvoie des erreurs 500. Passez à un ALB — ou configurez des vérifications d’état HTTP sur le NLB — pour restaurer une signalisation pertinente.

Les hooks de cycle de vie (lifecycle hooks) mettent en pause les instances dans l’état Pending:Wait ou Terminating:Wait pour permettre à une automatisation externe d’agir. Au lancement, un hook vous permet d’enregistrer l’instance auprès d’un système de gestion de configuration, de préchauffer les caches ou de récupérer des secrets avant que l’ALB n’envoie du trafic. À la terminaison, un hook vous permet de drainer les sessions, de vider les journaux et de désenregistrer l’instance d’un maillage de services (service mesh). Les hooks émettent des événements EventBridge ; les gestionnaires doivent appeler CompleteLifecycleAction, sinon le hook expire et adopte son comportement par défaut (CONTINUE ou ABANDON).

Pools préchauffés et hibernation

Le temps de démarrage à froid est un vrai problème pour les applications qui chargent de grands modèles, préchauffent des caches ou effectuent une compilation JIT avant de servir. Un pool préchauffé (warm pool) est une réserve d’instances pré-initialisées attachée à l’ASG : les instances se lancent, exécutent leur bootstrap, puis sont arrêtées, maintenues en exécution ou mises en hibernation, conservées dans le pool jusqu’à ce que l’ASG effectue un scale-out. Prendre une instance du pool permet d’éviter plusieurs minutes de démarrage.

L’hibernation suspend le système d’exploitation sur le volume racine EBS chiffré, de sorte que le tas (heap) JVM, les poids des modèles de ML et le cache de page du SE sont restaurés à la reprise. Prérequis : un volume racine chiffré assez grand pour contenir la RAM, une RAM d’instance ≤ 150 Go sur une famille prise en charge, et HibernationOptions.Configured = true au lancement. Un pool préchauffé avec PoolState: Hibernated combine les deux : les instances ne coûtent rien en termes de calcul lorsqu’elles sont arrêtées et reprennent en quelques secondes avec la mémoire déjà remplie. C’est le modèle correct lorsqu’une application « prend beaucoup de temps pour charger la mémoire avant de devenir productive ».

Récupération automatique pour les charges de travail non scalables

Toutes les charges de travail ne peuvent pas être mises à l’échelle horizontalement. Les applications héritées avec des licences liées à l’adresse MAC, des verrous basés sur des fichiers ou un état de session en mémoire sans stockage partagé ne peuvent pas s’exécuter sur plus d’une instance — le lancement de nœuds supplémentaires provoque une corruption des données ou des violations de licence. Pour celles-ci, la résilience provient de la récupération automatique, et non du scale-out.

Deux modèles fonctionnent. Une alarme CloudWatch sur StatusCheckFailed_System associée à l’action de récupération EC2 préserve l’ID de l’instance, l’IP privée, l’IP Elastic et les attachements EBS lors d’une défaillance de l’hôte sous-jacent. Encore plus simple : un ASG avec MinSize=MaxSize=1 s’étendant sur plusieurs AZ remplace une instance défaillante et, contrairement à l’action de récupération, peut survivre à une panne d’AZ — à condition que l’état soit externalisé hors du volume racine ou que l’AMI soit reconstructible.

Équilibreurs de charge et placement dans les subnets

L’ALB opère au niveau L7, termine les connexions HTTP/HTTPS, offre un routage basé sur l’hôte/le chemin/l’en-tête, et intègre HTTP/2, WebSockets, WAF/Cognito/OIDC. Le NLB opère au niveau L4, préserve l’IP du client, prend en charge les IP statiques et le TLS passthrough, PrivateLink, et supporte des millions de connexions par seconde. Le Gateway Load Balancer insère des appliances tierces (pare-feu, IDS) dans le chemin du trafic.

Le placement dans les subnets est là où les architectures échouent le plus souvent. Un ALB exposé sur Internet doit être attaché à des subnets publics — des subnets avec une route 0.0.0.0/0 vers une Internet Gateway — un par AZ où se trouvent les cibles. Les cibles elles-mêmes restent dans des subnets privés. Si l’ALB est placé dans des subnets privés, ou si les subnets « publics » n’ont pas de route par défaut vers une IGW, les clients subiront des délais d’attente de connexion (connection timeouts). La joignabilité des cibles exige que le groupe de sécurité de la cible autorise le trafic entrant depuis le groupe de sécurité de l’ALB sur le port cible ; aucune NAT n’est nécessaire entre l’ALB et les cibles dans le même VPC.

Client → IGW → ALB (public subnets, SG: allow 443 from 0.0.0.0/0)
              → Targets (private subnets, SG: allow 8080 from ALB-SG)

Activez les vérifications d’état ELB sur l’ASG afin que les cibles défaillantes soient remplacées, et non simplement désenregistrées. L’équilibrage de charge interzone (cross-zone load balancing) (par défaut sur l’ALB, en option sur le NLB) répartit uniformément les requêtes quel que soit le nombre d’instances par AZ. Route 53 doit résoudre vers l’ALB via un enregistrement d’alias (ou une politique de routage pondérée/par latence sur plusieurs ALB) — ne pointez jamais Route 53 vers les IP d’instances EC2 individuelles, car une instance défaillante continuerait de recevoir du trafic jusqu’à l’expiration du TTL et l’instance de remplacement de l’ASG aurait une IP différente.

Modèles d’achat et flottes d’instances mixtes

Le choix du modèle d’achat est le levier le plus important pour réduire les dépenses EC2, indépendamment du modèle d’architecture.

ModèleEngagementRéduction vs ODIdéal pour
On-DemandAucun0%Imprévisible, courte durée, dév
Reserved Instance (Standard)1 ou 3 ans, verrouillé sur une famille d’instancesJusqu’à ~72%État stable, famille/région connue
Reserved Instance (Convertible)1 ou 3 ans, échangeableJusqu’à ~54%Stable mais la famille peut changer
Compute Savings Plan1 ou 3 ans, engagement en $/heureJusqu’à ~66%Flexible entre familles/régions/OS EC2, Fargate, Lambda
EC2 Instance Savings Plan1 ou 3 ans, verrouillé sur une famille + régionJusqu’à ~72%Charge de travail stable dans une seule famille
Scheduled RIFenêtre récurrenteModéréeTraitement par lots nocturne, fenêtres connues
SpotAucun ; préavis d’interruption de 2 minJusqu’à ~90%Tolérant aux pannes, sans état, batch, CI

La stratégie rationnelle : charge de base sur des Reserved Instances ou un Savings Plan, pics sur On-Demand, travail tolérant aux pannes sur Spot. Dans un ASG, cela s’exprime par une politique d’instances mixtes :

MixedInstancesPolicy:
  LaunchTemplate:
    LaunchTemplateSpecification:
      LaunchTemplateId: lt-0abc123
      Version: $Latest
    Overrides:
      - InstanceType: m5.large
      - InstanceType: m5a.large
      - InstanceType: m6i.large
      - InstanceType: m6a.large
  InstancesDistribution:
    OnDemandBaseCapacity: 4          # covered by Savings Plan
    OnDemandPercentageAboveBaseCapacity: 20
    SpotAllocationStrategy: price-capacity-optimized

La diversification des types d’instances approfondit le pool Spot et réduit les interruptions corrélées. price-capacity-optimized (ou capacity-optimized) équilibre le prix avec la profondeur du pool afin que les instances soient moins susceptibles d’être récupérées.

Spot est approprié pour les charges de travail sans état, pouvant être sauvegardées (checkpointable), réessayées ou redondantes horizontalement : workers web derrière un ALB, tâches Batch avec relance automatique, exécuteurs Spark, runners CI. Il n’est pas approprié comme seule capacité pour les services critiques toujours actifs, les bases de données primaires avec état, ou les nœuds maîtres sans chemin de récupération — un préavis de deux minutes ne peut garantir un arrêt sécurisé, et la récupération corrélée à l’échelle de la flotte d’un type d’instance spécifique est un mode de défaillance réel. Lorsque l’exigence stipule « ne doit pas être interrompu », Spot est disqualifié.

Le piège inverse consiste à appliquer des RI ou des Savings Plans à des charges de travail réellement variables : vous payez l’engagement horaire, qu’il soit utilisé ou non. Ainsi, une charge de travail fonctionnant 40 heures par semaine avec un engagement de 168 heures gaspille 76 % de la réservation. Lorsque c’est la capacité elle-même — et non le prix — qui est la préoccupation (pic événementiel, reprise après sinistre), utilisez une On-Demand Capacity Reservation : une pure garantie de capacité au niveau d’une AZ aux tarifs On-Demand, combinable avec un Savings Plan pour obtenir la réduction.

Calcul (Compute) Serverless : Lambda et Fargate

Le Serverless déplace la gestion de la capacité vers la plateforme. Lambda convient aux tâches événementielles de courte durée : déclencheurs S3 ObjectCreated, DynamoDB Streams, consommateurs SQS à faible volume, backends API Gateway, logique de liaison (glue logic). La mémoire (128 Mo – 10 240 Mo) provisionne le CPU proportionnellement, donc augmenter la mémoire réduit souvent le coût en raccourcissant la durée. Des limites strictes définissent son champ d’application : exécution maximale de 15 minutes, 10 Go de mémoire, 10 Go dans /tmp, déploiement décompressé de 250 Mo (ou 10 Go via une image de conteneur), charge utile synchrone de 6 Mo. Utiliser Lambda pour un transcodage vidéo de 30 minutes, un ETL de plusieurs heures ou un entraînement GPU est une erreur d’architecture — la fonction expire en cours de tâche et la logique de relance ne fait que multiplier le gaspillage. Pour les chemins sensibles à la latence, atténuez les démarrages à froid (cold starts) et le temps d’initialisation des ENI attachées à un VPC avec la Provisioned Concurrency.

Fargate exécute des conteneurs sans gérer les hôtes EC2. C’est le bon choix lorsque les tâches dépassent 15 minutes, nécessitent des runtimes personnalisés ou s’intègrent à l’orchestration ECS/EKS mais que l’équipe ne veut pas gérer la capacité. Fargate est plus cher par vCPU-heure que EC2 Spot, donc lorsque l’utilisation en régime permanent est élevée et prévisible, un ASG à instances mixtes avec Spot sur ECS est moins coûteux. Pour un trafic en rafales ou imprévisible, la facturation à la seconde de Fargate l’emporte.

Pour l’orchestration de nombreuses fonctions Lambda, Step Functions est préférable à l’enchaînement via SNS/SQS car il offre un historique d’exécution visuel, une sémantique de relance, une gestion centralisée des erreurs et un état durable. Les workflows Standard sont facturés par transition d’état et peuvent durer jusqu’à un an ; les workflows Express sont optimisés pour le traitement d’événements à haut volume et de courte durée.

Pour la parallélisation (fan-out) de milliers de tâches conteneurisées paramétrées — génomique, Monte Carlo, ETL — AWS Batch gère la mise en file d’attente, la résolution des dépendances, les relances et le provisionnement sur des instances EC2 gérées, Spot ou Fargate. Les tâches font référence à une définition de tâche (conteneur + vCPU/mémoire + rôle IAM) et Batch les optimise (bin-packs) sur des instances de taille appropriée. Step Functions orchestre fréquemment Batch, Lambda et ECS au sein d’une seule machine à états.

BesoinService
Parallélisation de milliers de tâches conteneurisées indépendantesAWS Batch
Workflow multi-étapes coordonné avec branchement/relancesStep Functions
Code événementiel court (<15 min, <10 Go de mémoire)Lambda
Tâches conteneurisées de longue durée ou nécessitant un GPU/beaucoup de mémoireECS/EKS ou Batch sur EC2
Calcul (compute) à mise à l’échelle fine pour les API HTTPASG + ALB, ou Lambda derrière API Gateway

Elastic Beanstalk

Beanstalk est un PaaS géré qui provisionne l’ALB, l’ASG, les instances EC2 et éventuellement RDS à partir d’un paquet applicatif. Il prend en charge les déploiements de type rolling, rolling-with-additional-batch, immutable et blue/green avec une intégration CloudWatch. Les politiques de mise à l’échelle sont exposées comme des options d’environnement (métrique, seuils, min/max). Comme Beanstalk utilise par défaut des types d’instances à capacité extensible (burstable), l’activation du mode T-unlimited est la solution simple pour une saturation brève du CPU. Les actions de mise à l’échelle planifiées s’attachent à l’ASG géré par Beanstalk comme n’importe quel autre. Choisissez Beanstalk lorsque l’équipe souhaite une topologie d’application web standard sans avoir à créer manuellement des modèles CloudFormation et lorsque les mises à jour progressives (rolling updates) et les paquets versionnés correspondent à la cadence de livraison.

Gestion de parc avec Systems Manager

Les modèles basés sur SSH et les bastions sont fragiles et coûteux à sécuriser. AWS Systems Manager les remplace. L’agent SSM (préinstallé sur Amazon Linux 2, Ubuntu, Windows) ainsi qu’un profil d’instance accordant AmazonSSMManagedInstanceCore sont tout ce qui est nécessaire.

aws ssm send-command \
  --targets Key=tag:Env,Values=prod \
  --document-name AWS-RunShellScript \
  --parameters 'commands=["yum -y update"]'

Automatisation du démarrage/arrêt planifié

Pour les instances EC2 et RDS hors production qui doivent être arrêtées en dehors des heures de bureau, le modèle nécessitant peu de maintenance est EventBridge Scheduler → Lambda. Une règle cron (cron(0 19 ? * MON-FRI *)) invoque une fonction Lambda qui arrête les ressources taguées ; une seconde règle à 07:00 les démarre.

import boto3
ec2 = boto3.client('ec2'); rds = boto3.client('rds')

def handler(event, _):
    action = event['action']  # 'start' or 'stop'
    ids = [i['InstanceId'] for r in ec2.describe_instances(
        Filters=[{'Name':'tag:AutoStop','Values':['true']}]
    )['Reservations'] for i in r['Instances']]
    getattr(ec2, f'{action}_instances')(InstanceIds=ids)
    for db in rds.describe_db_instances()['DBInstances']:
        if any(t['Key']=='AutoStop' and t['Value']=='true' for t in db['TagList']):
            getattr(rds, f'{action}_db_instance')(DBInstanceIdentifier=db['DBInstanceIdentifier'])

Cette solution est serverless, n’a pas de parc à patcher et s’adapte en fonction des tags. La solution AWS Instance Scheduler fonctionne de manière équivalente. Une subtilité : une instance RDS arrêtée redémarre automatiquement après sept jours, donc la planification d’arrêt doit être récurrente pour l’arrêter à nouveau. Combiné avec des ASG dont les actions planifiées réduisent la capacité à zéro le week-end, le coût des heures d’inactivité approche de zéro.

Pièges réseau liés à la mise à l’échelle du calcul

Positionnement de la NAT Gateway. Une passerelle NAT réside dans une seule AZ. Un parc s’étendant sur trois AZ qui route tout son trafic sortant via une seule NAT dans us-east-1a paie des frais de transfert inter-AZ sur chaque paquet provenant de us-east-1b/us-east-1c, et perd complètement sa connectivité sortante en cas de dégradation de us-east-1a. Le modèle correct est d’avoir une passerelle NAT par AZ, avec la table de routage de chaque sous-réseau privé pointant vers la NAT de sa propre AZ. Cela localise le trafic et supprime le mode de défaillance lié à une seule AZ.

Instances NAT. Une seule instance NAT basée sur EC2 devient un goulot d’étranglement en termes de bande passante et de PPS (paquets par seconde) à mesure que le parc grandit, et constitue un SPOF (point de défaillance unique). Les NAT Gateways managées peuvent atteindre 100 Gbit/s par passerelle. Pour le trafic destiné aux services AWS, les VPC endpoints (Gateway pour S3/DynamoDB, Interface pour les autres) contournent entièrement la NAT, réduisant les coûts et éliminant le risque de saturation lors des événements de mise à l’échelle.

Pièges de conception récurrents


Tous les domaines · Conteneurs et orchestration

Entraînez-vous sur ces questions → · Tests chronométrés sur ExamRoll.io →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

Réussissez votre examen →

Parcourir Amazon →

Related guides

Accès tout-en-un

Un seul abonnement. Chaque examen.

Chaque plan débloque la recherche de réponses illimitée, les tests pratiques, les explications IA et la bibliothèque complète de ressources — en plus de 20 langues.

Mensuel
24.87
Just €0.83/day
Tout inclus :
  • Recherche de réponses illimitée
  • Tests pratiques illimités
  • Explications basées sur l'IA
  • Bibliothèque complète de ressources
  • Plus de 20 langues
  • Mises à jour de contenu hebdomadaires
  • Récompenses et parrainages
  • Support prioritaire
Commencer l'essai gratuit

Aucune carte de crédit requise*

Meilleur rapport qualité/prix
12 mois
179.87
Just €0.49/daySave 40%
Tout inclus :
  • Recherche de réponses illimitée
  • Tests pratiques illimités
  • Explications basées sur l'IA
  • Bibliothèque complète de ressources
  • Plus de 20 langues
  • Mises à jour de contenu hebdomadaires
  • Récompenses et parrainages
  • Support prioritaire
Commencer l'essai gratuit

Aucune carte de crédit requise*

✓ Plan gratuit inclus · ✓ Annulez à tout moment · ✓ Tous les plans débloquent le produit complet