Infrastructure as Code

Un principe fondamental du DevOps est de traiter l'infrastructure de la même manière que les développeurs traitent le code. Le code d'application possède un format et une syntaxe définis. Si le code n'est pas écrit selon les règles du langage de programmation, les applications ne peuvent pas être créées. Le code est stocké dans un système de gestion des versions ou de contrôle de code source qui enregistre un historique du développement du code, des modifications et des corrections de bogues. Lorsque le code est compilé ou intégré à des applications, nous nous attendons à ce qu'une application cohérente soit créée et que la build soit reproductible et fiable.

Utiliser Infrastructure as Code signifie appliquer la même rigueur de développement de code d'application à la mise en service de l'infrastructure. Toutes les configurations doivent être définies de manière déclarative et stockées dans un système de contrôle de source tel que AWS CodeCommit, comme pour le code d'application. La mise en service, l'orchestration et le déploiement de l'infrastructure doivent également prendre en charge l'utilisation de Infrastructure as Code.

Traditionnellement, l'infrastructure était mise en service à l'aide d'une combinaison de scripts et de processus manuels. Parfois, ces scripts étaient stockés dans des systèmes de contrôle de version ou documentés étape par étape dans des fichiers texte ou des runbooks. Souvent, la personne qui écrit les runbooks n'est pas la même que celle qui exécute ces scripts ou qui applique les runbooks. Si ces scripts ou ces runbooks ne sont pas mis à jour fréquemment, ils peuvent devenir un obstacle majeur dans les déploiements. Les nouveaux environnements créés peuvent alors ne pas être reproductibles, fiables ou cohérents.

À l'inverse de ce qui précède, AWS fournit une méthode orientée DevOps pour créer et entretenir une infrastructure. De la même façon que les développeurs logiciels écrivent le code de l'application, AWS fournit des services qui permettant la création, le déploiement et la maintenance de l'infrastructure de façon déclarative, descriptive et par programme. Ces services apportent rigueur, clarté et fiabilité. Les services AWS présentés dans ce document sont essentiels à une méthodologie DevOps et constituent la base de nombreux principes et pratiques AWS DevOps de niveau supérieur.

AWS propose les services suivants pour définir l'infrastructure en tant que code.