در این مطلب، توسعهدهندگان پایتونی که در Netflix کار میکنند سعی دارند تا کارهایی که با استفاده از پایتون در Netflix انجام میدهند را به ما معرفی کنند. پایتون تقریبا در بیشتر بخشهای نتفلیکس استفاده میشود، از سیستم Recommendation گرفته تا مدیریت CDN برای ارائه محتوای ویدیویی به ۱۴۸ میلیون عضو. توسعهدهندگان پایتون نتفلیکس از کتابخانهها و ابزارهای مختلفی نیز استفاده میکنند که در روند خواندن مطلب با چند مورد آنها آشنا خواهید شد.
Open Connect
Open Connect سرویس CDN مربوط به نتفلیکس است. برای آنکه بهتر با زیرساخت کلی نتفلیکس آشنا شویم بیایید کل فرایند کار با نتفلیکس را به دو قسمت تقسیم کنیم. قبل و بعد از پخش شدن یک ویدیو: هر کاری که قبل از پخش شدن یک ویدیو در نتفلیکس صورت میگیرد، «برای مثال، آیا وارد سیستم شدهاید؟ چه پلنی دارید؟ چه مواردی را تا به حال مشاهده کردهاید «برای مدیریت سیستم Recommendation» و…» روی سرویسهای وب آمازون یا همان AWS انجام میشود. اما بعد از آنکه روی دکمه پخش کلیک کردید، فرایند پخش آن را شبکه Open Connect بعهده میگیرد. در این شبکه محتوایی، فیلمها از طریق نزدیکترین سرور به مخاطب پخش خواهد شد. این کار هم سرویس استریمینگ نتفلیکس را بهتر میکند و هم هزینه اینترنت کاربر را کاهش میدهد.
بسیاری از سیستمهای نرمافزاری موجود نیاز دارند که چنین ساختاری را برای مدیریت CDN ایجاد کنند و جالب است بدانید که بسیاری از آنها از پایتون برای انجام چنین کاری استفاده میکنند. بسیاری از دستگاههای شبکه که بخش عظیمی از زیرساختهای CDN را تشکیل میدهند توسط اپلیکیشنهای پایتونی مدیریت میشوند. این اپلیکیشنها میتوانند به خوبی شبکههای ما را مدیریت کرده و اطلاعات مربوط به آن را فهرست کنند: چه دستگاهی، با چه مدلی، با چه قطعات سختافزاری در کدام وبسایتها قرار گرفتهاند. حال سیستمهایی که قرار است این دستگاهها را پیکربندی کنند نیز از الگوریتمهایی بهره میگیرند که بخشی از آنها با پایتون نوشته شده است. پایتون برای مدت طولانی است که یکی از زبانهای محبوب و تا حدی اصلی در دنیای شبکه بوده، دلایل بسیاری هم برای این موضوع وجود دارد اما در هر حال پایتون زبانی است که به مهندسین این امکان را میدهد تا بتوانند با سرعت بسیار بیشتری مشکلاتشان را حل کنند و همچنین وجود کتابخانههای بسیار زیاد آن قابلیت استفاده از پایتون در هر فیلدی را به میدهد.
Demand Engineering
Demand Engineering بخشی است که وظیفه Regional Failovers، توزیع ترافیک، عملیاتهای مربوط به Capacity و Fleet Efficiency کلود نتفلیکس را بر عهده دارد. تمام ابزارهایی که برای انجام این کار پیادهسازی شدهاند از پایتون استفاده میکنند. برای بحث orchestrates failover از numpy و scipy، برای ایجاد تغییرات در زیرساختهای AWS از boto3 و برای اجرای asynchronous workloads از rq استفاده میکنند. در نهایت تمام این موارد نیز در زیر یک لایه از Flask API قرار میگیرد.
همچنین در این بخش استفاده بسیار زیادی از Juoyter Notebooks و nreract برای آنالیز دادههای عملیاتی میشود. ابزارهای nreract نیز به ما در بصری سازی دادهها کمک میکنند.
Core
در تیم اصلی توسعه نتفلیکس از پایتون برای توسعه سیستمهای آنالیز و هشدار استفاده میشود. در پیادهسازی این بخش از کتابخانههای ریاضی و آماری مانند numpy، scipy، reptures و pandas استفاده میکنیم. برای خودکارسازی قسمتهای مختلف، دادهکاوری و انجام کارهای مربوط به بصریسازی نیز به همین صورت از پایتون استفاده میشود.
مانیتورینگ، هشداردهی و auto-remediation
وظیفه تیم Insight Engineering در نتفلیکس ایجاد و مدیریت ابزارهای مانیتورینگ، هشداردهی و auto-remediation است. این تیم برای بیشتر سرویسهای خود از پایتون استفاده میکنند. یکی از کتابخانههایی که توسط این تیم توسعه داده شده و حال به صورت متن باز در اختیار همگان است، Spectator نام دارد.
امنیت اطلاعات
تیم امنیتی نتفلیکس از پایتون برای پیادهسازی موارد مختلفی استفاده میکند. خودکارسازی فرایندهای امنیتی، کلاسبندی ریسک، auto-remediation و شناسایی آسیبپذیریها تنها چند مورد از کارهایی هستند که توسط پایتون انجام میشوند. Security Monkey نام یکی از کتابخانههای امنیتی است که توسط نتفلیکس توسعه داده شده و به صورت متن باز در اختیار همگان قرار گرفته است. برای محافظت از منابع ssh ما Bless را توسعه دادیم و همچنین برای ایجاد گواهینامههای TLS از Lemur استفاده میکنیم.
الگوریتمهای شخصیسازی
برای بحث زیرساختهای مربوط به یادگیری ماشین و شخصیسازی ما به صورتی گسترده از پایتون استفاده میکنیم. برخی از الگوریتمهایی که در این زمینه پیادهسازی کردهایم نیز از کتابخانههایی مانند TensorFlow، Keras و PyTorch استفاده میکنند.
زیرساختهای یادگیری ماشین
در کنار الگوریتمهای شخصیسازی ما از مدلهای مختلف یادگیری ماشین نیز استفاده میکنیم. بسیاری از این اپلیکیشنها از MetaFlow استفاده میکنند. فریمورک پایتونی که به ما کمک میکند تا به آسانی پروژههای یادگیری ماشین را اجرا کنیم.
Notebooks
ما در نتفلیکس به دلایل مختلفی از Jupyter استفاده میکنیم. حال برای آنکه بتوانیم اکوسیستم این ابزار را توسعه بدهیم پایتون را به کار میگیریم.
اکوسیستم Partner
گروه اکوسیستم Partner وظیفه تستینگ اپلیکیشنهای نتفلیکس روی دستگاهها را به عهده دارد که برای انجام چنین کاری از پایتون استفاده میکند.
انکودینگ ویدیو
در بحث انکود و ری-انکود کاتالوگهای نتفلیکس نیز از پایتون استفاده میشود. از پایتون تقریبا در ۵۰ پروژه مانند vmaf و mezzfs استفاده میشود.
انیمیشن و NVFX
در تمام اپلیکیشنهایی که ما برای ایجاد انیمیشن و محتوای VFX از آنها استفاده کردهایم، پایتون به عنوان یک استاندارد وجود داشته است. تمام ادغامسازیهایی که با Maya و Nuke انجام میشود از پایتون استفاده میکند. ابزار Shotgun نیز از پایتون استفاده میکند.
Content Machine Learning
تیم Content Machine Learning نیز که روی توسعه مدلهای یادگیری ماشین تمرکز دارد از پایتون استفاده میکند. این تیم روی پیشبینی حجم مخاطبین، بینندگان و فاکتورهای مورد نیاز دیگر کار میکنند.
Big Data Orchestration
تیم Big Data Orchestration روی اجرای ETL یا Execute, Transform, Load تمرکز دارد. بسیاری از اجزای این سرویس با استفاده از پایتون توسعه داده شده است.
پلتفرم آزمایش و تحقیق
تیم محاسبات عملی که در نتفلیکس روی دادهها، آمار و بصریسازی فعالیت دارند نیز به صورت متمرکز از پایتون استفاده میکنند.
در این فرایند از ابزارهایی مانند PyArrow، RPy2 و PyPika استفاده میشود. برای بصریسازی دادهها در این پلتفرم ما از Plotly استفاده میکنیم.
در پایان
در این مطلب ما کارهایی را بررسی کردیم که نتفلیکس برای انجام آنها از پایتون استفاده میکند. همچنین کتابخانه های بسیاری را معرفی کردیم که میتوانید از آنها در پروژههای خودتان نیز استفاده کنید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید