К основному содержимому
#Engineering

[2/2] Про Netflix - Инфраструктура, архитектура и AI (Рубрика Engineering)

#Engineering #Culture #Management #Leadership #Processes #Software

Продолжая рассказ про Netflix, надо рассказать про технические основы компании.

Netflix целиком работает в облаке и использует передовую распределённую архитектуру. Все серверные системы Netflix развернуты на AWS - компания завершила полный переход в облако Amazon в 2016 году и с тех пор не владеет собственными дата-центрами. Сегодня инфраструктура Netflix насчитывает сотни и тысячи микросервисов, работающих в нескольких регионах AWS и обслуживающих более 230+ млн аккаунтов по всему миру. Приложения разделены по функциональным сервисам (от профиля пользователя и системы рекомендаций до системы платежей или каталога видео), которые общаются друг с другом через API. Такой переход на микросервисную архитектуру был начат ещё в 2009–2012 годах, когда Netflix разрезал свою монолитную систему на отдельные сервисы для повышения масштабируемости

Netflix построил целый набор внутренних платформенных решений поверх AWS, чтобы упростить жизнь своим разработчикам. Среди них

  • Собственная система оркестрации Titus (внутренний проект, потом open source). Titus интегрирован с AWS (управляет EC2-инстансами), позволяя инженерам деплоить свои сервисы в контейнерах без необходимости вручную оперировать виртуальными машинами.
  • Собственная система CD Spinnaker (внутренний проект, потом open source). Она работает поверх Titus и автоматизирует развёртывание микросервисов сразу по всем регионам (мульти-регионные деплойменты)
  • Собственный API Gateway Zuul (внутренний проект, потом open source). В обновлённой версии Zuul 2 он построен на неблокирующей Netty и выдерживает огромные объемы соединений, выступая первым рубежом масштабирования
  • Собственный circuit breaker Hystrix (внутренний проект, потом open source). Интересно, что внутри Netflix от него потом отказались
  • Практика chaous engineering и инструменты Chaos Monkey, Simian Army: Latency Monkey, Chaos Kong и др.

Архитектура данных Netflix распределена и масштабируема

  • Apache Cassandra используется для высоконагруженных онлайн-хранилищ, где огромные объемы и требуется горизонтальное масштабирование
  • Поверх различных хранилищ Netflix реализовал абстрактный слой KV Storage, унифицирующий доступ для разработчиков и инкапсулирующий детали репликации данных
  • Для кеширования часто запрашиваемых данных (профили, списки рекомендаций и пр.) в нескольких датацентрах применяется собственный сервис EVCache (поверх memcached)
  • Потоковые данные обрабатываются через стриминговую платформу Mantis (внутренний проект, потом open source). Платформа способна в реальном времени фильтровать и агрегировать миллионы событий
  • Для пакетных задач big data используется комбинация решений: Keystone - стриминг поверх Kafka, и Genie - оркестратор задач в Hadoop/Spark кластерах (последний релиз в open source был 3 года назад)
  • В 2020-х Netflix открыла исходники Conductor - своего оркестратора бизнес-воркфлоу для микросервисов
  • В 2024 году выложила в open-source и новую версию оркестратора data/ML-пайплайнов Maestro.

Хотя вычислительные сервисы Netflix работают в AWS, для доставки видео-трафика компания построила собственную CDN-сеть Netflix Open Connect. Эта инфраструктура решает задачу стриминга гигантских объёмов данных (сотни Tbps) с оптимальным качеством. Open Connect представляет собой флот физических caching-апплиансев, которые Netflix устанавливает в узлах интернет-провайдеров по всему миру

Если говорить про AI/ML, то

  • Опыт пользователя персонализирован, рекомендации, обложки фильмов
  • При помощи AI/ML оптимизируется инфраструктура сервисов, чтобы снизить косты
  • AI используется для производства контента, а также, например, для создания трейлеров

В итоге, видно почему Netflix считается технологической компанией.

#Culture #Management #Leadership #Processes #Engineering #Software