ইন্ট্রোডাকশন (Introduction): আজকালকার বড় বড় ওয়েবসাইট বা অ্যাপগুলো একটা বড় কোড দিয়ে না বানিয়ে অনেকগুলো ছোট ছোট ভাগে ভাগ করে বানানো হয়, যেগুলোকে আমরা Microservices বলি। কিন্তু সমস্যা হলো, এই ছোট ছোট সার্ভিসগুলো যখন একে অপরের সাথে কথা বলতে চায়, তখন তারা একে অপরকে খুঁজে পাবে কীভাবে? আজকের এই আলোচনায় আমরা শিখব কেন সার্ভিস ডিসকভারি (Service Discovery) দরকার এবং কীভাবে Eureka ও Feign Client আমাদের এই কাজে সাহায্য করে।
১. কুইজ সার্ভিস ফিক্স করা (Fixing the Quiz Service)
ভিডিও রেফারেন্স: [00:00]
শুরুতেই আমাদের অ্যাপ্লিকেশনের কুইজ সার্ভিস (Quiz Service) নিয়ে কাজ করতে হবে। যেহেতু আমরা আগের প্রজেক্ট থেকে কোড কপি করেছি, তাই অনেক অপ্রয়োজনীয় ইমপোর্ট (Imports) এবং এরর (Errors) থাকতে পারে।
-
বিবরণ: আমাদের কুইজ সার্ভিসে এখন আর সরাসরি ডাটাবেস থেকে প্রশ্ন নেওয়ার সুযোগ নেই, কারণ প্রশ্নের জন্য আলাদা একটি Question Service আছে। তাই কোড থেকে সরাসরি ডাটাবেস কলগুলো সরিয়ে ফেলতে হবে।
-
সহজ ব্যাখ্যা (DTO): এখানে DTO (Data Transfer Object) ব্যবহার করা হয়েছে।
- DTO কি? মনে করো তুমি বাজার থেকে অনেকগুলো জিনিস কিনবে। তুমি আলাদা আলাদা ভাবে না নিয়ে একটা ব্যাগে সব ভরে নিয়ে আসলে। এই ব্যাগটাই হলো DTO, যা অনেকগুলো ডেটাকে একসাথে এক জায়গা থেকে অন্য জায়গায় পাঠাতে সাহায্য করে।
২. কেন এক সার্ভিস অন্য সার্ভিসকে কল করবে? (Communication between Services)
ভিডিও রেফারেন্স: [05:08]
একটি কুইজ তৈরি করতে হলে আমাদের প্রশ্নের প্রয়োজন। কিন্তু প্রশ্নগুলো আছে Question Service-এ। তাই কুইজ সার্ভিসকে এখন কোয়েশ্চেন সার্ভিসকে রিকোয়েস্ট পাঠাতে হবে।
-
বিবরণ: কুইজ সার্ভিস যখন বলবে "আমাকে জাভা ক্যাটাগরির ৫টি প্রশ্ন দাও", তখন সে কোয়েশ্চেন সার্ভিসের একটি নির্দিষ্ট লিঙ্ক বা URL-এ রিকোয়েস্ট পাঠাবে।
-
সমস্যা: সাধারণত আমরা
localhost:8080/generateটাইপ লিঙ্ক ব্যবহার করি। কিন্তু যখন অনেকগুলো সার্ভিস আলাদা আলাদা কম্পিউটারে চলবে, তখন কার IP অ্যাড্রেস কত বা পোর্ট (Port) কত, তা মনে রাখা বা কোডে লিখে রাখা অসম্ভব।
৩. সার্ভিস ডিসকভারি এবং ইউরেকা (Service Discovery & Eureka)
ভিডিও রেফারেন্স: [09:50]
এই সমস্যার সমাধান হলো Service Discovery। এর জন্য আমরা ব্যবহার করি Netflix Eureka Server।
-
সহজ ব্যাখ্যা: ইউরেকাকে তুমি একটি "ফোনবুক" বা "ডিরেক্টরি" হিসেবে ভাবতে পারো।
-
সবগুলো সার্ভিস (যেমন: Quiz Service, Question Service) চালু হওয়ার পর এই ফোনবুকে নিজের নাম আর ঠিকানা লিখে দিয়ে আসবে।
-
এখন কুইজ সার্ভিসের যদি কোয়েশ্চেন সার্ভিসকে দরকার হয়, সে ইউরেকাকে বলবে "কোয়েশ্চেন সার্ভিস কোথায় আছে?"। ইউরেকা তাকে সঠিক ঠিকানা দিয়ে দেবে।
-
-
কঠিন শব্দ:
-
Instance (ইনস্ট্যান্স): একটি অ্যাপ্লিকেশনের কপি। একই সার্ভিস যখন একাধিক পোর্টে চলে, তখন প্রত্যেকটিকে একটি ইনস্ট্যান্স বলা হয়।
-
Naming Server: ইউরেকাকে নেমিং সার্ভারও বলা হয় কারণ এটি সার্ভিসের নাম দিয়ে তাকে খুঁজে বের করে।
-
৪. ফেইন ক্লায়েন্ট (Feign Client)
ভিডিও রেফারেন্স: [10:20]
এক সার্ভিস থেকে অন্য সার্ভিসে রিকোয়েস্ট পাঠানোর জন্য আগে Rest Template ব্যবহার করা হতো, যা একটু জটিল। এখন সহজ উপায় হলো Feign Client।
- বিবরণ: এটি একটি "Declarative" পদ্ধতি। অর্থাৎ তোমাকে শুধু বলতে হবে তুমি কী চাও, বাকিটা ফেইন ক্লায়েন্ট নিজে থেকেই ইউরেকা থেকে ঠিকানা খুঁজে নিয়ে রিকোয়েস্ট পাঠিয়ে দেবে।
৫. কোডিং উদাহরণ (Coding Snippet)
একটি DTO ক্লাস কীভাবে তৈরি করা হয়েছে তার উদাহরণ নিচে দেওয়া হলো:
Java
@Data // এটি গেটার এবং সেটার নিজে থেকেই তৈরি করে দেয়
public class QuizDto {
private String categoryName;
private Integer numQuestions;
private String title;
}
ব্যাখ্যা: এই কোডটি একটি সহজ ক্লাসের কাঠামো যা কুইজ তৈরির জন্য প্রয়োজনীয় তথ্য (ক্যাটাগরি, কয়টি প্রশ্ন, টাইটেল) একসাথে ধরে রাখে। @Data অ্যানোটেশন ব্যবহারের ফলে আমাদের আলাদা করে কোড লিখতে হয় না।
বিশ্লেষণ ও চিন্তাধারা (Analysis & Perception)
বাস্তবতা: মাইক্রোসার্ভিস আর্কিটেকচারে সার্ভিসগুলোর সংখ্যা যখন বাড়তে থাকে, তখন ম্যানুয়ালি IP অ্যাড্রেস ম্যানেজ করা পাগলামি ছাড়া আর কিছু নয়। আজকে সার্ভিস পোর্টে 8080 তে চলছে, কাল হয়তো ক্লাউডে অন্য পোর্টে চলবে।
পরামর্শ: ১. সরাসরি IP ব্যবহার না করে সবসময় Service Name ব্যবহার করুন। ২. Eureka Server ব্যবহার করলে লোড ব্যালেন্সিং (Load Balancing) সহজ হয়, অর্থাৎ অনেকগুলো কপি থাকলে ইউরেকা ঠিক করে দেয় কোনটি খালি আছে। ৩. বড় প্রজেক্টের ক্ষেত্রে Spring Cloud Config ব্যবহার করার কথা ভাবা যেতে পারে যা কনফিগারেশন ম্যানেজমেন্ট আরও সহজ করে।
বিকল্প: ইউরেকা ছাড়াও Consul বা Zookeeper ব্যবহার করা যায়, তবে স্প্রিং বুট (Spring Boot) এর সাথে ইউরেকা এবং ফেইন ক্লায়েন্ট সবথেকে জনপ্রিয় ও সহজ।
লিঙ্ক: https://www.youtube.com/watch?v=D4PyHi90C4Q
[
Need of Service Discovery | Microservice
Telusko · 33K views
](http://www.youtube.com/watch?v=D4PyHi90C4Q)

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