1. Latar Belakang
Selamat malam semuanya. Pada kesempatan kali ini kita akan membahas studi kasus yang sering muncul dalam implementasi RabbitMQ, yaitu komunikasi antar microservices pada aplikasi e-commerce. Dalam arsitektur microservices, setiap layanan memiliki tanggung jawab masing-masing, seperti order service yang mengelola pesanan dan notification service yang mengirimkan notifikasi kepada pengguna. Permasalahan muncul ketika order service langsung memanggil notification service menggunakan HTTP. Jika notification service sedang mati atau mengalami gangguan, maka proses pembuatan order bisa ikut gagal. Hal ini membuat sistem menjadi saling bergantung (tight coupling) dan kurang fleksibel untuk dikembangkan.
Untuk mengatasi masalah tersebut, kita dapat memanfaatkan RabbitMQ sebagai perantara komunikasi antar layanan. Dengan pendekatan ini, order service cukup mengirimkan pesan ke dalam antrian ketika pesanan berhasil dibuat, tanpa perlu menunggu respons langsung dari notification service. Selanjutnya, notification service akan mengambil pesan tersebut secara terpisah dan memprosesnya. Melalui simulasi sederhana ini, kita akan memahami bagaimana RabbitMQ membantu menciptakan sistem yang lebih loosely coupled, lebih stabil, dan lebih mudah diskalakan.
2. Alat dan Bahan
2.1. Perangkat Lunak
- Sistem Operasi Linux Ubuntu
- Terminal
- Visual Studio Code
- RabbitMQ Server
- Postman Desktop
2.2. Perangkat Keras
- Laptop / PC
3. Pembahasan
3.1 Apa itu Microservices
Microservices merupakan arsitektur pengembangan aplikasi yang memecah aplikasi menjadi bagian bagian kecil seperti order service, payment service, dan sejenisnya. Service ini berdiri sendiri dan saling berkomunikasi satu sama lain melalui API atau message broker seperti RabbitMQ.
3.2 Studi Kasus: "Komunikasi Antar Microservices dengan RabbitMQ
Sebuah aplikasi e-commerce sederhana memiliki microservices, di antaranya:
1. Order Service : Mengelola pesanan pelanggan2. Notification Service : Mengirim notifikasi setelah pesanan dibuat
- Masalahnya:
Jika Order Service langsung memanggil Notification Service menggunakan HTTP (synchronous), maka:
- Jika Notification Service down, order gagal dibuat
- Sistem menjadi saling bergantung (tight coupling)
- Kurang scalable
3.3 Tujuan Studi Kasus
Membuat sistem di mana:
- Order Service menerima request membuat pesanan
- Order Service mengirim pesan ke RabbitMQ
- Notification Service menerima pesan dari RabbitMQ
- Notification Service memproses notifikasi
3.4 Penyelesaian Masalah
Kita akan membuat RabbitMQ sebagai perantaranya.
1. Siapkan 2 directory untuk masing-masing services : order-services dan notification-services. Namun, Kita akan buat order service terlebih dahulu.
7. Selanjutnya, kita jalankan server RabbitMQ pada masing-masing terminal VSCode.
- Terminal Order Service :
Dengan begini, kita sudah dapat mencoba mengirimkan data melalui postman.
8. Buka postman, tempelkan port dengan route /order
9. Ke bagian body, klik pilihan raw dan ubah tipenya menjadi JSON. Setelah itu, isi body dengan data
yang mau di kirim ke RabbitMQ
10. Sekarang, kita cek masing-masing terminal order service dan notification service
- Di terminal order service :
Jadi, Order service disini memegang peran sebagai producer yang menerima data orderan dari JSON postman, dan data di order service ini dikirim ke RabbitMQ dan masuk ke queue atau antrian. Setelah itu, notification service yang merupakan consumernya, akan mengambil data dari order service untuk di proses.
Apa yang terjadi setelah data diproses? Maka data akan dihapus dari queue dan consumer lanjut untuk mengeksekusi tugas selanjutnya yang ada di queue. Karena RabbitMQ bukanlah "logic" dari suatu aplikasi, melainkan hanya aplikasi perantara yang tugasnya hanya menerima, menyimpan, dan menyelesaikan tugas.
Berakhir sudah penyelesaian studi kasus komunikasi antar microservices pada RabbitMQ dengan cara paling sederhana, semoga artikel ini dapat membantu pemahaman teman-teman semua.
4. Daftar Pustaka
Geeksforgeeks. (2024, 20 May). Microservices Communication with RabbitMQ. Diakses dari: https://www.geeksforgeeks.org/advance-java/microservices-communication-with-rabbitmq/
.jpg)
0 Comments