Saga Pattern dengan Command atau Orkestrasi

Sebelumnya telah dijelaskan mengenai pendekatan Event atau Koreografi. Selanjutnya kita akan membahas pendekatan kedua yaitu Command atau Orkestrasi. Pada pendekatan orkestrasi kita memerlukan satu service tambahan yang berperan sebagi pusat pengendali. Service ini akan memberikan sejumlah intruksi atau perintah dan berkomunikasi dengan semua service yang terlibat dalam transaksi.

Apalabika kita gambarkan maka pendekatan command atau orkrestasi ini akan seperti berikut.

Misalkan service yang berperan sebagai pusat pengedali kita beri nama ORDER_SAGA_ORCHESTRATOR (OSO). Logic semua proses akan dihandle atau dikerjakan oleh OSO ini. Kita dapat mendefinisikan sesuai dengan kebutuhan sejumlah service yang terlibat beserta dengan chanel atau topic yang besesuaian. Pada OSO dibutuhkan satu chanel atau topic tambahan sebagai jembatan jalur balikan atau reply dari semua servcie yang terlibat. Berikut contoh sebuah proses transaksi yang terjadi.

  1. ORDER_SERVICE akan meminta OSO untuk memulai menjalankan proses transaksi dan menyimpan status Order sebagai Pending.
  2. OSO akan mengirimkan perintah ke PAYMENT_SERVICE untuk menjalankan proses pembayaran. Service ini akan memberikan reply balik berupa proses berhasil ataupun gagal melalui saga reply chanel.
  3. Apabila PAYMENT_SERVICE memberikan pesan bahwa payment telah tereksekusi maka OSO akan memberikan perintah ke STOCK_SERVICE untuk melakukan persiapan pengiriman barang.
  4. STOCK_SERVICE akan memberikan pesan bahwa proses bisa di lanjutkan karena stock tersedia dan OSO menerimanya sebagai ORDER_PREPARED
  5. OSO akan memberikan peritah ke DELIVERY_SERVICE untuk melakukan pengiriman dan jika suskes akan memberikan pesan ke OSO bahwa ORDER_DELIVERED.
  6. OSO akan menyimpan status Order Finish.

Rollback Sistem pada Command Orkestrasi

Pada pendekatan orkrestasi ini proses rollback juga mudah untuk dilakukan. Setiap service tinggal memberikan pesan ke command center dan OSO akan menentukan proses selanjutnya.

Warna biru merupakan serangkaian proses rolback
  1. Stock Service mempublish event ke chanel Replay Chanel dengan pesan PRODUCT_OUT_OF_STOCK
  2. OSO akan mendengar event PRODUCT_OUT_OF_STOCK dan melakukan proses rollback.
  • OSO mengirimkan pesan Refund ke PAYMENT_SERVICE
  • PAYMENT_SERVICE mengembalikan dana customer.
  • Status pada Order Service di tetapkan sebagai gagal.

Kelebihan dan Kekurangan Saga Pattern Pendekatan Command atau Orkestrasi

Beberapa keuntungan dari saga pattern dengan pendekatan ini adalah:

  1. Meniadakan ketergantungan antar service.
  2. Distibusi transaksi terpusat.
  3. Mudah untuk diimplementasikan dan di test.
  4. Tingkat kesusahan dari transaksi bersifat linear.
  5. Proses rollback mudah untuk ditangani.
  6. Jika terdapat penambahan atau penguran proses dan service yang terlibat sangat mudah untuk dilakukan.

Beberapa kekurangnnya adalah

  1. Secara infrastruktur semakin banyak dan semakin sulit karena harus memanage service tambahan
  2. Hati-hati jika terjadi konsentrasi banyak sekali logika yang terpusat di OSO.
  3. OSO harus di jaga dan diyakinkan tingkat avaibilitynya.

TIPS untuk Saga Pattern

Kita telah menjelaskan dua pendekatan yang paling sering digunakan dalam menggunakan Saga Pattern. Berikut adalah tips yang perlu kita perhatikan dalam membuat distribusi transaksi pada microservice.

  1. Buat unik Id pada setiap transaksi
  2. Masukan alamat atau chanel dari proses reply beserta pesan yang di sampaikan. Jadi replay chanel cukup satu saja.
  3. Yakinkan semua proses atau message adalah operasi yang Idempoten.
  4. Lakukan asynchronous proses dan hindari synchronous proses.

Itulah semua penjelasan mengenai data management pada mincroservice dengan pendekatan Saga Pattern. Selanjutnya kita akan membahas Pendeketan CQRS dan Event Sourcing Pattern.

Ikuti Blog Saya

Dapatkan konten baru yang dikirim langsung ke kotak masuk Anda.

Dikelola oleh WordPress.com.

Atas ↑