Use Quorum #
Dalam banyak sistem RabbitMQ production, salah satu keputusan paling penting adalah memilih tipe queue.
Classic queue memang cepat. Lazy queue membantu menghemat memory.
Namun untuk workload bisnis yang benar-benar kritikal, best practice modern RabbitMQ adalah:
Gunakan Quorum Queue.
Artikel ini membahas mengapa quorum queue direkomendasikan, kapan harus digunakan, dan apa tradeoff yang perlu dipahami.
“Durable melindungi dari restart. Quorum melindungi dari kehilangan node. Keduanya bukan hal yang sama.”
Mengapa Classic Durable Saja Tidak Cukup? #
Banyak orang berpikir:
“Queue saya sudah durable dan message persistent, berarti sudah aman.”
Durable + persistent hanya melindungi dari:
- Restart broker
Ia tidak otomatis melindungi dari kegagalan node dalam cluster.
Jika node tempat queue berada crash dan tidak ada replikasi yang benar:
- Message bisa tidak tersedia
- Bahkan bisa hilang
Untuk sistem multi-node production, durability saja tidak cukup.
Apa yang Diberikan Quorum Queue? #
Quorum queue menggunakan algoritma konsensus Raft.
Karakteristik utamanya:
- Message direplikasi ke beberapa node
- Ada leader dan follower
- Commit terjadi setelah mayoritas setuju
- Tahan terhadap kegagalan sebagian node
Jika 1 node mati (dalam cluster 3 node):
- Queue tetap tersedia
- Message tetap aman
Ini adalah lompatan besar dibanding classic queue default.
Kapan Harus Menggunakan Quorum Queue? #
Gunakan quorum queue jika:
- Data bersifat bisnis-kritis
- Tidak boleh kehilangan message
- Sistem berjalan dalam cluster
- SLA reliability tinggi
- Message adalah bagian dari transaksi penting
Contoh use case:
- Payment processing
- Order processing
- Financial event
- Inventory update
Jika kehilangan satu message bisa merusak bisnis, quorum adalah pilihan logis.
Tradeoff Menggunakan Quorum Queue #
Quorum queue bukan tanpa biaya.
1️⃣ Latency Lebih Tinggi #
Karena:
- Write harus direplikasi
- Mayoritas harus meng-ack
Publish latency akan meningkat dibanding classic queue.
2️⃣ Disk dan Network Lebih Berat #
- Replication membutuhkan I/O
- Cluster traffic meningkat
3️⃣ Konsumsi Resource Lebih Besar #
Quorum queue lebih berat secara resource dibanding classic.
Namun untuk workload kritikal, tradeoff ini biasanya sepadan.
Kesalahan Umum: Menggunakan Classic untuk Semua Hal #
Beberapa sistem production masih menggunakan:
- Classic queue tanpa replication
- Dengan asumsi durability cukup
Masalahnya muncul ketika:
- Node crash
- Hardware failure
- Restart tidak terkontrol
Baru disadari bahwa queue tersebut tidak replicated.
Reliability harus dirancang, bukan diasumsikan.
Kapan Tidak Perlu Quorum? #
Quorum tidak selalu wajib.
Tidak ideal jika:
- Deployment single node
- Workload non-critical
- Latency sangat sensitif
- Sistem hanya untuk eksperimen
Gunakan quorum secara sadar, bukan karena hype.
Perbandingan Singkat #
| Aspek | Classic Durable | Quorum Queue |
|---|---|---|
| Tahan restart | Ya | Ya |
| Tahan node crash | Tidak otomatis | Ya |
| Consensus | Tidak | Raft |
| Latency | Lebih rendah | Lebih tinggi |
| Cocok untuk | Workload ringan | Workload kritikal |
Quorum adalah tentang ketahanan cluster.
Prinsip Desain yang Sehat #
- Gunakan quorum untuk queue bisnis penting
- Gunakan 3 atau 5 node cluster (ganjil)
- Hindari cluster 2 node untuk quorum
- Monitor disk & confirm latency
- Uji skenario failover sebelum production
Reliability tidak boleh hanya diuji saat terjadi insiden.
Hubungan dengan Retry dan DLQ #
Quorum queue memastikan message aman secara fisik.
Namun:
- Retry logic tetap diperlukan
- DLQ tetap diperlukan
- Poison message tetap mungkin terjadi
Quorum tidak menggantikan desain resilience lainnya.
Ia hanya memperkuat fondasi penyimpanan.
Ringkasan #
Use quorum adalah best practice ketika:
- Message bersifat kritikal
- Sistem berjalan dalam cluster
- Kegagalan node harus ditoleransi
Tradeoff:
- Latency meningkat
- Resource lebih berat
Namun reliability yang diperoleh jauh lebih tinggi.
Penutup #
Dalam arsitektur RabbitMQ modern, quorum queue adalah langkah evolusi dari durability sederhana menuju ketahanan cluster yang sesungguhnya.
Jika sistem Anda hanya membutuhkan buffer sementara, classic mungkin cukup.
Namun jika message adalah bagian dari alur bisnis penting, maka reliability tidak boleh menjadi pilihan opsional.
Quorum queue bukan tentang menjadi lebih cepat.
Ia tentang memastikan bahwa ketika sesuatu gagal — sistem tetap berdiri.
Dan dalam sistem production, itu sering kali jauh lebih penting daripada performa mentah semata.