نتفلیکس برای پخش محتوای سرگرمکننده برای کاربران، زیرساختهای پیچیدهای دارد. در این مطلب فرایندی را بررسی میکنیم که منجر به پخش محتوا در نتفلیکس میشود.
تماشاگران افراطی سریالهای نتفلیکس چندی پیش فصل آخر سریال خانهی پوشالی را دریافت کردند و انتظار بلندمدت آنها برای شروع ماراتن رقابتی مشاهدهی سریال، به پایان رسید. برای این علاقهمندان به سریال درام پیرامون تلاشهای یک آمریکایی برای رسیدن به مقام ریاستجمهوری آمریکا، شروع ماراتن به آسانی دسترسی به دستگاه شخصی یا ریموت کنترل و اجرای اپلیکیشن نتفلیکس بود. فراینده ساده، سریع و لذتبخش که قطعا، زیرساختی پیچیده در آن نهفته است.
آنچه که در پشت فرایند پخش محتوا در نتفلیکس اتفاق میافتد، قطعا ساده نیست. این سرویس روزانه ۲۵۰ میلیون ساعت ویدئو را برای ۹۸ میلیون کاربر در ۱۹۰ کشور جهان پخش میکند. در ابعادی چنین بزرگ، ارائهی محتوای باکیفیت در عرض چند ثانیه به تمام کاربران حاضر در سرویس، واقعا فرایندی جدی محسوب میشود.
پیادهسازی فرایند پخش محتوا در نتفلیکس، علاوهبر زیرساختی عظیم و بیسابقه درمیان ارائهدهندگان خدمات اینترنت، نیازمند مذاکرات متعدد با طرفهای درگیر در مراحل مختلف خواهد بود. از میان بازیگران این فرایند پیچیده میتوان به شرکتهای تولیدکنندهی محتوا و ارائهدهندگان خدمات اینترنت اشاره کرد. در ادامهی این مطلب زومیت، با بیانی ساده، روند ارائهی محتوای فیلم و سریال در سرویس نتفلیکس را بررسی میکنیم.
صدها مایکروسرویس، یک سرویس عظیم
برای شروع توضیح فرایند کاری نتفلیکس، ابتدا زیرساختهای بخش فنی آن را با مثالی ساده توضیح میدهیم. تصور کنید اپلیکیشن نقشهی گوشی هوشمند شما، اطلاعات پیچیدهای را دربارهی تمام مکانهایی که میروید و مسیرهای شما در فایلی بهنام locations.txt ذخیره میکند. حال شما اپلیکیشنی بانام LocoList طراحی میکنید که درصورت وجود اپلیکیشن Maps، اطلاعات را از فایل مذکور میخواند و تمام مکانهای ذخیرهشده را در یک فهرست ساده نمایش میدهد.
پس از مدتی، سازندگان اپلیکیشن Maps تصمیم میگیرند اطلاعات را بهنحوی دیگر ذخیره کنند و پس از بهروزرسانی جدید، دیگر فایل قبلی اطلاعاتی را ذخیره نخواهد کرد. درنتیجه، اپلیکیشن LocoList فایل مورد نظر را برای خواندن اطلاعات مورد نیازش پیدا نمیکند. هیچ راه دیگری برای استخراج اطلاعات از اپلیکیشن نقشه نیز وجود ندارد و درنهایت، اپلیکیشن شما بلااستفاده خواهد شد.
البته، از کار افتادن اپلیکیشن مثال بالا، مشکل بزرگی محسوب نمیشود. اما وقتی در ابعاد سرویسی همچون نتفلیکس صحبت کنیم و از کار افتادن یک بخش، باعث ایجاد مشکل در بخشهای دیگر یا کل سیستم بشود، قطعا تأثیرات منفی روی تجربهی کاربران خواهد داشت. بههمین دلیل، نتفلیکس نمیتواند از چنین رویکردی در سرویس خود استفاده کند. چنین سرویسی بانام معماری یکپارچه شناخته میشود.
نتفلیکس حدود یک دههی پیش، انقلابی در زیرساخت خود ایجاد کرد و اپلیکیشن ارائهکنندهی خدمات خود را به معماری مایکروسرویس مجهز کرد. در این سرویس، کد یا منابع هر اپلیکیشن و مایکروسرویس، مختص خود آن است. درواقع، هیچ سرویس یا اپلیکیشنی، کد یا منابع خود را در اختیار دیگری قرار نمیدهد. وقتی که دو اپلیکیشن نیاز به برقراری ارتباط داشته باشند نیز از رابط API استفاده میکنند. API مجموعهای از قوانین سختگیرانه است که هر دو اپلیکیشن توانایی اجرای آنها را دارند.
در سیستمهای مایکروسرویس، توسعهدهندگان بهراحتی تغییرات متعدد را در اپلیکیشنها ایجاد میکنند. آنها تنها باید مطمئن باشند که تغییرات، با API مورد استفاده برای هماهنگی، سازگار باشد. از آنجایی که همهی اپلیکیشنها، API یکدیگر را میشناسند، هیج تغییری منجر به ازکارافتادن سرویس یا تبادل اطلاعات نمیشود.
نتفلیکس ادعا میکند که برای اجرای تمامی قابلیتها و فرایندهای سرویس اصلی، از ۷۰۰ مایکروسرویس مجزا استفاده میکند. یکی از این خدمات تمامی محتوای تماشا شده توسط کاربر را ذخیره میکند. یک سرویس دیگر، هزینهی اشتراک ماهانه را از کارت اعتباری کاربر کسر میکند. سرویس دیگر، فرمت مناسب برای پخش در دستگاه کاربر را به او عرضه میکند.
یکی از مایکروسرویسهای نتفلیکس، تاریخچهی تماشای محتوای کاربر را ذخیره میکند تا بااستفاده از الگوریتمهای متنوع، علایق او را شناسایی کرده و فهرستی از فیامهای و سریالهای دلخواه را پیشنهاد دهد. سرویس دیگر، اطلاعات سریالها مانند نام و توضیحات را در منوی کاربر نمایش میدهد. سرویسهای گفتهشده، تنها بخش کوچکی از چندصد مایکروسرویس نتفلیکس هستند.
سرویسها کجا اجرا میشوند؟
برای اجرای حجم عظیمی از سرویسها، نیاز به شبکهای پیچیده از کامپیوترها احساس میشود. نتفلیکس زمانی شبکه و مراکز دادهی اختصاصی داشت. آنها پس از مدتی متوجه شدند که برای حفظ سرعت رشد خود، باید هزینه کردن در بخش سیستمهای کامپیوتری و بهینهسازی آنها برای نیازهای خود را پایان دهند. درنهایت نتفلیکس تصمیم گرفت تا خود را از هزینههای مذکور رها کرده و سرویسها را در محیط ابری AWS شرکت آمازون اجرا کند.
نکتهی جالبتوجه آن است که نتفلیکس، برای خدمات ابری خود شرکتی را انتخاب کرده است که با سرویس Prime video بهعنوان رقیب اصلی محسوب میشود. اما در دنیای فناوری، همکاری شرکتها با یکدیگر در یک حوزه و رقابت در حوزهای دیگر، طبیعی است. بهعنوان مثال میتوان سامسونگ و اپل را نام برد که باوجود رقابت شدید در بازار گوشیهای هوشمند، اکثر قطعات محصولات اپل توسط سامسونگ ساخته میشود. هرچند نتفلیکس پیش از رونمایی از سرویس ویدیوی آمازون، مشتری خدمات ابری آنها شد، اما بههرحال سرویس جدید منجر به رفتارهای مخرب دو شرکت نسبت به هم نشد.
شواهد حاکی از آن است که همکاری نتفلیکس وآمازون به سود هر دو شرکت تمام میشود. درواقع، نتفلیکس حرفهایترین مشتری AWS محسوب میشود که از تمامی ظرفیتهای خدمات آنها به حد اعلا استفاده میکند. بهعلاوه، آنها انواع کاربردها را از سرورهای متنوع آمازون استخراج کردهاند که از این میان میتوان به اجرای مایکروسرویسها، ذخیرهسازی فیلمها و کنترل ترافیک اینترنت اشاره کرد.
آمازون در جواب به حرکت نتفلیکس در بهرهبرداری هرچه بیشتر از سرورهای شرکت، خدمات متنوعی را به آنها ارائه کرد. یکی از خدمات، بهینهسازی سرورهای برای تحمل حجم بالای فشار از سوی نتفلیکس بود. بهعلاوه، آمازون از تجربهی ایجادشده برای خدمترسانی هرچه بهتر به مشتریان دیگر بهره میبرد.
درنهایت، بخش سرویس وب آمازون (Amazon Web Services – AWS) نتفلیکس را باافتخار بهعنوان بزرگترین مشتری خود معرفی کرده و نتفلیکس نیز با تکیه بر خدمات این شرکت، سرویسهای خود را به بهترین نحو به کاربرانت عرضه میکند. درنتیجه، رقابت شدید نتفلیکس و سرویس پرایم ویدئو، هیچگاه مانعی بر سر همکاری دو شرکت اصلی نخواهد بود.
مسیر طولانی از تولید تا پخش
برای یک پخشکنندهی فیلم و سریال، هیچ چیز بدتر از موجود نبودن محتوای مناسب مخصوص مصرفکننده نیست. برای نتفلیکس، فراهم کردن فیلم و سریال از تولیدکننده و رساندن آن به کاربران، مسیری دشوار و طولانی است:
اگر یک فیلم یا سریال، محصول خود نتفلیکس نباشد، آنها باید با شرکتهای فعال در حوزهی توزیع محتوای ویدئویی مذاکره کرده و حق پخش را از آنها دریافت کنند. فرایند اخذ مجوز بهمعنای هزینههای بالا برای کسب حقوق لازم بهمنظور پخش فیلم یا سریال در نقاط مختلف جهان خواهد بود. در برخی مواقع، قراردادهای پخش در نقاط مختلف جهان، تفاوتهایی دارند. بهعنوان مثال سریال خانهی پوشالی با تأخیری یک ماهه برای مشتریان نتفلیکس در غرب آسیا پخش شد.
مرحلهی بعدی پس از اخذ مجوزهای لازم، ذخیرهی فیلم یا سریال موردنظر در سرورهای AWS خواهد بود. فایلهای اصلی ویدئویی عموما کیفیت و حجم بالایی دارند و نتفلیکس برای ذخیره و پخش آنها باید مراحل پردازش و تغییر فرمت را انجام دهد.
سرویس نتفلیکس روی هزاران نوع دستگاه اجرا میشود و هریک از آنها فرمت مخصوص خود را برای پشتیبانی از صوت و تصویر دارند. یکی دیگر از سرورهای AWS، فیلمهای اصلی را دریافت میکند و آنها را به صدها نوع فیلم و صدای دیگر با قابلیت پخش در دستگاههای مختلف، تبدیل میکند. فرمتهای جدید در ابعاد صفحهنمایش متفاوت با کیفیتهای گوناگون ایجاد میشوند. پروسهی تبدیل ویدیویی اصلی به فرمتهای قابل پشتیبانی در دستگاههای مختلف بانام Transcoding شناخته میشود. بهعلاوه همهی فایلها، کدی حاوی قوانین کپیرایت را در خود خواهند داشت.
درنهایت، اپلیکیشن یا وبسایت نتفلیکس، دستگاه مورد استفادهی کاربر را تشخیص داده و فایل مناسب آن را بسته به دستگاه و سرعت اینترنت از سرورهای اصلی دریافت میکند.
مرحلهی آخر که مربوطبه دریافت و ارسال فایل نهایی میشود، مهمترین مرحله برای شرکت در جهت جذب و حفظ کاربر خواهد بود. در این مرحله، شبکهی اینترنت، محتوا را از سرورهای AWS به دست مشتری میرساند. اگر سرعت و کیفیت اینترنت مناسب نباشد، تمام تلاشهای نتفلیکس تا پیش از مرحلهی آخر، به باد خواهد رفت. بهبیان دیگر، اینترنت را میتوان بند ناف تغذیهی کاربران توسط نتفلیکس خواند که حیات شرکت به آن وابسته است.
رقابت با زمان بافر
تمام جزییات بهکار گرفته شده توسط نتفلیکس، درصورت ناپایدار یا بیکیفیت بودن اینترنت کاربر، بیمعنی خواهد شد. بهبیان دیگر تمامی بخشهای نرمافزار، محتوا و تکنولوژیهای مورد استفاده، به سرعت اینترنت کاربر نهایی وابسته هستند. در اینجا برای درک بهتر چگونگی رفع چالشهای احتمالی توسط شرکت، باید مفاهیم اولیهی کارکرد اینترنت را متوجه شویم.
زمانیکه کاربر فعالیتی نیازمند به ارتباط اینترنتی انجام میدهد، یک درخواست (Request) بهسمت ارائهدهندهی سرویس اینترنت یا همانISP ارسال میشود. اپراتور اینترنت، درخواست را به سرور وبسایت موردنظر ارسال میکند. سرور نیز یک پاسخ (Response) برای شما ارسال میکند که نتیجه را شکل خواهد داد. برای نتفلیکس و دیگر سرویسهای بزرگ اینترنتی که میلیونها ساعت ویدئو را را از سرورهای خود بهسمت کاربران میفرستند، شبکهای از سرورها مورد نیاز است که در اصطلاح فنی بهنام CDN شناخته میشوند.
CDN بهبیان ساده، محتوای وبسایت اصلی را بهصورت کامل دریافت کرده و آن را در شبکهای از سرورهای خود در سرتاسر جهان پخش میکند. درتعریف ساده وقتی شما از غرب آسیا به نتفلیکس متصل میشوید، بهجای سرور اصلی شرکت در آمریکا، با نزدیکترین سرور CDN به کشور ارتباط خواهید داشت. درنهایت، استفاده از CDN، زمان بافر (زمان مورد نیاز برای ارسال درخواست و دریافت پاسخ از سرور) را بسیار کاهش میدهد. درواقع CDN ابزاری است که باعث میشود وبسایتهای بزرگ همچون گوگل، فیسبوک و یوتیوب نیز در هرنقطه از جهان با هر سرعت اینترنت، با سرعتی مناسب بارگذاری شوند.
نتفلیکس برای ارائهی خدمات از چندین شبکهی تحویل محتوا یا CDN استفاده میکرد. این شبکهها توسط غولهای بازار همچون Akamai، Level 3 و Limelight عرضه مشد. البته، افزایش کاربران، نیاز به ارائهی هرچه بهتر محتوا با هزینهی پایینتر را طلب میکرد و بههمین دلیل، نتفلیکس شبکهی خود را با نام Open Connect توسعه داد.
در بخش ارائهی محتوا، نتفلیکس بهجای تکیه بر سرورهای AWS، سرورهای خود را پیادهسازی میکند. البته در این حوزه، سرورها تنها وظیفهی ذخیرهسازی و ارائهی محتوا را دارند. شرکت برای پیادهسازی سرویسهای مذکور، با ارائهدهندگان اینترنت در مناطق مختلف جهان مذاکره میکند و سختافزاری بانام اوپن کانکت بهشکل یک جعبهی قرمز بهصورت رایگان در اختیار آنها قرار میدهد.
اپراتورهای اینترنت در نقاط مختلف، جعبههای معروف نتفلیکس را درکنار سرورها نصب میکنند. این دستگاههای اوپن کانکت، محتوای نتفلیکس را از سرورهای اصلی در آمریکا دانلود میکنند. بهعلاوه چند عدد از آنها در سرورها استفاده میشود تا محتوای مناسب هر منطقه را بسته به نیاز و علاقهی کاربران، در اولویت بالاتری دانلود کند. درنتیجه، فیلمی که طرفدار کمتری دارد با سرعت پایینتری نسبت به سریال پرطرفداری همچون Stranger Things بارگذاری خواهد شد. درنهایت، وقتی برای مشاهدهی فیلمی به نتفلیکس مراجعه میکنیم، بهجای اتصال به سرور آمریکا، به نزدیکترین دستگاه اوپن کانکت متصل خواهیم شد.
دستگاههای اوپن کانکت نتفلیکس بهنوعی درایوهای ذخیرهسازی فیلم محسوب میشوند که در سرتاسر جهان، پخش شدهاند. هرچه این دستگاهها به کاربر نزدیکتر باشند، سرعت بارگذاری محتوا نیز بیشتر خواهد شد. البته، فرایند کمی پیچیدهتر است. نتفلیکس پس از صدور دستور پخش سریال توسط کابر، ابتدا به ۱۰ دستگاه اوپن کانکت در نزدیکی او متصل میشود و سپس از بین آنها، نزدیکترین را با بهترین سرعت، انتخاب میکند.
خلاصه فرایند پخش محتوا در نتفلیکس
زمانیکه کاربر از سرویس نتفلیکس استفاده میکند، بهترتیب این اتفاقات رخ خواهد داد:
صدها مایکروسرویس یا بهبیان بهتر برنامههای مستقل، با یکدیگر همکاری میکنند تا یک سرویس بزرگ نتفلیکس اجرا شد.
محتوایی که بهصورت قانونی خریداری شده است، به فرمت و ابعادی تبدیل میشود که با صفحهی نمایش و دستگاه کاربر همخوانی داشته باشد.
سرورها در سرتاسر جهان یک کپی از فیلم موردنظر را ذخیره میکنند تا نزدیکترینِ آنها به کاربر، محتوا را با سرعت بالا به او عرضه کند.
وقتی کاربر دستور پخش را به اپلیکیشن میدهد، نزدیکترین سرور انتخاب شده و فرمت مناسب پخش میشود.
منبع:زومیت