ইউটিউব ডিজাইন (Design YouTube)
এই অধ্যায়ে আমরা YouTube-এর মতো একটি ভিডিও স্ট্রিমিং সিস্টেম ডিজাইন করব।
এই ডিজাইন একইভাবে Netflix, Hulu বা অন্যান্য ভিডিও শেয়ারিং প্ল্যাটফর্ম ডিজাইনের জন্যও ব্যবহার করা যায়।
Figure 1: YouTube Homepage
(চিত্রে YouTube হোমপেজ দেখানো হয়েছে)
এখানে দেখা যায়:
-
বাম পাশে একটি সাইড মেনু (Sports, Gaming, Movies, News ইত্যাদি)
-
মাঝখানে ভিডিও থাম্বনেইলের গ্রিড
-
প্রতিটি ভিডিওতে:
- টাইটেল
- ক্রিয়েটর নাম
- ভিউ কাউন্ট
- আপলোড ডেট
- ভিডিও ডিউরেশন
-
উপরে সার্চ বার এবং ইউজার প্রোফাইল আইকন
ইউজার সাধারণত ভিডিও নির্বাচন করে দেখে, সাবস্ক্রাইব করে এবং সার্চ ব্যবহার করে।
YouTube কত বড়?
YouTube-এর স্কেল বোঝার জন্য কিছু গুরুত্বপূর্ণ পরিসংখ্যান:
- Monthly Active Users: 2 বিলিয়ন
- Daily video watch: 5 বিলিয়ন ভিডিও
- US প্রাপ্তবয়স্কদের 73% YouTube ব্যবহার করে
- 50 মিলিয়ন+ creators
- 2019 revenue: $15.1 বিলিয়ন
- Mobile internet traffic-এর 37% YouTube
- 80+ ভাষায় উপলব্ধ
👉 এই তথ্য থেকে বোঝা যায় YouTube একটি বিশাল, গ্লোবাল এবং হাই-স্কেল সিস্টেম।
Step 1 - Problem বোঝা এবং Scope নির্ধারণ
YouTube শুধু ভিডিও দেখা নয়—এখানে আরও অনেক ফিচার আছে:
- লাইক, কমেন্ট, শেয়ার
- সাবস্ক্রাইব
- প্লেলিস্ট
- রিকমেন্ডেশন
👉 কিন্তু interview-এ সব কিছু ডিজাইন করা সম্ভব না, তাই scope সীমিত করতে হয়।
Interview Q&A (Scope Narrowing)
Candidate: কোন ফিচার দরকার? Interviewer: ভিডিও আপলোড এবং ভিডিও দেখা
Candidate: কোন ক্লায়েন্ট সাপোর্ট লাগবে? Interviewer: Mobile, Web, Smart TV
Candidate: DAU কত? Interviewer: 5 million
Candidate: Daily usage কত? Interviewer: 30 minutes
Candidate: International users আছে? Interviewer: Yes
Candidate: Video format? Interviewer: সব major format support
Candidate: Encryption দরকার? Interviewer: Yes
Candidate: Max video size? Interviewer: 1GB
Candidate: Cloud service ব্যবহার করা যাবে? Interviewer: Yes (recommended)
Final Scope
আমরা একটি ভিডিও স্ট্রিমিং সিস্টেম ডিজাইন করব যার ফিচার:
- দ্রুত ভিডিও আপলোড
- smooth streaming
- video quality change (360p, 720p, 1080p)
- low infrastructure cost
- high availability & scalability
- support: mobile, web, smart TV
Back-of-the-envelope Estimation
এই হিসাবগুলো কিছু assumptions-এর উপর ভিত্তি করে করা হয়েছে।
Assumptions
- DAU = 5 million
- একজন ইউজার দিনে 5টি ভিডিও দেখে
- 10% ইউজার প্রতিদিন 1টি ভিডিও আপলোড করে
- Average video size = 300MB
Storage Requirement
5M × 10% × 300MB
= 150TB/day👉 প্রতিদিন প্রায় 150TB নতুন স্টোরেজ দরকার
CDN Cost Estimation
CDN ব্যবহার করলে প্রতি GB ডেটা transfer-এর জন্য চার্জ দিতে হয়।
ধরি Amazon CloudFront ব্যবহার করা হচ্ছে।
- Cost ≈ $0.02 per GB
Daily Streaming Cost
5M users × 5 videos × 0.3GB × $0.02
= $150,000 per day👉 শুধুমাত্র ভিডিও streaming-এর জন্য দৈনিক খরচ ~ $150K
গুরুত্বপূর্ণ ইনসাইট
- CDN খরচ অনেক বেশি
- ভিডিও স্ট্রিমিং সবচেয়ে expensive অংশ
- বড় কোম্পানিগুলো CDN discount পায়, কিন্তু খরচ এখনও high
👉 তাই Deep Dive অংশে আমরা cost optimization কৌশল দেখব।
Figure 2: Cloud Storage Pricing
(চিত্রে cloud storage pricing table দেখানো হয়েছে)
এখানে দেখা যায়:
- বিভিন্ন region অনুযায়ী দাম ভিন্ন
- storage tier অনুযায়ী price কমে/বাড়ে
- US/Europe তুলনায় কিছু region-এ বেশি দাম
- বড় volume হলে per GB cost কমে
👉 এটি বোঝায় যে ভিডিও স্টোরেজ ও ডিস্ট্রিবিউশন region-based cost optimization প্রয়োজন।
সারসংক্ষেপ
এই অধ্যায়ে আমরা YouTube ডিজাইন শুরু করেছি:
- সিস্টেমের স্কেল বোঝা
- requirement gather করা
- scope define করা
- initial cost estimation করা
👉 পরবর্তী ধাপে আমরা high-level architecture, video processing pipeline এবং CDN optimization নিয়ে কাজ করব।
YouTube-এর মতো একটি সিস্টেম আসলে শুধু ভিডিও প্ল্যাটফর্ম না—এটি একটি বিশাল distributed system যার মধ্যে storage, streaming, caching এবং global delivery সব একসাথে কাজ করে।