Creación de aplicaciones modernas en la nube con Pulumi y .NET Core

¡Nos complace anunciar el soporte de .NET Core para Pulumi! Este anuncio significa que puede declarar la infraestructura de la nube, incluido todo Azure, como Kubernetes, Functions, AppService, Virtual Machines, CosmosDB y más, utilizando su lenguaje .NET favorito, incluidos C #, VB.NET y F #. Esto pone toda la nube a su alcance sin tener que abandonar su editor de código, mientras utiliza técnicas de "infraestructura como código" listas para la producción.



La infraestructura se ha vuelto más relevante en estos días a medida que las capacidades modernas de la nube, como microservicios, contenedores, servidores y almacenes de datos, impregnan la arquitectura de su aplicación. El término "infraestructura" cubre todos los recursos en la nube que su aplicación necesita para ejecutarse. Las arquitecturas modernas requieren pensar profundamente en la infraestructura al construir su aplicación, en lugar de esperar hasta después. El enfoque de Pulumi ayuda a los desarrolladores y los equipos de infraestructura a trabajar juntos para ofrecer una nueva funcionalidad innovadora que aproveche todo lo que la nube moderna tiene para ofrecer.

Pulumi se lanzó hace poco más de un año y recientemente alcanzó un hito estable de 1.0. Después de trabajar con cientos de empresas para que las aplicaciones en la nube entren en producción, .NET se ha convertido rápidamente en una de las funciones más solicitadas por la comunidad de Pulumi. Especialmente dado que muchos de nosotros en el equipo de Pulumi somos antiguos expatriados de .NET, hoy estamos encantados de hacer que Pulumi esté disponible en .NET Core para sus necesidades de ingeniería en la nube.

¿Qué es pulumi?


Pulumi le permite usar lenguajes reales para expresar las necesidades de infraestructura de su aplicación, usando una técnica poderosa llamada "infraestructura como código". Usando la infraestructura como código, declara la infraestructura deseada, y un motor lo proporciona para usted, de modo que sea automatizado, fácil de replicar y lo suficientemente robusto para los exigentes requisitos de producción. Pulumi lleva este enfoque un paso más allá al aprovechar lenguajes reales y hacer que los patrones modernos de infraestructura en la nube, como contenedores y programas sin servidor, sean de primera clase y fáciles.

Con Pulumi para .NET puedes:

  • Declare la infraestructura utilizando C #, VB.NET o F #.
  • Cree, actualice o elimine automáticamente los recursos de la nube utilizando la infraestructura de Pulumi como motor de código, eliminando el apuntar y hacer clic manualmente en la interfaz de usuario de Azure y los scripts ad-hoc.
  • Use sus IDE y herramientas favoritas, incluidos Visual Studio y Visual Studio Code, aprovechando características como la finalización automática, la refactorización y la documentación interactiva.
  • Detecte los errores desde el principio con errores de compilación estándar, analizadores Roslyn y un motor de políticas específico de infraestructura para hacer cumplir la seguridad, el cumplimiento y las mejores prácticas.
  • Reutilice cualquier biblioteca NuGet existente, o distribuya la suya, ya sea para las mejores prácticas de infraestructura, productividad o solo patrones de programación generales.
  • Implemente de forma continua, previsible y confiable utilizando Azure DevOps Pipelines, GitHub Actions o una de las más de una docena de integraciones.
  • Cree aplicaciones escalables en la nube utilizando tecnologías clásicas de infraestructura nativa en la nube como Kubernetes, contenedores Docker, funciones sin servidor y bases de datos altamente escalables como CosmosDB en su experiencia de desarrollo central, acercándolos al código de su aplicación.

El SDK de código abierto gratuito de Pulumi, que incluye una CLI y una variedad de bibliotecas, habilita estas capacidades. Pulumi también ofrece características premium para equipos que desean usar Pulumi en producción, como la integración de Azure Active Directory para identidad y políticas avanzadas.

Un ejemplo: base de datos global con aplicación sin servidor


Supongamos que queremos crear una nueva aplicación que use Azure CosmosDB para la distribución global de datos para que el rendimiento sea excelente para los clientes, sin importar en qué parte del mundo se encuentren, con una aplicación sin servidor C # que se escala automáticamente junto con nuestra base de datos. Normalmente, usaríamos otras herramientas para crear la infraestructura, como JSON, YAML, un DSL o señalar y hacer clic manualmente en la consola de Azure. Este enfoque es normal para el curso, pero también desalentador: es complejo, irrepetible y significa que necesitamos un experto en infraestructura solo para comenzar.

El enfoque de Pulumi es simplemente escribir código en nuestro lenguaje .NET favorito y la herramienta Pulumi se encargará del resto. Por ejemplo, este código C # crea una base de datos Azure CosmosDB con una AppApp AppService de Azure sin servidor que se escala automáticamente junto con la base de datos:

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. } 
ver programas.cs sin procesar alojados con GitHub

Después de escribir este código, ejecuta la CLI de Pulumi con el comando pulumi up y primero le mostrará una vista previa de los recursos de infraestructura que planea crear. Después de confirmar, desplegará toda su aplicación y su infraestructura requerida en solo unos minutos.



Más adelante, si necesita realizar algún cambio, simplemente edite su programa, vuelva a ejecutar la CLI y realizará los cambios incrementales necesarios para actualizar su infraestructura en consecuencia. Se registra un historial completo de sus implementaciones para que pueda ver fácilmente qué cambios se han realizado.

¿Por qué .NET también es excelente para la infraestructura?


Muchos de nosotros amamos usar .NET para crear nuestras aplicaciones, entonces ¿por qué no usarlo también para infraestructura como código? De hecho, ya hemos visto anteriormente algunas de las ventajas anteriores para hacerlo. Muchos de estos son probablemente evidentes si ya conoce y ama .NET, sin embargo, recapitulemos brevemente.

Al usar cualquier lenguaje .NET, obtiene muchas funciones útiles para su código de infraestructura:

  • Familiaridad: no es necesario aprender DSL o lenguajes de plantillas de marcado.
  • Expresividad: use bucles, condicionales, coincidencia de patrones, LINQ, código asíncrono y más, para crear dinámicamente infraestructura que satisfaga las necesidades del entorno de destino.
  • Abstracción: encapsula patrones comunes en clases y funciones para ocultar la complejidad y evitar copiar y pegar la misma plantilla repetidamente.
  • Compartir y reutilizar: Aproveche una comunidad de aplicaciones en la nube y expertos en infraestructura, compartiendo y reutilizando las bibliotecas de NuGet con su equipo o la comunidad global.
  • Productividad: use su IDE favorito y obtenga la finalización de la declaración, vaya a definición, verificación de errores en vivo, refactorización, análisis estático y documentación interactiva.
  • Organización del proyecto: utilice técnicas comunes de estructuración de código, como ensamblados y espacios de nombres, para administrar su infraestructura en uno o más proyectos.
  • Ciclo de vida de la aplicación: utilice los sistemas y técnicas ALM existentes para administrar e implementar sus proyectos de infraestructura, incluido el control de origen, la revisión de código, las pruebas y la integración continua (CI) y la entrega (CD).

Pulumi desbloquea el acceso a todo el ecosistema .NET, algo que es fácil de dar por sentado pero que falta en otras soluciones basadas en scripts JSON, YAML, DSL o CLI. Tener acceso a un lenguaje completo fue esencial para habilitar el ejemplo de CosmosApp anterior, que es un componente personalizado que utiliza internamente clases, bucles, lambdas e incluso LINQ. Este enfoque también ayuda a los desarrolladores y operadores a trabajar mejor juntos usando una base compartida. Agregue todo lo anterior junto, y podrá hacer las cosas más rápido y de manera más confiable.

Únete a la comunidad y comienza


Hoy hemos lanzado la primera vista previa de Pulumi para .NET, que incluye soporte para toda la gama de servicios de Azure. Para probar Pulumi, visite la página de inicio de Pulumi para .NET .

Allí encontrará varias instrucciones sobre cómo instalar y comenzar a utilizar Pulumi para .NET. Los siguientes recursos proporcionan información útil adicional:


Aunque Pulumi para .NET aparece en el estado de "vista previa", admite todas las características más esenciales del modelo de programación Pulumi (y el resto está en camino). Nuestro objetivo es recopilar comentarios y durante las próximas semanas, y trabajaremos duro para mejorar la experiencia .NET en todos los ámbitos, incluidos más ejemplos y una mejor documentación.

Únase a la comunidad en Slack para discutir sus escenarios, ideas y obtener la asistencia necesaria del equipo y otros usuarios finales. Pulumi también es de código abierto en GitHub .

Este es un día emocionante para el equipo de Pulumi y nuestra comunidad. Pulumi fue iniciado por algunas de las primeras personas de .NET, por lo que es genial volver a nuestras raíces y conectarse con la comunidad .NET, ayudando a los desarrolladores, equipos de infraestructura y operadores a construir un mejor software en la nube juntos.

¡Esperamos ver las nuevas y sorprendentes aplicaciones en la nube que creas con Pulumi para .NET!

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


All Articles