DevOps and Infrastructure

Réduisez vos factures cloud : Guide pour optimiser les coûts avec les instances Spot et l'auto-scaling

Dans le paysage DevOps moderne, le cloud n'est pas seulement une utilité ; c'est un moteur commercial. Cependant, des dépenses cloud incontrôlées peuvent rapidement éroder les marges bénéficiaires. Pour les ingénieurs infrastructure intermédiaires à avancés, le défi ne consiste plus seulement à déployer des applications, mais à les déployer efficacement. Deux des outils les plus puissants dans votre arsenal pour atteindre cet équilibre entre performance et coût sont les instances Amazon EC2 Spot et les politiques dynamiques d'auto-scaling.

Comprendre l'économie des instances Spot

Les instances traditionnelles à la demande (On-Demand) facturent un taux horaire fixe, indépendamment de la demande. En revanche, les instances Spot vous permettent d'enchérir sur la capacité EC2 inutilisée disponible dans le cloud AWS. Étant donné que cette capacité est inactive, AWS l'offre avec des réductions allant jusqu'à 90 % par rapport aux prix des instances à la demande. Le compromis réside dans la simplicité : les instances Spot peuvent être interrompues avec deux minutes de notification lorsque AWS a besoin de récupérer cette capacité.

Ce modèle est idéal pour les charges de travail tolérantes aux pannes et flexibles, telles que le traitement par lots, l'analyse de données, le rendu, les builds CI/CD et les serveurs web sans état. Il est moins adapté aux charges de travail critiques et continues, comme les bases de données principales ou le traitement des transactions en temps réel, où toute interruption est inacceptable.

Intégrer les instances Spot avec les groupes d'auto-scaling

Gérer les interruptions manuellement est une recette pour le désastre. La clé pour exploiter les instances Spot en toute sécurité réside dans l'automatisation de la gestion du cycle de vie via les groupes d'auto-scaling (ASG). Un ASG garantit qu'un nombre spécifié d'instances est toujours en cours d'exécution. En configurant des politiques d'instances mixtes, vous pouvez demander à AWS de privilégier les instances Spot moins chères tout en maintenant une base d'instances à la demande pour la stabilité.

Voici un exemple pratique d'un extrait d'Infrastructure as Code (IaC) utilisant AWS CloudFormation pour définir une politique d'instances mixtes :

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MyAutoScalingGroup:
    Type: AWS::AutoScaling::AutoScalingGroup
    Properties:
      LaunchTemplate:
        LaunchTemplateId: !Ref MyLaunchTemplate
        Version: !GetAtt MyLaunchTemplate.LatestVersionNumber
      MixedInstancesPolicy:
        InstancesDistribution:
          OnDemandBaseCapacity: 1
          OnDemandPercentageAboveBaseCapacity: 20
          SpotInstancePools: 3
        LaunchTemplate:
          LaunchTemplateId: !Ref MyLaunchTemplate
      MinSize: 2
      MaxSize: 10
      DesiredCapacity: 5

Dans cette configuration, l'ASG garantit au moins une instance à la demande. Au-delà de cette capacité de base, il tentera de remplir 20 % de la capacité supplémentaire avec des instances à la demande et le reste avec des instances Spot sur trois types de pools différents afin d'atténuer les risques de point de défaillance unique.

Configurer des politiques de scaling intelligentes

L'optimisation des coûts ne consiste pas seulement au prix par heure ; il s'agit aussi de dimensionner correctement votre infrastructure pour qu'elle corresponde à la demande. Les programmes de scaling statiques sont inefficaces car les modèles de trafic sont rarement prévisibles. Au lieu de cela, mettez en œuvre des politiques de scaling prédictives ou réactives basées sur les métriques CloudWatch.

Par exemple, vous pouvez configurer une politique de scaling de suivi de cible qui maintient l'utilisation moyenne du CPU à 50 %. Si le trafic augmente, l'ASG ajoute des instances (en privilégiant les instances à la demande si le marché Spot est volatil). Si le trafic diminue, il supprime des instances. Cela garantit que vous ne payez jamais pour une capacité inactive.

Envisagez de mettre en œuvre des actions planifiées pour les trafics prévisibles. Si votre application traite des rapports quotidiens à 9 heures, vous pouvez provisionner une capacité supplémentaire uniquement pendant cette fenêtre :

aws autoscaling put-scheduled-update-group-action \
    --auto-scaling-group-name my-scaling-group \
    --name daily-peak-scaling \
    --schedule "cron(0 9 ? * MON-FR *)" \
    --min-capacity 5 \
    --max-capacity 10 \
    --desired-capacity 7

Meilleures pratiques pour la résilience

Lorsque vous travaillez avec des instances Spot, votre architecture doit être conçue pour gérer les interruptions. Adoptez une conception sans état dans la mesure du possible. Utilisez Elastic Load Balancing pour répartir le trafic et retirer les instances non saines de la rotation. Assurez-vous que vos applications peuvent gérer des arrêts gracieux en écoutant la notification d'interruption d'instance Spot EC2.

Conclusion

L'optimisation des coûts cloud avec les instances Spot et l'auto-scaling n'est pas une tâche du type "réglez et oubliez", mais c'est l'une des activités offrant le meilleur retour sur investissement pour toute équipe DevOps. En combinant les réductions importantes des prix Spot avec l'élasticité de l'auto-scaling, vous pouvez réaliser des réductions de coûts significatives sans compromettre la disponibilité des applications. Commencez par auditer vos charges de travail pour déterminer leur adéquation avec les instances Spot, mettez en œuvre des politiques d'instances mixtes et affinez continuellement vos métriques de scaling pour les aligner sur les exigences spécifiques de votre entreprise.

Share: