Dans la famille des Cloud Native Languages, je demande Pulumi !

Dans la famille des Cloud Native Languages, il n’y a pas que Terraform...

pulumi logo

Cet article se base sur la conférence de Emmanuel Lebeaupin lors du DevFest 2019 à Nantes.

Qu’est-ce que Pulumi ?

L’Infrastructure As Code est de plus en plus populaire car des outils tels que Terraform ou AWS CloudFormation facilitent beaucoup le processus de déploiement des applications dans le Cloud. Cependant, Terraform, qui est pourtant l’un des plus utilisés, n’est pas exempt de défauts. C’est un langage lourd et nouveau à apprendre, appelé “Hashicorp Configuration Language” et il évolue lentement... Cela nécessite un tout nouvel apprentissage pour se lancer dans l’Infrastructure As Code.

Joe Duffy et Eric Rudder (deux anciens de chez Microsoft) se sont penchés sur la question en 2016 et ont créé “Pulumi” pour répondre aux problématiques soulevées par Terraform. Deux ans plus tard, en 2018, leur outil Pulumi passe en Open-Source et verra par la suite sa version 1.0 en Septembre 2019. C’est donc une solution assez jeune mais qui semble promise à un bel avenir...

pulumi - Joe Duffy et Eric Rudder

En effet, Pulumi permet de créer une infrastructure à partir d’un code applicatif rédigé en Typescript, Javascript, Go ou encore Python ! Cela permet donc de profiter de tout l’écosystème de ces langages et des différentes évolution à venir pour développer une infrastructure Cloud.

Pulumi permet de gérer le multi-cloud public comme AWS, GCP, Azure et même le privé avec OpenStack. Il pourra également orchestrer efficacement les ressources Kubernetes et les bases de données. C’est une solution tout-en-un qui possède de nombreux avantage et offre une structure de code unique et cohérente.

Fonctionnement de Pulumi

Pulumi possède une architecture proche de celle de Terraform. Les connaisseurs ne seront pas dépaysés...

Un Engine (équivalent au Terraform Core) s’appuie sur un ensemble de providers (un pour chaque Cloud Provider). L’Engine gère le state (état de l’infrastructure possédée) et orchestre tout en communiquant les différentes opérations aux providers afin d’atteindre le state souhaité. La grosse différence avec Terraform vient de la partie appelée Language Host. C’est un serveur Runtime qui contient le code de notre infrastructure et qui observe l’ensemble de ressources créées.

Pulumi est rédigé en Go mais le Language Host est le même que celui choisi pour écrire le programme de l’infrastructure (TypeScript, JavaSscript, Python...).

Il existe dans Pulumi deux types de providers : ceux basés directement sur Terraform (pour bénéficier de l'éventail de fonctionnalités des providers Terraform) et ceux qui sont écrit “from scratch” qui gèrent les ressources de A à Z.

Pulumi gère un backend local avec un state présent sur un file system (pas idéal pour le travail en équipe). Ce state peut également être stocké sur un stockage Cloud afin d’être partagé (à condition de gérer manuellement ce stockage). La troisième solution pour le stockage du state est une solution SaaS de Pulumi appelée Pulumi Service Backend. Ce service offre plusieurs avantages dont une sécurité avancée, un système de verrouillage de state, une gestion de rôles...

La force de Pulumi vient également du fait qu’il est possible, facilement, de créer des tests de notre infrastructure en utilisant des frameworks de tests classiques. En rédigeant une infrastructure Pulumi en Typescript, il sera par exemple possible de créer des tests avec Jest pour avoir une infrastructure solide.

Pulumi permet d’étendre les possibilités déjà offerte par Terraform. La jeunesse de cette solution rend son utilisation en production un peu avant-gardiste mais Pulumi devrait, une fois à maturité, s’imposer dans le monde de l’Infrastructure As Code avec un impact similaire à celui de Terraform. A noter qu’il existe une version gratuite pour un usage individuel et plusieurs tiers payants (starter, pro, entreprise) pour débloquer toutes les fonctionnalités du travail d’équipe.

Sébastien

Sébastien, expert JS Younup, adore évoluer dans l’écosystème Javascript, avec son lot d’outils et de frameworks qui permettent de (presque) tout faire.

Parlez-lui de clean code, de Typescript, il vous écoutera avec gourmandise. Mais évitez les sujets qui fâchent : Internet Explorer, les « if » en cascade qu’on appelle des IA, et surtout… sa tasse de café qui ne se remplit pas d’elle-même lorsqu’il corrige des bugs en prod !

Heureusement que dans ce monde de code, il peut se réfugier sous son plaid devant une série ou dans un festival de musique.

Retours aux publications