ইন্ট্রোডাকশন: আজকালকার সফটওয়্যার ডেভেলপমেন্টে যখন অনেকগুলো ছোট ছোট সার্ভিস বা মাইক্রোসার্ভিস একসাথে কাজ করে, তখন তারা একে অপরকে চিনবে কীভাবে? এই সমস্যা সমাধানের জন্যই প্রয়োজন একটি 'সার্ভিস রেজিস্ট্রি'। সহজ কথায়, এটি একটি ফোনের কন্টাক্ট লিস্টের মতো, যেখানে সব সার্ভিসের নাম এবং ঠিকানা (IP address ও Port) জমা থাকে। আজকের আলোচনায় আমরা শিখব কীভাবে Netflix Eureka Server ব্যবহার করে একটি সার্ভিস রেজিস্ট্রি তৈরি করতে হয় এবং কীভাবে অন্যান্য সার্ভিসগুলো এর সাথে যুক্ত হয়।
১. সার্ভিস রেজিস্ট্রি কী এবং কেন প্রয়োজন?
রেফারেন্স: [00:00]
যখন আপনার সিস্টেমে ১০-২০টি বা তার বেশি মাইক্রোসার্ভিস থাকে, তখন একটি সার্ভিস অন্যটির সাথে কানেক্ট করতে চাইলে তার নির্দিষ্ট ঠিকানা জানা কঠিন হয়ে পড়ে। এখানেই আসে Service Discovery বা সার্ভিস রেজিস্ট্রির ধারণা।
-
সার্ভিস ডিসকভারি: এটি একটি কেন্দ্রীয় সার্ভার যেখানে সব মাইক্রোসার্ভিস নিজে থেকে এসে নাম লিখিয়ে (Register) যায়।
-
ইউরেকা সার্ভার (Eureka Server): এটি নেটফ্লিক্সের তৈরি একটি ওপেন সোর্স টুল যা মাইক্রোসার্ভিস ম্যানেজ করতে সাহায্য করে।
সহজ কথায় ব্যাখ্যা: ধরুন একটি বিয়ে বাড়িতে অনেকজন বাবুর্চি কাজ করছে। একজন জানে মাংস রান্না করতে, অন্যজন পোলাও। এখন যদি মাংসের বাবুর্চির লবণের দরকার হয়, সে সরাসরি লবণের কাছে না গিয়ে 'ম্যানেজার'কে (সার্ভিস রেজিস্ট্রি) জিজ্ঞেস করে লবণ কার কাছে আছে। ম্যানেজার তাকে বলে দেয় লবণ কার কাছে এবং কোথায় পাওয়া যাবে।
২. ইউরেকা সার্ভার প্রজেক্ট তৈরি করা
রেফারেন্স: [00:45]
ইউরেকা সার্ভার তৈরি করা খুবই সহজ। এর জন্য আমাদের Spring Initializr (start.spring.io) ব্যবহার করতে হবে।
-
Project: Maven
-
Language: Java
-
Dependencies: 1. Spring Web: ওয়েব অ্যাপ্লিকেশন চালানোর জন্য। 2. Eureka Server: এটিকে একটি সার্ভিস রেজিস্ট্রি হিসেবে কাজ করানোর জন্য।
প্রজেক্টটি ডাউনলোড করে আপনার পছন্দের IDE (যেমন IntelliJ IDEA) তে ওপেন করুন।
৩. কোডিং এবং কনফিগারেশন
রেফারেন্স: [02:45]
প্রজেক্ট সেটআপ হওয়ার পর আমাদের দুটি জায়গায় পরিবর্তন করতে হবে: মেইন ক্লাস এবং প্রোপার্টিজ ফাইল।
ধাপ ১: মেইন ক্লাসে অ্যানোটেশন যোগ করা আমাদের জাভা মেইন ক্লাসের উপরে একটি বিশেষ কমান্ড বা 'অ্যানোটেশন' দিতে হবে যাতে স্প্রিং বুঝতে পারে এটি একটি ইউরেকা সার্ভার।
Java
package com.telusko.serviceregistry;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer // এই কোডটি প্রজেক্টকে ইউরেকা সার্ভার হিসেবে ঘোষণা করে
public class ServiceRegistryApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceRegistryApplication.class, args);
}
}
- ব্যাখ্যা:
@EnableEurekaServerলিখলেই আপনার সাধারণ প্রজেক্টটি একটি শক্তিশালী সার্ভিস রেজিস্ট্রিতে পরিণত হয়।
ধাপ ২: application.properties ফাইল সেটআপ ইউরেকা সার্ভার নিজেই একটি সার্ভিস, কিন্তু সে নিজেকে নিজের লিস্টে রাখতে চায় না। তাই নিচের কনফিগারেশনগুলো দিতে হয়:
Properties
spring.application.name=service-registry
server.port=8761
# ইউরেকা সার্ভার নিজেকে ক্লায়েন্ট হিসেবে রেজিস্টার করবে না
eureka.client.register-with-eureka=false
# অন্য কোনো সার্ভার থেকে ডেটা ফেচ বা নিয়ে আসবে না
eureka.client.fetch-registry=false
- সহজ ব্যাখ্যা:
8761হলো ইউরেকা সার্ভারের ডিফল্ট পোর্ট (ঠিকানা)। আমরা তাকে বলছি, "তুমি তো নিজেই বস, তোমার নিজের নাম নিজের লিস্টে তোলার দরকার নেই (register-with-eureka=false)"।
৪. ক্লায়েন্ট সার্ভিস কানেক্ট করা (Question Service)
রেফারেন্স: [06:04]
এখন আমাদের আসল মাইক্রোসার্ভিস (যেমন: Question Service) কে এই রেজিস্ট্রির সাথে যুক্ত করতে হবে।
-
প্রথমে ক্লায়েন্ট সার্ভিসের
pom.xmlফাইলেEureka Discovery Clientডিপেন্ডেন্সি যোগ করতে হবে। -
এরপর তার
application.propertiesফাইলে নাম দিতে হবে।
Properties
spring.application.name=question-service
server.port=8080
এখন যদি আপনি ইউরেকা সার্ভারটি ব্রাউজারে localhost:8761 লিখে ওপেন করেন, আপনি দেখতে পাবেন question-service সেখানে সুন্দরভাবে লিস্টেড হয়ে গেছে! [07:50]
কঠিন শব্দের সহজ ব্যাখ্যা:
১. Dependency (ডিপেন্ডেন্সি): এটি এক ধরণের সাহায্যকারী ফাইল বা লাইব্রেরি যা আপনার প্রজেক্টে নতুন কোনো ক্ষমতা (যেমন: ডেটাবেস কানেকশন বা সার্ভার তৈরি) যোগ করে। ২. Annotation (অ্যানোটেশন): জাভাতে @ দিয়ে শুরু হওয়া শব্দগুলো, যা কম্পাইলারকে বিশেষ নির্দেশনা দেয়। যেমন @EnableEurekaServer মানে "ইউরেকা চালু করো"। ৩. Instance (ইন্সট্যান্স): যখন আপনি একই সার্ভিসের একাধিক কপি বিভিন্ন পোর্টে চালান, প্রতিটি কপিকে এক একটি ইন্সট্যান্স বলা হয়। [08:13]
এনালাইসিস এবং বাস্তব জীবনের উপলব্ধি
সারাংশ ও চিন্তাধারা: কন্টেন্ট ক্রিয়েটর এখানে বুঝিয়েছেন যে মাইক্রোসার্ভিস আর্কিটেকচারে সরাসরি হার্ডকোড করা IP address ব্যবহার করা বিপজ্জনক। কারণ সার্ভার রিস্টার্ট হলে বা ক্লাউডে থাকলে IP বদলে যেতে পারে। ইউরেকা ব্যবহার করলে আমরা শুধু সার্ভিসের 'নাম' (যেমন: question-service) দিয়ে তাকে খুঁজে পেতে পারি।
বাস্তবতা ও পরামর্শ: বর্তমানে বড় বড় কোম্পানি যেমন নেটফ্লিক্স, অ্যামাজন এই কনসেপ্ট ব্যবহার করে।
-
বিকল্প: আপনি ইউরেকার বদলে Consul বা Zookeeper ব্যবহার করতে পারেন, তবে স্প্রিং বুটের সাথে ইউরেকা ব্যবহার করা সবচেয়ে সহজ।
-
পরামর্শ: প্রডাকশন লেভেলে কাজ করার সময় সবসময় একাধিক ইউরেকা সার্ভার (High Availability) রাখা উচিত, যাতে একটি বন্ধ হয়ে গেলেও অন্যটি দিয়ে কাজ চলে। পরবর্তী ধাপে OpenFeign ব্যবহার করে এই রেজিস্ট্রি থেকে খুব সহজেই অন্য সার্ভিসকে কল করা যাবে।
লিঙ্ক: https://www.youtube.com/watch?v=KvGugXhgbr8
[
Creating a Service Registry | Microservice
Telusko · 64K views
](http://www.youtube.com/watch?v=KvGugXhgbr8)

মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন
আপনার সমস্যাটি কমেন্ট করে আমাদের জানান :-d