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