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

মাইক্রোসার্ভিসে সার্ভিস ডিসকভারি কেন প্রয়োজন? (Need of Service Discovery)

ইন্ট্রোডাকশন (Introduction): আজকালকার বড় বড় ওয়েবসাইট বা অ্যাপগুলো একটা বড় কোড দিয়ে না বানিয়ে অনেকগুলো ছোট ছোট ভাগে ভাগ করে বানানো হয়, যেগুলোকে আমরা Microservices বলি। কিন্তু সমস্যা হলো, এই ছোট ছোট সার্ভিসগুলো যখন একে অপরের সাথে কথা বলতে চায়, তখন তারা একে অপরকে খুঁজে পাবে কীভাবে? আজকের এই আলোচনায় আমরা শিখব কেন সার্ভিস ডিসকভারি (Service Discovery) দরকার এবং কীভাবে EurekaFeign 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)

মন্তব্যসমূহ

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

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

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

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

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

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

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