Fotolia
IaC sur AWS : pourquoi il faut utiliser AWS CDK avec CloudFormation
L’infrastructure en tant que code est devenue une partie essentielle du processus de développement dans le cloud. Découvrez comment CDK AWS corrige les faiblesses de CloudFormation et améliore l’automatisation sur AWS.
Les infrastructures programmables (ou Infrastructure as a code, IaC) sont courantes pour provisionner automatiquement et gérer des ressources dans le cloud. Avec la complexification des architectures, les équipes d’ingénieurs et DevOps codifient l’infrastructure pour améliorer la flexibilité et les fonctionnalités des applications. Pour cela, elles peuvent employer un seul langage source à travers l’entreprise.
En apparence, les équipes IT ont le choix entre deux options natives chez AWS en ce qui concerne l’Infrastructure as a Code : AWS CloudFormation et l’AWS Cloud Development Kit (CDK). En vérité, les deux environnements sont complémentaires.
Les modèles disponibles dans CloudFormation correspondent à la première incursion d’AWS dans l’IaC. Bien qu’ils soient toujours utiles, ils présentent des faiblesses évidentes. Plus précisément, le service n’offre pas de capacités logiques intégrées et présente une courbe d’apprentissage abrupte.
AWS CDK est un framework de développement logiciel open source pour paramétrer une infrastructure cloud. Il est la réponse de l’opérateur aux problèmes évoqués ci-dessus. CDK supporte les langages de programmation les plus populaires que les développeurs peuvent utiliser dans une approche impérative. Ils utilisent le Kit pour construire, automatiser et gérer l’infrastructure, puis provisionner les commandes depuis CloudFormation.
CDK est doté d’un environnement de développement intégré (IDE). Il supporte les langages TypeScript, JavaScript, Python, Java et C#/.Net. Dans cet article, nous expliquons les avantages d’utiliser AWS CDK avec CloudFormation. Nous décrivons les principales caractéristiques des outils, le rôle des constructions dans les piles applicatives, et listons les avantages d’un langage commun pour un IaC natif au cloud d’AWS.
Provisionner des ressources avec CloudFormation
Dans le but de comprendre les avantages de CDK, nous devons observer comment CloudFormation est utilisé pour accéder et gérer les ressources AWS.
À partir d’une série de fichiers de configuration normalisés, il fournit un accès programmatique aux ressources d’une application. Les développeurs créent des modèles YAML ou des fichiers JSON pour définir les opérateurs de base, par exemple les instructions if et des boucles for.
Ces fichiers décrivent les ressources telles que les configurations VPC, les instances Relational Database Service (RDS), les buckets S3, les terminaux API, et d’autres. Les équipes peuvent ensuite les exécuter les templates nécessaires à partir d’un pipeline DevOps comme Jenkins pour faire tourner l’infrastructure souhaitée.
Cependant, les fichiers YAML et JSON sont basés sur la sérialisation des données et ne sont pas de véritables langages de programmation. Plus il y a d’éléments à intégrer, plus il devient difficile de travailler avec ces objets YAML et JSON volumineux.
Surtout, les templates de CloudFormation manquent d’abstraction, les développeurs doivent donc écrire de nombreuses lignes de texte pour décrire les détails de niveau inférieur. Le CDK, lui, facilite la réutilisation du code et les tests appropriés et vient compléter les atouts de CloudFormation en générant ces fichiers.
AWS Construct Library et les fonctionnalités clés
Bien qu’il soit relativement aisé pour les programmeurs de travailler à partir de la console de gestion AWS, il lui manquait une manière simple et automatisée d’itérer sur les paramètres de l’infrastructure. Introduit en août 2018, AWS CDK permet aux équipes d’adopter le concept de l’IaC à l’aide d’un modèle objet, puis de la synthétiser dans des templates CloudFormation afin d’approvisionner les ressources en toute fluidité.
Il y a quelques fonctionnalités et éléments importants à comprendre avant d’employer le CDK. Les blocs de construction des applications associées sont appelés Constructs (ou constructions en français). Ils peuvent représenter différents composants, un simple bucket S3 ou un site web statique, à une application multi stack répartie sur plusieurs régions AWS. Une construction peut en incorporer d’autres. Les équipes peuvent ensuite les déployer dans un environnement AWS comme une application cloud, éventuellement constituée de plusieurs piles.
Au sein de CDK, l’AWS Construct Library contient un ensemble de constructions de bas et haut niveau. Les constructs de bas niveau, ou ressources CFN, doivent simplifier le processus d’approvisionnement en définissant automatiquement la ressource désignée sans avoir à fournir de détails détaillés.
Un deuxième niveau de constructions gère les tâches courantes : le code de référence et la logique de collage requise par les ressources CFN. Enfin, les développeurs peuvent utiliser des constructions de haut niveau, appelées patterns, pour réaliser des tâches qui impliquent plusieurs ressources.
AWS CDK excelle dans l’approvisionnement de plusieurs services qui doivent communiquer entre eux. Les constructions de niveau supérieur permettent aux développeurs de démarrer rapidement en substituant des valeurs par défaut à tous paramètres non remplis. En plus des constructs et de l’intégration de haut niveau, le framework permet la vérification des types, l’autocomplétion et propose des outils tels que son interface en ligne de commande et son kit pour Visual Studio Code.
Utiliser AWS CDK pour définir l’infrastructure de bout en bout
Parce que le kit AWS CDK augmente le nombre de ressources que les développeurs peuvent manipuler à travers une base de code, il offre plus de fonctionnalités que des outils plus limités comme ceux contenus nativement dans CloudFormation et Hashicorp TerraForm. Non seulement le framework rationalise le processus de provisionnement, mais il simplifie également la vérification et la révision.
Par exemple, les organisations bénéficient d’une base de code plus petite. Cela s’avère pratique pour décoder les fichiers de configuration problématiques ou documenter les procédures. En plus d’une meilleure lisibilité, les développeurs peuvent transférer les scripts de déploiement et de configuration dans une seule base de code qui repose sur un langage commun.
Enfin, en travaillant dans des IDE modernes, les développeurs peuvent créer des applications et des infrastructures en utilisant les fonctionnalités clés décrites ci-dessus. Avec le Cloud Development Kit, ils bénéficient en principe de la mise en évidence des erreurs, de la vérification de la syntaxe, des inspections et la prise en charge du refactoring.
En fin de compte, CDK leur offre la possibilité d’écrire un code approprié et réutilisable dans un langage familier et ce faisant, de produire une infrastructure plus sûre et plus cohérente.