Skip to content

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

  1. AWS, AWS CloudFormation. aws.amazon.com/cloudformation
  2. HashiCorp, Terraform AWS Provider. registry.terraform.io/providers/hashicorp/aws
  3. 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