Les grands acteurs du cloud proposent tous des plateformes totalement “api”sées.
Ainsi, la totalité des actions que nous pouvons effectuer via les portails web sont aussi réalisables par des appels d’API. Cela apporte un changement majeur dans la manière de gérer les infrastructures. Il devient possible de les développer et ainsi de profiter de tous les avantages issus des pratiques du développement (DevOps, CI/CD…).
Si ce mode “As Code” apporte un gain non négligeable dans l’agilité avec laquelle nous pouvons gérer les infrastructures, cela les rend aussi plus volatiles. Il est important pour garder la maîtrise de ces environnements cloud de mettre en place une gouvernance technique et financière, gouvernance à l’origine de la création de nouveaux métiers tel que le convoité FinOps. D’autres métiers techniques comme ingénieur système ou analyste d’exploitation sont aussi amenés à évoluer fortement au contact du cloud, en rapprochant leurs pratiques de celles des développeurs.
Réussir ce virage technique et humain, c’est la garantie de maîtriser son parc IT hébergé sur le cloud.
- Infrastructure as Code : moteur de l’agilité technique
Une des innovations que nous apporte le cloud et les pratiques issues de la mouvance DevOps est la possibilité d’automatiser la création et le déploiement de l’infrastructure, c’est ce que l’on appelle l’Infrastructure as Code ou IaC.
Ce mode offre de nombreux avantages, à savoir :
– création automatique d’une nouvelle infrastructure logicielle complète en quelques minutes (base de données, fonctions, fichiers statiques…), idéale pour améliorer le time to market d’un projet,
– répétabilité du processus pour de multiples environnements (développement, recette, pré-production, production), avec également la possibilité de créer autant d’environnements que désiré à n’importe quel moment, pour tester par exemple une nouvelle fonctionnalité,
– réduction des coûts, diminution de la fatigue engendrée par un processus ayant peu de valeur ajoutée et également réduction des risques en cas d’erreur.
Pour atteindre cette agilité technique, il existe des outils propres à chaque cloud provider (AWS CloudFormation, Azure Resource Manager template), mais aussi des outils agnostiques qui présentent l’avantage de pouvoir adresser avec un seul outil/langage plusieurs plateformes cloud.
> Terraform
Terraform est l’un des outils phare en matière d’IaC. De par sa nature, il permet de gérer des infrastructures dans les principaux cloud providers, ou même dans des cloud privés.
Chaque brique logicielle est généralement représentée dans un module qui contient le code nécessaire pour créer, modifier et supprimer une ressource. On peut facilement imaginer, créer un mono-repository contenant à la fois le code source permettant de faire fonctionner le logiciel, et le code source (Terraform) permettant de décrire l’infrastructure associée. Cette pratique où chaque commit représente l’unique source de vérité du logiciel à un instant T a pour nom GitOps. Il ne peut donc plus exister de différences entre ce qui est demandé (code source) et ce qui sera délivré (software & hardware).
En admettant que l’on dispose du code Terraform pour déployer notre infrastructure, il se passera toujours au mieux les 2 étapes suivantes :
1- La planification permet de faire la différence entre l’architecture qui existe actuellement (si déjà déployée) et celle que l’on tente de créer. Cette étape a aussi l’avantage de permettre la visualisation des différentes modifications à appliquer. Si ces changements ne sont pas cohérents ou ne sont pas valides, il est possible de revenir en arrière et d’annuler la « terraformation ».
2- L’application du plan consiste à exécuter le plan précédemment obtenu. Une fois l’application du plan terminée, notre infrastructure est désormais prête à l’emploi. Un exemple de code ci-dessous.
D’autres outils d’IaC existent parmi lesquels : Pulumi, Serverless Framework, Chalice, Claudia.js. À noter que certains sont entièrement orientés sur la technologie Serverless.
En résumé, le choix d’un outil d’Infrastructure as Code est plus que fortement recommandé afin de permettre une parfaite maîtrise de nos infrastructures, au même titre que ce que nous faisons déjà avec nos applications.
Pour lire la suite et aller plus loin sur le sujet, téléchargez notre livre blanc (disponible au format PDF interactif).