সার্ভিস রেজিস্ট্রি এবং ডিসকভারি (Service Registry and Discovery)
মাইক্রোসার্ভিস আর্কিটেকচারে সার্ভিস রেজিস্ট্রি এবং ডিসকভারি হলো দুটি গুরুত্বপূর্ণ উপাদান, যা বিভিন্ন মাইক্রোসার্ভিসের মধ্যে যোগাযোগ এবং সংযোগ স্থাপনে সাহায্য করে।
সার্ভিস রেজিস্ট্রি (Service Registry)
সার্ভিস রেজিস্ট্রি হলো একটি ডেটাবেস বা রেজিস্ট্রি সার্ভার যেখানে প্রতিটি মাইক্রোসার্ভিসের অবস্থান (URL, IP অ্যাড্রেস, পোর্ট) এবং সংযোগের জন্য প্রয়োজনীয় তথ্য সংরক্ষিত থাকে। যখন কোনো মাইক্রোসার্ভিস রেজিস্ট্রিতে নিবন্ধিত হয়, তখন অন্যান্য মাইক্রোসার্ভিস সেটির অবস্থান সম্পর্কে জানতে পারে এবং এর সাথে সংযোগ স্থাপন করতে পারে।
বৈশিষ্ট্য:
- সার্ভিস নিবন্ধন: প্রতিটি মাইক্রোসার্ভিস রেজিস্ট্রিতে নিবন্ধন করে এবং তার তথ্য আপডেট করে রাখে।
- উপলব্ধতা ট্র্যাকিং: সার্ভিস রেজিস্ট্রি সার্ভিসের অবস্থান পরিবর্তন হলে সেটি আপডেট করে এবং অপ্রাপ্য বা বন্ধ সার্ভিসকে রেজিস্ট্রি থেকে সরিয়ে দেয়।
- ডাইন্যামিক রেজিস্ট্রেশন: মাইক্রোসার্ভিস ডাইনামিকভাবে রেজিস্ট্রি সার্ভারে নিবন্ধন বা আপডেট করতে পারে।
উদাহরণ: Netflix এর Eureka, Consul, এবং Apache ZooKeeper জনপ্রিয় সার্ভিস রেজিস্ট্রি টুলস।
সার্ভিস ডিসকভারি (Service Discovery)
সার্ভিস ডিসকভারি হলো একটি প্রক্রিয়া যার মাধ্যমে মাইক্রোসার্ভিসগুলো রেজিস্ট্রিতে থাকা অন্যান্য মাইক্রোসার্ভিসের অবস্থান খুঁজে বের করে এবং তাদের সাথে সংযোগ স্থাপন করতে পারে। মাইক্রোসার্ভিসগুলো ডাইনামিক ইন্টারনেট প্রটোকলের মাধ্যমে একে অপরের অবস্থান জানতে পারে এবং এভাবে একে অপরের সাথে যোগাযোগ স্থাপন করতে সক্ষম হয়।
সার্ভিস ডিসকভারি সাধারণত দুইভাবে সম্পন্ন করা হয়:
- ক্লায়েন্ট-সাইড ডিসকভারি:
ক্লায়েন্ট সরাসরি সার্ভিস রেজিস্ট্রি থেকে প্রয়োজনীয় সার্ভিসের ঠিকানা খুঁজে বের করে এবং সরাসরি সংযোগ স্থাপন করে। এটি সাধারণত লোড ব্যালান্সার ব্যবহার করে থাকে। - সার্ভার-সাইড ডিসকভারি:
এখানে ক্লায়েন্ট সরাসরি সার্ভিস রেজিস্ট্রি থেকে ঠিকানা খুঁজে পায় না, বরং সার্ভার বা লোড ব্যালান্সার ক্লায়েন্টের পক্ষ থেকে রেজিস্ট্রি থেকে সার্ভিস খুঁজে বের করে এবং সংযোগ স্থাপন করে।
উদাহরণ: AWS-এর Elastic Load Balancer, Kubernetes-এর Kube-DNS এবং Netflix Ribbon জনপ্রিয় সার্ভিস ডিসকভারি টুলস।
সার্ভিস রেজিস্ট্রি এবং ডিসকভারির উপকারিতা
- ডায়নামিক স্কেলিং: মাইক্রোসার্ভিসের সংখ্যা বাড়ানো বা কমানো সহজ হয়, কারণ প্রতিটি সার্ভিস রেজিস্ট্রি থেকে অবস্থান জেনে নেওয়া যায়।
- স্বয়ংক্রিয় ব্যালান্সিং: লোড ব্যালান্সার সার্ভিসগুলোর অবস্থান জেনে তাদের মধ্যে স্বয়ংক্রিয়ভাবে ব্যালান্স করে দেয়।
- ব্যর্থতার সুরক্ষা: কোনো সার্ভিস অনুপলব্ধ হলে রেজিস্ট্রি সেটি থেকে সরিয়ে নেয় এবং ডিসকভারির মাধ্যমে ক্লায়েন্টদের সক্রিয় সার্ভিসে সংযোগ করতে সহায়তা করে।
সারসংক্ষেপ
সার্ভিস রেজিস্ট্রি এবং ডিসকভারি মাইক্রোসার্ভিস আর্কিটেকচারের মূল উপাদান, যা সার্ভিসগুলোর মধ্যে স্বয়ংক্রিয় যোগাযোগ এবং সংযোগ নিশ্চিত করে। সার্ভিস রেজিস্ট্রি মাইক্রোসার্ভিসের অবস্থান সংরক্ষণ করে এবং সার্ভিস ডিসকভারি ক্লায়েন্টকে সেই অবস্থান জানিয়ে সংযোগ স্থাপন করতে সহায়তা করে। এভাবে মাইক্রোসার্ভিসগুলো ডাইনামিক স্কেলিং, ব্যর্থতা মোকাবিলা, এবং স্বয়ংক্রিয় লোড ব্যালান্সিং নিশ্চিত করতে সক্ষম হয়।
Read more