Pendahuluan

Pendahuluan mengenai Saga Pattern, silahkan lihat di sini

Saga Pattern ditujukan untuk menyelesaikan permasalah Distribution Transaction

Yaitu transaksi yang terjadi melibatkan banyak microservice di server, memory, dan lokasi yang berbeda.

Lalu bagaimana caranya ?

Saga Pattern didesain dengan cara membuat sebuah Saga Execution Manager/Coordinator sebagai pengelola dari tahapan/step yang dibutuhkan dari sebuah proses transaksi.

Tapi bagaimana caranya ?

  • Manager/Coordinator ini bisa merupakan service/microservice tersendiri/terpisah.
  • Manager/Coordinator ini dibungkus dalam sebuah framework Saga Pattern yang kita pakai.
  • Manager/Coordinator ini dimasukkan sebagai library yang harus diinclude di service yang ikut dalam proses Saga Pattern ini, kemudian berperan sebagai distributed manager.

Kita coba ke level lebih dalam, bagaimana proses Saga Pattern itu sendiri ?

Saga Pattern ini sendiri mempunyai banyak kemungkinan alur dan banyak teknik.

Akan tetapi secara filosofis, ada beberapa proses yang harus dilakukan di dalam Saga Pattern :


  1. Registrasi step/tahapan dalam sebuah transaksi.

Registrasi ini bisa terpusat, seperti kita lihat di Saga Pattern bertipe Orkestrasi, atau terdistribusi seperti kita akan lihat di Saga Pattern bertipe Koreografi.


  1. Notifikasi kalau sebuah tahapan sudah berhasil/gagal dari service-service terpisahnya.

Ketika sebuah tahapan/step berhasil maupun gagal, harus ada notifikasi/message bahwa tahapan/step itu gagal/berhasil, sehingga bisa ditentukan apakah akan dilakukan proses ke tahapan transaksi selanjutnya, atau di rollback, atau di retryable.


  1. Update status ke sebuah data source/event storage.

Update status ke sebuah data source/database atau event storage berguna untuk proses retryable, atau prosess rolling back ketika terjadi kegagalan dari tahapan/set, atau penentuan sebuah transaksi secara keseluruhan dapat dianggap berhasil atau tidak.


  1. Penanganan lokalisasi transaksi di masing-masing tahapan, dengan cara Aggregasi.

Aggregasi sebenarnya lebih kepada proses individual untuk masing-masing tahapan/step.

Dalam Saga Pattern, setiap tahapan dianggap transaksi yang terpisah. Didalamnya ada proses eksekusi transaksi, kemudian ada proses rolling back nya kalau ternyata perlu dirollback, atau proses lain yang mesti dilakukan sebagai tindakan kompensasi kalau tahapan ini gagal atau perlu retryable.

Urutan dan kumpulan aksi di setiap transaksi lokal ini disebut Aggregasi transaksi.