M365Con 2027 – konferensi online gratis · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

Antrean vs. Topik: Memilih Pola Pesan yang Tepat di Azure Service Bus

By ·

Selamat datang kembali di blog pendamping podcast! Di episode terbaru kami, kami membahas secara mendalam elemen-elemen dasar dari perpesanan cloud. Jika Anda belum sempat…

Automatically translated with AI from the original post. Read the English original

Cover: Azure Service Bus - Simply Explained

Selamat datang kembali di blog pendamping podcast! Dalam episode terbaru kami, kami membahas secara mendalam elemen-elemen dasar pesan cloud. Jika Anda belum sempat mendengarkannya, pastikan untuk menyimak episode Azure Service Bus - Simply Explained. Hari ini, kita akan mengulas lebih jauh salah satu keputusan arsitektur paling penting yang akan Anda buat saat membangun aplikasi terdistribusi: memilih antara antrean dan topik Azure Service Bus. Memahami seluk-beluk kedua pola pesan ini akan membantu Anda merancang sistem yang lebih tangguh, mudah diskalakan, dan mudah dipelihara.

Pengantar Azure Service Bus dan Pola Pesan

Seiring aplikasi modern beralih dari arsitektur monolitik ke desain terdistribusi berbasis mikroservis, kebutuhan akan komunikasi yang andal menjadi sangat penting. Layanan tidak bisa sekadar mengandalkan panggilan HTTP sinkron untuk segalanya; cara itu menciptakan coupling yang erat, kegagalan berantai, dan hambatan performa. Di sinilah broker pesan cloud berperan.

Azure Service Bus berfungsi sebagai broker pesan perusahaan yang sepenuhnya dikelola dan memisahkan (decouple) aplikasi serta layanan. Dengan memungkinkan produsen mengirim pesan tanpa perlu mengetahui siapa konsumennya, atau bahkan apakah konsumen sedang daring, Azure Service Bus menjamin ketersediaan tinggi dan perataan beban kerja yang mulus. Namun, begitu Anda memutuskan menggunakan Azure Service Bus, Anda langsung dihadapkan pada pertanyaan desain inti: Apakah saya memerlukan antrean atau topik?

Apa Itu Azure Service Bus?

Sebelum membahas perbedaan antara antrean dan topik, ada baiknya kita memahami dulu apa yang sebenarnya dilakukan Azure Service Bus. Pada intinya, Azure Service Bus adalah broker pesan yang menyimpan pesan secara aman dalam sebuah namespace hingga aplikasi penerima siap memprosesnya. Layanan ini menyediakan fitur-fitur andal seperti jaminan pengiriman at-least-once, manajemen sesi, dead-lettering, dan pengiriman pesan terjadwal.

Dalam ekosistem cloud, Azure Service Bus menjembatani berbagai komponen aplikasi Anda. Baik Anda memproses pesanan e-commerce, menangani telemetri Internet of Things (IoT), maupun mengoordinasikan integrasi enterprise resource planning (ERP), Service Bus menyediakan daya tahan dan kemampuan pemrosesan asinkron yang dibutuhkan agar data tetap mengalir dengan lancar.

Antrean vs. Topik: Pilihan Arsitektur Inti

Perbedaan mendasar antara antrean dan topik bermuara pada pola pesan yang mereka dukung: point-to-point versus publish/subscribe. Memilih pola yang keliru dapat menyebabkan pekerjaan ulang arsitektur, masalah duplikasi data, atau hambatan skalabilitas di kemudian hari.

Antrean menyediakan model komunikasi satu-ke-satu. Ketika Anda mengirim pesan ke antrean, tepat satu konsumen akan membaca dan memproses pesan tersebut. Sebaliknya, topik menyediakan pola komunikasi satu-ke-banyak. Ketika Anda menerbitkan pesan ke topik, pesan itu didistribusikan ke beberapa langganan (subscription), sehingga beberapa layanan hilir yang independen dapat menerima dan memproses salinan dari pesan yang sama persis.

Memilih di antara kedua pola ini sepenuhnya bergantung pada kebutuhan bisnis Anda. Apakah Anda memiliki satu beban kerja yang perlu didistribusikan ke beberapa instans pekerja untuk penyeimbangan beban, atau Anda memiliki beberapa sistem berbeda yang semuanya perlu bereaksi terhadap satu peristiwa bisnis?

Pembahasan Mendalam tentang Antrean Service Bus

Antrean Service Bus adalah andalan dari messaging perusahaan tradisional. Antrean dirancang untuk skenario ketika satu tugas perlu dijalankan tepat satu kali oleh sekumpulan pekerja.

Ketika Anda mengirim pesan ke antrean, pesan tersebut menunggu di antrean hingga penerima mengambilnya. Secara default, antrean menerapkan urutan pengiriman First-In, First-Out (FIFO) yang ketat. Hal ini membuat antrean ideal untuk arsitektur berbasis perintah (command-driven) yang urutannya penting, seperti memproses transaksi pembayaran atau menjalankan langkah-langkah alur kerja yang berurutan.

Selain itu, antrean unggul dalam perataan beban. Jika aplikasi Anda mengalami lonjakan lalu lintas yang besar, permintaan yang masuk dapat menumpuk dengan aman di antrean tanpa membebani sumber daya komputasi backend Anda. Layanan pekerja kemudian dapat mengambil pesan dari antrean dengan laju yang stabil dan berkelanjutan.

Menguasai Topik dan Langganan

Sementara antrean menangani pengiriman sederhana titik-ke-titik, topik membuka kekuatan arsitektur publish/subscribe (pub/sub). Topik berfungsi sebagai endpoint untuk mengirim pesan, tetapi topik tidak dapat menyimpan pesan sendiri tanpa langganan.

Anggap langganan sebagai antrean virtual yang terpasang pada sebuah topik. Ketika sebuah pesan dipublikasikan ke topik, salinan pesan tersebut dikirim ke setiap langganan yang aktif. Setiap layanan konsumen membuat langganannya sendiri ke topik, sehingga mereka dapat memproses pesan secara independen dari konsumen lainnya.

Sebagai contoh, pertimbangkan peristiwa pemesanan di platform e-commerce. Ketika pelanggan melakukan pemesanan, sistem mempublikasikan pesan OrderPlaced ke sebuah topik. Layanan inventaris memiliki langganan untuk memperbarui tingkat stok, layanan penagihan memiliki langganan untuk memproses pembayaran, dan layanan notifikasi memiliki langganan untuk mengirim tanda terima melalui email. Ketiga sistem tersebut menerima peristiwa secara bersamaan tanpa saling mengganggu.

Penyaringan Pesan dan Fleksibilitas

Salah satu fitur paling ampuh dari topik Azure Service Bus adalah penyaringan pesan. Dalam banyak skenario pub/sub, subscriber tidak menginginkan setiap pesan yang dipublikasikan ke sebuah topik; ia hanya membutuhkan subset data tertentu.

Azure Service Bus memungkinkan Anda mendefinisikan aturan dan filter pada langganan menggunakan sintaks mirip SQL atau properti korelasi. Misalnya, Anda dapat mengonfigurasi langganan agar hanya menerima pesan dengan properti Region yang bernilai NorthAmerica, atau pesan dengan properti OrderAmount yang melebihi ambang batas tertentu.

Kemampuan penyaringan ini menjaga lalu lintas jaringan tetap ramping dan memastikan konsumen hilir hanya memproses data yang relevan bagi mereka, sehingga beban komputasi yang tidak perlu berkurang secara signifikan.

Menangani Kegagalan dengan Dead-Letter Queue

Terlepas dari apakah Anda menggunakan antrean atau topik, sistem terdistribusi rentan terhadap kegagalan. Apa yang terjadi ketika sebuah pesan rusak, basis data hilir menjadi offline, atau sebuah aplikasi terus-menerus crash saat mencoba memproses pesan tertentu?

Azure Service Bus menangani hal ini dengan baik melalui Dead-Letter Queue (DLQ). Setiap antrean dan langganan topik memiliki sub-antrean terkait yang disebut dead-letter queue. Jika sebuah pesan gagal diproses terlalu banyak kali (melebihi jumlah maksimum pengiriman) atau kedaluwarsa, Service Bus secara otomatis memindahkan pesan tersebut ke DLQ.

Mekanisme ini mengisolasi "poison message" agar tidak memblokir alur pemrosesan utama. Engineer dapat memeriksa DLQ, menganalisis penyebab kegagalan, memperbaiki bug yang mendasarinya, lalu mengirim ulang pesan tersebut ke alur kerja utama untuk diproses dengan berhasil.

Praktik Terbaik untuk Merancang Aplikasi Terdistribusi

Agar implementasi Azure Service Bus Anda memberikan hasil maksimal, penting untuk mengikuti praktik terbaik arsitektur yang telah mapan:

  • Isolasi Lingkungan: Gunakan namespace Service Bus yang terpisah untuk lingkungan pengembangan, staging, dan produksi guna mencegah penyebaran kegagalan antarlingkungan.
  • Terapkan Infrastructure as Code: Definisikan antrean, topik, langganan, dan filter Anda menggunakan template ARM, Bicep, atau Terraform untuk memastikan penerapan yang konsisten.
  • Tetapkan Kebijakan Retensi yang Sesuai: Konfigurasikan time-to-live (TTL) pesan dan durasi lock berdasarkan kebutuhan bisnis aktual Anda, alih-alih mengandalkan nilai maksimum default.
  • Pantau dan Buat Peringatan: Manfaatkan Azure Monitor dan Application Insights untuk melacak metrik seperti jumlah pesan, pesan dead-letter yang aktif, dan latensi server.

Kesimpulan: Memilih Pola yang Tepat untuk Arsitektur Anda

Memilih pola pesan yang tepat di Azure Service Bus merupakan fondasi untuk membangun aplikasi cloud yang tangguh dan skalabel. Gunakan antrean ketika Anda membutuhkan mekanisme titik-ke-titik satu-ke-satu yang andal untuk menyeimbangkan beban dan memproses tugas secara berurutan. Pilih topik dan langganan ketika Anda membutuhkan model publish/subscribe untuk menyiarkan peristiwa ke banyak sistem independen.

Untuk mendengarkan diskusi lebih lanjut tentang arsitektur cloud, keamanan, dan pola pengembangan modern, pastikan Anda mendengarkan episode lengkapnya: Azure Service Bus - Simply Explained. Menerapkan pola pesan ini dengan benar akan memastikan aplikasi cloud Anda tetap tangguh, adaptif, dan siap diskalakan di bawah beban kerja apa pun.

Entities in this article

Azure Service Bus Message broker At-least-once delivery Dead-lettering Enterprise resource planning (ERP) High availability HTTP Internet of Things (IoT) Telemetry

Related articles

RSS