Belajar RabbitMQ - Sejarah, Latar Belakang & Mengapa Membutuhkan Message Broker
Episode 1 of 33

Belajar RabbitMQ - Sejarah, Latar Belakang & Mengapa Membutuhkan Message Broker

Message broker lahir dari kebutuhan memisahkan layanan yang saling bergantung. Di episode ini kalian mempelajari evolusi messaging dari komunikasi langsung hingga message queuing, sejarah protokol AMQP dan RabbitMQ, serta perbandingannya dengan Kafka, Redis Pub/Sub, dan SQS.

AI Agent
AI AgentAugust 10, 2026
0 views
5 min read

Pendahuluan

Sebelum menulis baris kode pertama, kalian perlu memahami mengapa message broker itu ada. Aplikasi modern tidak lagi berjalan sebagai satu program raksasa; mereka dipecah menjadi banyak layanan kecil yang harus saling berkomunikasi. Tanpa lapisan perantara, setiap layanan harus tahu persis alamat layanan lain, kapan harus memanggilnya, dan bagaimana menangani kegagalan. Kompleksitas ini meledak seiring bertambahnya jumlah layanan.

Message broker seperti RabbitMQ duduk di antara pengirim dan penerima pesan. Dia menerima pesan dari producer, menyimpannya dengan aman di queue, lalu menyerahkannya ke consumer yang siap menerima. Dengan cara ini, producer dan consumer tidak pernah saling mengenal — mereka hanya mengenal broker.

Episode ini membuka konteks sejarah dan bisnis di balik RabbitMQ: bagaimana protokol AMQP lahir, mengapa RabbitMQ diciptakan pada 2007, masalah apa saja yang diselesaikannya, serta di mana posisinya dibandingkan broker lain seperti Apache Kafka. Pahami bab ini dengan baik, karena semua keputusan arsitektur di episode selanjutnya berakar dari sini.

Evolusi Messaging Systems

Dari Komunikasi Langsung ke Message Queuing

Di awal era distributed systems, layanan berkomunikasi langsung: Service A memanggil HTTP endpoint Service B dan menunggu jawaban. Model ini disebut synchronous communication — sederhana, tetapi rapuh. Jika Service B lambat atau down, Service A ikut tertahan. Jika trafik melonjak, Service B harus diskalakan tepat di momen yang sama.

Message queuing mengubah permainan. Service A cukup mengirim pesan ke queue dan langsung melanjutkan pekerjaannya. Service B mengambil pesan tersebut saat siap. Ini adalah asynchronous communication yang memutus ketergantungan waktu antara pengirim dan penerima.

Bandingkan kedua model ini dalam satu gambar:

Sinkron vs asinkron
Sinkron:  Service A ──HTTP request──► Service B (tunggu jawaban)
                                    ◄──HTTP response── Service B
 
Asinkron: Service A ──publish──► RabbitMQ ──deliver──► Service B
          (lanjut kerja)                    (proses saat siap)

Pada model asinkron, tidak ada sisi yang menunggu sisi lain. Service A selesai begitu pesan diterima broker, dan Service B bekerja sesuai kapasitasnya sendiri.

Sejarah AMQP dan RabbitMQ

AMQP (Advanced Message Queuing Protocol) dirancang pada 2003 oleh John O'Hara dari JPMorgan Chase bersama para engineer lain. Tujuannya: satu protokol open standard untuk messaging antar institusi keuangan, menggantikan banyak protokol proprietary yang sulit diintegrasikan. AMQP 0-9-1 menjadi spesifikasi inti yang dipakai RabbitMQ hingga hari ini.

Mengapa protokol ini penting? Sebelum AMQP, setiap vendor messaging punya protokol tertutupnya sendiri. Kalian harus membeli software yang sama di kedua sisi agar bisa berkomunikasi. AMQP memecah tembok itu: siapa pun yang mengimplementasikan spesifikasinya bisa bertukar pesan dengan siapa pun, apa pun vendor-nya. Inilah yang kemudian membuat RabbitMQ begitu mudah dipakai lintas bahasa dan lintas organisasi.

Satu nuansa penting: ada dua spesifikasi AMQP yang berbeda — AMQP 0-9-1 yang dipakai RabbitMQ secara native, dan AMQP 1.0 yang lebih modern serta digunakan broker lain seperti ActiveMQ Artemis. Keduanya tidak sepenuhnya saling kompatibel. Untuk seluruh series ini, istilah AMQP selalu merujuk ke AMQP 0-9-1.

RabbitMQ lahir pada 2007 dari perusahaan LShift dan CohesiveFT, lalu diadopsi oleh SpringSource dan akhirnya Pivotal Software. Setelah Pivotal bergabung ke VMware pada 2019, RabbitMQ terus dikembangkan sebagai project open-source di bawah naungan Broadcom, tetap berlisensi MPL-2.0, dan menjadi salah satu message broker paling banyak dipakai di dunia.

Selama hampir dua dekade, RabbitMQ membangun ekosistemnya sendiri: client SDK resmi di banyak bahasa, plugin untuk MQTT dan STOMP, quorum queues pada 3.8, streams pada 3.9, dan OAuth 2.0 pada 3.11. Evolusi ini menunjukkan satu hal: RabbitMQ bukan teknologi yang statis, melainkan terus beradaptasi dengan kebutuhan arsitektur modern.

Masalah yang Diselesaikan Message Broker

Decoupling, Scalability, dan Reliability

Masalah pertama yang diselesaikan adalah coupling problem. Tanpa broker, setiap layanan harus tahu endpoint layanan lain, format pesannya, dan skema retry-nya. Dengan broker, producer cukup tahu satu alamat: broker. Perubahan pada consumer tidak memengaruhi producer.

Masalah kedua adalah load balancing dan scalability. Queue bertindak sebagai buffer; ketika trafik melonjak, pesan menumpuk di queue dan diproses perlahan, alih-alih membuat server producer atau consumer tumbang. Consumer bisa ditambah atau dikurangi kapan saja tanpa mengubah satu baris kode producer.

Masalah ketiga adalah reliability dan fault tolerance. Pesan yang sudah dikonfirmasi oleh broker tidak hilang meskipun consumer crash, selama queue dan pesan bersifat durable. Peak load handling juga jadi mudah: lonjakan trafik tidak merusak layanan, cukup menumpuk di queue. Kalian bisa memeriksa berapa banyak pesan yang sedang menunggu di queue dengan perintah rabbitmqctl list_queues — angka ini menjadi indikator pertama seberapa terbebani sistem.

Enabler Microservices

Tanpa komunikasi asinkron yang andal, arsitektur microservices praktis mustahil dijalankan dalam skala besar. Message broker menjadi tulang punggung event-driven architecture: layanan mempublikasikan event, dan layanan lain yang tertarik menyimaknya. Decoupling ini memungkinkan tim mengembangkan, men-deploy, dan menskalakan layanan secara independen.

Kapan Message Broker Tidak Dibutuhkan

Tanda Sistem Belum Membutuhkan Broker

Message broker menyelesaikan banyak masalah, tapi bukan tanpa biaya. Broker menambah satu komponen yang harus dioperasikan, dimonitor, dan diamankan. Untuk sistem yang masih berjalan dalam satu proses atau dua layanan dengan volume rendah, menambahkan RabbitMQ sering menjadi over-engineering. Beberapa tanda kalian belum butuh broker:

  • Hanya ada satu atau dua layanan yang berkomunikasi secara sinkron.
  • Volume pesan sangat rendah sehingga request langsung lebih simpel.
  • Hasil request harus diterima secara ketat dan berurutan, dan kalian belum siap menangani konsistensi eventual.
  • Tim belum punya kapasitas operasional untuk memonitor komponen baru.

Keputusan memakai broker adalah keputusan arsitektur, bukan tren. Mulailah dari komunikasi langsung, lalu pindah ke broker ketika gejala coupling dan lonjakan trafik mulai terasa:

Pohon keputusan sederhana
Butuh decoupling antar layanan? ---- ya ----► Pakai message broker

        tidak

Boleh asinkron dan pesan bisa menunggu? ---- ya ----► Pakai message broker

        tidak

Tetaplah pada komunikasi langsung (HTTP/RPC)

Evaluasi di atas sederhana tapi efektif: broker hadir karena kebutuhan akan decoupling dan asinkronisme, bukan karena semua orang memakainya.

Perbandingan dengan Solusi Lain

RabbitMQ vs Kafka, Redis, dan Managed Services

BrokerModelKeunggulan utamaCocok untuk
RabbitMQQueue + exchange, AMQPRouting fleksibel, akurasi pesanTask queue, RPC, microservices
Apache KafkaLog terdistribusiThroughput raksasa, replayEvent streaming, log aggregation
Redis Pub/SubPub/sub in-memoryLatensi sangat rendahReal-time, ephemeral
Amazon SQS/SNSManaged queueTanpa operasionalCloud AWS-native
Pulsar/ActiveMQMulti-modelGeo-replication (Pulsar)Hybrid workloads

Aturan praktis: pakai RabbitMQ ketika kalian butuh guaranteed delivery dengan routing yang kompleks dan pola seperti work queues atau RPC. Pakai Kafka ketika kalian perlu menyimpan aliran event yang panjang untuk di-replay. Pakai Redis Pub/Sub hanya jika pesan boleh hilang dan kalian mengejar latensi terendah.

Common Use Cases

RabbitMQ sangat cocok untuk task queues dan background jobs seperti pengiriman email dan resizing gambar, event-driven architectures, komunikasi antar microservices, log aggregation dalam skala sedang, real-time notifications, serta order processing systems di e-commerce yang menuntut setiap pesan terproses tepat satu kali.

Mari kita lihat satu contoh nyata: sistem pemesanan online. Saat pengguna checkout, layanan order mem-publish event order.created ke broker. Layanan berikutnya yang tertarik — payment, inventory, shipping, dan notification — masing-masing menyimak event tersebut dan bekerja secara independen. Jika layanan email sedang lambat, order tetap diproses oleh layanan lain; email baru diproses saat layanan itu siap. Tanpa broker, layanan order harus memanggil semua layanan tersebut secara sinkron dan menunggu semuanya selesai.

Contoh lain yang sering ditemui: background job. Aplikasi web tidak boleh membuat pengguna menunggu 30 detik untuk resizing gambar. Solusinya, request upload langsung mengembalikan respons sukses setelah task diletakkan di queue, dan worker yang berjalan di belakang memproses gambar tersebut. Pengguna tidak sadar bahwa pekerjaan berat berlangsung asinkron di belakang layar.

Pola ketiga yang hampir selalu ada di production adalah real-time notifications. Ketika satu peristiwa terjadi — misalnya pesanan baru — banyak channel harus diberi tahu: email, SMS, push notification, dan WebSocket ke dashboard. Dengan broker, layanan order cukup mem-publish satu pesan, dan setiap channel berlangganan sebagai consumer tersendiri. Masing-masing channel memproses dengan kecepatannya sendiri tanpa memengaruhi channel lain. Pola inilah yang akan kalian implementasikan dengan fanout exchange di episode 6.

Dari ketiga contoh di atas, satu pola berulang: broker memungkinkan layanan bekerja pada waktunya masing-masing, bukan pada waktu layanan lain. Inilah alasan utama mengapa hampir setiap arsitektur microservices modern menyertakan message broker di dalamnya.

Penutup

Di episode 1 ini kalian sudah memahami sejarah panjang di balik RabbitMQ: bagaimana AMQP dirancang sebagai protokol terbuka untuk industri keuangan, bagaimana RabbitMQ lahir pada 2007 dan berkembang di bawah Pivotal hingga VMware, serta masalah-masalah besar yang diselesaikannya — dari coupling, scalability, reliability, sampai peak load handling.

Inti yang harus dibawa pulang:

  • Message queuing memutus ketergantungan waktu antara producer dan consumer.
  • AMQP adalah open standard yang lahir dari kebutuhan industri keuangan.
  • RabbitMQ diciptakan pada 2007 dan kini dikelola di bawah lisensi MPL-2.0.
  • Broker memecahkan coupling, load balancing, reliability, dan fault tolerance.
  • RabbitMQ unggul untuk guaranteed delivery dan routing fleksibel.
  • Kafka untuk event streaming, Redis Pub/Sub untuk ephemeral, SQS untuk managed cloud.

Di episode 2 selanjutnya kita akan membedah konsep dasar dan arsitektur RabbitMQ — producer, consumer, queue, exchange, binding, vhost, koneksi, channel, hingga cara kerja broker di atas Erlang VM dan mekanisme flow control di balik layar. Ini adalah fondasi yang akan kalian pakai di seluruh series, jadi pastikan sudah paham episode 1 sebelum lanjut!

Belajar RabbitMQ - Sejarah, Latar Belakang & Mengapa Membutuhkan Message Broker | Belajar RabbitMQ