Créez des applications cloud à la pointe de la technologie à l'aide de Pulumi et .NET Core

Nous sommes heureux d'annoncer la prise en charge de .NET Core pour Pulumi! Cette annonce signifie que vous pouvez déclarer votre infrastructure cloud - y compris tout dans Azure, comme Kubernetes, Functions, AppService, Virtual Machines, CosmosDB, etc. - en utilisant votre langage .NET préféré, y compris C #, VB.NET et F #. Cela vous donne la possibilité d'utiliser l'intégralité du cloud sans avoir à quitter l'éditeur de code en utilisant les méthodes de code de type infrastructure prêtes à l'emploi.



L'infrastructure est devenue plus pertinente ces jours-ci, car les capacités cloud modernes telles que les microservices, les conteneurs, les serveurs et les entrepôts de données imprègnent l'architecture de votre application. Le terme infrastructure couvre toutes les ressources cloud dont votre application a besoin. Les architectures modernes nécessitent une réflexion approfondie à leur sujet lors de la création d'une application. L'approche de Pulumi aide les développeurs d'infrastructure et les équipes à travailler ensemble pour créer de nouvelles fonctionnalités innovantes qui tirent parti de 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 niveau stable de 1,0. Après avoir travaillé avec des centaines d'entreprises pour déployer des applications basées sur le cloud en production, .NET est rapidement passé à l'une des fonctionnalités de communauté les plus demandées de Pulumi. D'autant plus que beaucoup d'entre nous dans l'équipe de Pulumi sont des premiers experts .NET, nous sommes aujourd'hui très heureux de rendre Pulumi disponible sur le .NET Core pour vos besoins de développement cloud.

Qu'est-ce que Pulumi?


Pulumi vous permet d'utiliser de vrais langages pour exprimer les besoins en infrastructure de votre application en utilisant une méthode puissante appelée «infrastructure en tant que code». En utilisant l'infrastructure comme code, vous déclarez l'infrastructure souhaitée et le mécanisme vous permet d'être automatisé, facile à répliquer et suffisamment fiable pour répondre aux exigences de production. Pulumi va encore plus loin dans cette approche, en utilisant des langages réels et en créant des modèles d'infrastructure cloud modernes, tels que des conteneurs et des programmes sans serveur, de première classe et simples.

Avec Pulumi pour .NET, vous pouvez:

  • Déclarez l'infrastructure avec C #, VB.NET ou F #.
  • Créez, mettez à jour ou supprimez automatiquement des ressources cloud à l'aide de l'infrastructure Pulumi en tant que gestionnaire de code, supprimant les pointer-et-cliquer manuellement dans l'interface utilisateur Azure et les scripts personnalisés.
  • Utilisez vos IDE et outils préférés, y compris Visual Studio et Visual Studio Code, pour exécuter des fonctions telles que la saisie semi-automatique, la refactorisation et la documentation en ligne.
  • Détectez les erreurs à l'avance à l'aide des erreurs de compilation standard, des analyseurs Roslyn et des mécanismes de stratégie spécifiques à l'infrastructure pour la sécurité, la conformité et les meilleures pratiques.
  • Réutilisez toute bibliothèque NuGet existante ou redistribuez la vôtre, que ce soit pour une meilleure infrastructure, des performances ou simplement des modèles de programmation courants.
  • Effectuez des déploiements continus, prévisibles et fiables avec Azure DevOps Pipelines, GitHub Actions ou l'une des plus d'une douzaine d'intégrations.
  • Créez des applications cloud évolutives à l'aide des technologies d'infrastructure cloud classiques telles que Kubernetes, conteneurs Docker, fonctionnalités sans serveur.

Le SDK open source Pulumi gratuit, qui comprend la gamme CLI et la bibliothèque, fournit ces fonctionnalités. Pulumi propose également des fonctionnalités avancées pour les équipes qui souhaitent utiliser Pulumi en production, telles que l'intégration d'Azure ActiveDirectory pour l'authentification et les stratégies avancées.

Exemple: une base de données globale avec une application sans serveur


Imaginons que nous voulons créer une nouvelle application qui utilise Azure CosmosDB pour la distribution de données mondiale afin de fournir des performances élevées aux clients, où qu'ils se trouvent, en utilisant une application C # sans serveur qui évolue automatiquement avec notre base de données. Nous utilisons généralement d'autres outils de création d'infrastructure, tels que JSON, YAML, DSL, ou pointer-cliquer manuellement dans la console Azure. Cette approche dans son ensemble est normale, mais elle fait peur - elle est complexe, inutilisée et signifie qu'un expert en infrastructure est nécessaire même pour commencer.

L'approche de Pulumi consiste à écrire du code dans notre langage .NET préféré, et l'outil Pulumi peut gérer le reste. Par exemple, ce code C # crée une base de données Azure CosmosDB à l'aide de la 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; }, }); }); } //  CosmosApp  ArchiveFunctionApp   . //          «app». //         . } 
Regardez Program.cs sur GitHub

Après avoir écrit ce code, vous exécutez CLI Pulumi à l'aide de la commande pulumi up, et il vous montrera d'abord un aperçu des ressources d'infrastructure qu'il prévoit de créer. Après confirmation, il déploiera l'intégralité de votre application et l'infrastructure nécessaire 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 elle apportera 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 pour IaaS? En fait, nous avons déjà énuméré certains des avantages ci-dessus. Beaucoup d'entre eux sont probablement évidents si vous connaissez et aimez déjà .NET, mais répétons brièvement.

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

  • Formation: Pas besoin d'apprendre les langages de modèles DSL ou de balisage.
  • Expressivité: utilisez des boucles, des expressions conditionnelles, la correspondance 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 et coller plusieurs fois le même modèle.
  • Partage et réutilisation: rejoignez la communauté des applications cloud et des experts en infrastructure en partageant et en réutilisant les bibliothèques NuGet avec votre équipe ou la communauté internationale.
  • Productivité: utilisez votre environnement de développement préféré et obtenez l'achèvement de la déclaration, la définition de Go-To, la vérification des erreurs en direct, la refactorisation, l'analyse statique et la documentation interactive.
  • Organisation de projet: utilisez des méthodes de structuration de code courantes, telles que des assemblys et des espaces de noms, pour gérer l'infrastructure d'un ou plusieurs projets.
  • Cycle de vie des applications: utilisez les systèmes et méthodes ALM existants pour gérer et déployer vos projets d'infrastructure, y compris le contrôle des sources, la vérification du code, les tests et l'intégration continue (CI) et la livraison (CD).

Pulumi donne accès à l'ensemble de l'écosystème .NET - quelque chose qui est facile à prendre pour acquis, mais pas dans d'autres solutions basées sur des scripts JSON, YAML, DSL ou CLI. L'accès au langage complet était nécessaire pour ajouter 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 un cadre commun. Ajoutez tout ce qui précède ensemble et vous obtiendrez le résultat plus rapidement et plus fiable.

Rejoignez la communauté et commencez


Nous avons publié le premier aperçu Pulumi pour .NET, y compris la prise en charge de la gamme complète de services Azure. Pour essayer Pulumi, visitez la page d' accueil de Pulumi pour la page d'accueil .NET .

Vous y trouverez des instructions d'installation et de démarrage pour Pulumi pour .NET. Les ressources suivantes fournissent des informations utiles supplémentaires:

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


All Articles