Bagikan melalui


Menyebarkan layanan mikro dengan Azure Container Apps dan Dapr

Azure Container Apps
.NET
Database Azure SQL
Azure Cosmos DB
Azure Cache untuk Redis

Artikel ini menjelaskan solusi untuk menjalankan sistem manajemen pesanan yang memiliki 10 layanan mikro di Azure Container Apps. Solusi ini juga menggunakan praktik terbaik layanan mikro melalui Distributed Application Runtime (Dapr) dan penskalakan berbasis peristiwa dengan autoscaling berbasis peristiwa (KEDA) Kubernetes.

Dapr dan Traefik adalah merek dagang dari perusahaan masing-masing. Tidak ada dukungan yang tersirat oleh penggunaan tanda-tanda ini.

Sistem

Diagram yang menunjukkan sistem manajemen pesanan dengan layanan mikro di Container Apps.

Unduh file PowerPoint arsitektur ini.

Aliran data

Solusi ini menjelaskan sistem manajemen pesanan Red Dog fiktif dan infrastruktur Azure pendukungnya. Arsitektur ini terdiri dari satu lingkungan Aplikasi Kontainer yang menghosting 10 aplikasi layanan mikro .NET Core. Solusi ini menggunakan Dapr SDK untuk berintegrasi dengan sumber daya Azure melalui blok penyusun terbitkan-berlangganan, status, dan pengikatan. Layanan ini juga menggunakan aturan skala KEDA untuk memungkinkan penskalaan berdasarkan pemicu peristiwa dan skenario skala-ke-nol.

Aliran data berikut sesuai dengan diagram sebelumnya:

  1. Traefik: Proksi dasar untuk merutekan permintaan pengguna dari UI ke layanan akuntansi dan Makeline untuk dasbor interaktif.

  2. UI: Dasbor yang menampilkan pesanan real time dan data penjualan agregat untuk sistem manajemen pesanan Red Dog.

  3. Pelanggan virtual: Program simulasi pelanggan yang mensimulasikan pelanggan yang melakukan pemesanan melalui layanan pesanan.

  4. Layanan pesanan: API buat, baca, perbarui, dan hapus untuk melakukan dan mengelola pesanan.

  5. Layanan akuntansi: Layanan yang memproses, menyimpan, dan menggabungkan data pesanan. Ini mengubah pesanan pelanggan menjadi metrik penjualan yang bermakna yang ditampilkan UI.

  6. Layanan tanda terima: Program arsip yang menghasilkan dan menyimpan tanda terima pesanan untuk tujuan audit dan historis.

  7. Layanan loyalitas: Layanan yang mengelola program loyalitas dengan melacak poin hadiah pelanggan berdasarkan pengeluaran pesanan.

  8. Layanan makeline: Layanan yang mengelola antrean pesanan saat ini yang menunggu untuk dipenuhi. Ini melacak pemrosesan dan penyelesaian pesanan oleh layanan pekerja virtual.

  9. Pekerja virtual: Program simulasi pekerja yang mensimulasikan penyelesaian pesanan pelanggan.

Layanan Akses Masuk Komponen Dapr Aturan skala KEDA
Traefik Eksternal Dapr tidak diaktifkan HTTP
Antarmuka Pengguna Internasional Dapr tidak diaktifkan HTTP
Pelanggan virtual Tidak Pemanggilan layanan ke layanan T/A
Layanan pesanan Internasional Terbitkan-berlangganan: Azure Service Bus HTTP
Layanan akuntansi Internasional Terbitkan-berlangganan: Bus Layanan Panjang topik Bus Layanan, HTTP
Layanan tanda terima Internasional Terbitkan-berlangganan: Bus Layanan
Pengikatan: Azure Blob Storage
Panjang topik Bus Layanan
Layanan loyalitas Internasional Terbitkan-berlangganan: Bus Layanan
Status: Azure Cosmos DB
Panjang topik Bus Layanan
Layanan makeline Internasional Terbitkan-berlangganan: Bus Layanan
Status: Azure Cache for Redis
Panjang topik Bus Layanan, HTTP
Pekerja virtual Tidak Pemanggilan layanan ke layanan
Pengikatan: Cron
T/A

Catatan

Anda juga dapat menerapkan Bootstrap di aplikasi kontainer. Namun, layanan ini berjalan satu kali untuk melakukan pembuatan database dan kemudian menskalakan ke nol setelah membuat objek yang diperlukan di Azure SQL Database.

Komponen

  • Application Insights adalah layanan manajemen performa aplikasi yang dapat diperluas yang dapat Anda gunakan untuk memantau aplikasi langsung dan secara otomatis mendeteksi anomali performa. Dalam arsitektur ini, Anda menggunakan Application Insights dengan Azure Monitor untuk melihat log kontainer dan mengumpulkan metrik dari layanan mikro.

  • Blob Storage adalah solusi berbasis cloud untuk menyimpan sejumlah besar data yang tidak terstruktur seperti teks atau file biner. Dalam arsitektur ini, layanan tanda terima menggunakan Blob Storage melalui pengikatan output Dapr untuk menyimpan tanda terima pesanan.

  • Azure Cache for Redis adalah cache Redis terkelola yang terdistribusi, dalam memori, dan dapat diskalakan. Dalam arsitektur ini, ini digunakan sebagai komponen penyimpanan status Dapr untuk layanan Makeline untuk menyimpan data pada pesanan yang sedang diproses.

  • Azure Cosmos DB adalah layanan database terkelola multimodel NoSQL. Dalam arsitektur ini, ini digunakan sebagai komponen penyimpanan status Dapr untuk layanan loyalitas untuk menyimpan data loyalitas pelanggan.

  • Azure Monitor adalah platform terpadu yang memungkinkan Anda mengumpulkan, menganalisis, dan bertindak berdasarkan data konten pelanggan dari lingkungan infrastruktur Azure Anda. Dalam arsitektur ini, Anda menggunakan Azure Monitor dengan Application Insights untuk melihat log kontainer dan mengumpulkan metrik dari layanan mikro.

  • Service Bus adalah broker pesan perusahaan terkelola penuh yang memiliki antrean dan topik terbitkan-berlangganan. Dalam arsitektur ini, Anda menggunakan Service Bus untuk implementasi komponen terbitkan-berlangganan Dapr. Beberapa layanan menggunakan komponen ini. Layanan pesanan menerbitkan pesan di bus, dan layanan Makeline, akuntansi, loyalitas, dan tanda terima berlangganan pesan ini.

  • Container Apps adalah layanan kontainer tanpa server yang dikelola sepenuhnya yang digunakan untuk membangun dan menyebarkan aplikasi modern dalam skala besar. Dalam arsitektur ini, Anda menghosting semua 10 layanan mikro di Aplikasi Kontainer dan menyebarkannya ke dalam satu lingkungan Aplikasi Kontainer. Lingkungan ini berfungsi sebagai batas yang aman di sekitar sistem.

  • SQL Database adalah layanan database relasional cerdas, dapat diskalakan, yang dibangun untuk cloud. Dalam arsitektur ini, ia berfungsi sebagai penyimpanan data untuk layanan akuntansi, yang menggunakan Entity Framework Core untuk berinteraksi dengan database. Layanan bootstrapper bertanggung jawab untuk menyiapkan tabel SQL dalam database. Kemudian berjalan satu kali sebelum membuat koneksi ke layanan akuntansi.

  • Traefik adalah proksi terbalik dan load balancer yang digunakan untuk merutekan lalu lintas jaringan ke layanan mikro. Dalam arsitektur ini, gunakan fitur konfigurasi dinamis Traefik untuk melakukan perutean berbasis jalur dari UI, yang merupakan aplikasi halaman tunggal Vue.js. Konfigurasi ini juga memungkinkan panggilan API langsung ke layanan back-end untuk pengujian.

Alternatif

Dalam arsitektur ini, Anda menyebarkan proksi Traefik untuk mengaktifkan perutean berbasis jalur untuk API Vue.js. Ada banyak proksi sumber terbuka alternatif yang dapat Anda gunakan untuk tujuan ini. Dua proyek umum lainnya adalah NGINX dan HAProxy.

Semua infrastruktur Azure, kecuali untuk SQL Database, menggunakan komponen Dapr untuk interoperabilitas. Salah satu manfaat Dapr adalah Anda dapat menukar semua komponen ini dengan mengubah konfigurasi penyebaran aplikasi kontainer. Dalam skenario ini, Service Bus, Azure Cosmos DB, Azure Cache for Redis, dan Blob Storage menampilkan beberapa dari lebih dari 70 komponen Dapr yang tersedia. Daftar broker terbitkan-berlangganan alternatif, penyimpanan status, dan pengikatan output tersedia di dokumen Dapr.

Detail skenario

Layanan mikro adalah gaya arsitektur yang diadopsi secara luas. Mereka memberikan manfaat seperti skalabilitas, kelincahan, dan penyebaran independen. Anda dapat menggunakan kontainer sebagai mekanisme untuk menyebarkan aplikasi layanan mikro, lalu menggunakan orkestrator kontainer seperti Kubernetes untuk menyederhanakan operasi. Ada banyak faktor yang perlu dipertimbangkan untuk arsitektur layanan mikro skala besar. Biasanya, platform infrastruktur membutuhkan pemahaman yang signifikan tentang teknologi kompleks seperti orkestrator kontainer.

Container Apps adalah layanan kontainer tanpa server yang dikelola sepenuhnya untuk menjalankan aplikasi modern dalam skala besar. Ini memungkinkan Anda untuk menyebarkan aplikasi kontainer melalui abstraksi platform yang mendasar. Dengan menggunakan metode ini, Anda tidak perlu mengelola infrastruktur yang rumit.

Arsitektur ini menggunakan integrasi Container Apps dengan versi Dapr terkelola. Dapr adalah proyek sumber terbuka yang membantu pengembang mengatasi tantangan yang melekat dalam aplikasi terdistribusi, seperti manajemen status dan pemanggilan layanan.

Container Apps juga menyediakan versi KEDA terkelola. KEDA memungkinkan kontainer Anda menskalakan secara otomatis berdasarkan peristiwa masuk dari layanan eksternal seperti Service Bus dan Azure Cache for Redis.

Anda juga dapat mengaktifkan ingress HTTPS di Container Apps tanpa membuat lebih banyak sumber daya jaringan Azure. Anda dapat menggunakan proksi Envoy, yang juga memungkinkan skenario pemisahan lalu lintas.

Untuk informasi selengkapnya, lihat Membandingkan Aplikasi Kontainer dengan opsi kontainer Azure lainnya.

Artikel ini menjelaskan solusi untuk menjalankan sistem manajemen pesanan yang memiliki 10 layanan mikro di Container Apps. Solusi ini juga menggunakan praktik terbaik layanan mikro melalui Dapr dan penskalakan berbasis peristiwa dengan KEDA.

Kemungkinan kasus penggunaan

Solusi ini berlaku untuk organisasi apa pun yang menggunakan layanan mikro stateless dan stateful untuk sistem terdistribusi. Solusinya adalah yang terbaik untuk barang kemasan konsumen dan industri manufaktur yang memiliki sistem pemesanan dan pemenuhan.

Solusi berikut memiliki desain yang sama:

  • Arsitektur layanan mikro di Azure Kubernetes Service (AKS)
  • Arsitektur layanan mikro di Azure Functions
  • Arsitektur berbasis peristiwa

Pertimbangan

Pertimbangan ini mengimplementasikan pilar Azure Well-Architected Framework, yang merupakan serangkaian tenet panduan yang dapat Anda gunakan untuk meningkatkan kualitas beban kerja. Untuk informasi selengkapnya, lihat Well-Architected Framework.

Keandalan

Keandalan membantu memastikan bahwa aplikasi Anda dapat memenuhi komitmen yang Anda buat kepada pelanggan Anda. Untuk informasi selengkapnya, lihat daftar periksa tinjauan desain untukKeandalan .

Container Apps dibangun di atas fondasi Kubernetes, yang beroperasi sebagai infrastruktur yang mendasar. Mekanisme ketahanan dibangun ke dalam Kubernetes yang memantau dan menghidupkan ulang kontainer, atau pod, jika ada masalah. Mekanisme ketahanan mencakup load balancer bawaan yang mendistribusikan lalu lintas di beberapa replika setiap aplikasi kontainer. Redundansi ini memungkinkan sistem untuk tetap beroperasi, bahkan jika satu replika menjadi tidak tersedia.

Keamanan

Keamanan memberikan jaminan terhadap serangan yang disukai dan penyalahgunaan data dan sistem berharga Anda. Untuk informasi selengkapnya, lihat Daftar periksa tinjauan desain untuk Keamanan.

Daftar berikut menguraikan beberapa fitur keamanan yang dihilangkan dalam arsitektur ini, bersama dengan rekomendasi dan pertimbangan lainnya:

  • Arsitektur ini tidak menggunakan titik akhir privat, yang memungkinkan konektivitas privat yang lebih aman ke layanan Azure dengan menetapkan alamat IP dari jaringan virtual Anda. Ketika titik akhir privat digunakan, akses jaringan publik dapat dinonaktifkan. Pendekatan ini menjaga lalu lintas pada tulang punggung Microsoft dan meningkatkan keamanan dan kepatuhan.

  • Aktivitas jaringan harus terus dipantau untuk mendeteksi dan mencegah penyalahgunaan. Anda dapat mencapai pendekatan ini dengan menggunakan Azure Firewall dan tabel rute. Tabel rute memungkinkan lalu lintas yang meninggalkan jaringan virtual untuk diteruskan melalui firewall terlebih dahulu. Proses ini adalah langkah penting dalam memastikan bahwa arsitektur Anda tidak rentan terhadap serangan penyelundupan data.

  • Gunakan firewall aplikasi web (WAF) untuk melindungi dari kerentanan umum. Gunakan Azure Front Door atau Azure Application Gateway untuk menerapkan WAF dalam arsitektur ini.

  • Pertimbangkan untuk menggunakan fitur autentikasi dan otorisasi bawaan untuk Container Apps, yang dikenal sebagai Easy Auth. Easy Auth menangani integrasi dengan penyedia identitas di luar aplikasi web Anda, yang dapat mengurangi jumlah kode yang perlu Anda pertahankan.

  • Gunakan identitas terkelola untuk identitas beban kerja. Identitas terkelola menghilangkan kebutuhan pengembang untuk mengelola kredensial autentikasi. Misalnya, arsitektur dasar mengautentikasi ke SQL Server melalui kata sandi dalam string koneksi. Jika memungkinkan, gunakan ID Microsoft Entra untuk mengautentikasi ke Azure SQL Server.

Pengoptimalan Biaya

Pengoptimalan Biaya berfokus pada cara untuk mengurangi pengeluaran yang tidak perlu dan meningkatkan efisiensi operasional. Untuk informasi selengkapnya, lihat daftar periksa Design review untuk Pengoptimalan Biaya.

Gunakan kalkulator harga Azure untuk memperkirakan biaya layanan dalam arsitektur ini.

Keunggulan Operasi

Keunggulan Operasional mencakup proses operasi yang menyebarkan aplikasi dan membuatnya tetap berjalan dalam produksi. Untuk informasi selengkapnya, lihat Daftar periksa tinjauan desain untuk Keunggulan Operasional.

Anda dapat menggunakan Azure Monitor dan Application Insights untuk memantau Aplikasi Kontainer. Anda dapat melihat log kontainer dengan menavigasi di portal ke panel Log di setiap aplikasi kontainer lalu menjalankan kueri Kusto berikut. Contoh ini menunjukkan log untuk aplikasi layanan Makeline.

ContainerAppConsoleLogs_CL |
    where ContainerAppName_s contains "make-line-service" |
    project TimeGenerated, _timestamp_d, ContainerGroupName_s, Log_s |
    order by _timestamp_d asc

Peta aplikasi di Application Insights juga menunjukkan bagaimana layanan berkomunikasi secara real time. Anda kemudian dapat menggunakannya untuk skenario penelusuran kesalahan. Navigasi ke peta aplikasi di bawah sumber daya Application Insights untuk melihat sesuatu seperti peta berikut.

Cuplikan layar yang memperlihatkan peta aplikasi di Application Insights.

Untuk informasi selengkapnya, lihat Memantau aplikasi di Aplikasi Kontainer.

Efisiensi Performa

Efisiensi Performa mengacu pada kemampuan beban kerja Anda untuk menskalakan untuk memenuhi tuntutan pengguna secara efisien. Untuk informasi selengkapnya, lihat daftar periksa tinjauan Desain untukEfisiensi Performa .

Solusi ini sangat bergantung pada implementasi KEDA di Container Apps untuk penskalaan berbasis peristiwa. Saat Anda menyebarkan layanan pelanggan virtual, layanan pelanggan virtual terus melakukan pesanan. Penskalakan ini menyebabkan layanan pesanan ditingkatkan melalui penskala HTTP KEDA. Saat layanan pesanan menerbitkan pesanan di bus layanan, scaler KEDA bus layanan menyebabkan layanan akuntansi, tanda terima, Makeline, dan loyalitas meningkat. Aplikasi kontainer UI dan Traefik juga mengonfigurasi penskala HTTP KEDA sehingga aplikasi menskalakan saat lebih banyak pengguna mengakses dasbor.

Ketika pelanggan virtual tidak berjalan, semua layanan mikro dalam solusi ini menskalakan ke nol kecuali untuk pekerja virtual dan layanan Makeline. Pekerja virtual tidak menurunkan skala karena terus memeriksa pemenuhan pesanan. Untuk informasi selengkapnya, lihat Mengatur aturan penskalaan di Aplikasi Kontainer.

Kontributor

Microsoft mempertahankan artikel ini. Kontributor berikut menulis artikel ini.

Penulis utama:

Kontributor lain:

Untuk melihat profil LinkedIn nonpublik, masuk ke LinkedIn.

Langkah berikutnya