Introduction
আজকের এই আলোচনায় আমরা শিখব কীভাবে একটি Microservice অন্য একটি Microservice-এর সাথে যোগাযোগ করে। সহজ কথায়, একটা সফটওয়্যারের ছোট অংশ যখন অন্য একটা অংশের সাহায্য চায়, তখন তারা নিজেদের মধ্যে কীভাবে কথা বলে, সেটাই এখানে দেখানো হয়েছে। আমরা এখানে 'Quiz Service' এবং 'Question Service'-এর মধ্যে সংযোগ স্থাপন এবং সেটি পরীক্ষা করার বাস্তব উদাহরণ দেখব।
১. প্রজেক্ট সেটআপ এবং টেস্টিং (Postman-এর মাধ্যমে)
প্রথমে আমাদের দেখতে হবে প্রজেক্টটি ঠিকমতো চলছে কি না। এর জন্য আমরা Postman ব্যবহার করি, যা দিয়ে এপিআই (API) টেস্ট করা হয়।
রেফারেন্স: [00:15]
বিস্তারিত ব্যাখ্যা: এখানে কুইজ তৈরি করার জন্য একটি রিকোয়েস্ট পাঠানো হচ্ছে। মাইক্রোসার্ভিসে প্রতিটি সার্ভিসের জন্য আলাদা পোর্ট (Port) থাকে। এই প্রজেক্টে কুইজ সার্ভিসটি 8090 পোর্টে চলছে।
-
সহজ ব্যাখ্যা: মনে করুন, আপনি একটি রেস্টুরেন্টে গিয়ে খাবার অর্ডার করছেন। আপনার টেবিল নম্বর হলো পোর্ট, আর মেনু কার্ড হলো ইউআরএল (URL)।
-
কঠিন শব্দ: Postman (পোস্টম্যান) - এটি একটি টুল যা দিয়ে চেক করা যায় যে আপনার তৈরি করা কোড বা এপিআই ঠিকমতো কাজ করছে কি না।
কোড উদাহরণ: আমাদের একটি JSON ডেটা পাঠাতে হবে কুইজ তৈরি করার জন্য:
JSON
{
"categoryName": "Java",
"numQuestions": 5,
"title": "Springers Quiz 1"
}
- ব্যাখ্যা: এখানে আমরা বলছি যে 'Java' ক্যাটাগরির ৫টি প্রশ্ন দিয়ে 'Springers Quiz 1' নামে একটি কুইজ বানাও।
২. এরর হ্যান্ডলিং এবং ইউআরএল ম্যাপিং (Error Fixing)
কাজটি করার সময় প্রথমে একটি 500 Internal Server Error আসতে পারে। এটি সাধারণত কোডের ভেতরে কোনো ভুলের কারণে হয়।
রেফারেন্স: [01:38]
বিস্তারিত ব্যাখ্যা: ভিডিওতে দেখা যায় যে, Quiz Service যখন Question Service-কে কল করছে, তখন সে সঠিক রাস্তা বা 'Path' খুঁজে পাচ্ছে না। ভুলটি ছিল ইউআরএল-এ question শব্দটি না থাকা।
সঠিক কোড (Feign Client Interface): আগে ভুল ছিল শুধু /generate, কিন্তু এটাকে ঠিক করে করতে হবে:
Java
@FeignClient(name = "QUESTION-SERVICE")
public interface QuizInterface {
@GetMapping("question/generate") // এখানে 'question/' যোগ করা হয়েছে
public ResponseEntity<List<Integer>> getQuestionsForQuiz(...);
}
- আমার চিন্তাভাবনা: প্রোগ্রামিংয়ে একটি ছোট স্ল্যাশ (/) বা একটি শব্দ ভুল হলেও পুরো সিস্টেম কাজ করা বন্ধ করে দিতে পারে। মাইক্রোসার্ভিসে এক সার্ভিস অন্য সার্ভিসকে চেনার জন্য এই পাথগুলো খুবই গুরুত্বপূর্ণ।
৩. ডেটাবেস ভেরিফিকেশন (Database Check)
সবকিছু ঠিক করার পর চেক করতে হবে যে ডাটাবেসে সত্যিই কুইজ তৈরি হয়েছে কি না।
রেফারেন্স: [03:01]
বিস্তারিত ব্যাখ্যা: ভিডিওতে PGAdmin (PostgreSQL-এর জন্য একটি টুল) ব্যবহার করে ডাটাবেস চেক করা হয়েছে। দেখা গেছে যে quiz টেবিলে নতুন কুইজটি সেভ হয়েছে এবং এটি অন্য একটি সার্ভিস (Question Service) থেকে প্রশ্নগুলো নিয়ে এসেছে।
- কঠিন শব্দ: PGAdmin (পিজি-অ্যাডমিন) - এটি একটি সফটওয়্যার যা দিয়ে ডাটাবেসের ভেতর কী আছে না আছে তা মানুষের পড়ার উপযোগী করে দেখা যায়।
৪. ইউরেকা সার্ভার এবং সার্ভিস ডিসকভারি (Eureka Server)
একাধিক সার্ভিস যখন একসাথে কাজ করে, তখন তাদের ম্যানেজ করার জন্য Eureka Server ব্যবহার করা হয়।
রেফারেন্স: [03:44]
বিস্তারিত ব্যাখ্যা: ইউরেকা সার্ভার হলো একটি টেলিফোন ডিরেক্টরির মতো। যখন Quiz Service-এর প্রয়োজন হয়, সে ইউরেকাকে জিজ্ঞেস করে "Question Service কোথায়?" এবং ইউরেকা তাকে ঠিকানা দিয়ে দেয়।
- সহজ ব্যাখ্যা: আপনি যদি কোনো বড় অফিসে গিয়ে কাউকে খুঁজতে চান, তবে রিসেপশনিস্টকে জিজ্ঞেস করেন। এখানে ইউরেকা হলো সেই রিসেপশনিস্ট।
বিশ্লেষণ এবং বাস্তব ধারণা (Analysis & Perception)
সারাংশ: কন্টেন্ট ক্রিয়েটর এখানে দেখাতে চেয়েছেন যে, একটি জটিল সিস্টেমকে ছোট ছোট ভাগে ভাগ করলে (Microservices) সেগুলো একে অপরের সাথে কীভাবে যুক্ত থাকে। Feign Client ব্যবহার করে খুব সহজেই এক সার্ভিস থেকে অন্য সার্ভিসে রিকোয়েস্ট পাঠানো যায়।
বাস্তবতা ও সম্ভাবনা: ১. ফল্ট টলারেন্স: যদি Question Service বন্ধ হয়ে যায়, তবে শুধু কুইজ তৈরির অংশটুকু কাজ করবে না, কিন্তু বাকি সিস্টেম সচল থাকবে। এটি মাইক্রোসার্ভিসের বড় সুবিধা। ২. স্কেলেবিলিটি: যদি অনেক মানুষ একসাথে কুইজ দিতে আসে, তবে আমরা শুধু Question Service-এর ক্ষমতা বাড়িয়ে দিতে পারি। ৩. বিকল্প: Feign Client-এর বদলে RestTemplate বা WebClient ব্যবহার করা যেত, কিন্তু Feign Client কোডকে অনেক পরিষ্কার এবং সহজ রাখে।
পরামর্শ: নতুনদের জন্য পরামর্শ হলো, প্রথমে একটি ছোট প্রজেক্টে একটি সার্ভিস থেকে অন্য সার্ভিসে ডেটা আদান-প্রদান করা শিখুন। এরপর ইউরেকা বা লোড ব্যালেন্সার নিয়ে কাজ করুন। মাইক্রোসার্ভিস শিখলে বড় বড় কোম্পানি যেমন নেটফ্লিক্স বা অ্যামাজন কীভাবে কাজ করে, তার একটি পরিষ্কার ধারণা পাওয়া যায়।
[
Microservice is calling a Microservice
Telusko · 56K views
](http://www.youtube.com/watch?v=ElmmCqTwYPc)

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