Tech & Governance - Panel
Config-as-code? Ok, mais proprement. Goûtez au dhall.
On arrive toujours à un point où l’on est tenté de remplacer des fichiers de configuration (json, toml, yaml) par du code. C’est pratique, on a ainsi une structure et une abstraction, on a peu de fonctions assistant, de bons commentaires (je pense à toi, JSON). C’est tout particulièrement utile lorsque la configuration est bavarde, ou très classique. L’envers de la médaille, lorsque l’on transforme les configurations en code, c’est que l’on y perd beaucoup : mettre à jour une config revient à mettre à jour l’application elle-même (pas vraiment compatible avec 12 facteurs, et plutôt difficile d’utilisation lorsque l’on utilise des langages compilés). Pire encore, quelques effets indésirables arbitraires peuvent s’inviter discrètement pendant votre étape de configuration. À tout cela s’ajoute le problème qu’il devient vraiment difficile de lire ou d’analyser des fichiers de config sans lancer l’application elle-même (au-revoir les linters, les vérificateurs de dépendance, les métriques à l’échelle de l’organisation). Si vous voulez le faire correctement, cela implique de se frayer un chemin pour sortir une configuration générée, de construire un bac à sable pour faire fonctionner l’application, et quelques autres machines peu ragoûtantes. Tous ces problèmes proviennent de deux choses : – Nous avons effacé la frontière entre logique d’application et configuration – Nous utilisons un langage Turing-complet pour écrire la configuration Heureusement, ces deux caractéristiques sont accidentelles plutôt qu’essentielles pour les config en code. Le Dhall est un langage conçu pour être utilisé pour les config en code sans compromettre ce qui rend les fichiers config excellents : une séparation nette entre le code et la config, ainsi qu’un comportement prévisible. Cela vous fournit toute l’abstraction dont vous avez besoin pour créer des fichiers config d’une façon pratique et souple (types, interfaces, fonctions), tout en n’étant pas Turing-complet (fermeture garantie) et en permettant de réduire les effets indésirables. Dans cette session, nous examinerons comment créer des fichiers config avec Dhall, comment nous pouvons les lire à partir d’une application et comment nous pouvons utiliser Dhall pour générer des JSON/YAML, afin de configurer des applications incapables d’utiliser une meilleure technologie.