āĻĒā§āϰāϏā§āϤāĻžāĻŦāĻŋāϤ 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):
-
Client: YouTube āĻĻā§āĻāĻž āϝāĻžāϝāĻŧ computer, mobile phone āĻāĻŦāĻ smart TV āĻĨā§āĻā§āĨ¤
-
CDN: āϏāĻŦ video CDN-āĻ store āĻĨāĻžāĻā§āĨ¤ Play āĻāĻžāĻĒāϞ⧠āĻāĻŋāĻĄāĻŋāĻ CDN āĻĨā§āĻā§ stream āĻšāϝāĻŧāĨ¤
-
API Servers: āĻāĻŋāĻĄāĻŋāĻ streaming āĻāĻžāĻĄāĻŧāĻž āĻŦāĻžāĻāĻŋ āϏāĻŦ āĻāĻžāĻ API servers handle āĻāϰā§āĨ¤ āϝā§āĻŽāύ:
- feed recommendation
- video upload URL āϤā§āϰāĻŋ āĻāϰāĻž
- metadata database āĻāĻŦāĻ cache update āĻāϰāĻž
- user signup āĻāϤā§āϝāĻžāĻĻāĻŋ
Interview-āĻ interviewer āϏāĻžāϧāĻžāϰāĻŖāϤ āĻĻā§āĻāĻŋ flow-āϤ⧠āĻāĻā§āϰāĻš āĻĻā§āĻāĻžāϝāĻŧ:
- Video upload flow
- 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
-
Video āĻĒā§āϰāĻĨāĻŽā§ original storage-āĻ upload āĻšāϝāĻŧ
-
Transcoding server video fetch āĻāϰ⧠processing āĻļā§āϰ⧠āĻāϰā§
-
Transcoding āĻļā§āώ āĻšāϞ⧠parallel āĻĻā§āĻāĻāĻŋ āĻāĻžāĻ āĻšāϝāĻŧ:
3a. Transcoded video storage-āĻ save āĻšāϝāĻŧ
3b. Completion event queue-āϤ⧠āϝāĻžāϝāĻŧ -
Transcoded video CDN-āĻ distribute āĻšāϝāĻŧ
-
Completion handler queue āĻĨā§āĻā§ event āύāĻŋāϝāĻŧā§ DB āĻāĻŦāĻ cache update āĻāϰā§
-
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):
- Client (mobile, web, smart TV) request āĻĒāĻžāĻ āĻžāϝāĻŧ
- CDN āϏā§āĻ request receive āĻāϰā§
- 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 āĻĨā§āĻā§ āύāĻž