Pulumi vs. Terraform/CDKTF : choisir le bon outil d’infrastructure as code

Infrastructure as Code (IaC) est une pratique fondamentale du cloud computing moderne, qui permet aux équipes de définir et de gérer l’infrastructure à l’aide de code. Lors de l’évaluation des outils pour notre plateforme de développement co-gérée, nous avons comparé en détail plusieurs technologies afin de déterminer celle qui convenait le mieux à long terme à notre activité principale. L’une des principales comparaisons portait sur Pulumi et Terraform/CDKTF. Nous examinons ci-dessous leurs différences, leurs avantages et leurs inconvénients afin de vous aider à choisir la solution la mieux adaptée à vos besoins.

 

Image
blog-pulumi-vs-terraform-cdktf

 

Que sont Pulumi, Terraform et CDKTF ?

  • Terraform : un outil IaC largement utilisé qui s’appuie sur le HashiCorp Configuration Language (HCL) pour définir l’infrastructure de manière déclarative.
  • Pulumi : une alternative moderne qui permet aux développeurs d’utiliser des langages de programmation généralistes tels que TypeScript, Python, Java et bien d’autres pour définir l’infrastructure.
  • CDK for Terraform (CDKTF) : un framework introduit par Terraform qui permet d’écrire des configurations Terraform à l’aide de langages de programmation comme TypeScript et Python, de manière similaire à Pulumi.

 

Principales différences

1. Langage et approche du développement

L’une des principales différences entre Pulumi et Terraform/CDKTF réside dans l’approche adoptée pour écrire le code d’infrastructure :

Terraform, une approche basée sur HCL

  • Utilise un langage spécifique à un domaine (HCL), ce qui garantit une cohérence entre les projets.
  • Facilite l’intégration de nouveaux membres dans les équipes, car le code Terraform suit une structure prévisible.
  • Un expert Terraform peut appliquer ses connaissances de manière universelle à différents projets et organisations.

Pulumi, des langages de programmation généralistes

  • Permet aux développeurs d’utiliser des langages familiers comme TypeScript, Python, and Java.
  • Le code peut être structuré de manière très personnalisée et modulaire, ce qui le rend flexible, mais potentiellement complexe.
  • La fragmentation entre différents langages de programmation peut rendre le support de la communauté et les bonnes pratiques moins cohérents.

CDKTF, réunir les concepts de Terraform et de Pulumi

  • Permet d’écrire une infrastructure Terraform à l’aide de langages de programmation, de manière similaire à Pulumi.
  • Conserve l’écosystème de providers de Terraform tout en offrant davantage de flexibilité dans la définition de l’infrastructure.
  • Suit une correspondance 1 à 1 avec les constructions Terraform, ce qui peut être intuitif pour les utilisateurs actuels de Terraform, mais moins pour les nouveaux utilisateurs.

2. Prise en charge des providers et intégration

  • Pulumi affirme prendre en charge tous les providers Terraform et davantage. Jusqu’à présent, au cours de notre évaluation, nous n’avons rencontré aucune intégration manquante avec Pulumi.
  • CDKTF conserve le vaste écosystème de providers de Terraform, ce qui en fait un choix familier et stable pour les utilisateurs actuels de Terraform.

3. Avantages techniques de Pulumi

Pulumi offre plusieurs avantages techniques notables par rapport à Terraform :

  • Pulumi Automation API : contrairement à Terraform, qui nécessite d’exécuter manuellement terraform apply, Pulumi permet de gérer les stacks par programmation grâce à son API. Il est ainsi possible d’automatiser le déploiement de l’infrastructure depuis une application, sans nécessiter la Pulumi CLI.
  • Pulumi AI : une nouvelle fonctionnalité qui aide à écrire du code Pulumi grâce à un assistant basé sur l’IA. Bien que prometteuse, elle doit encore être améliorée : elle génère du code précis pour les cas simples, mais rencontre des difficultés avec les scénarios complexes.
  • Accès direct aux API AWS de bas niveau : Pulumi prend en charge les API AWS de haut et de bas niveau. Avec l’API de bas niveau, les nouvelles fonctionnalités AWS deviennent disponibles immédiatement dès leur prise en charge par AWS, sans attendre la mise à jour d’un provider Terraform. Toutefois, le passage des API de bas niveau aux API de haut niveau peut nécessiter des ajustements du code.

4. Modèle de licence et de tarification

  • Pulumi et Terraform proposent tous deux des modèles de tarification comparables.
  • Les utilisateurs de Pulumi peuvent :
    • Utiliser Pulumi Cloud pour la gestion de l’état backend et les fonctionnalités destinées aux entreprises, avec différents niveaux de tarification.
    • Opter pour un modèle gratuit avec un backend local, afin d’éviter les coûts liés au cloud.

 

Positionnement sur le marché et adoption

Pulumi gagne des parts de marché face à Terraform en offrant une expérience moderne aux développeurs. Toutefois, Terraform reste le leader du secteur, notamment auprès des équipes qui privilégient la stabilité et un écosystème établi. Le choix dépend en définitive de l’expertise de votre équipe et de votre stratégie d’infrastructure.

 

Conclusion : lequel choisir ?

Choisissez Terraform/CDKTF si :

  • Votre équipe maîtrise déjà Terraform basé sur HCL.
  • Vous avez besoin d’un outil mature, stable et largement adopté, doté d’un vaste écosystème de providers.
  • Vous préférez une gestion déclarative de l’infrastructure avec une structure prévisible.

Choisissez Pulumi si :

  • Vous souhaitez utiliser des langages de programmation généralistes pour votre infrastructure.
  • Vous avez besoin de davantage de flexibilité et de la possibilité de créer du code d’infrastructure complexe et modulaire.
  • Vous avez besoin d’une gestion programmatique des stacks avec Pulumi Automation API.
  • L’accès immédiat aux nouvelles fonctionnalités AWS est essentiel pour votre cas d’usage.

En définitive, les deux outils offrent de puissantes fonctionnalités d’Infrastructure-as-Code, et le choix approprié dépend des besoins de votre organisation, de l’expertise de votre équipe et de votre stratégie cloud à long terme.

Want to learn more about these topics?