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

মাইক্রোসার্ভিস ব্যবহার করে কুইজ সার্ভিস তৈরি করার সহজ নিয়ম

ইন্ট্রোডাকশন: আজকের এই আলোচনায় আমরা শিখব কীভাবে একটি Microservice Architecture-এ "Quiz Service" তৈরি করতে হয়। এর আগে আমরা "Question Service" তৈরি করেছিলাম। এখনকার লক্ষ্য হলো এমন একটি সিস্টেম বানানো যেখানে কুইজ সার্ভিসটি সরাসরি ইউজারের সাথে কথা বলবে এবং প্রয়োজনে ইন্টারনাল কাজের জন্য কোয়েশ্চন সার্ভিসের সাহায্য নেবে। সহজ কথায়, আমরা দুটি আলাদা সার্ভিসকে একে অপরের সাথে যোগাযোগ করানো শিখব।


প্রোজেক্ট সেটআপ এবং কনফিগারেশন

এই টপিকের ডিটেইলসে যাওয়ার আগে আপনি চাইলে নিচের ভিডিও রেফারেন্সটি দেখে নিতে পারেন যা এই পুরো প্রসেসটি হাতে-কলমে দেখিয়েছে: ভিডিও রেফারেন্স: Creating a Quiz Service | Microservice [00:00]

বিস্তারিত আলোচনা: একটি নতুন মাইক্রোসার্ভিস শুরু করার জন্য আমাদের প্রথম কাজ হলো একটি নতুন স্প্রিং বুট প্রোজেক্ট তৈরি করা। ভিডিওতে start.spring.io ব্যবহার করে প্রোজেক্ট জেনারেট করা হয়েছে।

প্রয়োজনীয় ডিপেন্ডেন্সি (Dependencies): ১. Spring Web: ওয়েব অ্যাপ্লিকেশন বা API বানানোর জন্য। ২. Spring Data JPA: ডাটাবেসের সাথে সহজে কাজ করার জন্য। ৩. PostgreSQL Driver: ডাটাবেস হিসেবে PostgreSQL ব্যবহার করার জন্য। ৪. Lombok: কোড কম লেখার জন্য (যেমন- Getter/Setter অটো জেনারেট করা)। ৫. OpenFeign ও Eureka Client: অন্য সার্ভিসের সাথে যোগাযোগ করার জন্য।

সহজ ভাষায় ব্যাখ্যা:

  • Dependency (ডিপেন্ডেন্সি): এটি হলো আপনার সফটওয়্যারের জন্য কিছু তৈরি করা সরঞ্জাম বা লাইব্রেরি। যেমন- ঘর বানাতে যেমন ইট-সিমেন্ট লাগে, তেমনি কোডিং করতে এই লাইব্রেরিগুলো লাগে।

ডাটাবেস সেটআপ (PostgreSQL)

কুইজ সার্ভিসের ডাটা নিজের কাছে রাখার জন্য একটি আলাদা ডাটাবেস প্রয়োজন। ভিডিওতে দেখানো হয়েছে কীভাবে PG Admin ব্যবহার করে একটি নতুন ডাটাবেস তৈরি করতে হয় [05:59]।

ধাপগুলো:

  • quizdb নামে একটি নতুন ডাটাবেস তৈরি করা।

  • application.properties ফাইলে ডাটাবেসের কানেকশন ডিটেইলস দেওয়া।

আমার চিন্তা: মাইক্রোসার্ভিসের মূল মন্ত্র হলো "One Database per Service"। অর্থাৎ কোয়েশ্চন সার্ভিসের ডাটাবেস আলাদা থাকবে আর কুইজ সার্ভিসের ডাটাবেস আলাদা। এতে একটি সার্ভিস নষ্ট হলেও অন্যটির ডাটা সুরক্ষিত থাকে।


কোড এবং ফাইল ম্যানেজমেন্ট

যেহেতু আমরা আগে একটি মনোলিথিক (Monolithic) অ্যাপ বানিয়েছিলাম, তাই সেখান থেকে প্রয়োজনীয় কন্ট্রোলার (Controller) এবং সার্ভিস (Service) ফাইলগুলো কপি করে নতুন প্রোজেক্টে আনা হয়েছে [05:00]। তবে কিছু অপ্রয়োজনীয় ফাইল ডিলিট করে দিতে হবে যেমন- QuestionController, কারণ সেটি কোয়েশ্চন সার্ভিসের অংশ।

কোডিং স্নsnippet (application.properties):

Properties

spring.datasource.url=jdbc:postgresql://localhost:5432/quizdb
spring.datasource.username=postgres
spring.datasource.password=your_password
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true 

ব্যাখ্যা: এই কোডটুকু আপনার অ্যাপ্লিকেশনকে বলে দিচ্ছে যে তাকে কোথায় ডাটা জমা রাখতে হবে এবং ডাটাবেসের পাসওয়ার্ড কী।


সার্ভিস এবং কন্ট্রোলার ডিজাইন

কুইজ সার্ভিসে মূলত তিনটি প্রধান কাজ বা API থাকবে: ১. Create Quiz: নতুন একটি কুইজ তৈরি করা। ২. Get Quiz: আইডি দিয়ে কুইজের প্রশ্নগুলো দেখা। ৩. Get Score: ইউজার উত্তর জমা দিলে তার রেজাল্ট বা স্কোর বের করা।

কঠিন শব্দের সহজ অর্থ:

  • Microservice (মাইক্রোসার্ভিস): পুরো একটা বড় সফটওয়্যারকে ছোট ছোট অনেকগুলো টুকরো বা সার্ভিসে ভাগ করা। যেমন- একটা রেস্টুরেন্টে রান্নার জন্য আলাদা লোক, খাবার দেওয়ার জন্য আলাদা লোক।

  • API (এপিআই): এটি একটি মাধ্যম যার মাধ্যমে সফটওয়্যারের এক অংশ অন্য অংশের সাথে কথা বলে।


বিশ্লেষণ এবং আমার ভাবনা

মূল উদ্দেশ্য: কন্টেন্ট ক্রিয়েটর এখানে বোঝাতে চেয়েছেন যে, একটি প্রফেশনাল লেভেলের অ্যাপ্লিকেশন কখনো একটি বড় ব্লকের মতো হয় না। সেটিকে ছোট ছোট ভাগে (Microservices) ভাগ করা হয় যাতে মেনটেইন করা সহজ হয়।

বাস্তবতা এবং সম্ভাবনা: বাস্তবে যখন আমরা কুইজ অ্যাপ বানাই, তখন কুইজ সার্ভিসকে জানতে হয় কোন প্রশ্নগুলো কোয়েশ্চন সার্ভিসে আছে। এখানে RestTemplate বা Feign Client এর ব্যবহার অত্যন্ত গুরুত্বপূর্ণ। ভিডিওর শেষে ইঙ্গিত দেওয়া হয়েছে যে পরবর্তী ধাপে এই দুটি সার্ভিসের মধ্যে সরাসরি যোগাযোগ স্থাপন করা হবে [08:41]।

পরামর্শ: আপনি যদি বিগিনার হন, তবে প্রথমে ডাটাবেস কানেকশন এবং প্রপার্টিজ ফাইলগুলো ঠিকমতো সেটআপ হয়েছে কিনা তা নিশ্চিত করুন। প্রোজেক্ট রান করার সময় যদি ডাটাবেস এরর দেখায়, তবে বুঝতে হবে আপনার ইউজারনেম বা পাসওয়ার্ডে ভুল আছে।

বিকল্প হিসেবে আপনি চাইলে H2 Database ব্যবহার করতে পারেন যদি পিসিতে PostgreSQL ইনস্টল করতে সমস্যা হয়। এটি মেমোরিতে চলে এবং আলাদা কোনো সেটআপ লাগে না।

[

Creating a Quiz Service | Microservice

Telusko · 26K views

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

মন্তব্যসমূহ

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

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

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

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

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

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

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