By Pythonistas at Netflix, coordinated by Amjith Ramanujam and edited by Ellen Livengood
As many of us prepare to go to PyCon, we wanted to share a sampling of how Python is used at Netflix. We use Python through the full content lifecycle, from deciding which content to fund all the way to operating the CDN that serves the final video to 148 million members. We use and contribute to many open-source Python packages, some of which are mentioned below. If any of this interests you, check out the jobs site or find us at PyCon. We have donated a few Netflix Originals posters to the PyLadies Auction and look forward to seeing you all there.
Open Connect
Open Connect— это сеть доставки контента (CDN) Netflix.Простой, хотя и неточный взгляд на инфраструктуру Netflix состоит в том, что все это происходит до того, как вы нажмете «Воспроизвести» на пульте дистанционного управления (например, вы вошли в систему? какой у вас план? что вы смотрели, чтобы мы могли порекомендовать вам новые названия? что вы хотите посмотреть?) происходит в Amazon Web сервисы (AWS), в то время как все, что происходит после этого (т. е. потоковая передача видео), происходит в сети Open Connect. Контент размещается в сети серверов в CDN Open Connect как можно ближе к конечному пользователю, что улучшает возможности потоковой передачи для наших клиентов и сократить расходы как для Netflix, так и для наших партнеров-провайдеров интернет-услуг (ISP).
Для проектирования, создания и эксплуатации этой инфраструктуры CDN необходимы различные программные системы, и значительное их количество написано на Python.Сетевые устройства, лежащие в основе значительной части CDN, в основном управляются приложениями Python. Такие приложения отслеживают инвентарь нашего сетевого оборудования: какие устройства, какие модели, с какими аппаратными компонентами, в каких местах расположены.Конфигурация этих устройств контролируется несколькими другими системами, включая источник правды, применение конфигураций к устройствам и резервное копирование.Взаимодействие с устройствами для сбора данных о работоспособности и других рабочих данных является еще одним приложением Python.Python долгое время был популярным языком программирования в сетевом пространстве, поскольку это интуитивно понятный язык, который позволяет инженерам быстро решать сетевые проблемы.Впоследствии разрабатывается множество полезных библиотек, что делает язык еще более привлекательным для изучения и использования.
Demand Engineering
Demand Engineering is responsible for Regional Failovers, Распределение трафика, Операции с емкостью и Эффективность парка в облаке Netflix Мы с гордостью можем сказать, что инструменты нашей команды построен в основном на Python.Служба, которая организует аварийное переключение, использует numpy и scipy для выполнения числового анализа, boto3 для внесения изменений в нашу инфраструктуру AWS, rq для запуска асинхронных рабочих нагрузок, и мы упаковываем все это в тонкий слой Flask. API, возможность заглянуть вbpython shell and improvise has saved the day more than once.
We are heavy users of Jupyter Notebooks and nteract to analyze operational data and prototype visualization tools that help us detect capacity regressions.
CORE
Команда CORE использует Python в нашей работе по оповещению и статистическому анализу Мы опираемся на многие статистические и математические библиотеки (numpy, scipy, ruptures, pandas), чтобы помочь автоматизировать анализ тысяч связанных сигналов, когда наши системы оповещения Мы разработали систему корреляции временных рядов, используемую как внутри, так и вне команды, а также распределенную рабочую систему для распараллеливания больших объемов аналитической работы для быстрого получения результатов.
Python is also a tool we typically use for automation tasks, data exploration and cleaning, and as a convenient source for visualization work.
Monitoring, alerting and auto-remediation
The Insight Engineering team is responsible for building and operating the tools for operational insight, alerting, diagnostics, and auto-remediation. With the increased popularity of Python, the team now supports Python clients for most of their services. One example is the Spectator Python client library, a library for instrumenting code to record dimensional time series metrics. We build Python libraries to interact with other Netflix platform level services. In addition to libraries, the Winston and Bolt products are also built using Python frameworks (Gunicorn + Flask + Flask-RESTPlus).
Information Security
Команда информационной безопасности использует Python для достижения ряда важных целей для Netflix: автоматизация безопасности, классификация рисков, автоматическое исправление и идентификация уязвимостей, и это лишь некоторые из них. открытые источники, в том числеSecurity Monkey(самый активный проект нашей команды с открытым исходным кодом) Мы используем Python для защиты наших ресурсов SSH. с использованиемBless. Our Infrastructure Security team leverages Python to help with IAM permission tuning using Repokid. We use Python to help generate TLS certificates using Lemur.
Some of our more recent projects include Prism: a batch framework to help security engineers measure paved road adoption, risk factors, and identify vulnerabilities in source code. We currently provide Python and Ruby libraries for Prism. The Diffy forensics triage tool is written entirely in Python. We also use Python to detect sensitive data using Lanius.
Personalization Algorithms
We use Python extensively within our broader Personalization Machine Learning Infrastructure to train some of the Machine Learning models for key aspects of the Netflix experience: from our recommendation algorithms to artwork personalization to marketing algorithmsНапример, некоторые алгоритмы используют TensorFlow, Keras и PyTorch для изучения Deep Neural Networks, XGBoost и LightGBM. чтобы изучить Gradient Boosted Decision Trees или более широкий научный стек в Python (например, numpy, scipy, sklearn, matplotlib, pandas, cvxpy), Поскольку мы постоянно пробуем новые подходы, мы используем Jupyter Notebooks для проведения многих наших экспериментов. Мы также разработали ряд библиотек более высокого уровня, чтобы помочь интегрировать их с остальными нашими программами.ecosystem (e.g. data access, fact logging and feature extraction, model evaluation, and publishing).
Machine Learning Infrastructure
Besides personalization, Netflix applies machine learning to hundreds of use cases across the company. Many of these applications are powered by Metaflow, a Python framework that makes it easy to execute ML projects from the prototype stage to production.
Metaflow pushes the limits of Python: We leverage well parallelized and optimized Python code to fetch data at 10Gbps, handle hundreds of millions of data points in memory, and orchestrate computation over tens of thousands of CPU cores.
Notebooks
Мы активные пользователи ноутбуков Jupyter в Netflix, и мы писали оreasons and nature of this investment before.
But Python plays a huge role in how we provide those services. Python is a primary language when we need to develop, debug, explore, and prototype different interactions with the Jupyter ecosystem. We use Python to build custom extensions to the Jupyter server that allows us to manage tasks like logging, archiving, publishing, and cloning notebooks on behalf of our users.We provide many flavors of Python to our users via different Jupyter kernels, and manage the deployment of those kernel specifications using Python.
Orchestration
The Big Data Orchestration team is responsible for providing all of the services and tooling to schedule and execute ETL and Adhoc pipelines.
Many of the components of the orchestration service are written in Python. Starting with our scheduler, which uses Jupyter Notebooks with papermillпредоставить шаблонные типы заданий (Spark, Presto, …). Это позволяет нашим пользователям стандартизированный и простой способ выразить работу, которую необходимо выполнить. Вы можете увидеть некоторые более подробные сведения о предметеhere, Мы использовали блокноты как настоящие модули Runbook. для ситуаций, когда требуется вмешательство человека — например: перезапустить все, что не удалось за последний час.
Internally, we also built an event-driven platform that is fully written in Python. We have created streams of events from a number of systems that get unified into a single tool. This allows us to define conditions to filter events, and actions to react or route them. As a result of this, we have been able to decouple microservices and get visibility into everything that happens on the data platform.
Our team also built the pygenie client which interfaces with Genie, a federated job execution service. Internally, we have additional extensions to this library that apply business conventions and integrate with the Netflix platform. These libraries are the primary way users interface programmatically with work in the Big Data platform.
Наконец, наша команда обязалась внести свой вклад вpapermill and scrapbookпроекты с открытым исходным кодом. Наша работа там была как для наших собственных, так и для внешних вариантов использования. Эти усилия набирают большую популярность в сообществе открытого исходного кода. и мы рады возможности внести свой вклад в эти общие проекты.
Experimentation Platform
The scientific computing team for experimentation is creating a platform for scientists and engineers to analyze AB tests and other experiments. Scientists and engineers can contribute new innovations on three fronts, data, statistics, and visualizations.
The Metrics Repo is a Python framework based on PyPika that allows contributors to write reusable parameterized SQL queries. It serves as an entry point into any new analysis.
The Causal Models library is a Python & R framework for scientists to contribute new models for causal inference. It leverages PyArrow and RPy2 so that statistics can be calculated seamlessly in either language.
The Visualizations library is based on Plotly. Since Plotly is a widely adopted visualization spec, there are a variety of tools that allow contributors to produce an output that is consumable by our platforms.
Partner Ecosystem
The Partner Ecosystem group is expanding its use of Python for testing Netflix applications on devices. Python is forming the core of a new CI infrastructure, including controlling our orchestration servers, controlling Spinnaker, test case querying and filtering, and scheduling test runs on devices and containers. Additional post-run analysis is being done in Python using TensorFlow to determine which tests are most likely to show problems on which devices.
Video Encoding and Media Cloud Engineering
Our team takes care of encoding (and re-encoding) the Netflix catalog, as well as leveraging machine learning for insights into that catalog.
We use Python for ~50 projects such as vmaf and mezzfs,
we build computer vision solutions using a media map-reduce platform called Archer,
and we use Python for many internal projects.
We have also open sourced a few tools to ease development/distribution of Python projects, like setupmeta and pickley.
Netflix Animation and NVFX
Python является отраслевым стандартом для всех основных приложений, которые мы используем для создания анимационного контента и визуальных эффектов, поэтому само собой разумеется, что мы используем его очень интенсивно.Все наши интеграции с Maya и Nuke находятся на Python, и большая часть нашего Инструменты Shotgun также находятся на Python.Мы только начинаем размещать наши инструменты в облаке и ожидаем развертывания многих наших собственных AMI/контейнеров Python.
Content Machine Learning, Science & Analytics
The Content Machine Learning team uses Python extensively for the development of machine learning models that are the core of forecasting audience size, viewership, and other demand metrics for all content.