[2/2] Про Netflix - Инфраструктура, архитектура и AI (Рубрика Engineering)
Продолжая рассказ про 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