Création d'applications cloud modernes à l'aide de Pulumi et .NET Core

Nous sommes ravis d'annoncer la prise en charge de .NET Core pour Pulumi! Cette annonce signifie que vous pouvez déclarer une infrastructure cloud - y compris tous Azure, tels que Kubernetes, Functions, AppService, Virtual Machines, CosmosDB, et plus - en utilisant votre langage .NET préféré, y compris C #, VB.NET et F #. Cela met le cloud entier à portée de main sans jamais avoir à quitter votre éditeur de code, tout en utilisant des techniques "infrastructure as code" prêtes pour la production.



L'infrastructure est devenue plus pertinente ces jours-ci, car les capacités de cloud modernes telles que les microservices, les conteneurs, les serveurs sans serveur et les magasins de données imprègnent l'architecture de votre application. Le terme «infrastructure» couvre toutes les ressources cloud dont votre application a besoin pour fonctionner. Les architectures modernes nécessitent une réflexion approfondie sur l'infrastructure lors de la création de votre application, au lieu d'attendre ensuite. L'approche de Pulumi aide les développeurs et les équipes d'infrastructure à travailler ensemble pour fournir de nouvelles fonctionnalités innovantes qui exploitent tout ce que le cloud moderne a à offrir.

Pulumi a été lancé il y a un peu plus d'un an et a récemment atteint un jalon stable de 1,0. Après avoir travaillé avec des centaines d'entreprises pour mettre en production des applications cloud, .NET est rapidement devenu l'une des fonctionnalités les plus demandées par la communauté de Pulumi. D'autant plus que beaucoup d'entre nous dans l'équipe de Pulumi sont des premiers experts en .NET, nous sommes ravis aujourd'hui de rendre Pulumi disponible sur .NET Core pour vos besoins d'ingénierie cloud.

Qu'est-ce que Pulumi?


Pulumi vous permet d'utiliser des langages réels pour exprimer les besoins en infrastructure de votre application, en utilisant une technique puissante appelée «infrastructure en tant que code». En utilisant l'infrastructure en tant que code, vous déclarez l'infrastructure souhaitée et un moteur la provisionne pour vous, afin qu'elle soit automatisée, facile à reproduire et suffisamment robuste pour les exigences de production exigeantes. Pulumi pousse cette approche un peu plus loin en exploitant des langages réels et en rendant les modèles d'infrastructure cloud modernes, tels que les conteneurs et les programmes sans serveur, de première classe et faciles.

Avec Pulumi pour .NET, vous pouvez:

  • Déclarez l'infrastructure à l'aide de C #, VB.NET ou F #.
  • Créez, mettez à jour ou supprimez automatiquement des ressources cloud en utilisant l'infrastructure de Pulumi comme moteur de code, en supprimant le pointer-cliquer manuellement dans l'interface utilisateur Azure et les scripts ad hoc.
  • Utilisez vos IDE et outils préférés, y compris Visual Studio et Visual Studio Code, en profitant de fonctionnalités telles que la saisie semi-automatique, la refactorisation et la documentation interactive.
  • Détectez rapidement les erreurs avec les erreurs de compilation standard, les analyseurs Roslyn et un moteur de stratégie spécifique à l'infrastructure pour renforcer la sécurité, la conformité et les meilleures pratiques.
  • Réutilisez n'importe quelle bibliothèque NuGet existante ou distribuez la vôtre, que ce soit pour les meilleures pratiques d'infrastructure, la productivité ou tout simplement les schémas de programmation généraux.
  • Déployez en continu, de manière prévisible et fiable à l'aide des pipelines Azure DevOps, des actions GitHub ou de l'une d'une douzaine d'intégrations.
  • Intégrez des applications cloud évolutives à l'aide de technologies natives cloud classiques d'infrastructure telles que Kubernetes, des conteneurs Docker, des fonctions sans serveur et des bases de données hautement évolutives telles que CosmosDB dans votre expérience de développement principale, en les rapprochant de votre code d'application.

Le SDK open source gratuit de Pulumi, qui comprend une CLI et un assortiment de bibliothèques, permet ces capacités. Pulumi propose également des fonctionnalités premium pour les équipes souhaitant utiliser Pulumi en production, telles que l'intégration d'Azure Active Directory pour les stratégies d'identité et avancées.

Un exemple: base de données globale avec application sans serveur


Disons que nous voulons créer une nouvelle application qui utilise Azure CosmosDB pour la distribution mondiale des données afin que les performances soient excellentes pour les clients, où qu'ils se trouvent dans le monde, avec une application sans serveur C # qui évolue automatiquement avec notre base de données. Normalement, nous utilisons d'autres outils pour créer l'infrastructure, tels que JSON, YAML, une DSL ou pointer-cliquer manuellement dans la console Azure. Cette approche est normale, mais aussi intimidante - elle est complexe, irremplaçable et signifie que nous avons besoin d'un expert en infrastructure juste pour commencer.

L'approche de Pulumi consiste simplement à écrire du code dans notre langage .NET préféré et l'outil Pulumi se chargera du reste. Par exemple, ce code C # crée une base de données Azure CosmosDB avec une fonction AppService Azure sans serveur qui évolue automatiquement avec la base de données:

using System; using System.Collections.Generic; using Pulumi; using Pulumi.Azure.AppService; using Pulumi.Azure.Core; using Pulumi.Azure.CosmosDB; class Program { static Task<int> Main(string[] args) { return Deployment.RunAsync(() => { var locations = new[] { "WestUS", "WestEurope", "SouthEastAsia" }; var rg = new ResourceGroup("myapp-rg", new ResourceGroupArgs { Location = locations[0], }); var app = new CosmosApp("myapp", new CosmosAppArgs { ResourceGroup = resourceGroup, Locations = locations, DatabaseName = "pricedb", ContainerName = "prices", Factory = (location, db) => { var func = new ArchiveFunctionApp("myapp-func", new ArchiveFunctionAppArgs { Location = location, Archive = new FileArchive("app"), AppSettings = new Dictionary<string, string> { ["COSMOSDB_ENDPOINT"] = db.Endpoint, }, }, ); return func.App.ID; }, }); }); } // Definitions of CosmosApp and ArchiveFunctionApp elided for brevity. // Actual runtime application code is stored in the "app" directory. // See link to the full example at the end of this article. } 
afficher les Program.cs bruts hébergés par GitHub

Après avoir écrit ce code, vous exécutez la CLI Pulumi avec la commande pulumi up et elle vous montrera d'abord un aperçu des ressources d'infrastructure qu'elle prévoit de créer. Après confirmation, il déploiera l'intégralité de votre application et son infrastructure requise en quelques minutes.



Plus tard, si vous devez apporter des modifications, il vous suffit de modifier votre programme, de réexécuter la CLI, et il effectuera les modifications incrémentielles nécessaires pour mettre à jour votre infrastructure en conséquence. Un historique complet de vos déploiements est enregistré afin que vous puissiez facilement voir quelles modifications ont été apportées.

Pourquoi .NET est-il également idéal pour l'infrastructure?


Beaucoup d'entre nous aiment utiliser .NET pour créer nos applications, alors pourquoi ne pas l'utiliser aussi pour l'infrastructure comme code? En fait, nous avons déjà vu ci-dessus certains des avantages ci-dessus. Beaucoup d'entre eux sont probablement évidents si vous connaissez et aimez déjà .NET, cependant, récapitulons brièvement.

En utilisant n'importe quel langage .NET, vous obtenez de nombreuses fonctionnalités utiles pour votre code d'infrastructure:

  • Familiarité: pas besoin d'apprendre les DSL ou les langages de balisage.
  • Expressivité: utilisez des boucles, des conditions, des correspondances de modèles, LINQ, du code asynchrone, etc., pour créer dynamiquement une infrastructure qui répond aux besoins de l'environnement cible.
  • Abstraction: encapsulez les modèles courants dans les classes et les fonctions pour masquer la complexité et éviter de copier-coller le même passe-partout à plusieurs reprises.
  • Partage et réutilisation: faites appel à une communauté d'experts en applications et en infrastructure cloud, en partageant et en réutilisant les bibliothèques NuGet avec votre équipe ou la communauté mondiale.
  • Productivité: utilisez votre IDE préféré et complétez les instructions, accédez à la définition, à la vérification des erreurs en direct, à la refactorisation, à l'analyse statique et à la documentation interactive.
  • Organisation de projet: utilisez des techniques de structuration de code courantes telles que des assemblys et des espaces de noms pour gérer votre infrastructure sur un ou plusieurs projets.
  • Cycle de vie des applications: utilisez les systèmes et techniques ALM existants pour gérer et déployer vos projets d'infrastructure, y compris le contrôle des sources, la révision du code, les tests et l'intégration continue (CI) et la livraison (CD).

Pulumi déverrouille l'accès à l'ensemble de l'écosystème .NET - quelque chose qui est facile à prendre pour acquis mais qui manque dans d'autres solutions basées sur JSON, YAML, DSL ou scripts CLI. L'accès à un langage complet était essentiel pour activer l'exemple CosmosApp ci-dessus, qui est un composant personnalisé qui utilise en interne des classes, des boucles, des lambdas et même LINQ. Cette approche aide également les développeurs et les opérateurs à mieux travailler ensemble en utilisant une fondation partagée. Ajoutez tous les éléments ci-dessus ensemble et vous obtiendrez des résultats plus rapides et plus fiables.

Rejoignez la communauté et commencez


Aujourd'hui, nous avons publié le premier aperçu de Pulumi pour .NET, y compris la prise en charge de l'ensemble des services Azure. Pour essayer Pulumi, visitez la page d'accueil de Pulumi pour .NET .

Vous y trouverez plusieurs instructions sur l'installation et la mise en route de Pulumi pour .NET. Les ressources suivantes fournissent des informations utiles supplémentaires:


Bien que Pulumi pour .NET soit répertorié dans l'état "Aperçu", il prend en charge toutes les fonctionnalités les plus essentielles du modèle de programmation Pulumi (et le reste est en route). Notre objectif est de recueillir des commentaires et au cours des prochaines semaines, et nous travaillerons dur pour améliorer l'expérience .NET à tous les niveaux, y compris plus d'exemples et une meilleure documentation.

Veuillez rejoindre la communauté de Slack pour discuter de vos scénarios, idées et obtenir toute l'aide nécessaire de l'équipe et des autres utilisateurs finaux. Pulumi est également open source sur GitHub .

C'est une journée passionnante pour l'équipe de Pulumi et notre communauté. Pulumi a été lancé par certaines des premières personnes de .NET et il est donc formidable de revenir à nos racines et de se connecter avec la communauté .NET, en aidant les développeurs, les équipes d'infrastructure et les opérateurs à construire ensemble de meilleurs logiciels cloud.

Nous avons hâte de voir les nouvelles et incroyables applications cloud que vous construisez avec Pulumi pour .NET!

Source: https://habr.com/ru/post/fr475990/


All Articles