এই কন্টেন্টটি মূলত একটি মাইক্রোসার্ভিস (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)

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