সরাসরি প্রধান সামগ্রীতে চলে যান

মাইক্রোসার্ভিস কমিউনিকেশন: একটি সার্ভিস থেকে অন্য সার্ভিসে কল করার সহজ নিয়ম

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)

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

তারাবিহ সমগ্র - প্রথম আলো

রামাদান ২০২৪ উপলক্ষে প্রথম আলোর নিয়মিত আয়োজন - খতমে তারাবিহ'র সূরা গুলো নিয়ে সংক্ষিপ্ত আলোচনা'র লিংক  নিচে দেওয়া হলো।  লিংকে ক্লিক করলেই আপনাকে আলোচনা তে নিয়ে যাবে। তারাবিহ: ১ | একটি খুন ও গাভি নিয়ে বনি ইসরাইলের বাড়াবাড়ি তারাবিহ: ২ | নারীর মর্যাদা ও অধিকার এবং অলৌকিক তিন ঘটনা তারাবিহ: ৩ | যে ১৪ নারীকে বিয়ে করা হারাম তারাবিতে: ১২ | মহানবী (সা.)–এর আকাশভ্রমণ এবং আসহাবে কাহাফের কাহিনি

রেডমি নোট ৯ এর বিস্তারিত | Redmi Note 9 in Bangla

৩০ এপ্রিল, ২০২০ এ শাওমির ঘোষনা আসে এই ফোনটি নিয়ে। কিন্তু ফোনটি মার্কেটে আসে মে মাসের শেষের দিকে৷ করোনার কারনে ফোনটি বাংলাদেশে আসতে আরো সময় নেয়। বর্তমানে বাংলাদেশে আন অফিশিয়াল ভাবে ফোনটি পাওয়া যাচ্ছে৷ বাংলাদেশে অফিশিয়াল ভাবে এখনো ফোনটি আসার তথ্য নেয়৷ চলুন ফোনটি নিয়ে বিস্তারিত আলোচনা করা যাক। শাওমি নোট সিরিজের ফোন বের করে এদের রেডমি নামে সাব ব্যান্ড৷ এদের কাজ হল এই নোট সিরিজ নিয়ে কাজ করা৷ প্রতিবছর নোট সিরিজের ১/২ টা ফোন বাজারে আসে। সাথে সেই ফোন গুলার বিভিন্ন ভার্সন (যেমন - র‍্যাম ও রমের ভিত্তিতে) বাজারে আসে। এই বছরও তারা রেডমি সিরিজের নোট ৯ বাজারে আনে। এই বছর হয়তো এই সিরিজের আরো ফোন বাজারে আসবে। ডিস্পলেঃ ফোনটির ডিসপ্লে সাইজ ৬.৫৩ ইঞ্চি। এতে আইপিএস এলসিডি ডিসপ্লে ব্যবহার করা হয়েছে। এই ফোনের ডিসপ্লে প্রটেকশন হিসেবে আছে গরিলা গ্লাস ফাইভ। স্ক্রিন আর ফোনের বডির অনুপাত প্রায় ৮৩.৫%। এই ফোনের ডিসপ্লে ফুলএইচডি মানে ১০৮০পি। এই ডিস্পলের দৈর্ঘ্য ১৯.৫ একক এবং প্রস্থ হল ৯ একক। এত বড় ফোনের কারনে এই ফোনের পিপি আই ডেনসিটি ৩৯৫। যা একটু কম। প্লাটফর্মঃ এই ফোনের অপারেটিং সিস্টেম এন্ড্রয়েড ১০ এবং এর...