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

মাইক্রোসার্ভিস প্রজেক্টে কুয়েশ্চেন সার্ভিস (Question Service) তৈরি করার সহজ গাইড

এই কন্টেন্টটি মূলত একটি মাইক্রোসার্ভিস (Microservices) আর্কিটেকচার তৈরির প্রসেস নিয়ে। এখানে দেখানো হয়েছে কীভাবে একটি বড় প্রজেক্ট (Monolithic) থেকে একটি নির্দিষ্ট অংশকে আলাদা করে একটি স্বাধীন 'কুয়েশ্চেন সার্ভিস' (Question Service) তৈরি করা যায়। আপনি যদি একজন বিগিনার হন এবং বুঝতে চান কীভাবে আলাদা আলাদা সার্ভিস একে অপরের সাথে কাজ করে, তবে এই আলোচনাটি আপনার জন্য।


১. নতুন প্রজেক্ট সেটআপ (Project Setup)

ভিডিও রেফারেন্স: [00:51]

যেকোনো মাইক্রোসার্ভিস তৈরির প্রথম ধাপ হলো একটি আলাদা প্রজেক্ট শুরু করা। এখানে 'Spring Initializr' (start.spring.io) ব্যবহার করে নতুন একটি Maven প্রজেক্ট তৈরি করা হয়েছে।

বিস্তারিত: মাইক্রোসার্ভিস মানেই হলো ছোট ছোট স্বাধীন প্রজেক্ট। তাই আগের প্রজেক্টের ভেতরেই কোড না লিখে একদম নতুনভাবে প্রজেক্টটি সেটআপ করা হয়। এতে জাভা (Java) এবং স্প্রিং বুট (Spring Boot) এর লেটেস্ট ভার্সন ব্যবহার করা হয়েছে।

  • সহজ ব্যাখ্যা (Artifact ID): এটি মূলত আপনার প্রজেক্টের নাম। এখানে নাম দেওয়া হয়েছে question-service যাতে সহজেই বোঝা যায় এই সার্ভিসটি শুধু প্রশ্ন নিয়ে কাজ করবে।

২. প্রয়োজনীয় লাইব্রেরি বা ডিপেন্ডেন্সি (Dependencies)

ভিডিও রেফারেন্স: [01:36]

একটি প্রজেক্টে কী কী ফিচার থাকবে তা নির্ভর করে তার ডিপেন্ডেন্সির ওপর। এই সার্ভিসের জন্য নিচের লাইব্রেরিগুলো নেওয়া হয়েছে:

  • Spring Web: ওয়েবসাইট বা এপিআই (API) বানানোর জন্য।

  • PostgreSQL Driver: ডেটাবেসের সাথে কানেক্ট করার জন্য।

  • Lombok: কোড ছোট রাখার জন্য (যেমন: বারবার Getter/Setter লিখতে হয় না)।

  • Spring Data JPA: ডেটাবেসে তথ্য সেভ করা বা খোঁজার কাজ সহজ করার জন্য।

  • Eureka Client & OpenFeign: এগুলো মাইক্রোসার্ভিসগুলোর মধ্যে যোগাযোগের জন্য লাগে (আপাতত এগুলো বন্ধ বা কমেন্ট করে রাখা হয়েছে)।


৩. কোড কপি এবং অপ্রয়োজনীয় অংশ বাদ দেওয়া (Refactoring)

ভিডিও রেফারেন্স: [05:14]

যেহেতু আগে একটি বড় প্রজেক্ট (Monolithic) ছিল, সেখান থেকে প্রয়োজনীয় কোডগুলো কপি করে নতুন কুয়েশ্চেন সার্ভিসে আনা হয়েছে। কিন্তু এখানে একটি বড় পরিবর্তন আছে।

আমার বিশ্লেষণ: পুরানো প্রজেক্টে 'Quiz' এবং 'Question' একসাথে ছিল। কিন্তু আমরা যেহেতু শুধু 'Question Service' বানাচ্ছি, তাই এখান থেকে কুইজ সংক্রান্ত সব কন্ট্রোলার (Controller) এবং সার্ভিস (Service) ডিলিট করে দেওয়া হয়েছে। এটিই মাইক্রোসার্ভিসের মূল আইডিয়া—একটি সার্ভিস শুধু একটি কাজই করবে।


৪. ডেটাবেস কনফিগারেশন (Database Configuration)

ভিডিও রেফারেন্স: [07:43]

প্রতিটি মাইক্রোসার্ভিসের নিজস্ব ডেটাবেস থাকা উচিত। এখানে application.properties ফাইলে ডেটাবেসের তথ্য দেওয়া হয়েছে।

Properties

spring.datasource.url=jdbc:postgresql://localhost:5432/questiondb
spring.datasource.username=postgres
spring.datasource.password=123
spring.jpa.hibernate.ddl-auto=update 

কোড ব্যাখ্যা: এই কোডটির মাধ্যমে আমাদের প্রজেক্টটি পিনপয়েন্ট করছে যে সে কোন ডেটাবেসের সাথে কথা বলবে। এখানে questiondb নামে একটি আলাদা ডেটাবেস ব্যবহার করা হয়েছে যাতে কুইজ সার্ভিস এর ডেটা এখানে মিশে না যায়।


৫. নতুন রিকোয়েস্ট তৈরি করার পরিকল্পনা (Future Planning)

ভিডিও রেফারেন্স: [10:42]

কুয়েশ্চেন সার্ভিসকে স্বাধীন করতে হলে একে কিছু নতুন ক্ষমতা দিতে হবে। ভিডিওর শেষে তিনটি গুরুত্বপূর্ণ কাজের কথা বলা হয়েছে: ১. Generate Quiz: কুইজ সার্ভিসের হয়ে প্রশ্ন তৈরি করে দেওয়া। ২. Get Questions: কুইজ আইডি অনুযায়ী প্রশ্নের তালিকা পাঠানো। ৩. Get Score: ইউজার কত নম্বর পেয়েছে তা হিসাব করা (কারণ সঠিক উত্তরগুলো এই সার্ভিসের কাছেই আছে)।


কঠিন শব্দের সহজ ব্যাখ্যা (Difficult Words)

  • Monolithic (মনোলিথিক): একটি বিশাল প্রজেক্ট যেখানে সব ফিচার (যেমন: ইউজার, পেমেন্ট, প্রশ্ন) একসাথে এক জায়গায় থাকে।

  • Microservice (মাইক্রোসার্ভিস): বড় প্রজেক্টকে ভেঙে ছোট ছোট স্বাধীন প্রজেক্টে ভাগ করা।

  • Dependency (ডিপেন্ডেন্সি): বাইরের তৈরি করা কিছু টুলস বা কোড যা আপনার কাজকে সহজ করে দেয়।

  • Controller (কন্ট্রোলার): এটি প্রজেক্টের সেই অংশ যা বাইরের রিকোয়েস্ট (যেমন: ব্রাউজার থেকে আসা কমান্ড) গ্রহণ করে।


বিশ্লেষণ ও আমার মতামত

সারসংক্ষেপ: কন্টেন্ট ক্রিয়েটর এখানে মূলত দেখিয়েছেন কীভাবে একটি "বিগ বল অফ মাড" (সবকিছু একসাথে মিশানো প্রজেক্ট) থেকে একটি নিট এন্ড ক্লিন সার্ভিস বের করে আনা যায়।

বাস্তবসম্মত ধারণা ও পরামর্শ: বাস্তব জীবনে যখন কোনো অ্যাপ বড় হয় (যেমন: বিকাশ বা ফেসবুক), তখন সেটিকে মাইক্রোসার্ভিসে ভাগ করা জরুরি হয়ে পড়ে। কারণ যদি "কুইজ" সার্ভিসে কোনো সমস্যা হয়, তবে যেন "কুয়েশ্চেন" সার্ভিসটি ঠিকঠাক চলতে থাকে।

বিকল্প বুদ্ধি: আপনি যদি একদম নতুন শেখেন, তবে শুরুতেই মাইক্রোসার্ভিস না করে মনোলিথিক প্রজেক্ট দিয়ে শুরু করা ভালো। একবার যখন আপনি বুঝবেন কীভাবে ডাটা ফ্লো হয়, তখন এই ভিডিওর মতো করে আলাদা আলাদা সার্ভিস তৈরি করা আপনার জন্য পানির মতো সহজ হয়ে যাবে।

[

Creating a Question Service | Microservice

Telusko · 42K views

](http://www.youtube.com/watch?v=lr1hkNtD2oM)

মন্তব্যসমূহ

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

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

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

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

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

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

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