Konten ini adalah kutipan dari eBook, Merancang Aplikasi .NET Cloud Native untuk Azure, tersedia di .NET Docs atau sebagai PDF gratis yang dapat diunduh yang dapat dibaca secara offline.
Microsoft, dalam kemitraan dengan pakar komunitas terkemuka, telah menghasilkan aplikasi referensi layanan mikro cloud-native berfitur lengkap, eShopOnContainers. Aplikasi ini dibangun untuk menampilkan penggunaan .NET dan Docker, serta secara opsional Azure, Kubernetes, dan Visual Studio, untuk membangun etalase online.
Gambar 2-1. Contoh Cuplikan Layar Aplikasi eShopOnContainers.
Sebelum memulai bab ini, sebaiknya Anda mengunduh aplikasi referensi eShopOnContainers. Jika Anda melakukannya, seharusnya lebih mudah bagi Anda untuk mengikuti informasi yang disajikan.
Fitur dan persyaratan
Mari kita mulai dengan ulasan fitur dan persyaratan aplikasi. Aplikasi eShopOnContainers mewakili toko online yang menjual berbagai produk fisik seperti kaus dan mug kopi. Jika Anda membeli sesuatu secara online sebelumnya, pengalaman menggunakan toko seharusnya cukup terbiasa. Berikut adalah beberapa fitur dasar yang diterapkan toko:
Mencantumkan item katalog
Memfilter item berdasarkan nama
Memfilter item berdasarkan merek
Menambahkan item ke keranjang belanja
Mengedit atau menghapus item dari keranjang
Selesai
Mendaftarkan akun
Masuk
Keluar
Mengulas pesanan
Aplikasi ini juga memiliki persyaratan non-fungsi berikut:
Ini harus sangat tersedia dan harus diskalakan secara otomatis untuk memenuhi peningkatan lalu lintas (dan menurunkan skala kembali setelah lalu lintas mereda).
Ini harus memberikan pemantauan yang mudah digunakan terhadap log diagnostik dan kesehatannya untuk membantu memecahkan masalah yang dihadapinya.
Ini harus mendukung proses pengembangan yang tangkas, termasuk dukungan untuk integrasi dan penyebaran berkelanjutan (CI/CD).
Selain dua front end web (tradisional dan Aplikasi Halaman Tunggal), aplikasi juga harus mendukung aplikasi klien seluler yang menjalankan berbagai jenis sistem operasi.
Ini harus mendukung hosting lintas platform dan pengembangan lintas platform.
Gambar 2-2. eShopOnContainers mereferensikan arsitektur pengembangan aplikasi.
Aplikasi eShopOnContainers dapat diakses dari klien web atau seluler yang mengakses aplikasi melalui HTTPS yang menargetkan aplikasi server ASP.NET Core MVC atau API Gateway yang sesuai. API Gateway menawarkan beberapa keuntungan, seperti memisahkan layanan back-end dari klien front-end individu dan memberikan keamanan yang lebih baik. Aplikasi ini juga menggunakan pola terkait yang dikenal sebagai Backends-for-Frontends (BFF), yang merekomendasikan pembuatan gateway API terpisah untuk setiap klien front-end. Arsitektur referensi menunjukkan pemecahan gateway API berdasarkan apakah permintaan berasal dari klien web atau seluler.
Fungsionalitas aplikasi dipecah menjadi banyak layanan mikro yang berbeda. Ada layanan yang bertanggung jawab untuk autentikasi dan identitas, mencantumkan item dari katalog produk, mengelola keranjang belanja pengguna, dan melakukan pemesanan. Masing-masing layanan terpisah ini memiliki penyimpanan persistennya sendiri. Tidak ada penyimpanan data primer tunggal yang berinteraksi dengan semua layanan. Sebaliknya, koordinasi dan komunikasi di antara layanan dilakukan sesuai kebutuhan dan dengan menggunakan bus pesan.
Masing-masing layanan mikro yang berbeda dirancang secara berbeda, berdasarkan persyaratan masing-masing. Aspek ini berarti tumpukan teknologi mereka mungkin berbeda, meskipun semuanya dibangun menggunakan .NET dan dirancang untuk cloud. Layanan yang lebih sederhana menyediakan akses Create-Read-Update-Delete (CRUD) dasar ke penyimpanan data yang mendasarinya, sedangkan layanan yang lebih canggih menggunakan pendekatan dan pola Desain Domain-Driven untuk mengelola kompleksitas bisnis.
Gambar 2-3. Berbagai jenis layanan mikro.
Gambaran umum kode
Karena menggunakan layanan mikro, aplikasi eShopOnContainers mencakup beberapa proyek dan solusi terpisah dalam repositori GitHub-nya. Selain solusi terpisah dan file executable, berbagai layanan dirancang untuk berjalan di dalam kontainernya sendiri, baik selama pengembangan lokal maupun saat dijalankan dalam produksi. Gambar 2-4 menunjukkan solusi Visual Studio lengkap, tempat berbagai proyek berbeda diatur.
Gambar 2-4. Proyek di solusi Visual Studio.
Kode diatur untuk mendukung berbagai layanan mikro, dan dalam setiap layanan mikro, kode dipecah menjadi logika domain, masalah infrastruktur, dan antarmuka pengguna atau titik akhir layanan. Dalam banyak kasus, dependensi setiap layanan dapat dipenuhi oleh layanan Azure dalam produksi, dan opsi alternatif untuk pengembangan lokal. Mari kita periksa bagaimana persyaratan aplikasi dipetakan ke layanan Azure.
Memahami layanan mikro
Buku ini berfokus pada aplikasi cloud-native yang dibangun menggunakan teknologi Azure. Untuk mempelajari lebih lanjut tentang praktik terbaik layanan mikro dan cara merancang aplikasi berbasis layanan mikro, baca buku pendamping, Layanan Mikro .NET: Arsitektur untuk Aplikasi .NET dalam Kontainer.
Sumber untuk konten ini dapat ditemukan di GitHub, yang juga dapat Anda gunakan untuk membuat dan meninjau masalah dan menarik permintaan. Untuk informasi selengkapnya, lihat panduan kontributor kami.
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik:
Buat aplikasi dan layanan yang dapat disebarkan secara independen, sangat dapat diskalakan, dan tangguh menggunakan platform .NET gratis dan sumber terbuka. Dengan .NET, Anda dapat menggunakan teknologi layanan mikro populer seperti Docker, Kubernetes, Dapr, Azure Container Registry, dan banyak lagi untuk aplikasi dan layanan .NET dan ASP.NET Core.
Bangun solusi end-to-end di Microsoft Azure untuk membuat Azure Functions, menerapkan dan mengelola aplikasi web, mengembangkan solusi yang menggunakan penyimpanan Azure, dan banyak lagi.