Apa itu .NET Aspire?

Selesai

Ekosistem cloud seperti Microsoft Azure dan Amazon Web Services (AWS) sangat disematkan di industri TI dan solusi hosting populer untuk aplikasi web dan layanan web. Kemungkinan sistem hosting cloud adalah pilihan default untuk aplikasi Anda. Jadi, Anda perlu memastikan bahwa aplikasi yang Anda buat dirancang untuk mengambil keuntungan maksimum dari aplikasi tersebut.

Aplikasi cloud-native adalah aplikasi yang Anda desain secara khusus untuk dijalankan di cloud. Aplikasi sering menunjukkan pola arsitektur tertentu sehingga performa, skalabilitas, dan keandalan optimal.

Bayangkan Anda bekerja untuk perusahaan pakaian dan peralatan luar ruangan. Dewan direksi meminta Anda untuk mengembangkan aplikasi web eShop baru untuk situs utama yang digunakan pelanggan perusahaan. Tim Anda terbiasa dengan model layanan mikro dan Anda ingin tahu apakah menggunakan .NET Aspire dapat membuat proyek lebih mudah.

Dalam unit ini, Anda mempelajari lebih lanjut tentang arsitektur cloud-native dan melihat tantangan yang dapat terlibat dalam membangunnya. Anda juga melihat bagaimana .NET Aspire dapat mengatasi tantangan tersebut.

Apa itu aplikasi cloud-native?

Aplikasi cloud-native adalah aplikasi yang dirancang untuk memanfaatkan infrastruktur cloud secara optimal untuk memberikan performa, ketersediaan, dan ketahanan terbaik. Ada enam pilar arsitektur perangkat lunak cloud-native:

  • Infrastruktur cloud. Aplikasi cloud-native disebarkan ke solusi hosting cloud dan bukan ke farm server lokal.
  • Layanan mikro. Aplikasi cloud-native diimplementasikan sebagai sekumpulan layanan mikro, yang masing-masing mengimplementasikan sebagian kecil fungsionalitas bisnis.
  • Kontainer. Layanan mikro dan bagian lain dari aplikasi dikembangkan dan disebarkan dalam kontainer untuk memastikan lingkungan eksekusi yang konsisten.
  • Layanan dukungan. Sumber daya tambahan, seperti database dan layanan penembolokan, dapat digunakan untuk menyediakan fungsionalitas umum untuk layanan mikro.
  • Desain modern. Aplikasi cloud-native sesuai dengan metodologi Aplikasi Dua Belas Faktor, yang mencakup prinsip-prinsip seperti Integrasi Berkelanjutan/Penyebaran Berkelanjutan (CI/CD), disposabilitas, pengikatan port, dan sebagainya.
  • Otomatisasi Aplikasi cloud-native menggunakan Infrastruktur sebagai Kode (IaC) untuk mengotomatiskan provisi dan penyebaran platform.

Diagram konseptual memperlihatkan enam pilar aplikasi cloud-native.

Untuk memberikan kelincahan, aplikasi cloud-native terdiri dari satu set layanan mikro. Setiap layanan mikro:

  • Menerapkan satu bagian dari fungsionalitas lengkap.
  • Menjalankan dalam prosesnya sendiri dan diisolasi dari yang lain, sering dalam kontainer khusus.
  • Dibangun oleh tim terpisah.
  • Berkomunikasi dengan yang lain, tetapi digabungkan secara longgar.

Setiap tim memilih bahasa dan teknologi yang lebih mereka sukai untuk mengimplementasikan layanan mikro mereka. Setiap layanan mikro disebarkan dan diskalakan secara independen dari yang lain.

Diagram berikut mengilustrasikan perbedaan antara aplikasi web monolitik tradisional dan aplikasi web yang terdiri dari layanan mikro.

Diagram konseptual memperlihatkan perbedaan antara aplikasi web monolitik dan aplikasi yang terdiri dari layanan mikro.

Aplikasi cloud-native dapat mewujudkan banyak keuntungan untuk bisnis Anda. Contohnya:

  • Dengan menghosting aplikasi Anda di cloud, Anda tidak perlu membangun dan memelihara infrastruktur seperti server hosting, sistem operasi, dan layanan pendukung sendiri.
  • Karena setiap layanan mikro dikembangkan secara independen, Anda dapat terus menyebarkan fungsionalitas baru di dalamnya tanpa harus menunggu tim lain atau pencapaian versi utama.
  • Karena setiap layanan mikro berjalan dalam satu atau beberapa kontainer, Anda tahu bahwa lingkungannya sama di semua lingkungan pengujian, pementasan, dan produksi.
  • Karena Anda dapat menggunakan sistem orkestrasi kontainer, seperti Kubernetes, Anda dapat menyebarkan instans tambahan dengan cepat untuk merespons peningkatan permintaan.

Tantangan yang disajikan oleh aplikasi cloud-native

Aplikasi cloud-native yang terdiri dari beberapa layanan mikro dan dengan banyak fitur dapat menjadi tantangan kompleks dan menyajikan yang tidak muncul dengan aplikasi monolitik. Contohnya:

  • Definisi aplikasi. Kecuali didokumenkan dengan hati-hati, mungkin sulit bagi pengembang untuk memahami integrasi mana yang membentuk aplikasi cloud-native lengkap.
  • Komunikasi. Setiap layanan mikro mungkin perlu bertukar pesan atau data dengan layanan mikro lainnya untuk merumuskan respons terhadap permintaan pengguna. Meskipun Anda harus mengaktifkan komunikasi tersebut, Anda harus melakukannya dengan cara yang tidak menggabungkan layanan mikro satu sama lain dengan erat. Anda juga memerlukan komunikasi untuk tetap dapat diandalkan pada saat permintaan tinggi atau selama kegagalan layanan.
  • Ketahanan. Tidak ada layanan hosting yang tersedia 100%. Dalam kesempatan yang jarang terjadi ketika layanan mikro tidak tersedia, Anda harus memastikan bahwa aplikasi menangani kegagalan dengan kuat dan menyimpan permintaan sampai layanan kembali.
  • Data terdistribusi. Setiap layanan mikro mengimplementasikan lapisan penyimpanan datanya sendiri dan mungkin tidak menggunakan server database yang sama dengan yang lain. Anda harus mempertimbangkan bagaimana Anda mengkueri data dari beberapa layanan mikro dan cara Anda menerapkan transaksi.
  • Rahasia. Jika aplikasi Anda menangani segala jenis data sensitif, setiap layanan mikro harus mengautentikasi setiap permintaan yang diterimanya sebelum mengembalikan respons. Seringkali rahasia seperti kunci enkripsi asimetris dan simetris digunakan untuk melindungi data dan mengidentifikasi pengguna panggilan dan layanan mikro secara positif. Anda harus mempertimbangkan bagaimana rahasia ini disimpan dan ditukar di aplikasi cloud-native Anda.
  • Orientasi pengembang. Pengembang baru harus dapat memahami arsitektur aplikasi dan cara bekerja dengan cepat. Anda harus memastikan bahwa pengembang baru dapat menyesuaikan diri dengan cepat tanpa perlu banyak pengetahuan lintas domain atau pengaturan lokal.

Baru-baru ini, desain aplikasi cloud-native telah mendapatkan popularitas tetapi tantangan seperti yang ada di bagian ini mencegah beberapa tim untuk merangkul pola ini. .NET, misalnya, memiliki semua fitur yang diperlukan untuk menyelesaikan masalah ini tetapi solusinya mungkin memerlukan investasi yang signifikan dalam pelatihan dan kode kustom.

Apa itu .NET Aspire?

.NET Aspire adalah stack teknologi baru yang siap untuk cloud yang dibangun untuk .NET dan dirancang untuk memungkinkan pengembang membuat aplikasi cloud-native dengan cepat dan mudah. Mari kita lihat fitur .NET Aspire yang mengatasi tantangan yang kami uraikan.

Orkestrasi

Layanan mikro dan sifatnya yang digabungkan secara longgar meningkatkan fleksibilitas aplikasi yang Anda sebarkan tetapi dapat membuat konfigurasi lebih sulit. Daftar layanan yang membentuk aplikasi dapat menjadi tidak jelas dan titik akhir di mana layanan mikro yang tersedia dapat sulit diidentifikasi. .NET Aspire menyediakan fungsionalitas orkestrasi sehingga:

  • Anda dapat menentukan dengan jelas untuk semua tim proyek .NET, kontainer, executable, dan sumber daya cloud yang membentuk aplikasi.
  • Layanan mikro dapat secara otomatis menemukan titik akhir untuk semua integrasi aplikasi. .NET Aspire melakukan penemuan layanan ini dengan mengelola string koneksi dan menyuntikkannya ke layanan mikro jika diperlukan.

Saat Anda membuat solusi .NET Aspire, Anda akan melihat proyek baru dalam solusi yang disebut <SolutionName>. AppHost. Proyek ini menerapkan orkestrasi untuk aplikasi Anda dan Anda harus memastikan itu adalah proyek start-up untuk solusi.

Integrasi

Layanan mikro umumnya memiliki persyaratan fungsi untuk layanan backing kompleks yang mendukung fitur mereka. Contohnya:

  • Penyimpanan data. Untuk mempertahankan data guna mendukung katalog produk, kelir belanja, penyimpanan identitas, dan fitur lainnya, layanan mikro harus menyimpan data di penyimpanan terstruktur atau semi terstruktur.
  • Penembolokan. Untuk memaksimalkan performa, layanan mikro dapat menyimpan respons parsial atau lengkap dalam cache sehingga permintaan serupa berikutnya dapat dipenuhi dengan lebih cepat.
  • Olahpesan. Layanan mikro yang digabungkan secara longgar harus berkomunikasi satu sama lain dan Anda harus memastikan bahwa komunikasi ini dapat diandalkan bahkan ketika lalu lintas tinggi atau kondisi jaringan menantang. Layanan yang mengantre dan mendistribusikan pesan dari pengirim ke penerima adalah persyaratan umum.

Di .NET Aspire, mudah untuk menerapkan layanan pendukung ini pada setiap layanan mikro karena tumpukan sudah termasuk integrasi .NET Aspire. Setiap integrasi adalah paket NuGet yang dapat Anda tambahkan ke solusi Anda dan mengimplementasikan antarmuka standar ke layanan dukungan. Antarmuka standar ini memastikan bahwa layanan mikro Anda terhubung ke layanan dukungannya secara konsisten dan lancar.

Integrasi .NET Aspire yang langsung siap pakai termasuk:

  • Integrasi penyimpanan data seperti untuk PostgreSQL, SQL Database, Azure Cosmos DB, dan MongoDB.
  • Integrasi penyimpanan sementara seperti integrasi untuk Redis.
  • Integrasi olahpesan seperti untuk RabbitMQ dan Azure Service Bus.

Penting

.NET Aspire mencakup banyak integrasi yang berfungsi dengan layanan Azure, seperti Azure Storage dan Azure Service Bus tetapi Azure tidak diperlukan untuk proyek .NET Aspire dan berfungsi dengan baik dengan layanan backing di luar Azure, seperti RabbitMQ dan MongoDB.

Alat

.NET Aspire juga menambahkan ke alat yang tersedia untuk pengembang di Visual Studio. Contohnya:

  • Templat proyek baru memungkinkan Anda membuat solusi .NET Aspire dengan beberapa langkah dalam wizard.
  • Dasbor .NET Aspire adalah antarmuka web yang muncul setiap kali Anda memulai solusi dari Visual Studio. Dasbor ini menampilkan semua layanan mikro dan layanan dukungan untuk aplikasi, dan Anda dapat memanggilnya untuk pengujian. Ini juga menunjukkan alat performa dan pemantauan.
  • Item menu tambahan muncul, yang dapat Anda gunakan untuk menambahkan integrasi .NET Aspire, mendaftarkan proyek untuk dukungan orkestrator .NET Aspire, atau menyelesaikan tugas lain.

Catatan

Nanti dalam modul ini, Anda mempelajari lebih lanjut tentang alat .NET Aspire.

Pelajari lebih lanjut