सिस्टम डिज़ाइन इंटरव्यू: Netflix डिज़ाइन करें
"Netflix डिज़ाइन करें" एक रीड-हेवी समस्या है, जो एक तथ्य से शासित होती है: वैश्विक स्तर पर वीडियो परोसना कंप्यूट की तुलना में कहीं अधिक कंटेंट-डिलीवरी और स्टोरेज की समस्या है। इंटरव्यूअर चाहता है कि आप कंट्रोल प्लेन (ब्राउज़िंग, सर्च, रिकमेंडेशन) को डेटा प्लेन (वास्तव में बाइट्स स्ट्रीम करना) से अलग करें, और उपयोगकर्ताओं के पास पेटाबाइट्स डेटा पहुंचाने के बारे में तर्क करें।
क्रम में आगे बढ़ें: आवश्यकताओं को स्पष्ट करें, स्केल का अनुमान लगाएं, अपलोड/ट्रांसकोड पाइपलाइन डिज़ाइन करें, फिर CDN के माध्यम से प्लेबैक पाथ, और एडेप्टिव बिटरेट व ट्रेड-ऑफ़ पर समाप्त करें। नीचे दिया गया वॉकथ्रू इस संरचना का अनुसरण करता है, ताकि आप किसी आर्किटेक्चर को याद करने के बजाय तर्क का अभ्यास करें।
1. आवश्यकताओं को स्पष्ट करें
फ़ंक्शनल को नॉन-फ़ंक्शनल से अलग करें और दायरे को सख्ती से तय करें। मुख्य बात है: यूज़र एक कैटलॉग ब्राउज़ करते हैं और विभिन्न डिवाइसों व नेटवर्क स्थितियों में सहजता से वीडियो स्ट्रीम करते हैं।
- फ़ंक्शनल: कैटलॉग ब्राउज़/सर्च करना, प्लेबैक शुरू करना, एडेप्टिव क्वालिटी, जहां छोड़ा था वहीं से जारी रखना, मल्टी-डिवाइस।
- नॉन-फ़ंक्शनल: बहुत उच्च उपलब्धता, कम स्टार्टअप लेटेंसी, स्मूद प्लेबैक (रीबफरिंग नहीं), ग्लोबल पहुंच।
- दायरे से बाहर (इसे स्पष्ट रूप से कहें): रेकमेंडेशन ML का इंटरनल हिस्सा, बिलिंग, DRM डीटेल्स — इनका उल्लेख करें और फिर टाल दें।
2. स्केल का अनुमान लगाएं
ये आंकड़े CDN-फ़र्स्ट डिज़ाइन को सही ठहराते हैं। मान लें कि लगभग कई सौ मिलियन सब्सक्राइबर हैं और पीक पर कई मिलियन समवर्ती स्ट्रीम्स हैं। एक सिंगल स्ट्रीम कई Mbps की खपत करती है, इसलिए कुल आउटपुट प्रति सेकंड दसियों टेराबिट तक पहुंच जाता है — कुछ ही केंद्रीय डेटा सेंटरों से इसे परोसना असंभव है, जो तुरंत एज कैशिंग को ज़रूरी बना देता है।
3. इनजेशन और ट्रांसकोडिंग पाइपलाइन
अपलोड किए गए मास्टर को प्लेबैक पाथ पर नहीं, बल्कि ऑफ़लाइन प्रोसेस किया जाता है। हर टाइटल को कई रेंडिशन में ट्रांसकोड किया जाता है — कई रिज़ॉल्यूशन और बिटरेट्स — और एडेप्टिव स्ट्रीमिंग के लिए छोटे-छोटे सेगमेंट (हर एक कुछ सेकंड का) में विभाजित किया जाता है।
- ट्रांसकोडिंग फ़ार्म: मास्टर को कई बिटरेट्स पर H.264/H.265/AV1 रेंडिशन में बदलती है; यह आसानी से समानांतर करने योग्य बैच कार्य है।
- सेगमेंटेशन और पैकेजिंग: हर रेंडिशन को छोटे सेगमेंट्स में विभाजित करती है, साथ में एक मेनिफ़ेस्ट (HLS/DASH) जो उन्हें वर्णित करता है।
- आउटपुट को ऑब्जेक्ट स्टोरेज (S3 जैसा) में सत्य के स्रोत के रूप में स्टोर करती है, फिर लोकप्रिय कंटेंट को एज तक पुश करती है।
4. CDN और प्लेबैक पाथ
प्लेबैक एज से परोसा जाता है, ओरिजिन से नहीं। वीडियो सेगमेंट्स उन CDN नोड्स पर कैश किए जाते हैं जो भौतिक रूप से यूज़र्स के पास होते हैं (Netflix ISPs के भीतर अपने Open Connect एप्लायंस चलाता है)। क्लाइंट मेनिफ़ेस्ट प्राप्त करता है, फिर निकटतम स्वस्थ एज नोड से सेगमेंट्स खींचता है।
कंट्रोल प्लेन (कैटलॉग, सर्च, यूज़र प्रोफाइल, 'कंटिन्यू वॉचिंग') अपने स्वयं के डेटाबेस और कैश द्वारा समर्थित स्टेटलेस API सेवाओं का एक अलग सेट है — यह केवल मेटाडेटा और एक मेनिफ़ेस्ट URL लौटाता है, और यह भारी बाइट डिलीवरी से पूरी तरह अलग होता है।
- एज कैश (CDN/Open Connect): अधिकांश बाइट्स परोसता है; मांग उत्पन्न होने से पहले क्षेत्र के अनुसार लोकप्रिय टाइटल्स को पहले से रखता है।
- ओरिजिन स्टोरेज: ऑब्जेक्ट स्टोर जो कैश मिस को सपोर्ट करता है।
- कंट्रोल प्लेन APIs: कैटलॉग, प्लेबैक ऑथराइज़ेशन, बुकमार्क — छोटे पेलोड, होरिज़ॉन्टल रूप से स्केल किए गए, आगे कैश के साथ।
5. एडेप्टिव बिटरेट स्ट्रीमिंग
बदलते नेटवर्क के अंतर्गत स्मूद प्लेबैक सर्वर से नहीं, बल्कि क्लाइंट से आता है। प्लेयर थ्रूपुट और बफर लेवल को मॉनिटर करता है, और मेनिफ़ेस्ट की रेंडिशन लिस्ट का उपयोग करके सेगमेंट्स के बीच क्वालिटी को ऊपर या नीचे स्विच करता है — तेज़ कनेक्शन पर उच्च बिटरेट, धीमे पर रीबफरिंग से बचने के लिए कम बिटरेट।
6. ज़ोर से बताने योग्य ट्रेड-ऑफ़
उन तनावों को नाम देकर समाप्त करें जिन्हें इंटरव्यूअर सुनना चाहता है: सभी रेंडिशन को पहले से कंप्यूट करने की स्टोरेज लागत बनाम ऑन-द-फ्लाई ट्रांसकोडिंग की लेटेंसी (Netflix पहले से कंप्यूट करता है — स्टोरेज, स्टार्टअप डिले से सस्ता है); सब कुछ कैश करना बनाम एज पर केवल लोकप्रिय चीज़ें कैश करना (एक लॉन्ग-टेल कैटलॉग हर एज पर पूरी तरह नहीं रह सकता); और 'कंटिन्यू वॉचिंग' जैसे कंट्रोल प्लेन डेटा के लिए स्ट्रॉन्ग बनाम एवेंचुअल कंसिस्टेंसी (एवेंचुअल ठीक है)। इन्हें नाम देना ही जवाब को सीनियर स्तर का बनाता है।
रीयल-टाइम मदद के साथ Netflix का सिस्टम डिज़ाइन प्रैक्टिस करें
Natively का सिस्टम डिज़ाइन इंटरव्यू असिस्टेंट लाइव राउंड के दौरान आपको संरचित बनाए रख सकता है — आगे कवर करने वाले आयाम का सुझाव देकर और ट्रेड-ऑफ़ को रीयल-टाइम में दिखाकर, यह सब आपके अपने डिवाइस पर।
