Saga pattern
মাইক্রোসার্ভিস আর্কিটেকচারে প্রতিটা সার্ভিস এর জন্য আলাদা ডাটাবেস থাকে। যখন প্রতিটা সার্ভিসে ডাটাবেস আলাদা হয়ে যায় তখন ডাটাবেস আর ট্রানজেকশন ম্যানেজ করতে পারে না। সেই ঝামেলা থেকে মুক্তির একটা উপায় হচ্ছে সাগা প্যাটার্ন। মূলত ডিস্ট্রিবিউটেড সিস্টেমে ট্রানজেকশন ম্যানেজ করার জন্য এই প্যাটার্ন ব্যবহার করা হয়ে থাকে। সাগা-প্যাটার্ন রিকোয়েস্ট রিসপন্স এবং ইভেন্ট ড্রিভেন উভয় পদ্বতিতেই কাজ করে।
রিকোয়েস্ট রিসপন্স এ সাগা-প্যাটার্ন
রিকোয়েস্ট রিসপন্স মডেলে সাগা-প্যাটার্ন বাস্তবায়ন করতে আলাদা কাজ করতে হয়। ট্রানজেকশন ম্যানেজ করার জন্য একটা ওয়ার্কফ্লো অর্কেস্ট্রেশন সার্ভিস লাগে। অর্কেস্ট্রেশন সার্ভিস এর কাজ হচ্ছে ট্রানজেকশন বাস্তবায়ন করা। অর্কেস্ট্রেশন সার্ভিস এ দুইটা পাথ থাকে। একটা হচ্ছে সাকসেস পাথ আরেকটা হচ্ছে ফেইলিউর পাথ। যদি একটা কাজ সফল হয় তখন তারপরের নিচের দিকের কাজ শুরু হয় এবং এভাবে পুরা কাজটা শেষ হয়। আবার যদি কোন একটা কাজ ফেল হয়, তখন সেখান থেকে উপরের দিকে বাকি কাজগুলাকে আনডু করা হয়।
ইভেন্ট ড্রিভেন এ সাগা-প্যাটার্ন
ইভেন্ট ড্রিভেন এ ও সাগা-প্যাটার্ন একই ভাবে কাজ করে কিন্তু কোন ওয়ার্কফ্লো অর্কেস্ট্রেশন সার্ভিস লাগে না। এর পরিবর্তে মেসেজ ব্রোকারে কাজ আনডু করার একটা চ্যানেল থাকে। একটা সার্ভিস যখন কোন কাজ সম্পন্ন করে তখন সে পরের কাজের জন্য মেসেজ ব্রোকারে একটা ইভেন্ট সেন্ড করবে এভাবে কাজ টা সম্পন্ন হবে। যদি কোন একটা কাজ ফেল হয়, তাহলে সে তার পূর্বের সার্ভিসকে কাজ আনডু করার জন্য একটা ইভেন্ট সেন্ড করবে এবং এভাবে সম্পূর্ণ কাজটা হয় সফল বা ফেইল হবে।