Golang Monolith Mastery – Episode 02: What Are We Going to Build?
এই পর্বে আমাদের Golang Monolith Mastery কোর্সের ফ্ল্যাগশিপ প্রজেক্ট CoderShop-এর সম্পূর্ণ আর্কিটেকচারাল ডেমো এবং কার্যকরী বৈশিষ্ট্যগুলো (Functional Features) ব্যাখ্যা করা হয়েছে। CoderShop হলো একটি প্রডাকশন-গ্রেড ক্লাসিফাইডস (Classifieds) প্ল্যাটফর্মের ব্যাকএন্ড—যা আধুনিক স্কেলেবল মনোলিথিক সিস্টেম ডিজাইন, ফাইল প্রসেসিং এবং গো-এর হাই-পারফর্ম্যান্স কনকারেন্সি মডেল অনুশীলনের জন্য তৈরি করা হয়েছে।
1. Project Overview: The CoderShop Architecture
CoderShop এমন একটি ব্যাকএন্ড প্রজেক্ট যা একটি পূর্ণাঙ্গ C2C/B2C ক্লাসিফাইড প্ল্যাটফর্ম হিসেবে কাজ করে। ফ্রন্টএন্ডে ইউজার ইন্টারফেস (Theme Switching, Dynamic UI) থাকলেও, এই কোর্সের মূল কেন্দ্রবিন্দু হলো গো (Golang) দিয়ে তৈরি উচ্চমানের ব্যাকএন্ড আর্কিটেকচার।
Real-Life Analogy
বাস্তব জীবনের উদাহরণ: ভারতের OLX বা বাংলাদেশের Bikroy.com-এর মতো ক্লাসিফাইড প্ল্যাটফর্মগুলোর কথা চিন্তা করুন। এখানে ব্যবহারকারীরা পণ্য বিক্রির জন্য ছবি ও বিবরণসহ লিস্টিং তৈরি করেন, অন্য ব্যবহারকারীরা সেগুলো ব্রাউজ করেন এবং যোগাযোগ করেন। CoderShop ঠিক এই ধরনের প্ল্যাটফর্মের ব্যাকএন্ড হিসেবে কাজ করে।
2. Authentication & User Session Management
প্রজেক্টের সিকিউরিটি ও স্টেট ম্যানেজমেন্ট নিশ্চিত করতে সিস্টেমের মধ্যে এনটারপ্রাইজ-গ্রেড অথেন্টিকেশন যুক্ত করা হয়েছে:
- User Registration & Authentication: নতুন ব্যবহারকারীদের জন্য সাইন-আপ এবং বিদ্যমান ব্যবহারকারীদের জন্য ক্রেডেনশিয়াল নির্ভর সাইন-ইন মেকানিজম।
- Protected Dashboards: সাইন-ইন সম্পন্ন হওয়ার পর ব্যবহারকারী তার নিজস্ব ডেশবোর্ড বা "My Listings" অ্যাক্সেস করতে পারেন, যেখানে তিনি পণ্য আপলোড ও পরিচালনা করতে পারেন।
3. High-Throughput Media Ingestion & Object Storage
সাধারণ টিউটোরিয়ালে যেভাবে সরাসরি সার্ভার মেমরিতে বা ডিস্কে ফাইল সেভ করা হয়, CoderShop-এ সে পদ্ধতি ব্যবহার করা হয়নি। এটি একটি Production-Grade Object Storage Upload System।
- Parallel File Uploads: একাধিক ছবি (যেমন: ৪–৫টি হাই-রেজোলিউশন ছবি) লোকাল কম্পিউটার থেকে অবজেক্ট স্টোরেজে সমান্তরালভাবে (In Parallel) দ্রুত আপলোড করা হয়।
- Direct Object Storage Pattern: অ্যাপ্লিকেশন সার্ভারের মেমরি বা CPU নোজ লোড না বাড়িয়ে সরাসরি অবজেক্ট স্টোরেজ সুবিধা ব্যবহার করা হয়।
4. Asynchronous Image Processing Engine (Goroutines & Workers)
CoderShop-এর ব্যাকএন্ডের সবচেয়ে আকর্ষণীয় দিক হলো এর অ্যাসিনক্রোনাস ফাইল প্রসেসিং ইঞ্জিন। ছবি আপলোড হলেই সরাসরি জনসম্মুখে তা প্রকাশ করা হয় না।
প্রসেসিং পাইপলাইনের প্রধান দায়িত্বসমূহ:
- Image Resizing & Normalization: ইউজার অনেক বড় সাইজের ফাইল আপলোড করতে পারেন। সেগুলোকে স্ট্যান্ডার্ড রেজোলিউশনে ডাউনস্কেল করা হয়।
- Privacy & Metadata Stripping: ডিজিটাল ছবিতে স্পর্শকাতর তথ্য থাকে (যেমন: ফোন বা ক্যামেরার মডেল, সঠিক GPS লোকেশন coordinates)। সিকিউরিটি ও প্রাইভেসির খাতিরে গো-ওয়ার্কাররা ব্যাকগ্রাউন্ডে এগুলো সম্পূর্ণ মুছে ফেলে।
- Status Lifecycle:
PROCESSING: প্রসেসিং চলাকালীন অবস্থায় প্রোডাক্ট পাবলিক সাইটে দেখা যাবে না।ACTIVE: প্রসেসিং সম্পন্ন হলে স্ট্যাটাস অটোমেটিকACTIVE-এ পরিবর্তিত হয় এবং ফাইলটি পাবলিশ হয়।
5. Content Delivery Network (CDN) & High Availability
মিডিয়া ফাইল দ্রুত ও স্কেলেবল উপায়ে ডেলিভারি করার জন্য ব্যাকএন্ডে CDN (Content Delivery Network) ইন্টিগ্রেশন করা হয়েছে।
- Edge Delivery: কন্টেন্ট ব্যবহারকারীর কাছাকাছি এজ সার্ভার (Edge Server) থেকে ডেলিভার হয়, ফলে ফাইল লোডিং স্পিড অত্যন্ত দ্রুত হয়।
- Bandwidth Offloading: কন্টেন্ট সিডিএন থেকে সার্ভ হওয়ার কারণে ব্যাকএন্ড অ্যাপ্লিকেশন সার্ভারের উপর অতিরিক্ত ব্যান্ডউইথ চাপ কমে যায়।
- Global Scalability: বিশ্বের যে কোনো প্রান্ত থেকে ইউজাররা কোনো ল্যাগ ছাড়াই ছবির ক্যাশড ভার্সন ব্রাউজ করতে পারেন।
6. Naive vs. Production-Grade Architecture Comparison
7. Complete Request & Processing Flow
নিচের ফ্লো-ডায়াগ্রামটি একটি পণ্য লিস্টিং থেকে শুরু করে ব্যাকগ্রাউন্ড প্রসেসিং এবং পাবলিক ব্রাউজিং পর্যন্ত পুরো জীবনচক্র প্রদর্শন করে:
8. Pedagogical Value & Golang Core Concepts Learned
এই প্রজেক্ট তৈরির মাধ্যমে ব্যাকএন্ড ডেভেলপমেন্টের নিম্নলিখিত মূল কনসেপ্টগুলো প্র্যাক্টিক্যালি শেখা যাবে:
- Golang Concurrency Patterns:
GoroutinesএবংChannelsব্যবহার করে কীভাবে হাই-পারফর্ম্যান্স প্রসেসিং ইঞ্জিন তৈরি করা যায়। - Go Standard Library First API: গো-এর বিল্ট-ইন মেকানিজম ব্যবহার করে স্কেলেবল REST APIs নির্মাণ।
- Real-World System Design: মনোলিথিক স্ট্রাকচারের মধ্যেও কীভাবে বিভিন্ন মডিউল ডি-কপল্ড (Decoupled) রেখে প্রোডাকশন-রেডি রাখা যায়।
- Portfolio Readines: প্রজেক্টটি ইন্ডাস্ট্রির চাহিদা অনুযায়ী ডিজাইন করা হয়েছে, যা সরাসরি কেরিয়ার বা পোর্টফোলিওতে যুক্ত করার উপযোগী।
Summary and Key Takeaways
- CoderShop হলো একটি প্রোডাকশন-গ্রেড সি-টু-সি ক্লাসিফাইডস ব্যাকএন্ড প্রজেক্ট যা OLX-এর কাজের ধারার ওপর ভিত্তি করে ডিজাইন করা হয়েছে।
- প্রজেক্টটিতে সিকিউর User Registration & Authentication সিস্টেম বিদ্যমান।
- ফাইল আপলোডের জন্য স্কেলেবল Parallel Object Storage Ingestion আর্কিটেকচার ব্যবহার করা হয়েছে।
- ইমেজ প্রসেসিং ব্যাকগ্রাউন্ডে Goroutines এবং Worker Pools দ্বারা অ্যাসিনক্রোনাসভাবে পরিচালিত হয়।
- নিরাপত্তা ও প্রাইভেসি সুনিশ্চিত করতে ইমেজের ভেতরের সেনসিটিভ GPS ও EXIF Metadata প্রসেসিং ধাপে মুছে ফেলা হয়।
- লিস্টিং ট্রানজিশন স্টেটমেন্ট
PROCESSINGথেকে শুরু হয় এবং ইমেজ কাজ শেষ হলে স্বয়ংক্রিয়ভাবেACTIVEহয়। - মিডিয়া ফাইলের দ্রুত ডেলিভারি ও প্রধান সার্ভারের ব্যান্ডউইথ বাঁচাতে CDN (Content Delivery Network) সমন্বিত করা হয়েছে।
- কোর্সের পরবর্তী পর্বে এই প্রজেক্টের বিস্তারিত System Design & Architecture Planning শুরু করা হবে।