Pull to refresh
0
Microsoft
Microsoft — мировой лидер в области ПО и ИТ-услуг

Создание современных облачных приложений с использованием Pulumi и .NET Core

Reading time6 min
Views5.3K
Original author: Microsoft
Мы рады объявить о поддержке .NET Core для Pulumi! Это объявление означает, что вы можете декларировать облачную инфраструктуру — включая все в Azure, например Kubernetes, Functions, AppService, Виртуальные машины, CosmosDB и другое, — используя ваш любимый язык .NET, включая C#, VB.NET и F#. Это дает вам возможность использовать все облако без необходимости покидать редактор кода, используя готовые к использованию методы «инфраструктура как код».



Инфраструктура стала более актуальной в наши дни, поскольку современные облачные возможности, такие как микросервисы, контейнеры, серверы и хранилища данных, пронизывают архитектуру вашего приложения. Термин «инфраструктура» охватывает все облачные ресурсы, необходимые вашему приложению. Современные архитектуры требуют глубоких размышлений о них при создании приложения. Подход Pulumi помогает разработчикам и командам, работающим в области инфраструктуры, совместно работать над созданием новых инновационных функций, которые используют все, что может предложить современное облако.

Pulumi был запущен чуть более года назад и недавно достиг стабильной отметки 1.0. После работы с сотнями компаний по внедрению облачных приложений в продакшн .NET быстро перешел к одной из наиболее часто запрашиваемых сообществом функций Pulumi. Тем более, что многие из нас в команде Pulumi являются ранними экспертами по .NET, сегодня мы очень рады сделать Pulumi доступным на .NET Core для ваших нужд облачной разработки.

Что такое Pulumi?


Pulumi позволяет вам использовать реальные языки для выражения потребностей инфраструктуры вашего приложения, используя мощный метод, называемый «инфраструктура как код». Используя инфраструктуру в качестве кода, вы объявляете желаемую инфраструктуру, и механизм предоставляет ее для вас, чтобы она была автоматизированной, простой для репликации и достаточно надежной для удовлетворения требований продакшена. Pulumi продвигает этот подход на шаг вперед, используя реальные языки и делая современные шаблоны облачной инфраструктуры, например контейнеры и serverless-программы, первоклассными и простыми.

С Pulumi для .NET вы можете:

  • Декларировать инфраструктуру с C#, VB.NET, или F#.
  • Автоматически создавать, обновлять или удалять облачные ресурсы, используя инфраструктуру Pulumi в качестве обработчика кода, удаляя мануальные «point-and-clicking» в пользовательском интерфейсе Azure и специальных сценариях.
  • Использовать ваши любимые IDE и инструменты, включая Visual Studio и Visual Studio Code, для выполнения таких функций, как автозаполнение, рефакторинг и интерактивная документация.
  • Заблаговременно обнаруживать ошибки с помощью стандартных ошибок компилятора, анализаторов Roslyn и механизма политик, специфичных для инфраструктуры, для обеспечения безопасности, соответствия требованиям и передового опыта.
  • Повторно использовать любую существующую библиотеку NuGet или распространять свою собственную, будь то для лучшей инфраструктуры, производительности или просто общих шаблонов программирования.
  • Выполнять непрерывное, предсказуемое и надежное развертывание с помощью Azure DevOps Pipelines, GitHub Actions или одной из более чем десятка интеграций.
  • Создавать масштабируемые облачные приложения с использованием классических облачных инфраструктурных технологий, таких как Kubernetes, контейнеры Docker, бессерверные функции.

Бесплатный SDK с открытым исходным кодом Pulumi, который включает CLI и ассортимент библиотек, обеспечивает эти возможности. Pulumi также предлагает расширенные функции для команд, желающих использовать Pulumi в продакшене, такие как интеграция Azure ActiveDirectory для идентификации и расширенные политики.

Пример: глобальная база данных с бессерверным приложением


Допустим, мы хотим создать новое приложение, которое использует Azure CosmosDB для глобального распространения данных, чтобы обеспечить высокую производительность для клиентов, независимо от того, где они находятся, с помощью бессерверного приложения C#, которое автоматически масштабируется вместе с нашей базой данных. Обычно мы используем некоторые другие инструменты для создания инфраструктуры, такие как JSON, YAML, DSL или вручную «point-and-click» в консоли Azure. Этот подход в целом является нормальным, но он страшный — он сложный, непереиспользуемый и означает, что требуется эксперт по инфраструктуре даже для того, чтобы начать работу.

Подход Pulumi заключается в написании кода на нашем любимом языке .NET, а инструмент Pulumi справится с остальным. Например, этот код C# создает базы данных Azure CosmosDB с помощью бессерверного Azure AppService FunctionApp, который автоматически масштабируется вместе с базой данных:

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».
    // Ищите ссылку на полный пример в конце этой статьи.
}
Смотите Program.cs на GitHub

После написания этого кода вы запустите CLI Pulumi с помощью команды pulumi up, и он сначала покажет вам предварительный просмотр ресурсов инфраструктуры, которые он планирует создать. После подтверждения он развернет все ваше приложение и необходимую инфраструктуру всего за несколько минут.



Позже, если вам нужно внести какие-либо изменения, вы просто отредактируете свою программу, повторно запустите CLI, и она внесет необходимые инкрементные изменения, чтобы соответствующим образом обновить вашу инфраструктуру. Полная история ваших развертываний записывается, чтобы вы могли легко увидеть, какие изменения были внесены.

Почему .NET тоже отлично подходит для инфраструктуры?


Многие из нас любят использовать .NET для создания наших приложений, так почему бы не использовать его для IaaS? На самом деле мы уже перечислили выше некоторые из преимуществ. Многие из них, вероятно, очевидны, если вы уже знаете и любите .NET, но давайте кратко повторим.

Используя любой язык .NET, вы получаете много полезных функций для IaaS:

  • Обучение: нет необходимости изучать DSL или языки шаблонов разметки.
  • Выразительность: используйте циклы, условные выражения, сопоставление с образцом, LINQ, асинхронный код и т.д. для динамического создания инфраструктуры, отвечающей потребностям целевой среды.
  • Абстракция: Инкапсулируйте общие шаблоны в классы и функции, чтобы скрыть сложность и избежать многократного копирования и вставки одного и того же шаблона.
  • Совместное использование и повторное использование: подключитесь к сообществу облачных приложений и экспертов по инфраструктуре, поделившись и повторно используя библиотеки NuGet со своей командой или международным сообществом.
  • Продуктивность: используйте вашу любимую среду разработки и получите Statement Completion, Go-To Definition, живую проверку ошибок, рефакторинг, статический анализ и интерактивную документацию.
  • Организация проекта: используйте общие методы структурирования кода, такие как сборки и пространства имен, для управления инфраструктурой одного или нескольких проектов.
  • Жизненный цикл приложения: используйте существующие системы и методы ALM для управления и развертывания ваших инфраструктурных проектов, включая контроль исходного кода, проверку кода, тестирование и непрерывную интеграцию (CI) и доставку (CD).

Pulumi открывает доступ ко всей экосистеме .NET — то, что легко принять как должное, но отсутствует в других решениях, основанных на сценариях JSON, YAML, DSL или CLI. Доступ к полному языку был необходим для добавления приведенного выше примера CosmosApp, который представляет собой пользовательский компонент, который внутренне использует классы, циклы, лямбды и даже LINQ. Этот подход также помогает разработчикам и операторам лучше работать вместе, используя общую основу. Сложите все вышеперечисленное вместе, и вы получите результат быстрее и надежнее.

Присоединяйтесь к сообществу и начните работу


Мы выпустили первый предварительный просмотр Pulumi для .NET, включая поддержку всего спектра служб Azure. Чтобы попробовать Pulumi, посетите домашнюю страницу Pulumi для .NET homepage.

Там вы найдете несколько инструкций по установке и началу работы с Pulumi для .NET. Следующие ресурсы предоставляют дополнительную полезную информацию:

Tags:
Hubs:
Total votes 18: ↑15 and ↓3+12
Comments1

Articles

Information

Website
www.microsoft.com
Registered
Founded
Employees
Unknown
Location
США