CloudFormation vs Terraform: which Infrastructure as Code tool to choose?
Objective comparison between AWS CloudFormation and HashiCorp Terraform for managing your cloud infrastructure as code.
Updated on 2 July 2024
Two approaches to managing your infrastructure as 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: the native AWS tool
CloudFormation is the IaC service built into AWS. You define 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 automatically manages dependencies entre ressources. Si une database 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.
The CDK (Cloud Development Kit) lets you write 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: the multi-cloud tool
Terraform uses 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.
Terraform’s state file records 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.
The Terraform module ecosystem is rich. 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.
Point-by-point comparison
In terms of AWS support, 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.
Our recommendation
For an SMB 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 uses CloudFormation and CDK pour gérer l’infrastructure AWS de ses clients.
To understand cloud architecture principles, read our article on 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
Frequently asked questions
- CloudFormation est-il gratuit ?
- Oui, CloudFormation est gratuit. You only pay 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 $ per user per month.
- 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 uses HCL (HashiCorp Configuration Language), un langage dédié qui s'apprend en quelques jours. Les deux ont une courbe d'apprentissage modérée.
Related Articles
Amazon CloudWatch: monitor your AWS infrastructure effectively
Practical guide to configuring Amazon CloudWatch: metrics, alarms, dashboards and logs to keep control of your cloud infrastructure.
Serverless on AWS: why SMBs are adopting it
How serverless architecture on AWS helps SMBs reduce infrastructure costs and focus on their core business.
Disaster recovery on AWS: strategies for SMBs
How to design a disaster recovery plan on AWS adapted to your budget and availability requirements.
Optimize your AWS costs: 7 concrete levers
Reduce your AWS bill by 20 to 40% with these 7 cloud cost optimization levers accessible to all businesses.
AWS Raised Prices 15%? No, It's More Complicated Than That
Unpacking the AWS EC2 Capacity Blocks pricing adjustment: why alarmist headlines miss the point about dynamic pricing in cloud computing.
AWS Lambda: 10 concrete use cases to automate your business
Discover 10 practical AWS Lambda use cases to automate your business processes without managing servers.