Optimiser vos Déploiements avec Terraform sur AWS

Terraform sur AWS : leçons d'un audit qui a fait économiser 19% du budget cloud
Mon expérience la plus marquante avec Terraform sur AWS, c'est l'audit de 15 jours que j'ai réalisé chez F2R2. En analysant l'infrastructure existante et en la restructurant avec Terraform, nous avons réduit la facture AWS de 19%. Voici les techniques concrètes que j'ai appliquées.
L'architecture AWS Multi-Compte avec Terraform
L'audit F2R2 a débouché sur la conception d'une architecture AWS Multi-Compte complète : 25 modules Terraform couvrant l'ensemble de l'infrastructure. Le principe est de séparer les comptes AWS par responsabilité : un compte de management pour l'Organisation, un compte de networking partagé, un compte de sécurité (GuardDuty, SecurityHub), et des comptes applicatifs par environnement (dev, staging, prod).
Chaque compte est provisionné par Terraform avec ses propres VPC, subnets, security groups, et IAM roles. Le networking inter-comptes utilise le VPC peering ou le Transit Gateway, selon les besoins de bande passante. Cette séparation offre une isolation de sécurité forte : une compromission dans l'environnement de dev ne peut pas atteindre la production.
Les services AWS que Terraform gère le mieux
EKS Fargate a été le choix principal chez F2R2 pour l'orchestration des containers. Terraform provisionne le cluster, les Fargate profiles, les IAM roles pour les pods (IRSA), et les add-ons (CoreDNS, kube-proxy, VPC CNI). Le tout est reproductible : nous pouvions recréer l'intégralité du cluster en 20 minutes à partir du code Terraform.
Aurora PostgreSQL en mode serverless v2 a remplacé des instances RDS classiques surdimensionnées. Le scaling automatique d'Aurora suit la charge réelle, ce qui a contribué significativement à la réduction de 19% du budget. Terraform gère le cluster Aurora, les parameter groups, les security groups associés, et les sauvegardes automatiques.
WAF (Web Application Firewall) et GuardDuty pour la sécurité sont provisionnés par des modules Terraform dédiés. WAF protège les API exposées via l'ALB, avec des règles pour les attaques OWASP Top 10. GuardDuty surveille les activités suspectes sur l'ensemble des comptes.
Optimisation des coûts : les quick wins Terraform
Chez TEKYN, plateforme e-commerce sur AWS avec ECS Fargate, CloudFront et Terraform, les optimisations de coûts les plus impactantes ont été :
Premièrement, le right-sizing des tâches ECS. En analysant les métriques CloudWatch, nous avons identifié des tâches avec 2 vCPU et 4 Go de RAM qui n'utilisaient en moyenne que 0.5 vCPU et 1 Go. Terraform a permis de redimensionner l'ensemble des task definitions en un seul apply.
Deuxièmement, les Reserved Instances et Savings Plans. Terraform gère les réservations via des ressources aws_ec2_capacity_reservation. Pour les services prévisibles (bases de données, services core), les réservations 1 an offrent 30-40% de réduction.
Troisièmement, la mise en place de CloudFront devant les assets statiques. Chez TEKYN, le trafic direct sur l'ALB coûtait significativement plus que le même trafic passant par CloudFront avec son cache. Terraform a provisionné la distribution CloudFront, les behaviors de cache, et les origin access identities.
Le state Terraform : le point critique
La gestion du state Terraform est le point le plus critique de toute infrastructure AWS. Mon setup standard : un bucket S3 avec versioning et encryption activés, un table DynamoDB pour le state locking, et un backend configuré par environnement.
Chez Earny SA, lors de la migration GCP vers AWS, nous avons importé progressivement les ressources existantes dans le state Terraform avec terraform import. C'est un processus méticuleux mais indispensable : chaque ressource importée devient gérée par Terraform, ce qui élimine les modifications manuelles via la console AWS.
Les modules que je réutilise
Après 100+ projets, j'ai constitué une bibliothèque de modules Terraform que je réutilise et adapte. Les plus utilisés : VPC avec subnets publics/privés et NAT Gateway, EKS avec IRSA et Fargate profiles, RDS/Aurora avec multi-AZ, et S3 avec les bonnes pratiques de sécurité (encryption, versioning, lifecycle rules). Ces modules sont testés et documentés, ce qui accélère considérablement le démarrage de chaque nouvelle mission AWS.