Membangun Aplikasi Cloud Modern menggunakan Pulumi dan .NET Core

Kami sangat senang mengumumkan dukungan .NET Core untuk Pulumi! Pengumuman ini berarti Anda dapat mendeklarasikan infrastruktur cloud - termasuk semua Azure, seperti Kubernetes, Functions, AppService, Virtual Machines, CosmosDB, dan lainnya - menggunakan bahasa .NET favorit Anda, termasuk C #, VB.NET, dan F #. Ini membawa seluruh cloud ke ujung jari Anda tanpa harus meninggalkan editor kode Anda, sambil menggunakan teknik "infrastruktur sebagai kode" yang siap produksi.



Infrastruktur menjadi lebih relevan saat ini karena kemampuan cloud modern seperti layanan microser, wadah, serverless, dan penyimpanan data menembus arsitektur aplikasi Anda. Istilah "infrastruktur" mencakup semua sumber daya cloud yang harus dijalankan oleh aplikasi Anda. Arsitektur modern membutuhkan pemikiran mendalam tentang infrastruktur saat membangun aplikasi Anda, alih-alih menunggu sampai sesudahnya. Pendekatan Pulumi membantu pengembang dan tim infrastruktur bekerja sama untuk memberikan fungsionalitas baru yang inovatif yang memanfaatkan segala sesuatu yang ditawarkan cloud modern.

Pulumi diluncurkan sedikit lebih dari setahun yang lalu dan baru-baru ini mencapai tonggak sejarah yang stabil 1,0. Setelah bekerja dengan ratusan perusahaan untuk menghasilkan aplikasi cloud, .NET dengan cepat naik ke salah satu fitur yang paling sering diminta komunitas Pulumi. Terutama karena banyak dari kita di tim Pulumi yang lebih awal. NET ex-pats, kami sangat senang hari ini untuk membuat Pulumi tersedia di .NET Core untuk kebutuhan cloud engineering Anda.

Apa itu Pulumi?


Pulumi memungkinkan Anda menggunakan bahasa nyata untuk mengekspresikan kebutuhan infrastruktur aplikasi Anda, menggunakan teknik yang kuat yang disebut "infrastruktur sebagai kode." Menggunakan infrastruktur sebagai kode, Anda mendeklarasikan infrastruktur yang diinginkan, dan mesin menyediakannya untuk Anda, sehingga otomatis, mudah untuk ditiru , dan cukup kuat untuk menuntut persyaratan produksi. Pulumi mengambil pendekatan ini selangkah lebih maju dengan memanfaatkan bahasa nyata dan membuat pola infrastruktur cloud modern, seperti wadah dan program tanpa server, kelas satu dan mudah.

Dengan Pulumi untuk .NET Anda dapat:

  • Deklarasikan infrastruktur menggunakan C #, VB.NET, atau F #.
  • Secara otomatis membuat, memperbarui, atau menghapus sumber daya cloud menggunakan infrastruktur Pulumi sebagai mesin kode, menghapus titik-dan-klik manual di Azure UI dan skrip ad-hoc.
  • Gunakan IDE dan alat favorit Anda, termasuk Visual Studio dan Visual Studio Code, manfaatkan fitur seperti pelengkapan otomatis, refactoring, dan dokumentasi interaktif.
  • Tangkap kesalahan sejak dini dengan kesalahan penyusun standar, penganalisa Roslyn, dan mesin kebijakan khusus infrastruktur untuk menegakkan keamanan, kepatuhan, dan praktik terbaik.
  • Gunakan kembali perpustakaan NuGet yang ada, atau distribusikan sendiri, apakah itu untuk praktik terbaik infrastruktur, produktivitas, atau hanya pola pemrograman umum.
  • Menyebarkan terus menerus, dapat diprediksi, dan andal menggunakan Pipa Azure DevOps, Tindakan GitHub, atau salah satu dari lebih dari selusin integrasi.
  • Bangun aplikasi cloud yang skalabel menggunakan teknologi cloud infrastruktur klasik seperti Kubernetes, wadah Docker, fungsi serverless, dan database yang sangat skalabel seperti CosmosDB ke dalam pengalaman pengembangan inti Anda, mendekatkan mereka ke kode aplikasi Anda.

SDK open source gratis Pulumi, yang mencakup CLI dan bermacam-macam perpustakaan, memungkinkan kemampuan ini. Pulumi juga menawarkan fitur premium untuk tim yang ingin menggunakan Pulumi dalam produksi, seperti integrasi Direktori Aktif Azure untuk identitas dan kebijakan lanjutan.

Contoh: basis data global dengan aplikasi tanpa server


Katakanlah kita ingin membangun aplikasi baru yang menggunakan Azure CosmosDB untuk distribusi data global sehingga kinerja sangat bagus untuk pelanggan di mana pun mereka berada, dengan aplikasi C # serverless yang secara otomatis berskala bersama dengan basis data kita. Biasanya kami akan menggunakan beberapa alat lain untuk membuat infrastruktur, seperti JSON, YAML, DSL, atau titik-dan-klik secara manual di konsol Azure. Pendekatan ini setara untuk kursus, tetapi juga menakutkan - rumit, tidak dapat diulang, dan berarti kita membutuhkan pakar infrastruktur hanya untuk memulai.

Pendekatan Pulumi adalah dengan hanya menulis kode dalam bahasa .NET favorit kami dan alat Pulumi akan menangani sisanya. Misalnya, kode C # ini membuat basis data Azure CosmosDB dengan Serverapp Azure AppService FunctionApp yang secara otomatis berskala di samping basis data:

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. } 
lihat mentah Program.cs yang diselenggarakan oleh GitHub

Setelah menulis kode ini, Anda menjalankan Pulumi CLI dengan perintah pulumi dan pertama-tama akan menunjukkan kepada Anda pratinjau sumber daya infrastruktur yang rencananya akan dibuat. Setelah mengonfirmasi, itu akan mengerahkan seluruh aplikasi Anda dan infrastruktur yang diperlukan hanya dalam beberapa menit.



Kemudian, jika Anda perlu membuat perubahan, Anda cukup mengedit program Anda, jalankan kembali CLI, dan itu akan membuat perubahan tambahan yang diperlukan untuk memperbarui infrastruktur Anda sesuai. Riwayat lengkap penerapan Anda dicatat sehingga Anda dapat dengan mudah melihat perubahan apa yang telah dibuat.

Mengapa .NET juga bagus untuk infrastruktur?


Banyak dari kita suka menggunakan .NET untuk membuat aplikasi kita, jadi mengapa tidak menggunakannya untuk infrastruktur sebagai kode juga? Kami sebenarnya sudah melihat di atas beberapa keuntungan di atas untuk melakukannya. Banyak dari ini mungkin jelas jika Anda sudah tahu dan cinta. NET, bagaimanapun, mari kita rekap secara singkat.

Dengan menggunakan bahasa .NET apa pun, Anda mendapatkan banyak fitur bermanfaat untuk kode infrastruktur Anda:

  • Keakraban: Tidak perlu mempelajari DSL atau markup templating languages.
  • Ekspresififitas: Gunakan loop, kondisional, pencocokan pola, LINQ, kode async, dan lainnya, untuk secara dinamis membuat infrastruktur yang memenuhi kebutuhan lingkungan target.
  • Abstraksi: Meringkas pola umum ke dalam kelas dan fungsi untuk menyembunyikan kerumitan dan menghindari penyalinan dan tempel platplate yang sama berulang kali.
  • Berbagi dan menggunakan kembali: Masuki komunitas aplikasi cloud dan pakar infrastruktur, dengan membagikan dan menggunakan kembali perpustakaan NuGet dengan tim Anda atau komunitas global.
  • Produktivitas: Gunakan IDE favorit Anda dan dapatkan penyelesaian pernyataan, pergi ke definisi, pengecekan kesalahan langsung, refactoring, analisis statis, dan dokumentasi interaktif.
  • Organisasi proyek: Gunakan teknik penataan kode umum seperti majelis dan ruang nama untuk mengelola infrastruktur Anda di satu atau beberapa proyek.
  • Siklus hidup aplikasi: Gunakan sistem dan teknik ALM yang ada untuk mengelola dan menggunakan proyek infrastruktur Anda, termasuk kontrol sumber, tinjauan kode, pengujian, dan integrasi berkelanjutan (CI) dan pengiriman (CD).

Pulumi membuka kunci akses ke seluruh ekosistem .NET - sesuatu yang mudah diterima begitu saja tetapi hilang dari solusi lain berdasarkan skrip JSON, YAML, DSLs, atau CLI. Memiliki akses ke bahasa lengkap sangat penting untuk mengaktifkan contoh CosmosApp di atas, yang merupakan komponen khusus yang secara internal menggunakan kelas, loop, lambda, dan bahkan LINQ. Pendekatan ini juga membantu pengembang dan operator bekerja sama lebih baik menggunakan yayasan bersama. Tambahkan semua hal di atas bersama-sama, dan Anda menyelesaikan sesuatu dengan lebih cepat dan lebih andal.

Bergabunglah dengan komunitas dan mulailah


Hari ini kami telah merilis pratinjau pertama dari Pulumi untuk .NET, termasuk dukungan untuk seluruh layanan Azure. Untuk mencoba Pulumi, kunjungi situs web Pulumi untuk .NET .

Di sana Anda akan menemukan beberapa petunjuk tentang cara menginstal dan memulai dengan Pulumi untuk .NET. Sumber daya berikut menyediakan informasi berguna tambahan:


Meskipun Pulumi untuk .NET terdaftar dalam status "pratinjau", ini mendukung semua fitur model pemrograman Pulumi yang paling penting (dan sisanya sedang dalam perjalanan). Tujuan kami adalah untuk mengumpulkan umpan balik dan selama beberapa minggu ke depan, dan kami akan bekerja keras untuk meningkatkan pengalaman .NET secara menyeluruh, termasuk lebih banyak contoh dan dokumentasi yang lebih baik.

Silakan bergabung dengan komunitas di Slack untuk mendiskusikan skenario, ide, dan untuk mendapatkan bantuan yang diperlukan dari tim dan pengguna akhir lainnya. Pulumi juga open source di GitHub .

Ini adalah hari yang menyenangkan bagi tim Pulumi dan komunitas kami. Pulumi dimulai oleh beberapa orang .NET yang paling awal dan karenanya sangat bagus untuk kembali ke akar kami dan terhubung dengan komunitas .NET, membantu pengembang, tim infrastruktur, dan operator membangun perangkat lunak cloud yang lebih baik bersama-sama.

Kami berharap dapat melihat aplikasi cloud baru dan luar biasa yang Anda buat dengan Pulumi untuk .NET!

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


All Articles