CloudFormation vs Terraform : quel outil d'Infrastructure as Code choisir ?
Comparatif objectif entre AWS CloudFormation et HashiCorp Terraform pour gérer votre infrastructure cloud en tant que code.
Mis à jour le 2 July 2024
Deux approches pour gérer votre infrastructure en tant que code
L’Infrastructure as Code (IaC) permet de définir et de gérer votre infrastructure cloud dans des fichiers de configuration versionnés. AWS CloudFormation et HashiCorp Terraform sont les deux outils les plus utilisés pour cette tâche. CloudFormation est natif AWS et gratuit. Terraform est open source et multi-cloud. Le choix dépend de votre contexte : mono-cloud ou multi-cloud, taille de l’équipe et écosystème existant.
CloudFormation : l’outil natif AWS
CloudFormation est le service d’IaC intégré à AWS. Vous définissez vos ressources dans un template YAML ou JSON et CloudFormation les crée, les met à jour et les supprime de manière ordonnée. L’intégration native avec AWS signifie que les nouveaux services sont supportés dès leur lancement, souvent avant Terraform.
CloudFormation gère automatiquement les dépendances entre ressources. Si une base de données RDS dépend d’un VPC, CloudFormation crée le VPC en premier. En cas d’erreur, CloudFormation effectue un rollback automatique qui restaure l’état précédent. Cette sécurité est précieuse en production.
Le CDK (Cloud Development Kit) permet d’écrire des templates CloudFormation dans un langage de programmation (TypeScript, Python, Java, Go) au lieu de YAML. Le CDK génère le template CloudFormation à partir de votre code, ce qui offre la puissance d’un langage de programmation avec la fiabilité de CloudFormation.
Terraform : l’outil multi-cloud
Terraform utilise HCL (HashiCorp Configuration Language) pour définir l’infrastructure. Son avantage principal est le support multi-cloud : vous gérez des ressources AWS, Azure, GCP et des centaines d’autres providers dans la même configuration. Si votre entreprise utilise plusieurs clouds, Terraform unifie la gestion.
Le state file de Terraform enregistre l’état actuel de votre infrastructure. Terraform compare cet état avec votre configuration pour déterminer les changements à appliquer. Le plan d’exécution (terraform plan) montre les changements avant de les appliquer, ce qui réduit les risques.
L’écosystème de modules Terraform est riche. Le Terraform Registry propose des milliers de modules réutilisables qui encapsulent les bonnes pratiques pour des architectures courantes. Vous composez votre infrastructure à partir de modules éprouvés plutôt que de tout écrire de zéro.
Comparaison point par point
En termes de support AWS, CloudFormation a l’avantage de la couverture immédiate des nouveaux services. Terraform rattrape généralement en quelques semaines. Pour la gestion d’état, CloudFormation gère l’état côté AWS (pas de fichier à gérer), tandis que Terraform nécessite un backend distant (S3 + DynamoDB) pour le travail en équipe.
Pour le rollback, CloudFormation effectue un rollback automatique en cas d’erreur. Terraform ne fait pas de rollback automatique mais permet de revenir à un état précédent manuellement. Pour la modularité, Terraform excelle avec ses modules réutilisables. CloudFormation propose les nested stacks et les modules, mais l’écosystème est moins riche.
Notre recommandation
Pour une PME 100% AWS, CloudFormation (ou le CDK) est le choix le plus simple. L’intégration native, le rollback automatique et l’absence de state file à gérer réduisent la complexité opérationnelle. Pour une entreprise multi-cloud ou avec une équipe DevOps expérimentée, Terraform offre plus de flexibilité.
LCMH utilise CloudFormation et le CDK pour gérer l’infrastructure AWS de ses clients.
Pour comprendre les principes d’architecture cloud, consultez notre article sur le Well-Architected Framework.
Sources
- AWS, AWS CloudFormation. aws.amazon.com/cloudformation
- HashiCorp, Terraform AWS Provider. registry.terraform.io/providers/hashicorp/aws
- AWS, AWS CDK. aws.amazon.com/cdk
Questions fréquentes
- CloudFormation est-il gratuit ?
- Oui, CloudFormation est gratuit. Vous ne payez que les ressources AWS créées par vos stacks. Terraform est aussi gratuit en version open source. Terraform Cloud (la version managée) est payant à partir de 20 $ par utilisateur et par mois.
- Peut-on utiliser Terraform avec AWS ?
- Oui, Terraform supporte AWS via le provider AWS, l'un des plus matures et complets de l'écosystème Terraform. La quasi-totalité des services AWS sont supportés. Terraform peut aussi gérer des ressources multi-cloud (AWS + Azure + GCP) dans la même configuration.
- Lequel est le plus facile à apprendre ?
- CloudFormation utilise YAML ou JSON, des formats familiers pour la plupart des développeurs. Terraform utilise HCL (HashiCorp Configuration Language), un langage dédié qui s'apprend en quelques jours. Les deux ont une courbe d'apprentissage modérée.
Articles similaires
Amazon CloudWatch : surveiller votre infrastructure AWS efficacement
Guide pratique pour configurer Amazon CloudWatch : métriques, alarmes, dashboards et logs pour garder le contrôle de votre infrastructure cloud.
Serverless sur AWS : pourquoi les PME s'y mettent
Comment l'architecture serverless sur AWS permet aux PME de réduire leurs coûts d'infrastructure et de se concentrer sur leur métier.
Reprise après sinistre sur AWS : stratégies pour les PME
Comment concevoir un plan de reprise après sinistre sur AWS adapté à votre budget et à vos exigences de disponibilité.
Optimiser vos coûts AWS : 7 leviers concrets
Réduisez votre facture AWS de 20 à 40% grâce à ces 7 leviers d'optimisation des coûts cloud accessibles à toutes les entreprises.
AWS augmente ses prix de 15% ? Non, c'est plus compliqué que ça
Décryptage de l'augmentation des tarifs AWS EC2 Capacity Blocks : pourquoi les titres alarmistes passent à côté de l'essentiel sur la tarification dynamique.
AWS Lambda : 10 cas d'usage concrets pour automatiser votre entreprise
Découvrez 10 cas d'usage pratiques d'AWS Lambda pour automatiser les processus de votre entreprise sans gérer de serveurs.