"ভালো design মানে সব প্রশ্নের উত্তর জানা নয়। ভালো design মানে ঠিক প্রশ্নটা আগে করা।"
স্টেজ ০৮ শেষে আপনার ঝুলিতে system design এর প্রায় সব মূল tool আছে। কিন্তু tool চেনা আর একটা পুরো system design করা এক জিনিস নয়। আসল দক্ষতা হলো, একটা অস্পষ্ট প্রশ্ন (“একটা YouTube বানান”) পেয়ে সেটাকে ছোট ছোট সিদ্ধান্তে ভাগ করা।
এই স্টেজের design গুলো সহজ থেকে কঠিনের দিকে সাজানো, আর প্রতিটা আগেরটার উপর দাঁড়িয়ে থাকে। শুরু একটা URL shortener দিয়ে, যেখানে একটা key আর একটা cache ই যথেষ্ট। তারপর rate limiter আর search, তারপর feed এর fan-out, chat এর real-time connection, YouTube এর বিশাল data, আর শেষে Uber, যেখানে আগের প্রায় সবকিছু একসাথে লাগে।
এই স্টেজের প্রতিটা সেশন একই কাঠামো মেনে চলে। আগে বুঝবো, system টা আসলে কী করবে। তারপর হিসাব করবো, কত user, কত data। তারপর ধাপে ধাপে design দাঁড় করাবো, আর প্রতিটা সিদ্ধান্তে দেখাবো আগের কোন সেশনের ধারণা কাজে লাগছে। শেষে দেখবো, design টা কোথায় চাপে পড়ে, আর তখন কী করতে হয়।
০১ এই স্টেজে যা শিখবো
| সেশন | শিরোনাম | এই সেশনের লক্ষ্য |
|---|---|---|
| সেশন ২৩ | URL Shortener / Pastebin Design | Requirements আর estimation থেকে শুরু করে base62, hash collision, key generation service, 301 বনাম 302, read-heavy caching, expiry, custom alias আর Pastebin এর object storage পর্যন্ত একটা পূর্ণাঙ্গ design। |
| সেশন ২৪ | Rate Limiter / Search Design | Redis এ atomic counter দিয়ে distributed rate limiter, sliding window, fail open বনাম fail closed, inverted index, Bangla-English tokenization, async indexing আর trie দিয়ে typeahead। |
| সেশন ২৫ | Twitter / Instagram Feed | Home timeline, fan-out on write বনাম fan-out on read, celebrity problem আর hybrid approach, Redis timeline cache, cursor pagination, object storage আর CDN, আর like counter ও ranking। |
| সেশন ২৬ | WhatsApp / Chat Design | HTTP polling এর সীমা, WebSocket আর stateful connection server, registry দিয়ে routing, sent/delivered/read tick, offline storage আর push notification, per-chat seq দিয়ে ordering, group fan-out, presence আর E2E encryption। |
| সেশন ২৭ | YouTube / Netflix Design | Requirement আর back-of-envelope estimation দিয়ে শুরু, তারপর upload pipeline আর transcoding, HLS/DASH দিয়ে adaptive bitrate, জনপ্রিয় আর long-tail video র জন্য CDN, আর লাখো view গোনার কৌশল। |
| সেশন ২৮ | Uber / Maps Design | Driver location এর write load, lat/lng এ SQL কেন ধীর, geohash আর quadtree, ETA দিয়ে matching, trip state machine, আর hot area ও surge pricing। |
০২ স্টেজ শেষে যা যা করতে পারবেন
- যেকোনো design প্রশ্নে functional আর non-functional requirement আলাদা করে লিখতে পারবেন।
- Back-of-envelope estimation দিয়ে traffic, storage আর bandwidth এর মোটামুটি হিসাব করতে পারবেন।
- URL shortener শূন্য থেকে design করতে পারবেন: short code, cache আর 301 বনাম 302।
- Rate limiter আর search autocomplete design করতে পারবেন: Redis counter, inverted index আর trie।
- Feed এর জন্য fan-out on write আর fan-out on read এর মধ্যে ঠিকটা বেছে নিতে পারবেন।
- Chat system এ WebSocket, delivery receipt আর offline message কীভাবে কাজ করে, সেটা বলতে পারবেন।
- Video streaming এর upload pipeline, transcoding আর adaptive bitrate ব্যাখ্যা করতে পারবেন।
- Geospatial সমস্যায় geohash আর quadtree ব্যবহার করে কাছের driver খুঁজতে পারবেন।
০৩ এর পর যা আসছে...
এটাই শেষ স্টেজ। এখানে পৌঁছানো মানে আপনি একটা server থেকে শুরু করে পৃথিবীজোড়া system পর্যন্ত পুরো পথটা হেঁটে এসেছেন। এখন সবচেয়ে ভালো কাজ হলো নিজে নিজে design করা: একটা পরিচিত app বেছে নিন, এই স্টেজের ধাপগুলো মেনে কাগজে design করুন, তারপর আগের সেশনগুলোর সাথে মিলিয়ে দেখুন।