ইন্ট্রোডাকশন: এই ভিডিওতে দেখানো হয়েছে কীভাবে একটি মাইক্রোসার্ভিস আর্কিটেকচারে কুইজ সার্ভিস (Quiz Service) এবং কোশ্চেন সার্ভিস (Question Service) একে অপরের সাথে যোগাযোগ করে একটি পূর্ণাঙ্গ সিস্টেম তৈরি করে। আমরা এখানে মূলত দুটি গুরুত্বপূর্ণ কাজ সম্পন্ন করব: কুইজের প্রশ্নগুলো নিয়ে আসা এবং কুইজ শেষে প্রাপ্ত নম্বর (Score) গণনা করা।
১. কুইজের প্রশ্নগুলো খুঁজে বের করা (Get Quiz Questions)
ভিডিও রেফারেন্স: [01:00]
আমরা যখন কোনো কুইজ খেলতে চাই, তখন আমাদের কাছে শুধু কুইজের আইডি থাকে। কিন্তু সেই কুইজের ভেতরে কী কী প্রশ্ন আছে, সেটা থাকে 'কোশ্চেন সার্ভিস'-এর কাছে। এখানে কুইজ সার্ভিস একটি ইন্টারফেসের মাধ্যমে কোশ্চেন সার্ভিসকে অনুরোধ পাঠায়।
সহজ ব্যাখ্যা: মনে করুন, আপনি একটা রেস্টুরেন্টে গিয়ে মেনু কার্ড চাইলেন। ওয়েটার (Quiz Service) নিজে রান্না জানে না, সে রান্নাঘর থেকে (Question Service) মেনু বা খাবার নিয়ে এসে আপনাকে দেয়। এখানেও কুইজ সার্ভিস শুধু আইডিগুলো পাঠায় আর কোশ্চেন সার্ভিস আসল প্রশ্নগুলো ফেরত দেয়।
সহজ করে বোঝা (Difficult Words):
-
Wrapper (র্যাপার): এটি একটি বিশেষ বক্সের মতো যা ডেটাকে গুছিয়ে রাখে। এখানে প্রশ্নের সাথে যেন উত্তর চলে না যায়, তাই শুধু প্রশ্ন দেখানোর জন্য 'Question Wrapper' ব্যবহার করা হয়েছে।
-
Proxy (প্রক্সি): একজনের হয়ে অন্যজন কাজ করে দেওয়া। এখানে
QuizInterfaceকোশ্চেন সার্ভিসের হয়ে কাজ করছে।
২. কুইজের স্কোর বা রেজাল্ট বের করা (Calculate Score)
ভিডিও রেফারেন্স: [06:17]
ইউজার যখন কুইজ শেষ করে সাবমিট করে, তখন তার উত্তরগুলো সঠিক কি না তা চেক করার দায়িত্বও কোশ্চেন সার্ভিসের। কুইজ সার্ভিস ইউজারের উত্তরগুলো কোশ্চেন সার্ভিসে পাঠিয়ে দেয় এবং সেখান থেকে প্রাপ্ত নম্বরটি নিয়ে ইউজারকে দেখায়।
কোডিং উদাহরণ: নিচে কুইজ সার্ভিসের একটি মেথড দেখানো হলো যা কোশ্চেন সার্ভিসকে কল করে স্কোর নিয়ে আসে।
Java
// কুইজ সাবমিট করার জন্য মেথড
@PostMapping("submit/{id}")
public ResponseEntity<Integer> getScore(@PathVariable Integer id, @RequestBody List<Response> responses) {
// এখানে কুইজ ইন্টারফেস ব্যবহার করে কোশ্চেন সার্ভিস থেকে রেজাল্ট আনা হচ্ছে
return quizInterface.getScore(responses);
}
কোড ব্যাখ্যা:
-
@PostMapping: এটি সার্ভারে ডেটা পাঠানোর জন্য ব্যবহৃত হয়। -
@RequestBody: ইউজার যে উত্তরগুলো (Responses) দিয়েছে, সেগুলো এই লিস্টের মাধ্যমে গ্রহণ করা হয়। -
quizInterface.getScore: এই লাইনটি মূলত অন্য একটি সার্ভিসকে (কোশ্চেন সার্ভিস) বলছে যে, "ভাই, এই উত্তরগুলো একটু চেক করে আমাকে রেজাল্টটা দাও।"
৩. সার্ভিস দুটির মধ্যে যোগাযোগ পরীক্ষা (Testing with Postman)
ভিডিও রেফারেন্স: [08:04]
সব কোড শেষ করার পর ভিডিওতে 'Postman' টুল ব্যবহার করে পরীক্ষা করা হয়েছে। দেখা গেছে যে, কুইজ সার্ভিস (যা পোর্ট ৮০৯০-এ চলছে) কোশ্চেন সার্ভিসের (পোর্ট ৮০৮০) সাহায্য নিয়ে সফলভাবে ডাটা আদান-প্রদান করছে।
সহজ করে বোঝা (Difficult Word):
- Postman (পোস্টম্যান): এটি একটি সফটওয়্যার যা দিয়ে আমরা চেক করি আমাদের তৈরি করা এপিআই (API) ঠিকমতো কাজ করছে কি না।
আমার বিশ্লেষণ এবং ভবিষ্যৎ চিন্তা (Analysis & Thinking)
মূল উদ্দেশ্য: কন্টেন্ট ক্রিয়েটর এখানে বোঝাতে চেয়েছেন যে, মাইক্রোসার্ভিস মানেই হলো কাজ ভাগ করে দেওয়া। কুইজ সার্ভিস শুধু কুইজ ম্যানেজ করে, আর প্রশ্নের সব হিসাব রাখে কোশ্চেন সার্ভিস। এতে একটি সার্ভিস নষ্ট হলেও অন্যটি কাজ করতে পারে।
বাস্তবতা ও পরামর্শ: বর্তমানে বড় বড় কোম্পানি (যেমন- Netflix, Amazon) এই পদ্ধতি ব্যবহার করে। ভিডিওতে দুটি সার্ভিসের সরাসরি যোগাযোগ দেখানো হয়েছে, তবে ভবিষ্যতে যখন অনেক ইউজার হবে, তখন Load Balancing (লোড ব্যালেন্সিং) প্রয়োজন হবে।
উন্নত বিকল্প: ১. সরাসরি কল না করে আমরা RabbitMQ বা Kafka-এর মতো মেসেজ ব্রোকার ব্যবহার করতে পারি, যা সিস্টেমকে আরও শক্তিশালী করবে। ২. ভিডিওতে পোর্টের নাম সরাসরি ব্যবহার করা হয়েছে, এর বদলে Eureka Discovery Server ব্যবহার করলে পোর্ট মুখস্থ রাখার দরকার হবে না।
ভিডিওর শেষে লোড ব্যালেন্সিং নিয়ে ইঙ্গিত দেওয়া হয়েছে, যা পরবর্তী ধাপ হিসেবে অত্যন্ত গুরুত্বপূর্ণ। [09:51]
ইউটিউব ভিডিও লিঙ্ক: https://www.youtube.com/watch?v=MxLdjBdhWws
[
Completing the 2 Microservices
Telusko · 28K views
](http://www.youtube.com/watch?v=MxLdjBdhWws)

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