Skip to Content
সিস্টেম ডিজাইনে স্বাগতম 🎉
DocumentationReal-time Gaming LeaderboardPropose High Level Design and Get Buy In

প্রস্তাবিত High-Level Design এবং সম্মতি নেওয়া (Get Buy-in)

আগে যেমন আলোচনা করা হয়েছে, interviewer পরামর্শ দিয়েছেন যে সবকিছু নিজে থেকে তৈরি না করে বিদ্যমান cloud service ব্যবহার করা উচিত। এই ক্ষেত্রে CDN এবং blob storage আমরা ব্যবহার করব।

অনেকে প্রশ্ন করতে পারে—সবকিছু নিজে কেন বানাব না?

কারণগুলো নিচে দেওয়া হলো:

  • System design interview-এ সবকিছু scratch থেকে বানানো উদ্দেশ্য নয়। সীমিত সময়ে সঠিক technology নির্বাচন করা বেশি গুরুত্বপূর্ণ। উদাহরণস্বরূপ, ভিডিও store করার জন্য blob storage বললেই যথেষ্ট, তার internal design ব্যাখ্যা করা দরকার নেই।

  • Scalable blob storage বা CDN তৈরি করা অত্যন্ত জটিল এবং ব্যয়বহুল। বড় কোম্পানি যেমন Netflix বা Facebook সবকিছু নিজেরা তৈরি করে না। Netflix Amazon cloud ব্যবহার করে, Facebook Akamai CDN ব্যবহার করে।


High-level system তিনটি প্রধান অংশ নিয়ে গঠিত (Figure 3):

  1. Client: YouTube দেখা যায় computer, mobile phone এবং smart TV থেকে।

  2. CDN: সব video CDN-এ store থাকে। Play চাপলে ভিডিও CDN থেকে stream হয়।

  3. API Servers: ভিডিও streaming ছাড়া বাকি সব কাজ API servers handle করে। যেমন:

  • feed recommendation
  • video upload URL তৈরি করা
  • metadata database এবং cache update করা
  • user signup ইত্যাদি

Interview-এ interviewer সাধারণত দুটি flow-তে আগ্রহ দেখায়:

  1. Video upload flow
  2. Video streaming flow

এখন আমরা এগুলো high-level design এ বুঝব।


VIDEO UPLOAD FLOW

Video uploading system এর high-level design (Figure 4):

System components:

  • User: Computer, mobile, smart TV ব্যবহার করে YouTube access করে।

  • Load balancer: সব request API servers-এ evenly distribute করে।

  • API servers: Video streaming ছাড়া সব request handle করে।

  • Metadata DB: Video সম্পর্কিত তথ্য (metadata) store করে। এটি sharded এবং replicated যাতে performance এবং availability ভালো হয়।

  • Metadata cache: Frequently used metadata cache-এ রাখা হয় দ্রুত access এর জন্য।

  • Original storage: Original video store করার জন্য blob storage ব্যবহার করা হয়। Blob storage হলো binary data বড় আকারে store করার system।

  • Transcoding servers: Video format convert করে (যেমন MPEG, HLS ইত্যাদি) যাতে বিভিন্ন device-এ smoothly play হয়।

  • Transcoded storage: Processed video store করার জন্য blob storage।

  • CDN: Transcoded video CDN-এ store হয় এবং user-কে fast delivery দেয়।

  • Completion queue: Transcoding শেষ হওয়ার event store করে।

  • Completion handler: Queue থেকে event নিয়ে metadata DB এবং cache update করে।


Video upload flow দুই ভাগে parallelভাবে কাজ করে:

A) Actual video upload
B) Metadata update


FLOW A: ACTUAL VIDEO UPLOAD

  1. Video প্রথমে original storage-এ upload হয়

  2. Transcoding server video fetch করে processing শুরু করে

  3. Transcoding শেষ হলে parallel দুইটি কাজ হয়:

    3a. Transcoded video storage-এ save হয়
    3b. Completion event queue-তে যায়

  4. Transcoded video CDN-এ distribute হয়

  5. Completion handler queue থেকে event নিয়ে DB এবং cache update করে

  6. API server client-কে জানায় video ready


FLOW B: METADATA UPDATE

Video upload চলাকালীন parallelভাবে client metadata পাঠায়:

  • file name
  • size
  • format
  • etc.

API server এই metadata:

  • cache-এ update করে
  • database-এ store করে

VIDEO STREAMING FLOW

YouTube-এ video দেখার সময় পুরো video download হয় না। বরং streaming হয়।

Streaming মানে: ভিডিও ছোট ছোট অংশে ভাগ হয়ে continuously পাঠানো হয়।


Streaming Protocols:

  • MPEG-DASH
  • Apple HLS
  • Microsoft Smooth Streaming
  • Adobe HDS

👉 এগুলো low-level details, interview-এ শুধু concept বোঝা গুরুত্বপূর্ণ।


VIDEO STREAMING PROCESS

  • Video সরাসরি CDN থেকে stream হয়
  • User-এর কাছের edge server থেকে video আসে
  • তাই latency খুব কম হয়

FLOW (Figure 7):

  1. Client (mobile, web, smart TV) request পাঠায়
  2. CDN সেই request receive করে
  3. Video CDN থেকে directly stream হয়

SUMMARY:

  • Video upload system অনেক component নিয়ে কাজ করে
  • Metadata + video processing parallelভাবে চলে
  • CDN streaming system খুব fast এবং scalable
  • API server শুধু control এবং metadata handle করে
  • Video directly CDN থেকে stream হয়, server থেকে না