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

পোস্টগুলি

[Master Post] Microservice Tutorial using Java

URL: https://www.youtube.com/playlist?list=PLsyeobzWxl7rRyGcqgZ3MP5pWGPwUvprI Title: Microservice Tutorial using Java Topics:- মাইক্রোসার্ভিসেস কী এবং এটি কেন ব্যবহার করা হয়? ক্লাউড কম্পিউটিং: সহজ ভাষায় এ টু জেড গাইড ব্লু গ্রিন ডেপ্লয়মেন্ট: নিরবচ্ছিন্নভাবে সফটওয়্যার আপডেট করার আধুনিক পদ্ধতি Cloud Native বনাম Cloud Ready: ১২ ফ্যাক্টর অ্যাপের সহজ গাইড স্প্রিং বুট ব্যবহার করে কুইজ অ্যাপ তৈরি (পার্ট ১) Spring Boot ব্যবহার করে একটি কুইজ অ্যাপ তৈরি (পার্ট ২) স্প্রিং বুট ব্যবহার করে কুইজ অ্যাপ তৈরি: পার্ট ৩ (মাইক্রোসার্ভিসেস) স্প্রিং বুট কুইজ অ্যাপ: রেসপন্স এনটিটি এবং এক্সেপশন হ্যান্ডলিং স্প্রিং বুট ব্যবহার করে কুইজ অ্যাপ তৈরি: মাইক্রোসার্ভিস টিউটোরিয়াল স্প্রিং বুট ব্যবহার করে কুইজ অ্যাপ তৈরি (মাইক্রোসার্ভিস পার্ট ৬) স্প্রিং বুট মাইক্রোসার্ভিস দিয়ে কুইজ অ্যাপে ডেটা ফেচ করা স্প্রিং বুট ব্যবহার করে কুইজ অ্যাপের রেজাল্ট ক্যালকুলেশন মাইক্রোসার্ভিস আর্কিটেকচার: মনোলিথিক থেকে আধুনিক পদ্ধতিতে রূপান্তর মাইক্রোসার্ভিস প্রজেক্টে কুয়েশ্চেন সার্ভিস (Questio...

স্প্রিং বুট ব্যবহার করে কুইজ অ্যাপ তৈরি: পার্ট ৩ (মাইক্রোসার্ভিসেস)

ভূমিকা (Introduction) এই ভিডিওতে আমরা একটি কুইজ অ্যাপ্লিকেশন তৈরির পরবর্তী ধাপগুলো শিখব। মূলত এখানে দেখানো হয়েছে কীভাবে ডাটাবেস থেকে নির্দিষ্ট ক্যাটাগরি (যেমন: Java, Python) অনুযায়ী প্রশ্ন খুঁজে বের করা যায় এবং কীভাবে নতুন প্রশ্ন সিস্টেমে যোগ (Add) করা যায়। এটি একটি Microservices Tutorial সিরিজের অংশ, যেখানে Spring Boot এবং Spring Data JPA ব্যবহার করে ব্যাকএন্ডের কাজগুলো সহজ করা হয়েছে। পার্ট ১: ক্যাটাগরি অনুযায়ী প্রশ্ন খোঁজা (Fetching Questions by Category) আগের পর্বে আমরা সব প্রশ্ন একসাথে আনা শিখেছিলাম। কিন্তু বাস্তবে আমাদের হয়তো শুধু 'Java' বা 'Python'-এর প্রশ্ন দরকার হতে পারে। রেফারেন্স: ভিডিওর শুরু থেকে ০৫:৫০ পর্যন্ত দেখুন বিস্তারিত আলোচনা: ১. Controller-এ পরিবর্তন: আমরা একটি নতুন মেথড তৈরি করি যা ইউজার থেকে একটি 'Category' ইনপুট নেবে। ২. Path Variable: ব্রাউজারের লিঙ্কে (URL) যখন আমরা কোনো মান পাঠাই (যেমন: /question/category/java ), তখন সেই 'java' শব্দটিকে কোডে ধরার জন্য @PathVariable অ্যানোটেশন ব্যবহার করা হয়। ৩. JPA Magic: মজার ব্যা...

মাইক্রোসার্ভিস আর্কিটেকচারে API Gateway এর সহজ ব্যবহার

Introduction আজকের এই আলোচনায় আমরা শিখব মাইক্রোসার্ভিস (Microservices) প্রজেক্টে API Gateway কেন এবং কীভাবে ব্যবহার করতে হয়। ধরুন আপনার অনেকগুলো ছোট ছোট সার্ভিস আছে (যেমন: কুইজ সার্ভিস, কোশ্চেন সার্ভিস), এখন ইউজার যদি আলাদা আলাদা পোর্টের মাধ্যমে এই সার্ভিসগুলোতে এক্সেস করতে চায়, তবে সেটা খুব ঝামেলার কাজ। এই ঝামেলা দূর করতেই আসে API Gateway। এটি পুরো সিস্টেমের একটি 'মেইন গেট' বা প্রবেশদ্বার হিসেবে কাজ করে। [ 00:31 ] কেন আমাদের API Gateway প্রয়োজন? ইউজার যখন আপনার অ্যাপ্লিকেশন ব্যবহার করে, সে চায় একটি মাত্র লিঙ্কের মাধ্যমে সব কাজ করতে। কিন্তু মাইক্রোসার্ভিসে প্রতিটি সার্ভিসের আলাদা নাম ও পোর্ট (যেমন: 8080, 8090) থাকে। এছাড়া ইউজারকে বারবার প্রতিটি সার্ভিসে লগইন (Authentication) করতে বলাটা বিরক্তিকর। সহজ ভাষায়: API Gateway হলো এমন একটি জায়গা যেখানে ইউজার একবার নক করবে, আর গেটওয়ে ঠিক করে দেবে ইউজারকে কোন সার্ভিসে পাঠাতে হবে। এটি সিকিউরিটি এবং লগ মেইনটেইন করার কাজও সহজ করে দেয়। [ 01:22 ] কঠিন শব্দের ব্যাখ্যা: Authentication (অথেন্টিকেশন): ব্যবহারকারীর পরিচয় যাচাই করা (যে...

মাইক্রোসার্ভিসে লোড ব্যালেন্সিং এর সহজ পাঠ

Introduction হ্যালো! আজ আমরা জানবো মাইক্রোসার্ভিস আর্কিটেকচারে "লোড ব্যালেন্সিং" (Load Balancing) কী এবং এটি কীভাবে কাজ করে। সহজ কথায় বলতে গেলে, যখন কোনো ওয়েবসাইটে বা অ্যাপে অনেক বেশি মানুষ একসাথে ঢুকে পড়ে, তখন সেই চাপ সামলানোর জন্য আমরা অনেকগুলো সার্ভার ব্যবহার করি। এই চাপের ভাগাভাগিটাকেই বলা হয় লোড ব্যালেন্সিং। ভিডিওটিতে দেখানো হয়েছে কীভাবে স্প্রিং বুট (Spring Boot) ব্যবহার করে আমরা খুব সহজেই এটি সেটআপ করতে পারি। ১. লোড ব্যালেন্সিং কী? প্রথমে আমরা মূল ধারণাটি বুঝে নিই। নিচের ভিডিও রেফারেন্সটি এই আলোচনার ভিত্তি: ভিডিও রেফারেন্স: Load Balancing in Microservices [ 00:00 ] বিস্তারিত আলোচনা: কল্পনা করুন একটি জনপ্রিয় বিরিয়ানির দোকান। সেখানে যদি একজন মাত্র লোক অর্ডার নেয়, তবে অনেক ভিড় জমে যাবে। কিন্তু যদি সেখানে তিনজন লোক অর্ডার নেয়, তবে কাস্টমাররা ভাগ হয়ে যাবে এবং কাজ দ্রুত হবে। একেই বলে Horizontal Scaling (সার্ভারের সংখ্যা বাড়ানো)। আমার চিন্তা: লোড ব্যালেন্সার হলো একজন ট্রাফিক পুলিশের মতো, যে ঠিক করে দেয় কোন রিকোয়েস্ট কোন সার্ভারে যাবে যাতে কোনো একটি সার্ভারের ওপর ...

মাইক্রোসার্ভিস প্রজেক্টের কুইজ এবং কোশ্চেন সার্ভিস সম্পন্ন করা

ইন্ট্রোডাকশন: এই ভিডিওতে দেখানো হয়েছে কীভাবে একটি মাইক্রোসার্ভিস আর্কিটেকচারে কুইজ সার্ভিস (Quiz Service) এবং কোশ্চেন সার্ভিস (Question Service) একে অপরের সাথে যোগাযোগ করে একটি পূর্ণাঙ্গ সিস্টেম তৈরি করে। আমরা এখানে মূলত দুটি গুরুত্বপূর্ণ কাজ সম্পন্ন করব: কুইজের প্রশ্নগুলো নিয়ে আসা এবং কুইজ শেষে প্রাপ্ত নম্বর (Score) গণনা করা। ১. কুইজের প্রশ্নগুলো খুঁজে বের করা (Get Quiz Questions) ভিডিও রেফারেন্স: [ 01:00 ] আমরা যখন কোনো কুইজ খেলতে চাই, তখন আমাদের কাছে শুধু কুইজের আইডি থাকে। কিন্তু সেই কুইজের ভেতরে কী কী প্রশ্ন আছে, সেটা থাকে 'কোশ্চেন সার্ভিস'-এর কাছে। এখানে কুইজ সার্ভিস একটি ইন্টারফেসের মাধ্যমে কোশ্চেন সার্ভিসকে অনুরোধ পাঠায়। সহজ ব্যাখ্যা: মনে করুন, আপনি একটা রেস্টুরেন্টে গিয়ে মেনু কার্ড চাইলেন। ওয়েটার (Quiz Service) নিজে রান্না জানে না, সে রান্নাঘর থেকে (Question Service) মেনু বা খাবার নিয়ে এসে আপনাকে দেয়। এখানেও কুইজ সার্ভিস শুধু আইডিগুলো পাঠায় আর কোশ্চেন সার্ভিস আসল প্রশ্নগুলো ফেরত দেয়। সহজ করে বোঝা (Difficult Words): Wrapper (র‍্যাপার): এটি একটি বিশেষ বক্সের মত...

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

Introduction আজকের এই আলোচনায় আমরা শিখব কীভাবে একটি Microservice অন্য একটি Microservice -এর সাথে যোগাযোগ করে। সহজ কথায়, একটা সফটওয়্যারের ছোট অংশ যখন অন্য একটা অংশের সাহায্য চায়, তখন তারা নিজেদের মধ্যে কীভাবে কথা বলে, সেটাই এখানে দেখানো হয়েছে। আমরা এখানে 'Quiz Service' এবং 'Question Service'-এর মধ্যে সংযোগ স্থাপন এবং সেটি পরীক্ষা করার বাস্তব উদাহরণ দেখব। ১. প্রজেক্ট সেটআপ এবং টেস্টিং (Postman-এর মাধ্যমে) প্রথমে আমাদের দেখতে হবে প্রজেক্টটি ঠিকমতো চলছে কি না। এর জন্য আমরা Postman ব্যবহার করি, যা দিয়ে এপিআই (API) টেস্ট করা হয়। রেফারেন্স: [ 00:15 ] বিস্তারিত ব্যাখ্যা: এখানে কুইজ তৈরি করার জন্য একটি রিকোয়েস্ট পাঠানো হচ্ছে। মাইক্রোসার্ভিসে প্রতিটি সার্ভিসের জন্য আলাদা পোর্ট (Port) থাকে। এই প্রজেক্টে কুইজ সার্ভিসটি 8090 পোর্টে চলছে। সহজ ব্যাখ্যা: মনে করুন, আপনি একটি রেস্টুরেন্টে গিয়ে খাবার অর্ডার করছেন। আপনার টেবিল নম্বর হলো পোর্ট, আর মেনু কার্ড হলো ইউআরএল (URL)। কঠিন শব্দ: Postman (পোস্টম্যান) - এটি একটি টুল যা দিয়ে চেক করা যায় যে আপনার তৈরি করা কোড বা এপি...

মাইক্রোসার্ভিসে ফেং (Feign) ক্লায়েন্ট ব্যবহার করে সহজে যোগাযোগ

হ্যালো! আজকের এই আলোচনায় আমরা শিখবো কীভাবে মাইক্রোসার্ভিস আর্কিটেকচারে দুই বা ততোধিক সার্ভিসের মধ্যে খুব সহজে যোগাযোগ করা যায়। সাধারণত মাইক্রোসার্ভিসে এক সার্ভিস থেকে অন্য সার্ভিসকে কল করার জন্য আমরা RestTemplate ব্যবহার করি, কিন্তু সেটি বেশ জটিল হতে পারে। এই ভিডিওতে দেখানো হয়েছে কীভাবে Feign Client ব্যবহার করে কোড না লিখে বা আইপি-পোর্ট নিয়ে চিন্তা না করেই অন্য সার্ভিসের মেথড ব্যবহার করা যায়। মাইক্রোসার্ভিস কমিউনিকেশন এবং ফেং (Feign) এর ভূমিকা ভিডিও রেফারেন্স: [ 00:40 ] যখন একটি মাইক্রোসার্ভিস (যেমন: Quiz Service) অন্য একটি মাইক্রোসার্ভিসের (যেমন: Question Service) ডেটা চায়, তখন তাদের মধ্যে একটি যোগাযোগের মাধ্যম লাগে। সহজ ব্যাখ্যা: মনে করো তুমি একটি রেস্টুরেন্টে গিয়েছো। তুমি (Quiz Service) খাবার অর্ডার দিতে চাও। এখন খাবারটি বানাবে শেফ (Question Service)। তোমার আর শেফ-এর মাঝে যে ওয়েটার কাজ করে, সেই হলো Feign । তোমাকে রান্নাঘরে গিয়ে শেফকে খুঁজতে হবে না, শুধু ওয়েটারকে বললেই সে শেফ-এর কাছ থেকে খাবার এনে দেবে। কঠিন শব্দের সহজ অর্থ: Feign Client: এটি একটি ডিক্লারেটিভ (Declarat...

মাইক্রোসার্ভিস আর্কিটেকচারে সার্ভিস রেজিস্ট্রি (Eureka Server) তৈরি

ইন্ট্রোডাকশন: আজকালকার সফটওয়্যার ডেভেলপমেন্টে যখন অনেকগুলো ছোট ছোট সার্ভিস বা মাইক্রোসার্ভিস একসাথে কাজ করে, তখন তারা একে অপরকে চিনবে কীভাবে? এই সমস্যা সমাধানের জন্যই প্রয়োজন একটি 'সার্ভিস রেজিস্ট্রি'। সহজ কথায়, এটি একটি ফোনের কন্টাক্ট লিস্টের মতো, যেখানে সব সার্ভিসের নাম এবং ঠিকানা (IP address ও Port) জমা থাকে। আজকের আলোচনায় আমরা শিখব কীভাবে Netflix Eureka Server ব্যবহার করে একটি সার্ভিস রেজিস্ট্রি তৈরি করতে হয় এবং কীভাবে অন্যান্য সার্ভিসগুলো এর সাথে যুক্ত হয়। ১. সার্ভিস রেজিস্ট্রি কী এবং কেন প্রয়োজন? রেফারেন্স: [ 00:00 ] যখন আপনার সিস্টেমে ১০-২০টি বা তার বেশি মাইক্রোসার্ভিস থাকে, তখন একটি সার্ভিস অন্যটির সাথে কানেক্ট করতে চাইলে তার নির্দিষ্ট ঠিকানা জানা কঠিন হয়ে পড়ে। এখানেই আসে Service Discovery বা সার্ভিস রেজিস্ট্রির ধারণা। সার্ভিস ডিসকভারি: এটি একটি কেন্দ্রীয় সার্ভার যেখানে সব মাইক্রোসার্ভিস নিজে থেকে এসে নাম লিখিয়ে (Register) যায়। ইউরেকা সার্ভার (Eureka Server): এটি নেটফ্লিক্সের তৈরি একটি ওপেন সোর্স টুল যা মাইক্রোসার্ভিস ম্যানেজ করতে সাহায্য করে। সহজ কথায় ব...

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

ইন্ট্রোডাকশন (Introduction): আজকালকার বড় বড় ওয়েবসাইট বা অ্যাপগুলো একটা বড় কোড দিয়ে না বানিয়ে অনেকগুলো ছোট ছোট ভাগে ভাগ করে বানানো হয়, যেগুলোকে আমরা Microservices বলি। কিন্তু সমস্যা হলো, এই ছোট ছোট সার্ভিসগুলো যখন একে অপরের সাথে কথা বলতে চায়, তখন তারা একে অপরকে খুঁজে পাবে কীভাবে? আজকের এই আলোচনায় আমরা শিখব কেন সার্ভিস ডিসকভারি (Service Discovery) দরকার এবং কীভাবে Eureka ও Feign Client আমাদের এই কাজে সাহায্য করে। ১. কুইজ সার্ভিস ফিক্স করা (Fixing the Quiz Service) ভিডিও রেফারেন্স: [ 00:00 ] শুরুতেই আমাদের অ্যাপ্লিকেশনের কুইজ সার্ভিস (Quiz Service) নিয়ে কাজ করতে হবে। যেহেতু আমরা আগের প্রজেক্ট থেকে কোড কপি করেছি, তাই অনেক অপ্রয়োজনীয় ইমপোর্ট (Imports) এবং এরর (Errors) থাকতে পারে। বিবরণ: আমাদের কুইজ সার্ভিসে এখন আর সরাসরি ডাটাবেস থেকে প্রশ্ন নেওয়ার সুযোগ নেই, কারণ প্রশ্নের জন্য আলাদা একটি Question Service আছে। তাই কোড থেকে সরাসরি ডাটাবেস কলগুলো সরিয়ে ফেলতে হবে। সহজ ব্যাখ্যা (DTO): এখানে DTO (Data Transfer Object) ব্যবহার করা হয়েছে। DTO কি? মনে করো তুমি বাজার থেকে অনেকগুলো...

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

ইন্ট্রোডাকশন: আজকের এই আলোচনায় আমরা শিখব কীভাবে একটি 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: ডাটাব...

মাইক্রোসার্ভিস আর্কিটেকচারে কোয়েশ্চেন সার্ভিস রান এবং টেস্টিং

পরিচিতি (Introduction) এই কন্টেন্টে মূলত দেখানো হয়েছে কিভাবে একটি Microservice (বিশেষ করে 'Question Service') লোকাল মেশিনে রান করতে হয় এবং সেটি ঠিকঠাক কাজ করছে কি না তা Postman এবং Browser দিয়ে টেস্ট করতে হয়। মাইক্রোসার্ভিসের একটি বড় সুবিধা হলো স্কেলেবিলিটি (Scalability), অর্থাৎ প্রয়োজনে একই সার্ভিসের একাধিক কপি বা Instance চালানো। এখানে আমরা শিখব কিভাবে একই প্রজেক্টকে আলাদা আলাদা পোর্টে (যেমন: 8080 এবং 8081) একই সাথে রান করা যায়। টপিক ১: সার্ভিস রান করা এবং বেসিক টেস্টিং (Running and Basic Testing) ভিডিওর শুরুতে আগের তৈরি করা কোডগুলোকে রান করে দেখা হয়েছে। ডিফল্টভাবে স্প্রিং বুট (Spring Boot) প্রজেক্ট ৮০৮০ (8080) পোর্টে চলে। রেফারেন্স: [ 01:14 ] বিস্তারিত আলোচনা: যেকোনো ওয়েব সার্ভিস তৈরি করার পর সেটি চেক করতে হয় যে ডাটা ঠিকমতো আসছে কি না। ব্রাউজারে localhost:8080/question/allQuestions লিখলে যদি সব প্রশ্ন দেখা যায়, তবে বুঝতে হবে সার্ভিসটি সচল। তবে প্রফেশনাল টেস্টিংয়ের জন্য Postman ব্যবহার করা ভালো। Instance (ইন্সট্যান্স): সহজ কথায়, একটি সফটওয়্যারের একটি রানিং ক...

মাইক্রোসার্ভিস প্রজেক্টে কুয়িজ সার্ভিস তৈরি (পার্ট ২)

ইন্ট্রোডাকশন (Introduction): আজকের এই ব্লগে আমরা শিখবো কীভাবে একটি মাইক্রোসার্ভিস আর্কিটেকচারে 'Question Service' তৈরি করতে হয়। এটি মূলত একটি কুইজ অ্যাপ্লিকেশনের অংশ যেখানে আমরা দেখবো কীভাবে কুয়িজের জন্য প্রশ্ন জেনারেট করা হয়, আইডি দিয়ে প্রশ্ন খুঁজে বের করা হয় এবং ব্যবহারকারীর উত্তরের ভিত্তিতে স্কোর গণনা করা হয়। সহজ কথায়, এটি আপনার অ্যাপের সেই অংশ যা সব প্রশ্নের হিসাব-নিকাশ রাখবে। পার্ট ১: কুইজ জেনারেট করা (Generating Quiz Questions) রেফারেন্স: [ 00:40 ] - [ 05:18 ] এখানে আমাদের মূল লক্ষ্য হলো যখন কুইজ সার্ভিস বলবে "আমার ৫টি জাভা প্রশ্ন লাগবে", তখন এই সার্ভিসটি ডেটাবেস থেকে ৫টি র‍্যান্ডম প্রশ্নের আইডি খুঁজে বের করে দিবে। আমার চিন্তা ও বিশ্লেষণ: আগে আমরা পুরো প্রশ্নের অবজেক্ট পাঠাতাম, কিন্তু মাইক্রোসার্ভিসে ডেটা আদান-প্রদান কমানোর জন্য আমরা শুধু প্রশ্নের ID পাঠাচ্ছি। এতে নেটওয়ার্কের ওপর চাপ কম পড়ে। কোড উদাহরণ: Java @GetMapping("generate") public ResponseEntity<List<Integer>> getQuestionsForQuiz( @RequestParam String categoryN...

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

এই কন্টেন্টটি মূলত একটি মাইক্রোসার্ভিস (Microservices) আর্কিটেকচার তৈরির প্রসেস নিয়ে। এখানে দেখানো হয়েছে কীভাবে একটি বড় প্রজেক্ট (Monolithic) থেকে একটি নির্দিষ্ট অংশকে আলাদা করে একটি স্বাধীন 'কুয়েশ্চেন সার্ভিস' (Question Service) তৈরি করা যায়। আপনি যদি একজন বিগিনার হন এবং বুঝতে চান কীভাবে আলাদা আলাদা সার্ভিস একে অপরের সাথে কাজ করে, তবে এই আলোচনাটি আপনার জন্য। ১. নতুন প্রজেক্ট সেটআপ (Project Setup) ভিডিও রেফারেন্স: [ 00:51 ] যেকোনো মাইক্রোসার্ভিস তৈরির প্রথম ধাপ হলো একটি আলাদা প্রজেক্ট শুরু করা। এখানে 'Spring Initializr' (start.spring.io) ব্যবহার করে নতুন একটি Maven প্রজেক্ট তৈরি করা হয়েছে। বিস্তারিত: মাইক্রোসার্ভিস মানেই হলো ছোট ছোট স্বাধীন প্রজেক্ট। তাই আগের প্রজেক্টের ভেতরেই কোড না লিখে একদম নতুনভাবে প্রজেক্টটি সেটআপ করা হয়। এতে জাভা (Java) এবং স্প্রিং বুট (Spring Boot) এর লেটেস্ট ভার্সন ব্যবহার করা হয়েছে। সহজ ব্যাখ্যা (Artifact ID): এটি মূলত আপনার প্রজেক্টের নাম। এখানে নাম দেওয়া হয়েছে question-service যাতে সহজেই বোঝা যায় এই সার্ভিসটি শুধু প্রশ্ন নিয়ে কাজ ক...

মাইক্রোসার্ভিস আর্কিটেকচার: মনোলিথিক থেকে আধুনিক পদ্ধতিতে রূপান্তর

Introduction এই ভিডিওটিতে মূলত একটি প্রোজেক্টকে কীভাবে Monolithic (মনোলিথিক) থেকে Microservices (মাইক্রোসার্ভিস) আর্কিটেকচারে নিয়ে যাওয়া যায়, তার একটি প্রাথমিক ধারণা দেওয়া হয়েছে। আমরা শিখব কেন বড় বড় কোম্পানিগুলো তাদের বড় অ্যাপ্লিকেশনগুলোকে ছোট ছোট ভাগে ভাগ করে ফেলে এবং এই ছোট ভাগগুলো একে অপরের সাথে কীভাবে কথা বলে। সহজ কথায়, এটি একটি বিশাল সফটওয়্যারকে অনেকগুলো স্বাধীন ছোট সফটওয়্যারে রূপান্তর করার গল্প। ১. মনোলিথিক বনাম মাইক্রোসার্ভিস (Monolithic vs Microservices) ভিডিও রেফারেন্স: [ 00:00 ] - [ 01:54 ] এখানে লেখক একটি Quiz Application -এর উদাহরণ দিয়েছেন। যখন একটি অ্যাপ্লিকেশনের সব কোড, যেমন—প্রশ্ন তৈরি করা, কুইজ নেওয়া, ইউজার ম্যানেজমেন্ট এবং পেমেন্ট—সবকিছু একটা বড় প্যাকেজের ভেতর থাকে, তখন তাকে Monolithic Application বলে। আমার চিন্তাভাবনা: ভাবুন একটি বড় রেস্টুরেন্টের কথা। যেখানে একজনই রাঁধুনী, সেই আবার অর্ডার নেয়, সেই আবার টেবিল পরিষ্কার করে। যদি অনেক কাস্টমার চলে আসে, তবে ওই একজন লোক হিমশিম খাবে। এটা হলো মনোলিথিক। আর মাইক্রোসার্ভিস হলো এমন যেখানে রান্নার জন্য আলাদা লোক, অর্ডার...

স্প্রিং বুট ব্যবহার করে কুইজ অ্যাপের রেজাল্ট ক্যালকুলেশন

কুইজ অ্যাপ্লিকেশন তৈরির এই পর্যায়ে আমরা শিখব কীভাবে একজন ইউজার বা ক্লায়েন্ট যখন তার উত্তরগুলো সাবমিট (Submit) করবে, তখন সার্ভার সাইডে সেই উত্তরগুলো যাচাই করে স্কোর বা ফলাফল বের করতে হয়। এটি একটি কুইজ সিস্টেমের অন্যতম গুরুত্বপূর্ণ অংশ। প্রজেক্ট রেফারেন্স এই টিউটোরিয়ালটি Telusko চ্যানেলের "Quiz App Using Spring Boot #8 | Microservices Tutorial" ভিডিওর ওপর ভিত্তি করে তৈরি। ভিডিও লিঙ্ক ১. ইউজার রেসপন্স এবং ডেটা ফরম্যাট (User Response & Data Format) প্রথমে আমাদের বুঝতে হবে ক্লায়েন্ট (যেমন: মোবাইল অ্যাপ বা ওয়েবসাইট) সার্ভারে কী পাঠাবে। ক্লায়েন্ট সাধারণত প্রতিটি প্রশ্নের ID এবং ইউজারের দেওয়া উত্তর (Response) পাঠায়। সহজ ব্যাখ্যা: Client: যে অ্যাপ ব্যবহার করছে। JSON: এটি ডেটা আদান-প্রদান করার একটি সহজ ফরম্যাট। যেমন: { "id": 18, "response": "Java" } । ২. রেসপন্স মডেল তৈরি (Creating Response Model) ইউজারের পাঠানো ডেটা গ্রহণ করার জন্য জাভাতে একটি ক্লাস তৈরি করতে হবে। একে আমরা বলছি Response ক্লাস। কোড স্নপেট: Java @Data @RequiredA...

স্প্রিং বুট মাইক্রোসার্ভিস দিয়ে কুইজ অ্যাপে ডেটা ফেচ করা

Introduction এই কন্টেন্টটি মূলত একটি Quiz Application তৈরির সিরিজ টিউটোরিয়ালের অংশ। এখানে শেখানো হয়েছে কীভাবে ডেটাবেস থেকে একটি নির্দিষ্ট কুইজের প্রশ্নগুলো খুঁজে বের করে (fetch) ব্যবহারকারীর সামনে উপস্থাপন করা যায়। বিশেষ করে সিকিউরিটি বা নিরাপত্তার কথা মাথায় রেখে, কীভাবে সঠিক উত্তর (Right Answer) লুকিয়ে রেখে শুধু প্রশ্ন এবং অপশনগুলো ইউজারকে পাঠানো হয়, তা এখানে বিস্তারিত দেখানো হয়েছে। কুইজ ডেটা ফেচ করার প্রক্রিয়া (Fetching Quiz Data) আগের পর্বে কুইজ তৈরি করা হয়েছিল, এবার সেই কুইজটিকে আইডি (ID) দিয়ে খুঁজে বের করার পালা। রেফারেন্স: [ 00:00 ] বিস্তারিত আলোচনা: যখন আমরা একটি কুইজ তৈরি করি, তখন সেটি ডেটাবেসের quiz এবং quiz_questions টেবিলে জমা হয়। এখন একজন ইউজার যখন কোনো কুইজে অংশ নিতে চাইবে, তখন আমাদের এমন একটি সিস্টেম দরকার যা ওই কুইজের আইডি অনুযায়ী সব প্রশ্ন তুলে আনবে। সহজ ভাষায় ব্যাখ্যা: মনে করুন, একটি লাইব্রেরিতে অনেকগুলো বইয়ের তাক আছে। প্রতিটি তাকের একটি নম্বর (ID) আছে। আপনি যখন লাইব্রেরিয়ানকে বলবেন "আমাকে ২ নম্বর তাকের বইগুলো দাও", তখন তিনি আপনাকে শুধু ওই তাকের...

স্প্রিং বুট ব্যবহার করে কুইজ অ্যাপ তৈরি (মাইক্রোসার্ভিস পার্ট ৬)

ভূমিকা এই ভিডিওটিতে আমরা শিখব কীভাবে স্প্রিং বুট (Spring Boot) ব্যবহার করে একটি কুইজ অ্যাপ্লিকেশনের জন্য Quiz Service তৈরি করা যায়। আগের পর্বগুলোতে আমরা প্রশ্ন (Questions) নিয়ে কাজ করেছি, আর এই পর্বে আমরা সেই প্রশ্নগুলোকে একত্রিত করে একটি নির্দিষ্ট বিষয়ের ওপর কুইজ তৈরি করার লজিক দেখব। মূলত ডেটাবেসে কীভাবে কুইজ এবং প্রশ্নের মধ্যে সম্পর্ক তৈরি করা হয় এবং কুইজ সেভ করা হয়, সেটিই এখানে মূল আলোচনার বিষয়। কুইজ সার্ভিস এবং ডেটা মডেল তৈরি (Quiz Service & Model) এই অংশে কুইজের জন্য প্রয়োজনীয় ক্লাস এবং সার্ভিস তৈরি করা হয়েছে। রেফারেন্স: [ 00:22 ] বিস্তারিত আলোচনা: একটি কুইজ তৈরি করতে হলে আমাদের একটি Quiz ক্লাস দরকার। এই ক্লাসে মূলত তিনটি জিনিস থাকে: ID: কুইজের একটি ইউনিক নম্বর (Primary Key)। Title: কুইজের নাম (যেমন: Java Quiz 1)। Questions: ওই কুইজের আন্ডারে থাকা প্রশ্নগুলোর একটি তালিকা। সহজ ব্যাখ্যা: * Entity (এনটিটি): জাভাতে যখন আমরা কোনো ক্লাসকে ডেটাবেস টেবিলের সাথে যুক্ত করি, তখন তাকে এনটিটি বলে। Lombok (লম্বক): এটি একটি লাইব্রেরি যা কোডে বারবার Getter এবং Se...

স্প্রিং বুট ব্যবহার করে কুইজ অ্যাপ তৈরি: মাইক্রোসার্ভিস টিউটোরিয়াল

স্প্রিং বুট (Spring Boot) ব্যবহার করে কীভাবে একটি কুইজ অ্যাপ্লিকেশন তৈরি করা যায়, এই ভিডিওটি মূলত সেই সিরিজের একটি অংশ। এখানে শেখানো হয়েছে কীভাবে একটি কুইজ তৈরির জন্য ব্যাকএন্ডে কন্ট্রোলার এবং সার্ভিস লেয়ার সেটআপ করতে হয়। বিশেষ করে মাইক্রোসার্ভিস আর্কিটেকচারের ধারণা ব্যবহার করে কীভাবে ডাটাবেস থেকে নির্দিষ্ট ক্যাটাগরির প্রশ্ন নিয়ে একটি কুইজ সাজানো যায়, তা এখানে বিস্তারিত দেখানো হয়েছে। কুইজ অ্যাপ্লিকেশনের আইডিয়া (Introduction) ভিডিওর শুরুতে কুইজ অ্যাপের মূল কনসেপ্ট নিয়ে আলোচনা করা হয়েছে। এখানে মূলত দুটি রোল বা ভূমিকা থাকে: ১. অ্যাডমিন (Admin): যিনি কুইজ তৈরি করবেন। যেমন একজন ট্রেইনার সেশন শেষে পরীক্ষা নেওয়ার জন্য কুইজ সেট করতে পারেন। ২. ইউজার (User): যারা সেই কুইজে অংশগ্রহণ করবেন এবং প্রশ্নগুলোর উত্তর দেবেন। আমাদের মূল লক্ষ্য হলো ডাটাবেসে থাকা অনেকগুলো প্রশ্ন থেকে নির্দিষ্ট কিছু প্রশ্ন (যেমন: জাভা ক্যাটাগরির ৫টি প্রশ্ন) র‍্যান্ডমলি বা লটারির মতো বেছে নিয়ে একটি কুইজ তৈরি করা। কুইজ কন্ট্রোলার তৈরি করা (Quiz Controller Setup) যেকোনো ওয়েব অ্যাপ্লিকেশনের রিকোয়েস্ট হ্যান্ডেল করার জন্...

স্প্রিং বুট কুইজ অ্যাপ: রেসপন্স এনটিটি এবং এক্সেপশন হ্যান্ডলিং

ইন্ট্রোডাকশন (Introduction): আজকের এই ব্লগে আমরা শিখব কীভাবে একটি স্প্রিং বুট (Spring Boot) অ্যাপ্লিকেশনে প্রফেশনাল উপায়ে ডেটা রিটার্ন করতে হয়। সাধারণত আমরা যখন সার্ভার থেকে ডেটা পাঠাই, তখন শুধু ডেটা পাঠালেই হয় না, সাথে একটি 'Status Code' বা সংকেত পাঠাতে হয় যাতে ক্লায়েন্ট (যেমন: মোবাইল অ্যাপ বা ওয়েবসাইট) বুঝতে পারে কাজটা ঠিকঠাক হয়েছে কি না। আমরা এখানে ResponseEntity এবং Exception Handling নিয়ে বিস্তারিত আলোচনা করব। ১. HTTP স্ট্যাটাস কোড কী? (Understanding HTTP Status Codes) ভিডিও রেফারেন্স: [ 00:22 ] আমরা যখন ইন্টারনেটে কোনো লিংকে ক্লিক করি এবং পেজটি খুঁজে পাওয়া যায় না, তখন আমরা '404 Error' দেখি। এই যে '404', এটিই হলো একটি স্ট্যাটাস কোড। ডেভেলপার হিসেবে আমাদের জানতে হয় কোন সময় কোন কোড পাঠাতে হবে। 200 - 299 (Success): যখন সবকিছু ঠিকঠাক কাজ করে। যেমন: 200 OK (ডেটা পাওয়া গেছে), 201 Created (নতুন কিছু তৈরি হয়েছে)। 400 - 499 (Client Error): যখন ইউজার বা ক্লায়েন্ট কোনো ভুল করে। যেমন: ভুল ইউআরএল (URL) দেওয়া। 500 - 599 (Server Error): যখন সার্ভারের ন...