
نظرًا لأن العديد منا يستعدون لمؤتمر PyCon ، فقد أردنا التحدث قليلاً عن كيفية استخدام Python في Netflix. نستخدم Python طوال دورة الحياة بأكملها: من تحديد السلسلة إلى التمويل ، وانتهاءً بعمل CDN لشحن الفيديو إلى 148 مليون مستخدم. نحن نساهم في العديد من حزم بيثون مفتوحة المصدر ، بعضها مذكور أدناه. إذا كان هناك شيء يثير اهتمامك ، فراجع
موقع الشواغر لدينا أو ابحث عنا على PyCon.
فتح الاتصال
Open Connect هي شبكة توصيل محتوى Netflix (CDN). هناك طريقة بسيطة ، وإن كانت غير دقيقة ، لتقديم البنية الأساسية لـ Netflix وهي: كل شيء يحدث قبل الضغط على زر التشغيل في جهاز التحكم عن بُعد (على سبيل المثال ، تسجيل الدخول وتحديد خطة تعريفة ونظام توصية واختيار أفلام) يعمل في Amazon Web Services (AWS) وكل ما يحدث بعد ذلك (أي دفق الفيديو) يعمل من خلال Open Connect. يتم استضافة المحتوى على شبكة خادم Open Connect CDN في أقرب وقت ممكن للمستخدم النهائي من أجل تحسين جودة المشاهدة للعملاء وخفض تكاليف Netflix وشركائنا وموفري الإنترنت.
هناك حاجة إلى أنظمة برمجية مختلفة لتصميم وتطوير وتشغيل شبكات CDN ، وكثير منها مكتوب بلغة Python. يتم التحكم بشكل أساسي في أجهزة شبكة CDN بواسطة تطبيقات Python. تراقب هذه التطبيقات حالة أجهزة الشبكة: أي الأجهزة المستخدمة ، والنماذج ، وأي مكونات الأجهزة ، أين توجد. يتم التحكم في تكوين هذه الأجهزة بواسطة العديد من الأنظمة الأخرى ، بما في ذلك "مصدر الحقيقة" ، وتطبيقات تكوين الجهاز ، والنسخ الاحتياطية. تفاعل الأجهزة لجمع البيانات الصحية وغيرها من البيانات التشغيلية هو تطبيق Python آخر. لطالما كانت Python لغة برمجة شائعة على الويب لأنها لغة بديهية تتيح لك حل مشكلات الشبكة بسرعة. تم تطوير العديد من المكتبات المفيدة التي تجعل اللغة أكثر ملاءمة للتعلم والاستخدام.
هندسة الطلب
تعتبر Demand Engineering مسؤولة عن
معالجة حالات الفشل الإقليمية وتوزيع حركة المرور وعرض النطاق الترددي وأداء الخادم في سحابة Netflix. يمكننا القول بكل فخر أن أدواتنا مبنية في المقام الأول على بيثون. تستخدم خدمة تجاوز الفشل nipy و scipy للتحليل العددي ، boto3 لإجراء تغييرات على البنية التحتية AWS ، rq لتشغيل أحمال العمل غير المتزامنة ، وكلها ملفوفة في طبقة API رفيعة من Flask. القدرة على المغادرة مع الفشل في قذيفة
bpython والارتجال أكثر من مرة حفظت الموقف.
نحن نستخدم بنشاط Jupyter Notebooks و
nteract لتحليل البيانات التشغيلية
وأدوات التصور النموذج الأولي للكشف عن انحدارات القدرات.
CORE
يستخدم فريق CORE بيثون لتحليل الإحصاءات وإصدار التنبيهات. نحن نعتمد على العديد من المكتبات الإحصائية والرياضية (شاذ ، سكيبي ، تمزق ، الباندا) لأتمتة تحليل 1000 إشارة ذات صلة عندما تشير أنظمة الإنذار إلى مشاكل. لقد طورنا نظام ارتباط سلسلة زمنية يستخدم داخل الفريق وخارجه ، وكذلك نظام عمل موزع لموازنة كمية كبيرة من العمل التحليلي للحصول على نتائج سريعة.
نستخدم أيضًا Python عادةً لمهام الأتمتة والبحث وتصفية البيانات وكأداة تصورية مريحة.
الرصد والإنذار والانتعاش التلقائي
يعد فريق Insight Engineering مسؤولاً عن تطوير وتشغيل الأدوات اللازمة للتعرف السريع على المشكلات والتنبيهات والتشخيصات والإصلاحات التلقائية. مع تزايد شعبية بيثون ، يدعم الفريق الآن عملاء بيثون لمعظم خدماته. ومن الأمثلة على ذلك مكتبة عميل
Spectator للرمز الذي يسجل مقاييس السلسلة الزمنية الأبعاد. ننشئ مكتبات Python للتفاعل مع الخدمات الأخرى على منصة Netflix. بالإضافة إلى المكتبات ، تم تصميم منتجات
Winston و
Bolt باستخدام أطر Python (Gunicorn + Flask + Flask-RESTPlus).
أمن المعلومات
يستخدم فريق أمان المعلومات Python في عدد من المهام المهمة ، بما في ذلك أتمتة الأمن وتصنيف المخاطر وتحديد الثغرات وتحديدها تلقائيًا. قمنا بنشر الكود المصدري للعديد من المنتجات الناجحة ، بما في ذلك
Security Monkey (مشروعنا الأكثر نشاطًا مفتوح المصدر). يستخدم Python لحماية موارد SSH الخاصة بنا مع
Bless . يستخدم فريق أمان البنية التحتية Python لتكوين أذونات IAM باستخدام
Repokid . تساعد البرامج النصية Python في إنشاء شهادات TLS في
ليمور .
تتضمن بعض مشاريعنا الحديثة Prism: إطار دفعي يساعد مهندسي الأمن في تحليل حالة البنية التحتية وتحديد عوامل الخطر ونقاط الضعف في التعليمات البرمجية المصدر. نوفر حاليًا مكتبات Python و Ruby لـ Prism. تتم كتابة أداة الطب الشرعي ديفي (الطب الشرعي الكمبيوتر) بالكامل في بيثون. نستخدم أيضًا Python لاكتشاف البيانات الحساسة باستخدام Lanius.
خوارزميات التخصيص
نحن نستخدم بيثون على نطاق واسع في
إطار التعلم الآلي للتخصيص . يتم تدريس بعض النماذج هنا التي توفر الجوانب الرئيسية لوظائف Netflix: من
خوارزميات التوصية إلى
خوارزميات التحديد والتسويق . على سبيل المثال ، تستخدم بعض الخوارزميات مكتبات TensorFlow و Keras و PyTorch لتعلم الشبكات العصبية العميقة و XGBoost و LightGBM لتعلم أشجار القرارات بتدرج متدرج أو مجموعة Python أوسع (على سبيل المثال ، مكتبات numpy و scipy و sklearn ومكتبات matplotlib و pandas و cvxpy). نظرًا لأننا نحاول باستمرار أساليب جديدة ، فإننا نستخدم دفاتر Jupyter للعديد من التجارب. لقد طورنا أيضًا عددًا من المكتبات عالية المستوى لدمج أجهزة الكمبيوتر المحمولة مع بقية نظامنا
البيئي (على سبيل المثال ، الوصول إلى البيانات وتسجيل الحقائق واستخراج السمات وتقييم النماذج والنشر).
آلة التعلم البنية التحتية
بالإضافة إلى التخصيص ، يطبق Netflix التعلم الآلي على مئات المهام الأخرى في جميع أنحاء الشركة. تعمل العديد من هذه التطبيقات على Metaflow ، منصة Python التي تسهل تنفيذ مشاريع ML وتشغيلها من مرحلة النموذج الأولي إلى الإنتاج.
يدفع Metaflow حدود Python: نستخدم رمز Python المتوازي والمُحسّن لاستخراج البيانات بسرعة 10 جيجابت / ثانية ، ومعالجة مئات الملايين من نقاط البيانات في الذاكرة وتنظيم العمليات الحسابية على عشرات الآلاف من مراكز وحدة المعالجة المركزية.
أجهزة الكمبيوتر المحمولة
نحن في Netflix مستخدمون متعطشين لأجهزة الكمبيوتر المحمولة Jupyter ، وقد كتبنا بالفعل عن
أسباب وطبيعة هذه الاستثمارات .
لكن بيثون تلعب دورًا كبيرًا في كيفية تقديم هذه الخدمات. إنها اللغة الأساسية لتطوير التفاعلات المختلفة مع نظام Jupyter البيئي وتصحيحها والبحث عنها ووضع نماذج أولية لها. نستخدم Python لإنشاء ملحقات مخصصة لخادم Jupyter ، والذي يسمح لنا بإدارة مهام مثل تسجيل أجهزة الكمبيوتر المحمولة وتسجيلها ونشرها واستنساخها نيابة عن المستخدمين. نوفر لمستخدمينا العديد من الخيارات في Python من خلال نوى Jupyter المختلفة والتحكم في نشر مواصفات kernel هذه باستخدام Python أيضًا.
تزامن
فريق تنسيق البيانات الكبيرة مسؤول عن توفير جميع الخدمات والأدوات اللازمة لتخطيط وتنفيذ خطوط أنابيب ETL و Adhoc.
تتم كتابة العديد من مكونات تزامن في بيثون. البدء بجدولة تستخدم
Jupyter و
papermill notepads لأنواع وظائف القالب (Spark، Presto ...). هذا يوفر للمستخدمين طريقة موحدة وسهلة للتعبير عن العمل الذي يجب القيام به.
هنا يمكنك قراءة المزيد حول هذا الموضوع. استخدمنا دفاتر الملاحظات كقوائم حقيقية للعمليات في الإنتاج ("سجلات التشغيل") في المواقف التي تتطلب تدخلًا بشريًا ، على سبيل المثال ، إعادة تشغيل كل ما حدث في الساعة الأخيرة.
للاستخدام الداخلي ، قمنا ببناء منصة تحركها الأحداث مكتوبة بالكامل في بيثون. يتلقى تدفقات الحدث من عدد من الأنظمة التي يتم دمجها في أداة واحدة. يتيح لك هذا تحديد شروط تصفية الأحداث أو الاستجابة لها أو التوجيه. كنتيجة لذلك ، تمكنا من عزل الخدمات المصغرة وضمان الشفافية في كل ما يحدث على منصة البيانات.
قام فريقنا أيضًا بتطوير عميل
pygenie ، الذي يتفاعل مع خدمة إكمال الوظيفة
Genie federated. داخليًا ، لدينا إضافات إضافية لهذه المكتبة التي تطبق اتفاقيات العمل وتتكامل مع النظام الأساسي لـ Netflix. هذه المكتبات هي الطريقة الأساسية للمستخدمين للتفاعل برمجياً مع منصة البيانات الكبيرة.
أخيرًا ، ساهم فريقنا في
papermill ومشاريع
سجل القصاصات المفتوحة المصدر: لقد أضفنا كودًا لحالات الاستخدام الخاصة بنا والخارجية. لقد لقيت جهودنا ترحيباً جيداً في مجتمع المصادر المفتوحة ، ونحن سعداء للغاية.
منصة تجريبية
يقوم فريق الحسابات العلمية بإنشاء منصة للتجارب: اختبارات AB وغيرها. يمكن للعلماء والمهندسين أن يجربوا الابتكار في ثلاثة مجالات: البيانات والإحصاءات والتصور.
مستودع القياسات الخاص بنا هو عبارة عن
نظام Python يستند إلى
PyPika والذي يسمح لك بكتابة استعلامات SQL ذات معلمات قابلة لإعادة الاستخدام. هذا هو نقطة الدخول لأي تحليل جديد.
تعتمد مكتبة النماذج السببية للنماذج السببية على Python و R: هنا ، يتم إعطاء العلماء الفرصة لاستكشاف نماذج سببية جديدة. يستخدم PyArrow و RPy2 ، لذلك يتم حساب الإحصائيات بسهولة بأي لغة.
وتستند مكتبة التصور على
بلوتلي . نظرًا لأن Plotly هي مواصفات شائعة للتصورات ، فهناك العديد من أدوات الإخراج التي تذهب إلى منصاتنا.
النظام البيئي التابعة لها
يستخدم فريق النظام البيئي الشريك Python لاختبار تطبيقات Netflix على الأجهزة. تُشكل Python جوهر البنية الأساسية للتكامل المستمر الجديد ، بما في ذلك إدارة خوادم orchestration الخاصة بنا ، وإدارة Spinnaker ، وطلبات مجموعة الاختبارات ، والتصفية ، وتشغيل اختبارات التخطيط على الأجهزة والحاويات. يتم إجراء تحليل إضافي لما بعد الإطلاق في Python باستخدام TensorFlow لتحديد الاختبارات التي من المحتمل أن تتسبب في حدوث مشكلات على الأجهزة.
ترميز الفيديو وتطوير سحابة الوسائط
يعتني فريقنا بترميز (وتشفير) كتالوج Netflix ويستخدم أيضًا التعلم الآلي لتحليل هذا الكتالوج.
نستخدم Python في حوالي 50 مشروعًا ، مثل
vmaf و
mezzfs ،
وننشئ حلولًا لرؤية الكمبيوتر باستخدام النظام الأساسي لتخفيض الخريطة المسمى
Archer ، ونستخدم Python في العديد من المشاريع الداخلية.
لقد فتحنا أيضًا العديد من الأدوات لتسهيل تطوير / توزيع مشاريع بايثون ، مثل
setupmeta و
pickley .
Netflix و NVFX Animation
Python هو معيار الصناعة لجميع التطبيقات الرئيسية التي نستخدمها لإنشاء محتوى متحرك و VFX ، لذلك من نافلة القول أننا نستخدمه بشكل مكثف. جميع عمليات التكامل الخاصة بنا مع Maya و Nuke مصنوعة في Python ، ومعظم أدوات Shotgun الخاصة بنا أيضًا. لقد بدأنا للتو أدوات البناء في السحابة وسنقوم بنشر العديد من بيثون AMI / حاويات مخصصة هناك.
تعلم الآلة في المحتوى والعلوم والتحليلات
يستفيد فريق التعلم الآلي في المحتوى من استخدام Python على نطاق واسع لتطوير نماذج للتعلم الآلي تكون في صميم التنبؤ بحجم الجمهور وعروضهم ومقاييس أخرى لجميع المحتوى.