ধরা যাক, আমাদের একটি সিস্টেম রয়েছে, যার মাধ্যমে আমরা আমাদের অ্যাপ্লিকেশনের Webhook রিকুয়েস্ট হ্যান্ডেল করি। এই সিস্টেমের মাধ্যমে আমরা ৫-১০টি থার্ড পার্টি সার্ভিস থেকে আসা Webhook রিকুয়েস্ট ফিল্টার করে প্রয়োজনীয় ডেটাগুলো আমাদের সার্ভারে সংরক্ষণ করি।
তবে, এই সিস্টেমটি আমরা এমন একটি Environment এ ডিপ্লয় করেছি, যেখানে Dedicated IP বা DNS নেই। প্রতিবার ডিপ্লয়ের সময় Public IP পরিবর্তিত হয়। উদাহরণস্বরূপ, আমরা যদি সিস্টেমটি কনটেইনারাইজ করে AWS ECS-এ ডিপ্লয় করি, তাহলে এ ধরনের পরিস্থিতি সৃষ্টি হয়।
যদিও আমরা AWS Load Balancer সেটআপ করে DNS পেতে পারি, তবে তার জন্য অতিরিক্ত পেমেন্ট করতে হবে। আমাদের সিস্টেমটি প্রাইভেট, তাই আমরা চাই না ALB-এর জন্য আলাদা করে খরচ করতে।
অন/অফ করার চ্যালেঞ্জ:
বর্তমানে আমাদের ১-২ টি সার্ভিসের Webhook এই সিস্টেম থেকেই , মাঝে মাঝে সাময়িকভাবে ম্যানুয়ালি অন ও অফ করতে হয়। যদি Dedicated IP বা DNS থাকত, তাহলে আমরা সহজেই একটি API তৈরি করে সার্ভিসগুলো অন/অফ করতে পারতাম।
এরকম পরিস্থিতিতে পড়লে আপনি কীভাবে অন/অফ করতেন?
হুম… এখানেই আমাদের হেল্প করতে চলে আসে Pub/Sub!
Pub/Sub আবার কী?
Pub/Sub (Publisher/Subscriber) হলো একটি মেসেজিং প্যাটার্ন, যেখানে তথ্য প্রেরণকারীকে Publisher এবং তথ্য গ্রাহককে Subscriber বলা হয়। এই মডেলে Publisher ও Subscriber সরাসরি একে অপরের সাথে যোগাযোগ করে না, বরং একটি মধ্যস্থতাকারী মেসেজ ব্রোকার এর মাধ্যমে তথ্য আদান-প্রদান করে।
Pub/Sub প্যাটার্ন সাধারণত ইভেন্ট-ড্রিভেন এবং অ্যাসিঙ্ক্রোনাস মেসেজিং সিস্টেমে ব্যবহৃত হয়, যেখানে দ্রুত এবং নির্ভরযোগ্য যোগাযোগ নিশ্চিত করা সম্ভব হয়।
এর জন্য কোনো Dedicated IP বা DNS-এর প্রয়োজন হবে না। কেবল একটি Pub/Sub সার্ভার বা ব্রোকার প্রয়োজন হবে। এখানে আমাদের Webhook সিস্টেমটি Subscriber হিসেবে কাজ করবে, আর যেখান থেকে আমরা API কল করবো, সেটি হবে Publisher।
আমরা সরাসরি API কল করার পরিবর্তে, Pub/Sub ব্যবহারের মাধ্যমে একটি মেসেজ সেন্ড করে ১-২ টি সার্ভিসের Webhook রিকুয়েস্ট রিসিভ করা অন বা অফ করতে পারি।
জনপ্রিয় Pub/Sub সার্ভার বা ব্রোকারগুলোর মধ্যে রয়েছে: Kafka, RabbitMQ, Google Cloud Pub/Sub, Redis, Apache Pulsar, NATS, Amazon SNS এবং Azure Service Bus।
আপনারা যারা এখনো Pub/Sub নিয়ে কাজ করেননি, তারা ট্রাই করে দেখতে পারেন। লার্জ-স্কেল অ্যাপ্লিকেশনগুলোতে Pub/Sub অনেক ব্যবহার হয়ে থাকে।
Pub/Sub ছাড়া অন্য কোনো উপায়ে কি Webhook অন/অফ করা যায়?
যদি অন্য কোনো আইডিয়া থেকে থাকে, তাহলে শেয়ার করার অনুরোধ রইলো।
ধন্যবাদ।