Mengenal Message Queue
Mungkin banyak yang baru mendengar istilah message queue ini, karena biasanya komponen ini tidak diajarkan dalam perangkat lunak yang skalanya kecil. Singkatnya, Message Queue adalah suatu nama untuk komponen dalam software engineering yang tugasnya mengirim dan menerima data. Message Queue ini bisa digunakan untuk menyambungkan dua software berbeda jadi dapat berkomunikasi, loh!
Pengertian Message Queue
Message Queue adalah nama umum yang digunakan untuk suatu komponen yang bertugas untuk menerima data, menyimpannya dalam suatu rentang waktu, dan mengirimkannya suatu / beberapa tempat.
Kalau di dunia nyata, mirip tujuannya dengan adanya jalur antrian.
Gambar di atas adalah ilustrasi antara bank yang memiliki jalur antrian dan yang tidak. Tanpa jalur antrian, sebuah bank akan kesulitan untuk melayani nasabah karena nasabah akan berebutan ke teller. Dengan adanya jalur antiran, nasabah dengan rapi dapat satu persatu menuju teller yang kosong.
Bagaimana ilustrasi di atas dapat dikatakan mirip dengan sebuah Message Queue?
Seperti halnya Message Queue, jalur antrian melakukan ketiga hal ini:
- Menerima nasabah (menerima data, nasabah bisa dikaitkan dengan data).
- Kemudian nasabah tersebut ‘disimpan’ dalam suatu rentang waktu pada jalur tersebut (menyimpan data).
- Saat teller sudah siap, nasabah dapat dikirim ke bilik teller tersebut untuk dilayani (mengirim data).
Kegunaan Message Queue
Contoh penggunaan Message Queue (MQ) yang paling sederhana adalah meletakan komponen MQ di antara client dengan web service. Mungkin kamu akan bertanya, bukannya ini redundan dan hanya menambah kompleksitas sistem? Jawabannya, tergantung.
Keandalan (Reliability)
Jika web service kamu harus dapat menerima 100% request tanpa ada yang hilang, menggunakan MQ menjadi penting. Jika kehilangan data dapat ditolerir, penggunaan MQ menjadi redundan dan tidak perlu. Disini faktor yang menentukan adalah reliability, seberapa kamu ingin service kamu reliable.
Dengan kemampuan menyimpan data (walaupun hanya dalam rentang waktu yang cukup terbatas), MQ dapat memberikan tempat peristirahatan sementara untuk data yang akan dikirim. Jika sewaktu-waktu service yang menerima data tersebut mati, data yang akan dikirim masih tetap aman disimpan sementara di dalam MQ. Pada kasus ini, MQ memberikan waktu untuk bernafas kalau-kalau service yang ada dibelakang MQ mati. MQ bisa membantu tidak ada request yang hilang selama service tersebut mati.
Pada ilustrasi bank, bayangkan ketika semua teller izin untuk makan siang. Jika tidak ada antrian, akan terjadi keributan diantara nasabah. Karena adanya antrian, nasabah tidak perlu khawatir tidak akan dilayani selama masih berada di jalur antrian.
MQ dapat digunakan untuk menangani kasus reliability karena biasanya, MQ dapat dijalankan lebih reliable dibandingkan web service. Asumsi ini tidak selalu benar, jadi cek lagi apakah MQ yang kamu gunakan memang lebih reliable dibandingkan sistem di belakangnya.
Skalabilitas
Message Queue dapat meningkatkan skalabilitas suatu sistem dengan cara menyebarkan data ke satu atau lebih sistem. Kebanyakan Message Queue dapat mengirimkan data yang sama ke berbagai tempatnya berbeda. Contohnya, client mengirimkan satu request pembayaran, kemudian MQ akan mengirimkannya ke berbagai sistem yang berbeda misalnya seperti payment service, user service, dan shopping cart service.
Selain ke berbagai sistem yang berbeda, MQ juga dapat mengirimkan ke sistem yang sama namun berbeda mesin loh!
Jadi seperti ilustrasi bank di atas, ada banyak teller yang menunggu untuk melayani nasabah. Teller adalah service kalian, dan nasabah adalah data kalian. Dengan demikian, kalian bisa menambahkan service (pada ilustrasi di atas, menambahkan teller) lagi dengan mudah jika memang dibutuhkan.
Bagikan di
Kolom Diskusi