RSS Netflix TechBlog - Medium Заметка

RSS Netflix TechBlog - Medium

Блог Netflix Tech Blog рассказывает о том, как Netflix работает с технологиями. Они проводят исследования в области науки о данных, инженерии, дизайна и технологических инноваций. Они демонстрируют свои инновации, такие как собственная сеть доставки контента, и рассказывают о своих усилиях по обеспечению надежности сервиса.

Трэд заметок

Динамическое разделение широких разделов в Cassandra для рабочих нагрузок временных рядов

Абстракция TimeSeries от Netflix обрабатывает и запрашивает петабайты временных данных событий с миллисекундной задержкой, используя Apache Cassandra в качестве хранилища. Широкие разделы, где один раздел накапливает большой объем событий с течением времени, представляют собой серьезную проблему для рабочих нагрузок TimeSeries. Это приводит к высоким задержкам чтения, тайм-аутам, увеличению загрузки ЦП и паузам сборки мусора в кластерах Cassandra. Для решения этой проблемы данные TimeSeries разделяются на дискретные временные блоки, создавая управляемые сегменты. Первоначальная стратегия предоставления ресурсов полагалась на указанные пользователем характеристики рабочей нагрузки и симуляции Монте-Карло для определения оптимальной инфраструктуры и конфигураций разделов. Однако этот подход оказался недостаточным, когда рабочие нагрузки были неизвестны, неточно оценены, менялись со временем или содержали выбросы данных. Для автоматизации корректировок был введен фоновый рабочий процесс для мониторинга гистограмм разделов и динамического перераспределения будущих временных срезов на основе наблюдаемой плотности данных. Эта стратегия перераспределения временных срезов эффективно снижает задержки чтения и тайм-ауты, когда большинство данных демонстрирует схожее поведение широких разделов. Однако эта стратегия не решает проблемы, когда только небольшой процент идентификаторов в таблице является широким. Для таких случаев, а также когда вызывающие стороны требуют все данные, даже при повышенных задержках, была разработана динамическая разбивка по идентификаторам. Этот асинхронный конвейер обнаруживает широкие разделы во время операций чтения и прозрачно разбивает их на оптимальные размеры. Процесс включает обнаружение, планирование и разбиение, а также обслуживание чтений путем перенаправления запросов на разбитые разделы. Обнаружение происходит, когда операция чтения превышает заданный пороговый объем байтов, отправляя событие в Kafka. Система изначально фокусируется на неизменяемых разделах для простоты. Этап планирования считывает весь раздел для создания плана разбиения, используя контрольные точки для обработки сбоев. Разбиение включает делегирование разделения данных конкретным стратегиям, например, назначение большего количества корзин событий временной корзине. Проверка разбиений имеет решающее значение, при этом контрольные суммы обеспечивают целостность данных перед завершением разбиения. Наконец, серверы TimeSeries используют встроенные в память фильтры Блума для эффективного перенаправления запросов на чтение на разбитые разделы, делая перенаправление практически незаметным для вызывающих сторон.
CdXz5zHNQW_JhVMWuRvRR.png

Высокопроизводительная абстракция графов на Netflix: Часть I

Netflix разработал абстракцию графа для обработки операций с графами с высокой пропускной способностью и низкой задержкой, особенно для случаев использования, таких как распределенные графы в реальном времени и социальные графы. Он работает в двух категориях: OLAP для глубокого анализа и OLTP для потоковых пользовательских опытов. Абстракция использует модель графа свойств с узлами и ребрами сильной типизации, организованными в изолированные пространства имен. Каждое пространство имен имеет предварительно определённую схему графа, управляемую через контрольную плоскость шлюза данных. Эта схема позволяет оптимизации, такие как обеспечение качества данных и эффективное планирование запросов. Реальное индексирование использует хранилище ключ-значение для узлов и ребер, используя отдельные индексы для ссылок и свойств. Ссылки ребер индексируются по отношениям источник-назначение. Чтобы обеспечить доступ независимо от направления, это организует идентификаторы лексикографически. Кэширование используется для минимизации усиления записи и чтения. Архитектура абстракции отдает приоритет высокой производительности и включает стратегии, такие как кэширование write-aside.
CdXz5zHNQW_cFaJPOpvqm.png

От изолированных систем к топологии сервисов: Почему Netflix создал карту сервисов в реальном времени

Netflix разработал "динамическую карту" своей распределенной инфраструктуры, называемую Service Topology, чтобы помочь инженерам понять зависимости между сервисами и устранять проблемы. Карта решает проблему более быстрого определения отношений между сервисами и потенциального воздействия во время простоев. Она дает ответы на важные вопросы, такие как какие сервисы зависят друг от друга и где находится источник проблем. Они собрали данные из трех источников: сетевых потоков eBPF, метрик IPC и трассировки от конца до конца. Каждый источник данных дает уникальную перспективу - сетевое подключение, детали на уровне приложения и фактические потоки запросов. Эта многослойная архитектура объединяет эти представления в единую, реальную карту. Система использует отдельные графические базы данных для каждого источника данных, чтобы сохранять независимость и обеспечивать параллельные запросы. Инженеры могут просматривать каждый граф отдельно или объединять их для всестороннего понимания взаимодействия сервисов. Система получает журналы потоков из Kafka в нескольких регионах, обрабатывает их и хранит данные в графических базах данных. Эта динамическая карта помогает инженерам Netflix быстро диагностировать и решать проблемы, обеспечивая бесперебойный просмотр потокового видео.
CdXz5zHNQW_fZOTLLTM4l.png

Масштабирование ArchUnit с помощью Nebula ArchRules

Netflix использует стратегию polyrepo с тысячами Java-репозиториев, требующую эффективного обмена логикой сборки. Они создали набор плагинов Gradle Nebula, включая ArchRules, для управления зависимостями и обеспечения соблюдения стандартов кодирования. Эта инициатива возникла из-за необходимости улучшить управление жизненным циклом Java-библиотек после инцидента с обратно несовместимыми изменениями. Netflix использует аннотации жизненного цикла API (@Deprecated, @Public, @Experimental) для выявления потенциальных проблем с устаревшим кодом. ArchUnit, популярная библиотека для обеспечения соблюдения архитектурных правил, была выбрана для обнаружения неправильного использования этих аннотаций и других проблем с техническим долгом. Плагины Nebula ArchRules позволяют обмениваться правилами ArchUnit и применять их в нескольких репозиториях, предоставляя расширенные возможности. ArchRules использует анализ байт-кода (ASM) для поддержки нескольких языков и простой в использовании шаблон builder, упрощающий создание правил. Правила могут быть включены в библиотеки или определены в отдельных библиотеках правил, автоматически обнаруживаться и запускаться плагином. Плагин ArchRules Runner оценивает правила по наборам исходных кодов и генерирует отчеты в формате JSON и консоли, обеспечивая улучшенные возможности отчетности. Используя ArchRules, Netflix предоставляет платформу для авторов библиотек, позволяющую отслеживать использование API и обнаруживать использование устаревших API.
CdXz5zHNQW_UkqZEpugr5.png

Демократизация машинного обучения в Netflix: построение графа жизненного цикла моделей

Netflix использует машинное обучение в различных областях бизнеса, таких как персонализация, студийное производство, платежи и реклама. По мере роста использования машинного обучения возникла проблема: фрагментированная среда, где модели и данные были изолированы, что препятствовало сотрудничеству и обнаружению. Специалисты по машинному обучению испытывали трудности с пониманием происхождения моделей, источников признаков и их влияния в различных системах. Эта фрагментация мешала получить простые ответы на вопросы о существующих признаках, источниках данных, зависимостях конвейеров и последствиях изменений. Основная трудность заключалась в соединении разрозненных компонентов инфраструктуры машинного обучения, которые генерировали метаданные. Десятки систем, от оркестраторов конвейеров до платформ экспериментов и хранилищ признаков, производили данные в различных форматах. Решение этой задачи требовало сбора разнородных метаданных, преобразования их в единую модель и построения связанного графа для исследования. Решением является Сервис Метаданных (MDS), который строит Граф Жизненного Цикла Модели для взаимосвязи сущностей машинного обучения в Netflix. MDS в реальном времени обрабатывает метаданные машинного обучения, позволяя выполнять междоменные запросы, такие как идентификация экспериментов, использующих определенную модель, или моделей, имеющих общие признаки. Цель состоит в том, чтобы сделать все активы машинного обучения обнаруживаемыми, понятными и повторно используемыми по всей компании. MDS работает на основе основных абстракций: Компоненты, каждый с уникальным AIP URI; Сущности, которые являются специфичными для машинного обучения активами со свойствами; Типы Сущностей, определяющие формы данных; Домены, которые группируют связанные типы сущностей; и Поставщики, конкретные реализации доменов из исходных систем. Такое адресование на основе URI позволяет любой службе универсально ссылаться на любой актив машинного обучения. Процесс построения графа включает несколько этапов. Во-первых, MDS интегрируется с исходными системами через Kafka и AWS SNS/SQS для потребления легких событий, указывающих на изменения. Специальные обработчики событий обрабатывают события из таких систем, как Оркестратор Конвейеров, Реестр Моделей, Хранилище Признаков, Платформа Экспериментов и Платформа Идентификации. Во-вторых, MDS реализует контракт гидратации, проверяя события и вызывая API исходных систем для получения полного состояния, которое затем преобразуется в нормализованную сущность. Эта модель "уведомления об изменении" обеспечивает надежность против проблем с порядком событий, но создает нагрузку на чтение исходных систем. В-третьих, необработанные события преобразуются в единую модель сущностей со стандартизированными полями, создавая согласованный интерфейс для последующих потребителей. Нормализованные сущности стандартизируют имена полей, форматы и преобразуют идентификаторы, специфичные для платформы, в глобальные AIP URI. Наконец, нормализованные сущности сохраняются в Datomic для кэширования и хранения связей, и одновременно индексируются в Elasticsearch. Datomic, с его неизменяемой моделью фактов, поддерживает сложные обходы графа и связи сущностей, позволяя выполнять запросы по нескольким доменам без неэффективных паттернов запросов N+1.
CdXz5zHNQW_EXeyjNVmx8.png

Состояние маршрутизации в Model Serving

Пост в блоге обсуждает технические аспекты того, как инфраструктура обслуживания моделей машинного обучения (ML) Netflix обеспечивает персонализированные trải nghiệm в масштабе различных доменов. Центральная платформа обслуживания моделей ML предоставляет доменно-независимое абстрактное API и возможности маршрутизации трафика для нескольких доменно-специфических микросервисов для вывода моделей. Это единственное API увеличило скорость инноваций для итерации новых версий существующих trải nghiệm ML и включения новых trải nghiệm продуктов с ML. Успех инфраструктуры обслуживания моделей ML зависит от того, чтобы обеспечить исследователям возможность быстро экспериментировать с новыми гипотезами и безопасно выпускать свои модели в производство. Платформа обслуживает сотни типов и версий моделей, обрабатывая 1 миллион запросов в секунду, и работает на уровне рабочих процессов, а не только отдельных функций оценки. Определение модели содержит список фактов, которые необходимо вычислить для вычисления признаков, и оно полагается на платформу обслуживания моделей для предоставления этих фактов во время обслуживания, вызывая несколько других микросервисов. Вызывающие сервисы только cần предоставить стандартный контекст запроса и соответствующий доменный контекст, и модель может сама вычислить признаки и выполнить вывод как часть потока выполнения. Платформа действует как средство быстрой инновации ML и ограничивает воздействие итераций моделей ML на клиентские приложения. Ключевые принципы платформы включают инновации моделей, независимые от клиентских приложений, декуплинг клиентов от шардирования моделей и гибкие правила маршрутизации трафика. Платформа использует пользовательский сервис под названием Switchboard, который служит гибким прокси-слоем для всего трафика, обрабатывая более 1 миллиона запросов в секунду при сохранении высокой доступности и надежности. Switchboard предоставляет единую точку контакта для всех потребностей моделей клиентов и может маршрутизировать запрос на основе богатого набора контекстных признаков. Платформа также вводит понятие "Цель", которое является перечислением, определенным платформой обслуживания, которое каждый запрос в систему должен предоставить. Цель декуплирует клиентов от конкретных моделей и руководит решениями платформы по маршрутизации и выбору моделей. Правила Switchboard - это конфигурация на JavaScript, которая позволяет исследователям присоединять варианты моделей, эксперименты и разделы трафика к Целям без изменения кода клиента. Правила диктуют модель по умолчанию для использования для данной Цели, эксперименты A/B для настройки для набора Целей и настройки для постепенного перенаправления трафика на новую модель. Правила потребляются как Switchboard, так и кластерами обслуживания моделей, и компоненты платформы обслуживания могут выполнять различные действия на основе этих правил. В целом, платформа обеспечивает масштабируемое и гибкое решение для обслуживания моделей ML в Netflix, обеспечивая быструю инновацию и экспериментирование при минимизации воздействия на клиентские приложения.
CdXz5zHNQW_XdCPf6klQA.png

Масштабирование обработки файлов камеры в Netflix

Netflix создала свой пакет для производства медиа (MPS), чтобы оптимизировать рабочие процессы медиа для глобальных производств, стремясь к эффективности и последовательности. Основа MPS использует API FilmLight (FLAPI) для обработки изображений, что является результатом сотрудничества, позволяющего избежать создания всего с нуля. MPS решает такие проблемы, как управление файлами и непоследовательная обработка медиа, автоматизируя задачи и минимизируя ошибки. FLAPI используется для проверки метаданных файлов камер, их нормализации и обеспечения возможности поиска, гарантируя последовательность. FLAPI также генерирует VFX-пластины и конечные продукты с точным управлением цветом и дебайерингом. MPS интегрирован с облаком с использованием Cosmos, что позволяет использовать экземпляры только с ЦП в контейнеризированной среде, максимизируя эффективность. Производственные нагрузки обрабатываются эластично, масштабируясь по требованию, что обеспечивает быстрое выполнение заказов. MPS разработан как для опытных команд, так и для тех, кому нужна помощь, при этом FLAPI берет на себя сложности. Это партнерство обеспечивает открытое общение, совместную валидацию и способствует развитию экосистемы стандартизации. Общий результат — сокращение задержек, ускорение выполнения заказов и повышение эффективности производственных процессов.
CdXz5zHNQW_aUoM5pxXdJ.jpeg

Человеческая инфраструктура: Как Netflix построил операционный слой за живым масштабом

Операции Netflix по прямой трансляции быстро расширились с момента их первого прямого шоу, теперь транслируя несколько событий ежедневно. Первоначальные прямые шоу полагались на инженеров и импровизированные настройки, не имея специальных операционных команд. Эволюция требовала создания специальных Центров вещательных операций (BOC), чтобы управлять процессом прямой трансляции. Чтобы обеспечить надежность сигнала, Netflix устанавливает строгие спецификации для видео- и аудиопотоков от площадок. Операционная модель Netflix прошла через несколько фаз, от инженерно-ориентированных операций до специализированных инженерных команд. Была разработана модель Центра передачи (TOC), чтобы повысить эффективность и управлять большим объемом событий одновременно. В рамках модели TOC отдельные роли, такие как операторы передачи, потоковой передачи и управления вещанием, имеют решающее значение. Для высокопрофильных событий специализированная модель "Большой риск" предоставляет выделенные ресурсы. Центр управления прямой трансляцией (LCC) отслеживает всю цепочку прямой трансляции, предоставляя операторам данные в режиме реального времени. LCC использует индивидуальный стек наблюдаемости для управления огромными объемами данных и оперативно реагировать на проблемы. Руководители операций LCC и технические менеджеры запуска отвечают за реагирование на инциденты.
CdXz5zHNQW_kK6Y54I9YV.jpeg

Оценка синопсисов шоу Netflix с LLM-а-судьей

Netflix стремится улучшить процесс выбора краткого содержания для своей огромной библиотеки контента. Тысячи названий усложняют выбор пользователя, делая краткие содержания важными для принятия решений. Высококачественные краткие содержания повышают вовлеченность пользователей, а плохие приводят к разочарованию и отказу. Проблема заключается в масштабировании проверки качества на сотни тысяч кратких содержаний. Netflix разработала подход на основе модели крупномасштабного языка (LLM) для оценки качества кратких содержаний по четырем ключевым направлениям. Эта система достигает более 85% согласия с творческими писателями, обеспечивая стандарты качества, основанные на мнении экспертов. Качество краткого содержания оценивается как через творческую ценность, определяемую писателями, так и через неявную обратную связь пользователей посредством метрик потокового вещания. Система LLM-as-a-Judge использует методы, такие как многоуровневые обоснования, оценка консенсуса и агенты фактичности, для оптимизации точности. Эти баллы качества, полученные из LLM, коррелируют с ключевыми метриками потокового вещания, такими как доля просмотра и коэффициент отказа. Это позволяет Netflix проактивно выявлять и исправлять проблемы с краткими содержаниями, улучшая опыт пользователя и открытие контента.
CdXz5zHNQW_s8spGD1mD0.png

Перестаньте отвечать на один и тот же вопрос дважды: кэширование с учетом интервала для Druid в масштабе Netflix

Netflix внедрила экспериментальный слой кэширования для повышения производительности запросов Druid в огромном масштабе. Эта система кэширования решает проблему избыточных запросов с панелей мониторинга, особенно во время громких событий. Основная идея заключается в кэшировании частей результатов и запросе Druid только для самых свежих данных, что приводит к небольшому компромиссу со степенью устаревания. Используются значения времени жизни (TTL) по экспоненте, при этом более старые данные кэшируются дольше для обработки поздних событий. Система кэширования использует структуру "карта-карт" для эффективного сканирования диапазонов кэшированных данных. Кэш перехватывает запросы в Druid Router, обслуживая результаты или запрашивая Druid по мере необходимости. Решение объединяет кэшированные и свежие данные, возвращая полный результат и асинхронно кэшируя свежие данные. Отрицательное кэширование используется для пустых сегментов, с мерами предосторожности против кэширования конечных пустых сегментов. Система использует слой абстракции данных "ключ-значение" (KVDAL) Netflix, поддерживаемый Cassandra, который предлагает независимые TTL для каждой точки данных. Слой кэширования значительно снизил нагрузку на запросы Druid и улучшил время запросов, особенно во время событий с большим объемом. Система кэширования все еще экспериментальная, и будущие цели включают интеграцию в сам Druid.
CdXz5zHNQW_ZIJYgW0wPc.png

Обеспечение мультимодального интеллекта для видеопоиска

В статье обсуждаются проблемы и решения для создания продвинутой системы поиска видео. Основная проблема заключается в огромном объеме видеоматериалов и сложности извлечения релевантных моментов. Решение предполагает мультимодальный подход, интегрирующий различные модели ИИ для анализа различных аспектов видеоконтента. Этот подход требует объединения разнообразных данных из специализированных моделей в целостную систему интеллекта реального времени. Архитектура системы ориентирована на обработку в масштабе, эффективную обработку миллиардов точек данных. Трехэтапный процесс, включающий транзакционное сохранение, автономное объединение данных и индексирование для поиска в реальном времени, обеспечивает целостность данных и оперативность. Процесс использует разделенный конвейер, чтобы избежать узких мест во время процесса приема данных. Служба поиска предлагает такие функции, как предварительная обработка запросов, точная настройка семантического поиска и расширенный текстовый анализ для получения точных результатов. Она также включает сопоставление фраз, анализ N-грамм и нечеткое сопоставление для повышения точности поиска. Система предоставляет агрегации и гибкую группировку, чтобы обеспечить более нюансированный поиск. В целом, цель состоит в том, чтобы расширить возможности кинематографистов, предоставив мощный инструмент для обнаружения релевантного видеоконтента.
CdXz5zHNQW_YdZx5oYSdr.png

Умное прямое вещание в большом масштабе: Внедрение переменного битрейта для всех прямых событий Netflix

Netflix перешла от постоянной скорости битовой передачи (CBR) к переменной скорости битовой передачи (VBR) для кодирования своих прямых трансляций, что улучшило эффективность. VBR динамически регулирует скорость битовой передачи в зависимости от сложности сцены, что приводит к уменьшению среднего трафика и улучшению качества обслуживания. Основной проблемой VBR является непредсказуемость трафика, которая может привести к перегрузке сервера и нестабильности из-за больших колебаний скорости битовой передачи. Чтобы решить эту проблему, Netflix реализовала новую систему резервирования емкости на основе номинальных скоростей битовой передачи, смягчив риски, связанные с переменной природой VBR. Они также скорректировали номинальные скорости битовой передачи по всей своей потоковой лестнице, чтобы они соответствовали качеству потоков CBR, используя VMAF в качестве руководящего показателя. Переход на VBR позволил достичь таких преимуществ, как снижение задержек буферизации и начальных задержек запуска. Теперь Netflix работает над улучшением своих алгоритмов адаптивной скорости битовой передачи и резервирования емкости, чтобы еще больше оптимизировать VBR. Реализация VBR была проектом компании, в котором участвовали несколько команд и участников.
CdXz5zHNQW_f7OyE9DYza.png

За кулисами стримов: Live на Netflix. Часть 1

Три года назад Netflix задался вопросом, как они могут развлекать мир с помощью прямой трансляции – формата, который почти так же стар, как и само телевидение. Этот вопрос привел к разработке сотен прямых трансляций, включая комедийные шоу, спортивные мероприятия и события WWE. В серии под названием "За кулисами стримов" Netflix расскажет о техническом пути создания возможностей для прямой трансляции. Прямая трансляция потребовала новых подходов к архитектуре и выбору технологий, а также значительных усилий для ее эффективной работы на Netflix. Ключевые составляющие архитектуры прямой трансляции Netflix включают выделенные студии вещания, облачные резервные конвейеры для транскодирования и упаковки, масштабирование доставки живого контента, оптимизацию воспроизведения в реальном времени и облачные сервисы управления обнаружением и воспроизведением. Netflix также централизовал в облаке метрики в реальном времени с помощью специализированных инструментов и средств. Создание функционала для прямой трансляции принесло новые вызовы и возможности для обучения, и Netflix продолжает ежедневно учиться тому, как более эффективно доставлять прямые трансляции. Основные уроки, полученные на данный момент, включают важность всестороннего тестирования, регулярных тренировок, прогнозирования просмотров, поэтапного снижения нагрузки и "штормов повторных попыток". Netflix добился значительного прогресса в создании надежной системы прямой трансляции, но еще многое предстоит узнать и улучшить.
CdXz5zHNQW_JBiedm3Ejv.png

Архитектура Netflix Tudum: от CQRS с Kafka до CQRS с RAW Hollow

Tudum.com - это официальное место для фанатов Netflix, предлагающее эксклюзивный контент, информацию из-за кулис и интерактивные опыты более чем 20 миллионам пользователей каждый месяц. Архитектура платформы спроектирована для обеспечения поддержки, масштабируемости и гибкости, используя подход серверного интерфейса пользователя, похожий на Command Query Responsibility Segregation (CQRS). Команда редакторов Tudum создает контент, который хранится в базе данных для записи, а затем преобразуется в формат, оптимизированный для чтения, для потребления пользователями. Первоначальная архитектура использовала Kafka для разделения баз данных для записи и чтения, что позволяло масштабировать независимо и обеспечивать консистентность в конечном счете. Однако этот подход ввел задержку между редактированием контента и его отражением на сайте. Команда определила источник задержки как Сервис данных страницы, который использовал кэш для ускорения сборки страниц. Чтобы решить эту проблему, Netflix разработала RAW Hollow, базу данных объектов в памяти, ко-локализованную и сжатую, которая обеспечивает сильную консистентность чтения после записи и низкую задержку. Tudum был идеальным местом для тестирования RAW Hollow, который значительно уменьшил ввод-вывод и обеспечил синхронный доступ к данным за время O(1). Обновленная архитектура устранила необходимость в инфраструктуре Kafka и уменьшила время распространения данных, позволяя писателям и редакторам просматривать изменения в течение секунд. Миграция также привела к более быстрым временам запросов, время сборки домашней страницы уменьшилось с 1,4 секунды до 0,4 секунды.
CdXz5zHNQW_0cHOBDLN2F.jpeg

Увеличение эффективности доставки контента через классификацию пропущенных кэшей

Программа Open Connect Netflix - это сеть доставки контента (CDN), которая стремится обеспечить лучшее качество опыта (QoE) для своих членов путем локализации доставки контента через партнерства с интернет-провайдерами (ISP) по всему миру. Программа использует серверы с.custom-разработанными серверами, называемыми аппаратными устройствами Open Connect (OCAs), которые спроектированы для эффективности и экономичности. Чтобы оценить эффективность Open Connect, Netflix использует фреймворк для выявления источников неэффективности, а именно пропусков кэша, которые возникают, когда байты не обслуживаются из лучшего доступного OCA для данного клиента. Пропуски кэша классифицируются на три категории: пропуски контента, пропуски здоровья и другие пропуски. Пропуски контента возникают, когда файлы не найдены на OCA в локальном сайте, а пропуски здоровья возникают, когда аппаратные ресурсы OCA в локальном сайте насыщены. Netflix регистрирует два критических компонента данных для вычисления пропусков кэша: журналы манифеста воспроизведения и журналы сервера OCA. Эти журналы объединяются для вычисления подробных метрик пропусков кэша на различных уровнях агрегации. Архитектура системы для вычисления пропусков кэша включает в себя эмиссию журналов, консолидацию журналов, обогащение журналов и соединения на основе потокового окна. Модель данных, используемая для оценки пропусков кэша, позволяет повторять логику офлайн и в симуляциях с переменными параметрами для тестирования новых условий и функций без влияния на производственный трафик.
CdXz5zHNQW_u3pdU106U1.png

AV1 в масштабе: Синтез зерна пленки, Пробуждение

Netflix представила потоки AV1 Film Grain Synthesis (FGS), которые сохраняют художественную целостность зерна пленки, оптимизируя при этом эффективность использования данных. Зерно пленки является ключевым элементом в рассказывании историй, добавляя глубину и реализм фильмам, но его трудно сжимать с помощью традиционных алгоритмов. Инструмент AV1 FGS моделирует зерно пленки через два компонента: узор зерна пленки и интенсивность зерна пленки. Узор зерна пленки воспроизводится с помощью авторегрессивной модели, а интенсивность зерна пленки контролируется функцией масштабирования. Процесс кодирования удаляет зерно пленки из видео, сжимает его и передает узор и интенсивность зерна вместе с сжатыми видеоданными. Во время воспроизведения зерно пленки воссоздается и повторно интегрируется в видео с помощью блочного метода. Включение AV1 FGS привело к значительному уменьшению битрейта, что позволяет осуществлять высококачественное потоковое видео с меньшим количеством данных. Эта технология также улучшила визуальное качество, поскольку синтезированный шум эффективно маскирует артефакты сжатия. Netflix внедрила FGS на всей своей платформе, и пользователи теперь могут наслаждаться потоками с поддержкой FGS на поддерживаемых устройствах. Внедрение FGS привело к более гладкому и надежному качеству обслуживания для членов Netflix, с более низким битрейтом, уменьшением ошибок воспроизведения и улучшением стабильности воспроизведения.
CdXz5zHNQW_VP7NReszvY.png

Моделируй однажды, представляй везде: UDA (Единая Архитектура Данных) в Netflix

По мере роста предложений Netflix растет и сложность систем, поддерживают его, что приводит к дублированию и несовместимости моделей, несовместимости терминологии, проблемам качества данных и несовместимости отношений между данными. Для решения этих задач требуется новая основа, которая позволяет определить модель один раз и использовать эти определения везде, связывая концепции с реальными системами и проецируя эти определения наружу, генерируя схемы и обеспечивая согласованность по всей системе. Это привело к разработке UDA - Единая Архитектура Данных), которая позволяет моделировать домены один раз и представлять их постоянно по всей системе, обеспечивая автоматизацию, обнаружение и семантическую совместимость. UDA позволяет пользователям и системам регистрировать и связывать модели доменов, каталогизировать и сопоставлять модели доменов с контейнерами данных, транслировать модели доменов в языки определения схем, перемещать данные надежно между контейнерами данных, обнаруживать и исследовать концепции доменов и программно просматривать граф. UDA - это граф связей, который связывает бизнес-концепции с схемами и контейнерами данных, основанный на внутренней метамодели под названием Upper, который определяет язык для моделирования доменов в UDA. Upper - это язык для описания доменов и их концепций, и он используется для моделирования представлений контейнеров данных и сопоставлений. UDA использует модель графа с именованными графами, обеспечивая разрешение, модульность и управление по всему графу.
CdXz5zHNQW_aXb9bCvUTK.png

FM-Intent: Предсказание намерения сеанса пользователя с помощью иерархического многозадачного обучения

Системы рекомендаций являются неотъемлемыми компонентами электронной коммерции, потокового медиа и социальных сетей, оказывая значительное влияние на продукт и бизнес. В Netflix эти системы соединяют членов с релевантным контентом в нужное время. Модель фундамента рекомендаций достигла значительного прогресса в понимании предпочтений пользователей, но есть возможность дальнейшего улучшения ее возможностей. Расширив модель фундамента для включения прогнозирования скрытых намерений пользователей, модель может обогатить свое понимание сессий пользователей за пределами прогнозирования следующий элемент. Недавние исследования подчеркнули важность понимания намерений пользователей на онлайн-платформах, что приводит к более точным и персонализированным рекомендациям. FM-Intent, новая модель рекомендаций, улавливает скрытые намерения пользовательской сессии с помощью краткосрочных и долгосрочных неявных сигналов в качестве прокси, а затем использует это прогнозирование намерений для улучшения рекомендаций следующего элемента. Модель устанавливает иерархические отношения между прогнозированием намерений и рекомендациями следующего элемента, создавая более согласованный и эффективный pipeline рекомендаций. FM-Intent вносит три основных вклада: новую модель рекомендаций, иерархический подход к многозадачному обучению и всестороннюю экспериментальную валидацию, демонстрирующую значительные улучшения по сравнению с моделями уровня искусства. FM-Intent была успешно интегрирована в экосистему рекомендаций и может быть использована для нескольких приложений, включая оптимизацию пользовательского интерфейса, аналитику и усиленные сигналы рекомендаций.
CdXz5zHNQW_QduYXjmsjM.png

За кулисами: построение надежного конвейера обработки событий рекламы.

В Netflix была разработана мощная платформа обработки событий для мониторинга, измерения и оптимизации рекламных кампаний. Система показа рекламы опирается на стабильный поток рекламных событий для корректировки решений, ограничения частоты показов, темпа и персонализации. Изначальная система обработки рекламных событий состояла из трех основных компонентов: Microsoft Ad Server, Netflix Ads Manager и Ad Event Handler. Система была разработана для обеспечения эффективной работы петли обратной связи, предоставляя информацию об показах, ограничении частоты показов и процессах монетизации. По мере расширения бизнеса был введен новый уровень персистентности с использованием Key-Value абстракции для решения таких задач, как рост объема данных и URL-адресов сторонних систем отслеживания. Конвейер обработки событий был дополнительно усовершенствован для поддержки собственной рекламной технологии, включая такие функции, как ограничение частоты показов, информация о ценах и надежная система отчетности. Было запланировано создание централизованной системы сбора рекламных событий, предоставляющей единый унифицированный контракт данных для потребителей и разделяющей зоны ответственности между восходящими системами и потребителями. Новый конвейер поддерживал различные функции, такие как измерение, финансы/биллинг, отчетность, ограничение частоты показов и поддержание важной петли обратной связи с рекламным сервером. Разработка систем обработки рекламных событий стала тщательно организованным путешествием, демонстрирующим командную работу, планирование и координацию между различными командами. Новая система значительно ускорила возможность запуска новых возможностей для бизнеса, поддерживая возможности программной закупки, обмена сигналами отказа от отслеживания и обеспечивая точную отчетность и измерения.
CdXz5zHNQW_x4VyedRjxa.png

Измерение разборчивости диалогов для контента Netflix

Netflix уделяет первостепенное внимание улучшению пользовательского опыта, сотрудничая с технологическими партнерами для совершенствования инструментов и рабочих процессов. Это сотрудничество направлено на повышение разборчивости диалогов на протяжении всего производственного процесса, решая проблемы от съемочной площадки до экрана. Ключевой инициативой является Pipeline целостности диалогов (Dialogue Integrity Pipeline), который выявляет и смягчает факторы, влияющие на ясность, такие как шумная обстановка и сведение звука. Netflix использует стандартные для отрасли измерители громкости и разработала систему измерений на основе eSTOI для анализа разборчивости диалогов. Чтобы улучшить оптимизацию перед доставкой, Netflix сотрудничал с Fraunhofer IDMT и Nugen Audio для создания плагина DialogCheck. Этот плагин, интегрированный в цифровые звуковые рабочие станции (DAW), обеспечивает обратную связь в реальном времени для звукоинженеров. Сотрудничество использует решение Fraunhofer по разборчивости речи на основе машинного обучения и опыт Nugen Audio в области аудиоплагинов. Плагин DialogCheck позволяет рано выявлять и устранять проблемы с ясностью диалогов, гарантируя, что художественный замысел не будет нарушен. Конечная цель - предоставление захватывающего и доступного повествования для всех зрителей, независимо от условий прослушивания. Этот совместный подход подчеркивает приверженность Netflix к совершенству звука и инновациям в повествовании.
CdXz5zHNQW_u9iv4wSU0L.png

Как Netflix точно атрибутирует журналы потоков eBPF

Netflix использует eBPF для захвата журналов потоков TCP в крупном масштабе для улучшения сетевых сведений, но точная атрибуция IP-адресов потоков к идентификаторам рабочей нагрузки была значительной проблемой. Первоначальный подход к атрибуции основывался на Sonar, внутренней службе отслеживания IP-адресов, но он привел к неправильной атрибуции из-за задержек и сбоев в распределенных системах. Неправильная атрибуция сделала данные потоков ненадежными для принятия решений, а обходной путь, при котором полученные потоки сохранялись в течение 15 минут перед атрибуцией, не решил проблему. Чтобы решить эту проблему, Netflix разработал новый метод атрибуции, который атрибутирует локальные IP-адреса, определяя локальную идентификатор рабочей нагрузки из ее окружения. Для контейнерных рабочих нагрузок Netflix использовал IPMan, службу назначения IP-адресов контейнеров, для атрибуции локальных IP-адресов. Как только локальные IP-адреса атрибутируются, удаленные IP-адреса можно атрибутировать, изучая временные диапазоны, в течение которых каждая рабочая нагрузка владеет данным IP-адресом. FlowCollector поддерживает в памяти хэш-карту для представления этих знаний и делится изученными временными диапазонами с другими узлами с помощью Kafka. Новый метод обеспечивает точную атрибуцию и корректно обрабатывает временные проблемы, и он также экономически эффективен благодаря своей простоте и поиску в памяти. Метод расширен для атрибуции межрегиональных IP-адресов путем перенаправления потоков на узлы в соответствующем регионе. Наконец, метод еще больше расширен для атрибуции IP-адресов, не принадлежащих рабочим нагрузкам, таких как те, которые принадлежат сети доставки контента Netflix.
CdXz5zHNQW_ODQpwXb03K.png

Глобализация производства с помощью медиа-производственного пакета Netflix

"Переход киноиндустрии на облачные рабочие процессы сталкивается с проблемами при глобальном внедрении. Netflix стремится решить эти проблемы с помощью своего Media Production Suite (MPS), предназначенного для кинематографистов. MPS упрощает управление медиа, устраняя скучные задачи и повышая творческий потенциал. Традиционные рабочие процессы, использующие физические кассеты, медленные и неудобные, препятствующие сотрудничеству. Цифровые рабочие процессы также сталкиваются с проблемами в распространении и стандартизации. Облачные технологии предлагают решения, но требуют преодоления операционных и технологических барьеров. Netflix решает эти проблемы, привлекая людей и приложения к медиа, а не наоборот. MPS решает глобальные различия в технологиях и стандартизации, учитывая различные потребности рынка. Этот пакет автоматизирует процессы, такие как управление цветом и кадрирование, используя отраслевые стандарты. Инфраструктура сочетает облачные и физические возможности, оптимизированные для производительности пользователя. MPS включает инструменты для ингеста, медиа-библиотеки, дневных съёмок, удалённых рабочих станций и многое другое. Более 350 тайтлов использовали инструменты MPS, с отзывами из разных глобальных регионов. Бразильский сериал "Сенна" принял MPS, продемонстрировав свою способность преодолеть географические барьеры."

Модель основы для персонализированных рекомендаций

Netflix разрабатывает базовую модель для рекомендаций, чтобы централизовать изучение предпочтений пользователей и повысить эффективность различных моделей рекомендаций. Существующая система использует специализированные модели, которые дорого поддерживать и в которых сложно делиться инновациями. Базовая модель направлена на извлечение знаний из обширной истории взаимодействия пользователей и данных о контенте, а также на распространение этих знаний на другие модели. Вдохновленный большими языковыми моделями, подход переходит к стратегии, ориентированной на данные, с использованием полу-автоматического обучения. Netflix токенизирует взаимодействие пользователей, балансируя между детализацией данных и сжатием последовательности для обработки длительной истории взаимодействия. Для управления вычислительной эффективностью во время обучения используются механизмы разреженного внимания и выборка скользящим окном. Каждый токен содержит богатую, разнородную информацию о действии и контенте, используя признаки, полученные как во время запроса, так и после действия. Модель использует авторегрессивную цель предсказания следующего токена, аналогичную GPT, но с модификациями, учитывающими различную важность взаимодействия. Модель предсказывает несколько токенов и использует вспомогательные цели предсказания для захвата долгосрочных зависимостей и повышения точности. Для решения проблемы "холодного старта" новых объектов, модель построена с использованием инкрементного обучения и возможностью делать выводы о ранее невидимых объектах, используя метаданные объектов и входных данных.
CdXz5zHNQW_VZmJPzyqeS.png

HDR10+ Теперь доступен на Netflix

Netflix начал транслировать контент HDR10+ на устройствах с поддержкой AV1, обеспечивая лучший просмотровой опыт для сертифицированных устройств HDR10+. Это улучшение существующего контента HDR10, который использовал только статические метаданные. Динамические метаданные в HDR10+ улучшают качество и точность изображения. Netflix всегда была пионером в внедрении технологии HDR, и за последние пять лет потоковая передача HDR увеличилась более чем на 300%. Компания теперь имеет более 11 000 часов HDR-контента. Netflix включил поддержку HDR10+ с помощью видеокодека AV1, который является одним из самых эффективных кодеков. AV1 уже является вторым по популярности кодеком на Netflix, и с добавлением потоков HDR10+ ожидается, что он скоро станет самым популярным кодеком. Компания добавляет потоки HDR10+ как к новым релизам, так и к существующим популярным HDR-тайтлам, с целью обеспечения HDR10+-опыта для всех HDR-тайтлов к концу года. HDR10+ является одним из трёх распространённых форматов HDR, наряду с Dolby Vision и HDR10. HDR10+ и Dolby Vision используют динамические метаданные, которые обеспечивают статистику изображения контента на основе каждого кадра, позволяя оптимизировать коррекцию тона для каждой сцены. Это достигает большей перцептивной точности исходного изображения, сохраняя творческий замысел. Чтобы получить HDR10+, члены должны иметь подписку на тарифный план Netflix Premium, тайтл должен быть доступен в формате HDR10+, а устройство члена должно поддерживать AV1 и HDR10+. Запуск HDR10+ был совместным усилием нескольких команд в Netflix, и компания благодарна всем, кто внёс свой вклад в реализацию этой идеи. Комитет к инновациям и качеству подчеркивает приверженность Netflix к обеспечению погружающего и аутентичного просмотрового опыта для всех своих членов.
CdXz5zHNQW_x7iQNmTXt1.png

Запуск наблюдаемости в масштабе Netflix

Чтобы достичь всеобъемлющей наблюдаемости названий на Netflix, компания ввела конечные точки наблюдаемости во всех сервисах внутри своего стека персонализации и обнаружения. Каждый микросервис, участвующий в стеке, должен был ввести новую конечную точку "Здоровье названия", которая соответствует принципам точного отражения поведения в производстве, стандартизации и ответа на триаду прозрачности. Триада прозрачности требует от конечной точки ответа на вопросы, подходит ли название для продвижения, почему оно не подходит, и что можно сделать, чтобы исправить проблемы. Была разработана стабильная формат запроса/ответа протокола для стандартизации связи между сервисом наблюдаемости и конечными точками наблюдаемости стека персонализации. Высокоуровневая архитектура решения включает в себя создание конечных точек наблюдаемости, активное мониторинг, отслеживание реального времени показов названий, хранение данных в оптимизированном хранилище данных и предоставление простых в интеграции API для панели управления. Микросервис "Здоровье названия" запускает запланированную задачу сбора данных каждые 30 минут для получения соответствующей информации о здоровье названия из назначенных сервисов. Реальные данные о показах названий обрабатываются из очереди Kafka, которая опрашивается каждые две минуты для получения данных о показах. Данные затем агрегируются и представляются в качестве дополнительного индикатора состояния здоровья для заинтересованных сторон. Данные хранятся в выделенном потоке Hollow для каждого сбора, что позволяет обеспечить высокопроизводительный доступ только для чтения и позволяет отслеживать общее состояние здоровья и историю названий. Панель управления наблюдаемости использует сервис "Здоровье названия" для представления состояния названий заинтересованным сторонам, а система также имеет функцию "Путешествие во времени", которая имитирует трафик заранее, чтобы обнаружить и исправить проблемы до того, как они повлияют на членов. Архитектура системы и стратегии позволили Netflix улучшить наблюдаемость запуска названий, обеспечив захватывающий просмотровый опыт и укрепив доверие с создателями контента и партнерами. Решение также закладывает основу для будущих инноваций, обеспечивая то, чтобы каждая история достигла своей целевой аудитории и чтобы каждый член наслаждался своими любимыми названиями на Netflix.
CdXz5zHNQW_bbTwixEEHc.png

Представляем Впечатления на Netflix

В Netflix изображения на платформе называются "впечатлениями" (impressions) и играют решающую роль в персонализации пользовательского опыта. Захват и обработка этих впечатлений - сложная задача, требующая сложной системы. Система отслеживает и обрабатывает миллиарды впечатлений ежедневно, сохраняя подробную историю воздействия на каждый профиль. Эта история впечатлений имеет решающее значение для улучшения персонализации, ограничения частоты показа, выделения новых релизов и аналитических данных. Первым шагом в управлении впечатлениями является создание набора данных "Источник истины" (Source-of-Truth, SOT), который поддерживает различные рабочие процессы и позволяет использовать несколько сценариев. Сырые события впечатлений собираются с клиентской стороны и обрабатываются с помощью пользовательского извлекателя событий, Apache Kafka и Apache Iceberg. Затем данные фильтруются, обогащаются и структурируются с помощью Apache Flink, что устанавливает определенный источник истины для данных о впечатлениях Netflix. Система обеспечивает высокое качество впечатлений, собирая подробные метрики и оповещая команду о потенциальных проблемах. Архитектура разработана для обработки огромного объема событий впечатлений в реальном времени, с упором на масштабируемость, гибкость и высокую доступность. Будущая работа включает в себя решение проблемы несхематизированных событий, автоматизацию настройки производительности и улучшение оповещений о качестве данных.

Название Запуск наблюдаемости в масштабе Netflix

Чтобы обеспечить бесперебойный запуск названий и их обнаружение на Netflix, важно сделать шаг назад и понять более широкий контекст, прежде чем приступить к поиску решений. Такой вдумчивый подход создает устойчивость и масштабируемость для будущего. Первым шагом является понимание общей картины путем определения заинтересованных сторон, картографирования текущего ландшафта, уточнения основной проблемы и оценки бизнес-приоритетов. Основными заинтересованными сторонами являются операторы запуска названий, инженеры персонализации, менеджеры продукта и творческие представители. Картографирование текущего ландшафта показало, что не существует установленного решения для наблюдаемости запуска названий, что представляет как проблемы, так и возможности. Основная проблема заключалась в том, чтобы обеспечить справедливое отношение к каждому названию со стороны персонализации. Для решения этой проблемы была введена общая концепция "Здоровье названия", охватывающая различные метрики и индикаторы, отражающие производительность названия в плане обнаружения и вовлечения пользователей. Здоровье названия предоставило основу для мониторинга и оптимизации жизненного цикла каждого названия, позволяя согласовывать принципы и требования с партнерами до создания решений. Чтобы разработать прочный план наблюдаемости запуска названий, проблемы были категоризированы в три основные области: настройка названия, системы персонализации и алгоритмы. Категоризируя проблемы, можно систематически решать проблемы и предоставлять надежный, персонализированный опыт для каждого названия. Анализ проблем показал, что проблемы настройки являются наиболее распространенными, но также самыми легкими для исправления, в то время как проблемы алгоритмов редки, но трудны для решения. Оценка вариантов привела к решению сосредоточиться на проактивном обнаружении проблем, выявлении проблем до запуска для обеспечения более гладких запусков, лучшего опыта пользователей и более сильной надежности системы. Это решение заложило основу для масштабируемой, прочной системы, которая может расти вместе с сложностями постоянно развивающейся платформы.
CdXz5zHNQW_aUcN7HOcn2.png

Часть 3: Обзор инженерии аналитики на Netflix

Статья завершает многочастную серию об инженерии аналитики в Netflix, фокусируясь на техническом мастерстве. Она обсуждает советы по дизайну панелей мониторинга, подчеркивая важность понимания потребностей пользователей и использования существующих шаблонов. Статья также охватывает дизайн панелей мониторинга, включая то, как структурировать приложения, чтобы они соответствовали психологическим моделям пользователей, и предоставляет рекомендации по компоновке страниц, интерактивным графикам и вводу в эксплуатацию. Кроме того, она делится выводами из развертывания аналитического API в Netflix, подчеркивая ключевые выводы, такие как измерение воздействия и необходимости результатов в реальном времени, изучение всех доступных решений, согласование ожиданий производительности и важность тщательного тестирования и сотрудничества.
CdXz5zHNQW_QJdCCQ1JwJ.png

Часть 2: Обзор работы инженеров по аналитике в Netflix

Команда инженеров по аналитике Netflix работает над различными проектами, включая анализ игровой метрики для оценки эффективности рекламных кампаний по привлечению пользователей в игры Netflix. Команда использует метод синтетического контроля для оценки контрфактического сценария этих кампаний и разработала интерактивный инструмент для анализа результатов прироста. Они также работают над моделью прироста рентабельности инвестиций (ROI), чтобы направлять проектирование и бюджетирование будущих кампаний. Кроме того, команда сосредоточена на измерении и подтверждении прироста регистраций в играх Netflix, используя подход, который оценивает прирост регистраций, опираясь на другие модели, такие как оценка прироста пожизненной ценности аккаунта. Путь игрока в играх Netflix также моделируется с помощью машины состояний для отслеживания ежедневного состояния и вероятности переходов между состояниями аккаунта. Эта модель помогает оценить прогресс в достижении целей вовлеченности и выявить области для увеличения числа ежемесячно активных аккаунтов. Статья также рассматривает моделирование денежных потоков контента, где Netflix прогнозирует потребность в денежных средствах для слотов "To Be Determined" (TBD), моделируя ежедневные расходы до и после даты запуска проекта. Наконец, команда работает над повышением эффективности процесса транскрипции в процессах дубляжа, используя технологию вспомогательного распознавания речи, с многоуровневой системой оценки производительности.
CdXz5zHNQW_x65HF2Cxou.png

Представляем настраиваемый Metaflow

Metaflow наделяет команды Netflix эффективностью в разработке и управлении проектами ML/AI. Новая функция Metaflow, Configs, позволяет пользователям определять параметры потока, требования к ресурсам и настройки, специфичные для приложений, в файлах конфигурации,-readable человек. Configs расширяют существующие артефакты Metaflow и параметры, предоставляя большую гибкость и варианты настройки. Они могут быть динамически загружены и изменены, даже при использовании удаленной выполнения или развертывания в производстве. Configs открывают передовые случаи использования, такие как смешивание фиксированных развертываний с runtime-конфигурируемостью, валидация конфигураций, управление иерархиями файлов конфигурации и генерация конфигураций на лету. В сочетании с менеджерами конфигураций, такими как Hydra, Configs позволяют оркестровать эксперименты над несколькими конфигурациями и сканировать пространство параметров. Metaboost, внутренний инструмент Netflix, является примером практического использования Configs, предоставляя единый интерфейс для управления проектами ML на различных платформах, чтобы улучшить согласованность проектов и уменьшить риски.

Часть 1: Обзор работы инженеров по аналитике в Netflix

Команда инженеров-аналитиков Netflix работает над тем, чтобы дать компании возможность эффективно создавать и предоставлять высококачественные, применимые на практике аналитические данные по всей компании. Недавно они провели ежегодную внутреннюю конференцию по инженерной аналитике, на которой были затронуты различные темы, такие как DataJunction, LORE и использование данных базовой платформы для обеспечения эффективности аналитики в облаке. DataJunction — это решение с открытым исходным кодом, позволяющее стандартизировать и предоставлять доступ к определениям метрик, а LORE — это чат-бот, использующий большие языковые модели (LLM) для предоставления конечным пользователям реальных аналитических данных. Команда также фокусируется на демократизации аналитики с помощью таких инициатив, как «Внедрение аналитики» (Analytics Enablement), направленных на то, чтобы дать практикующим аналитикам Netflix возможность эффективно создавать и предоставлять высококачественные аналитические данные. Цель команды — дать инженерному подразделению возможность принимать решения, учитывающие эффективность, при создании и обслуживании сервисов, обеспечивающих работу Netflix как потокового сервиса.

Эффективность облака в Netflix

Netflix использует Amazon Web Services (AWS) для удовлетворения потребностей в облачной инфраструктуре, включая вычислительную технику, хранение и сетевые технологии. Диверсифицированный технологический ландшафт компании генерирует обширные данные из различных инфраструктурных сущностей, которые инженеры данных и аналитики используют для предоставления инженерной организации четких рекомендаций. Отдел данных и аналитики сотрудничает с инженерными командами для обмена ключевыми показателями эффективности, что дает возможность заинтересованным сторонам принимать обоснованные деловые решения. Команда специалистов по платформе DSE разработала решение из двух компонентов: Foundational Platform Data (FPD) и Cloud Efficiency Analytics (CEA). FPD предоставляет централизованный слой данных для всех данных платформы, характеризующийся единообразной моделью данных и стандартизированной методологией обработки данных. CEA предлагает слой аналитических данных, который обеспечивает последовательные временные показатели эффективности для различных вариантов использования в бизнесе. Команда стремится продолжить интеграцию платформ в FPD и CEA, стремясь к практически полному охвату затрат в следующем году. Они также планируют расширить FPD на другие области бизнеса, такие как безопасность и доступность, и перейти к упреждающим подходам с помощью предиктивной аналитики и машинного обучения для оптимизации использования и обнаружения аномалий в расходах.

Заголовок: Мониторинг производительности в масштабах Netflix

Для Netflix управление запуском более тысячи новых продуктов по всему миру каждый месяц является приоритетной задачей, требующей прочных систем, обеспечивающих всестороннюю наблюдаемость. Компания стремится связать каждую историю с нужной аудиторией, но традиционные системные показатели, такие как частота ошибок и загрузка ЦП, не учитывают нюансы успешности названия. Чтобы преодолеть этот разрыв, Netflix необходимо разработать системы, которые распознают эти нюансы и позволят каждому названию блистать. В первые дни существования Netflix Originals команда запуска вручную проверяла размещение названий, но такой подход не мог масштабироваться с учетом глобальной экспансии компании. В результате Netflix столкнулась с операционными проблемами, связанными с предоставлением точных и своевременных ответов на сложные вопросы об эффективности названий и их обнаруживаемости. Компании требовалось масштабируемое решение, гарантирующее безупречный запуск каждого названия, с правильной настройкой метаданных и ресурсов, бесперебойным потоком данных и алгоритмами, функционирующими в соответствии с замыслом. Чтобы решить эти задачи, Netflix рассмотрела два варианта: обработка логов и точки наблюдаемости в системах персонализации. Обработка логов предлагает простое решение для мониторинга и анализа запуска названий, но у нее есть ограничения, например, в обнаружении проблем до их возникновения и обеспечении точности. С другой стороны, точки наблюдаемости обеспечивают мониторинг в режиме реального времени, упреждающее обнаружение проблем и повышенную точность, но требуют значительных первоначальных инвестиций и синхронизации усилий. В конечном счете Netflix приняла всеобъемлющую стратегию наблюдаемости, которая включает мониторинг в реальном времени, упреждающее обнаружение проблем и сопоставление с источником истины. Этот подход значительно повысил способность компании обеспечивать успешные запуски названий и их обнаружение на всей платформе. В следующей части этой серии Netflix поделится ключевыми техническими знаниями и подробностями о том, как им удалось этого добиться.

Распределенная абстракция счетчика Netflix

Распределенное абстрактное представление счетчика Netflix - это сервис, предназначенный для хранения и запроса больших объемов временных данных событий с низкими задержками в несколько миллисекунд. Он поддерживает два основных типа случаев использования: Best-Effort и Eventually Consistent. Счетчик Best-Effort использует EVCache для высокой пропускной способности и низкой задержки в пределах одного региона, но не имеет репликации и гарантий согласованности между регионами. Счетчик Eventually Consistent использует устойчивую систему очередей, например Apache Kafka, для точных и устойчивых подсчетов, но может привести к задержкам и проблемам при ребалансировке разделов. Подход Netflix сочетает в себе ведение журнала каждой счетной активности как события и непрерывную агрегацию этих событий для удовлетворения требований аудита и пересчета.

Исследование проблемы с задержкой пользовательского интерфейса Workbench

Пользователь сообщил, что интерфейс JupyterLab на его рабочем столе становится медленным и нереспонсивным при запуске определенных тетрадей. Чтобы оценить медлительность, мы удерживали клавишу в течение 15 секунд, запуская тетрадь пользователя, и наблюдали задержки от 1 до 10 секунд, в среднем 7,4 секунды. Мы исключили из списка возможных причин перегрузку CPU и сетевые проблемы. Используя py-spy, мы обнаружили, что много времени CPU тратилось на функцию __parse_smaps_rollup в процессе jupyter-lab. Эта функция является частью расширения jupyter_resource_usage, используемого для получения информации о потреблении ресурсов. Функция вызывается периодически из UI через API-эндпоинт. Код получает всех дочерних процессов процесса jupyter-lab рекурсивно, включая как процесс ipykernel Notebook, так и все процессы, созданные тетрадью. Стоимость работы этой функции линейна по отношению к количеству всех дочерних процессов. В коде для воспроизведения мы создаем 96 процессов, что больше 64 CPU, выделенных контейнеру. Это несоответствие делает родительский процесс медленным.

Представляем уровень абстракции данных временных рядов Netflix

Netflix разработала TimeSeries Abstraction для эффективного хранения и запроса больших объемов временных данных событий с низкими задержками в несколько миллисекунд. Эта система предназначена для обработки высокопроизводительных записей, эффективного запроса в больших наборах данных, глобальных чтений и записей, настраиваемой конфигурации и экономической эффективности. TimeSeries Abstraction построена на основе основных принципов проектирования, включая разделение данных, гибкое хранение, настраиваемость, масштабируемость и шардированную инфраструктуру. Модель данных состоит из элементов событий, событий, идентификаторов временных рядов и пространств имен. Элементы событий представляют собой пары ключ-значение, которые хранят данные для конкретного события, в то время как события представляют собой структурированные коллекции одного или нескольких элементов событий. Идентификаторы временных рядов представляют собой коллекции событий за период хранения набора данных, а пространства имен представляют собой коллекции идентификаторов временных рядов и данных событий. TimeSeries Abstraction предоставляет API для взаимодействия с данными событий, включая WriteEventRecordsSync, WriteEventRecords, ReadEventRecords, SearchEventRecords и AggregateEventRecords. Слой хранения состоит из основного хранилища данных и необязательного индексного хранилища данных, с Apache Cassandra и Elasticsearch в качестве предпочтительных вариантов для хранения долговременных данных и индексации соответственно. Основное хранилище данных использует временную схему разделения для разделения данных на управляемые фрагменты на основе временных интервалов, что позволяет эффективно запрашивать конкретные временные диапазоны и оптимизировать производительность хранения и запросов. Данные дополнительно разделены на временные корзины и корзины событий для эффективного сканирования диапазонов и управления высокопроизводительными операциями записи. TimeSeries Abstraction предназначена для решения проблем хранения и запроса временных данных событий в масштабе, включая высокую производительность, эффективный запрос, глобальные чтения и записи, настраиваемую конфигурацию и экономическую эффективность. Используя уникальную модель данных событий и масштабируемый слой хранения, TimeSeries Abstraction предоставляет универсальное и экономически эффективное решение для управления временными данными в Netflix.

Презентация абстрактного слоя ключ-значение Netflix

Слой абстракции ключ-значение (KV) Netflix Data Abstraction Layer (DAL) - это фундаментальный сервис абстракции, упрощающий доступ к данным и улучшающий надежность инфраструктуры. Он предлагает единый интерфейс разработчикам, независимо от базы данных. Слой KV использует архитектуру двойного картографирования, поддерживая как простые, так и сложные модели данных. Он предоставляет четыре основных CRUD-API (PutItems, GetItems, DeleteItems) и сложные API MutateItems и ScanItems для разнообразных случаев использования. Пространство имен (namespace) определяет, где и как хранятся данные, обеспечивая логическое и физическое разделение. Это позволяет разным случаям использования быть направленными к наиболее подходящей системе хранения на основе конкретных требований к производительности, долговечности и согласованности. API PutItems и DeleteItems используют токены идемпотентности, чтобы обеспечить целостность данных и гарантировать правильный порядок операций. Предпочтительными являются клиентские монотонные токены для надежности. Для работы с большими blob-объектами слой KV использует технологию chunking. Она разбивает большие данные на меньшие части, которые затем стадируются и фиксируются с соответствующими метаданными. Пагинация является ключевым аспектом для работы с большими наборами данных. API GetItems поддерживает пагинацию с помощью next_page_token, обеспечивая эффективный доступ к данным в несколько запросов. Могилы (tombstones), указывающие на удаленные данные, могут влиять на производительность. KV оптимизирует удаление записей и диапазонов, генерируя одиночную могилу, что уменьшает пиковые нагрузки и поддерживает стабильную производительность. Удаление на уровне элементов обрабатывается с помощью удалений на основе TTL с джиттером. Это скрывает сложность движка хранения и минимизирует влияние удалений на пагинацию чтения. Идемпотентность и chunking являются ключевыми для работы с хвостовыми задержками и обеспечения предсказуемой низколатентной производительности. Эти философии проектирования способствуют надежности и производительности, требуемым для глобальных операций Netflix.

Приведение к пределу: Эволюция WebSocket-прокси Netflix для будущего

Pushy - это сервер WebSocket Netflix, поддерживающий постоянные соединения с устройствами, на которых запущено приложение Netflix. Он эволюционировал из службы доставки сообщений в неотъемлемую часть экосистемы Netflix. Pushy обрабатывает сотни миллионов одновременных соединений WebSocket, доставляя сотни тысяч сообщений в секунду, с уровнем надежности доставки сообщений 99,999%. Initially разработанный для FireTV, охват Pushy распространился почти на миллиард устройств, включая мобильные устройства и старые устройства с ограниченными возможностями. Чтобы справиться с этим ростом, Pushy претерпел несколько улучшений, включая переписывание процессора сообщений с использованием компонентов Netflix paved-path, миграцию реестра Push в KeyValue для лучшей производительности и масштабируемости, и реализацию экспоненциальных политик масштабирования на основе количества соединений. Эти улучшения сделали Pushy более надежным, стабильным и эффективным, позволив ему поддерживать растущее количество устройств и удовлетворять требованиям новых функций.

Обнаружение шумного соседа с помощью eBPF

Netflix использует eBPF для непрерывного мониторинга задержки очереди запуска, показателя шумных соседей (контейнеров, интенсивно использующих ресурсы сервера, ухудшающих производительность в соседних контейнерах). eBPF хуки (sched_wakeup, sched_wakeup_new, sched_switch) используются для захвата задержки очереди запуска и ассоциирования ее с контейнерами (идентификаторами cgroup) с помощью kfuncs (функций ядра) для безопасного доступа к данным, защищенным RCU. Ограничитель скорости в eBPF сбалансирует наблюдаемость с производительностью, ограничивая количество отправляемых в пользовательское пространство данных. Процессы в пользовательском пространстве обрабатывают события из кольцевого буфера eBPF и отправляют метрики в Atlas, включая задержку очереди запуска (runq.latency) и количество прерываний (sched.switch.out) по идентификатору cgroup. Обе метрики runq.latency и sched.switch.out необходимы для выявления шумных соседей, поскольку runq.latency сама по себе может быть вводящей в заблуждение, когда контейнеры достигают своего лимита ЦП. Изучение конкретного случая демонстрирует проблему шумного соседа, вызывающую всплеск задержки очереди запуска и прерываний, когда новый контейнер полностью использует ресурсы хоста. Системные процессы были выявлены как шумные соседи с помощью метрики sched.switch.out. Оптимизации кода eBPF, включая использование BPF_MAP_TYPE_HASH, прямой доступ к членам структуры задачи и игнорирование задач ядра, минимизируют накладные расходы. Патч для ядра Linux был отправлен и принят для улучшения расчета статистики в ядре. BPFtop, инструмент мониторинга процессов eBPF с открытым исходным кодом, был использован для измерения накладных расходов кода eBPF.

Рекомендации для долгосрочного удовлетворения членов Netflix

Netflix использует алгоритмы персонализации, чтобы рекомендовать контент своим подписчикам, стремясь улучшать долгосрочное удовлетворение. Рекомендации рассматриваются как задача контекстуального бандита, где система выбирает действия на основе контекста и обратной связи от подписчиков. Традиционные системы рекомендаций оптимизируются для короткосрочных метрик, таких как клики, которые могут не полностью отражать долгосрочное удовлетворение. Оптимизация только для удержания имеет недостатки, поэтому Netflix использует прокси-функции вознаграждения, выровненные с долгосрочным удовлетворением подписчиков. Коэффициент клика (CTR) является простым прокси-вознаграждением, но Netflix расширяет его, чтобы учитывать разные действия пользователей и их влияние на удовлетворение. Инженерия вознаграждения - это итеративный процесс уточнения прокси-функции вознаграждения для соответствия долгосрочному удовлетворению подписчиков, включая формирование гипотез, определение вознаграждения, обучение политики бандита и тестирование A/B. Netflix решает проблему задержки обратной связи, прогнозируя отсутствующую обратную связь, что позволяет использовать всю обратную связь в прокси-функции вознаграждения. Несмотря на улучшения оффлайн-модели, разрыв между онлайн- и оффлайн-метриками может возникать, когда прокси-вознаграждение не полностью соответствует долгосрочному удовлетворению подписчиков. Netflix решает это, уточняя определение прокси-вознаграждения. Остаются открытые вопросы, такие как автоматизация процесса обучения прокси-функции вознаграждения, определение оптимального времени ожидания для задержанной обратной связи и использование обучения с подкреплением для соответствия долгосрочному удовлетворению.

Улучшите свой следующий эксперимент, изучив лучшиеproxy-метрики из прошлых экспериментов

Исследователи Netflix представляют методы установления связи между краткосрочнымиproxy-метриками и долгосрочными метриками 'north star' с помощью исторических экспериментов. Наивные подходы к пониманию этой связи могут быть вводящими в заблуждение из-за спurious variables и коррелирующей ошибки измерения. Оценщик Total Covariance (TC) вычисляет OLS-коэффициент наклона, вычитая масштабированную ковариацию ошибки измерения из ковариации оцененных эффектов лечения. Оценка Jackknife Instrumental Variables Estimation (JIVE) удаляет коррелирующую ошибку измерения, исключая каждый наблюдение из вычисления его инструментированных суррогатных значений. Оценка Limited Information Maximum Likelihood (LIML) является статистически эффективной при условии отсутствия прямых эффектов между лечением и метриками 'north star'. Эти методы позволяют создавать линейные структурные модели эффектов лечения, которые легко интерпретируются и способствуют координации и выравниванию по 'north star'. Они позволяют управлять компромиссами между метриками, инновациям в метриках и самостоятельной работе команд. Несмотря на текущие архитектурные вызовы данных, эти методы уже успешно реализованы в Netflix и активно используются для разработки proxy-метрик. Исследователи признают необходимость в более гибкой архитектуре данных для упрощения их применения и приветствуют потенциальных вкладчиков через открытые вакансии.

Исследование межрегиональной проблемы производительности сети

Netflix работает на обширной облачной инфраструктуре Amazon AWS в нескольких регионах, чтобы обеспечивать бесперебойную доставку контента. Когда возникли проблемы с синхронизацией данных между регионами, подозрения сразу же пали на сеть из-за таймаутов. При проведении расследования инженеры сети обнаружили пакеты TCP RST, исходящие от клиента, что указывало на то, что клиент преждевременно заканчивал соединения. Снимки пакетов подтвердили, что сервер постоянно отправлял данные, а клиент внезапно заканчивал соединения через 30 секунд. При изучении приложения выяснилось, что оно имело таймаут в 30 секунд для получения начальных данных от серверов, что приводило к разрыву соединений, если данные не поступали в течение этого времени. Несмотря на отсутствие недавних изменений в приложении или сервере, проблема совпала с обновлением ядра Linux с версии 6.5.13 до 6.6.10. Методичное бисекционное исследование ядра выявило коммит, ответственный за проблему, который ввел новый механизм расчета размера окна TCP-принимающей стороны. Оригинальный расчет предполагал 50% накладных расходов, в то время как новый механизм динамически рассчитывал накладные расходы на основе фактических характеристик данных, что привело к меньшему размеру окна. С меньшим размером окна приложение не могло получать данные достаточно быстро в течение 30-секундного таймаута, что приводило к разрыву соединений. Причиной являлось устаревшее параметр sysctl_tcp_adv_win_scale, который был заменен более точным параметром scaling_ratio для расчета размера окна. Откат ядра до предыдущей версии восстановил нормальную работу приложения, демонстрируя, что изменение ядра было основной причиной проблемы.

Java 21 Виртуальные потоки - Чувак, где мой блокировщик?

Netflix, известный своим обширным использованием Java, с энтузиазмом воспринял виртуальные потоки за счет преимуществ в производительности. Однако, во время миграции на Java 21, инженеры столкнулись с периодическими таймаутами и неработающими экземплярами в приложениях, использующих виртуальные потоки с SpringBoot 3 и встроенным Tomcat. Исследования выявили всплеск сокетов, застрявших в состоянии closeWait, что указывало на то, что приложения не могли закрыть соединения. Снимки потоков изначально показывали простаивающие JVM, но более тщательный анализ с помощью специальных команд выявил множество "пустых" виртуальных потоков, то есть потоков, созданных, но еще не запущенных. Это указывало на проблему с выполнением виртуальных потоков, где Tomcat создавал новый виртуальный поток для каждого входящего запроса, но основные потоки операционной системы были полностью заняты. Более глубокий анализ снимков потоков показал, что эти основные потоки операционной системы были прикреплены к виртуальным потокам, застрявшим в ожидании захвата блокировки в синхронизированном блоке кода. Причиной являлось удержание блокировки регулярным платформенным потоком, который не мог вновь захватить блокировку после завершения операции ожидания. Это тупиковая ситуация блокировки препятствовала планированию новых виртуальных потоков, что приводило к наблюдаемым проблемам производительности.

Маэстро: оркестратор потоков Netflix

Маэстро, оркестратор потоков Netflix, является открытым исходным кодом и предназначен для масштабных потоков данных и машинного обучения. Он поддерживает как ациклические, так и циклические потоки, включая многократно используемые шаблоны, такие как циклы foreach, подпотоки и условные ветвления. Маэстро обеспечивает горизонтальную масштабируемость для управления большим количеством потоков и задач в рамках одного потока. Он предлагает гибкий формат определения потока в JSON, сочетающий пользовательские и управляемые Маэстро поля. Стратегии выполнения потоков Маэстро включают последовательный, строго последовательный, только первый, только последний и параллельный с ограничениями по параллелизму. Язык параметров и выражений Маэстро позволяет использовать динамические параметры, инъекцию кода и обмен состояниями между потоками и шагами. Кроме того, Маэстро включает в себя выходные параметры для вызываемых шагов и параметризированные потоки для гибкости и удобства управления. Маэстро также включает в себя общие строительные блоки, такие как поддержка foreach, подпотоки и условные ветвления, что позволяет легко определять поток данных и другие модели потоков.

Увеличение надежности Netflix с помощью приоритетного отключения нагрузки по уровням сервисов

Netflix реализовал технику регулирования нагрузки на уровне сервиса, чтобы улучшить пользовательский опыт и устойчивость системы. Эта техника приоритизирует критически важные запросы, инициируемые пользователем, над некритическими запросами предварительного загрузки в рамках одного и того же сервиса. Реализуя ограничитель параллельности с разбивкой, PlayAPI, критический бэкэнд-сервис, распределяет 100% пропускной способности на критические запросы и использует избыточную мощность для некритических запросов. Эта приоритизация обеспечивает высокую доступность запросов, инициируемых пользователем, даже во время пиков нагрузки или высоких задержек. Успех этого подхода привел к разработке универсальной библиотеки для приоритизации сервисов, позволяющей сервисам определять несколько уровней приоритета. Эта библиотека использует загрузку CPU как меру системной нагрузки, постепенно отключая трафик с более низким приоритетом, чтобы поддерживать пользовательский опыт и обеспечивать больше времени для автоматического масштабирования. Эксперименты показали, что такой подход эффективно отключает некритический и критический трафик в условиях экстремальной нагрузки, поддерживая разумные задержки и стабильный пропускной способности. Netflix подчеркивает важность избежания анти-шаблонов, таких как полное отсутствие отключения или конгестивный сбой, которые могут ухудшать пользовательский опыт или привести к нестабильности системы.

Обзор открытого форума по инженерии данных в Netflix

Форум по инженерии данных в Netflix в 2024 году собрал вместе экспертов, чтобы поделиться знаниями и решениями для преодоления вызовов в инженерии данных. Макс Шмейзер подчеркнул важность инженерии данных в принятии решений, основанных на данных. Стефани Везич Тамайо и Бинбин Хоу представили ML-оснащенную систему автоматического исправления неудачных задач на платформе Netflix. Джиде Огунджоби обсудил использование генеративного ИИ для корпоративного моделирования и архитектуры данных. Тулика Бхатт поделилась тем, как Netflix управляет 18 миллиардами впечатлений в день для реального времени адаптивных рекомендаций. Джессика Ларсон обсудила соображения по созданию платформы данных в пост-GDPR-эре. Джейсон Рид исследовал преимущества и недостатки пакетирования и разбивки хранилищ данных. Кларк Райт поделился подходом Airbnb к качеству данных через их Оценку качества данных. Ярослав Зейгерман подчеркнул преимущества SQLMesh для управления потоками данных. Мероприятие было организовано Крисом Колберном, Синран Вайбелем, Джаем Балани, Рашми Шампрасад и Патрицией Хо.

Аннотатор видео: создание видеоклассификаторов с помощью моделей зрения-языка и активного обучения

Video Annotator (VA) - это фреймворк, который решает задачи в обучении видеоклассификаторов. Он использует модели зрения-языка и активное обучение для эффективной аннотации, позволяя экспертам в соответствующей области направлять процесс. VA проходит через трехэтапный процесс: поиск начальных примеров с помощью поиска видео по тексту, активное обучение и уточнение аннотаций с помощью системы с участием человека, и обзор и уточнение аннотаций итеративно. VA улучшает эффективность выборки, уменьшает затраты и улучшает качество модели. Это позволяет экспертам в соответствующей области напрямую участвовать в аннотации, что способствует доверию и чувству собственности. Активное обучение в VA позволяет пользователям сосредоточиться на все более сложных примерах, уменьшая время аннотации и улучшая производительность модели. VA поддерживает непрерывную аннотацию, что позволяет быстро развертывать, отслеживать и исправлять пограничные случаи. Это позволяет пользователям итеративно улучшать модели без необходимости в помощи ученых-исследователей или внешних аннотаторов. Эксперименты показывают, что VA позволяет создавать видеоклассификаторы более высокого качества по сравнению с базовыми методами. VA позволяет эффективно аннотировать разнообразные задачи понимания видео. Это способствует сотрудничеству между экспертами в соответствующей области и инженерами по машинному обучению. Авторы предоставляют набор данных с 153 тыс. меток по 56 задачам, аннотированным с помощью VA, и выпускают код для репликации. VA решает проблемы традиционных методов обучения классификаторов, улучшая эффективность, качество и участие пользователей в аннотации видео. Это создает ощущение собственности и доверия к системе, облегчая итеративное улучшение и быстрое развертывание точных видеоклассификаторов.

Раунд 2: Обзор приложений причинно-следственного вывода в Netflix

В Netflix причинно-следственный анализ имеет решающее значение для принятия решений и улучшения опыта пользователей. Ежегодный саммит по причинно-следственному анализу и экспериментированию собирает вместе экспертов для обмена методологическими разработками и инновационными применениями. Одна из презентаций была посвящена разработке более быстрого и автоматизированного подхода для оценки годового воздействия с помощью тестирования А/Б, решающего проблемы с необлюдаемыми периодами выставления счетов и необлюдаемыми когортами регистрации. Другая презентация представила систематическую основу для оценки игровых событий с помощью синтетических моделей контроля, решающую проблемы с ограниченными данными и сценариями вмешательства, когда тестирование А/Б нецелесообразно. Двойное машинное обучение было применено для сравнения важности различных метрик в тестах А/Б, решающее потенциальные предвзятости при гетерогенных эффектах лечения. Опросные тесты А/Б с гетерогенной предвзятостью неполного ответа были проанализированы с помощью условных средних эффектов лечения, склонностей и итерационного пропорционального подбора для обеспечения точного представления мнений пользователей. Дизайн был выделен как неотъемлемая часть причинно-следственного анализа в Netflix, с акцентом на оптимизации пользовательских интерфейсов и представлении данных для облегчения принятия решений через экспериментирование.

Создание VES: микросервис Cosmos для кодирования видео Netflix

Новая платформа видеопроцессинга Netflix, Cosmos, использует микросервисы для модернизации медиа-обработки. Сервис видеокодирования (VES) является ключевым микросервисом, кодирующим промежуточный контент в видеопоток, подходящий для потокового вещания или студийного использования. VES поддерживает множество кодеков, разрешений и уровней качества, и использует разбивку на чанки для низкой задержки. Слой API, Optimus, обеспечивает стабильный интерфейс для внешних пользователей. Слой работы, Plato, координирует этапы кодирования с помощью направленного ациклического графа (DAG) с параллелизмом MapReduce. Ресурсоемкие задачи передаются слою вычислений, Stratum, который использует функции Stratum Functions, упакованные в образы Docker. VES использует несколько функций Stratum Functions для разных форматов кодеков, чтобы обеспечивать независимые выпуски и обновления кодеков. Платформа предоставляет абстракции для моделей доступа к медиа, упрощая код функций Stratum. Требования к ресурсам определяются с помощью бенчмаркинга, а "формирование контейнеров" распределяет ресурсы в зависимости от формата кодека и разрешения. Бесперебойный выпуск обеспечивается автоматическими каналами выпуска и обширным тестированием. Продукционные метрики и логи используются для мониторинга и оповещений, включая автоматический откат сервиса, если метрики значительно отклоняются. Опыт, полученный при создании VES, повлиял на последующие дизайн-решения в развитии микросервисов команды.

Обратный поиск в федеративном графе Netflix

Система поиска Netflix Graph Search, ранее известная как Studio Search, распространилась за пределы инженерного подразделения контента и теперь охватывает всю организацию инженеров. Она поддерживает более 100 приложений и 50 индексов. Чтобы решить задачу поиска того, кого уведомлять, когда меняется статус фильма, Graph Search реализовала обратный поиск с помощью полей перколятора Elasticsearch. Обратный поиск позволяет создавать "Сохраненные поиски", которые фильтруют существующие индексы. Эти фильтры преобразуются в запросы Elasticsearch и индексируются в поле перколятора. Когда документ подается, он сопоставляется с сохраненными запросами, определяя те, которые возвращают его. Это функциональность позволяет отправлять точечные уведомления на основе событий изменения, уменьшая влияние на федеративный граф. Чтобы поддержать обратный поиск, конвейер индексирования Graph Search был изменен, чтобы включать отдельный конвейер для индексирования сохраненных поисков, с сопоставлениями, выровненными с помощью шаблонов индексов. Конвейер индексирования перколятора использует события CDC Data Mesh и мутацию DGS Graph Search, чтобы перевести и проиндексировать сохраненные поиски. Версионирование обрабатывается созданием новых версий индексов и конвейеров, что позволяет вносить изменения в сопоставления без прерывания существующих конвейеров. Обратный поиск полезен не только для уведомлений, но и для создания динамических критериев сопоставления. Сервис Movie Matching использует обратные поиски, чтобы классифицировать фильмы по соответствующим критериям. Этот шаблон может быть расширен на любой индекс Graph Search. Более того, обратный поиск закладывает основу для более интерактивных интерфейсов, позволяя создавать подписки, которые обновляют результаты на основе изменений в индексе, соответствующих сохраненным запросам.