Примечание переводчика: В нашем блоге мы много пишем о построении облачного сервиса 1cloud, но немало интересного можно почерпнуть и из опыта по работе с инфраструктурой других компаний. Мы уже рассказывали о дата-центре фотосервиса imgix, описывали детективную историю поиска проблем с SSD-дисками проекта Algolia, а сегодня представляем вашему вниманию адаптированный перевод статьи создателя блога Scale Scale Криса Уэланда, в которой представлен подробный обзор стека технологий Netflix.
Компания Netflix была основана в 1997 году Марком Рэндольфом и Ридом Гастингсом в Скотс-Вэлли, штат Калифорния, и на начальном этапе в ней находилось 30 сотрудников, работавших над 925 фильмами и сериалами по подписке. Сегодня Netflix является ведущей мировой сетью интернет-телевидения, обслуживающей более 69 миллионов клиентов из 50 стран, которые каждый месяц наслаждаются просмотром телесериалов и фильмов общей длительностью более десяти миллиардов часов. Компания очень открыта и выкладывает в Сеть много информации. Мы собрали все самое интересное и решили им поделиться.
Компания NetFlix известна своей презентацией об организационной культуре: ее основные идеи отражают новый взгляд на управление персоналом. Масштабирование компании основано на принципах, представленных в презентации. Ниже приведены некоторые из ее слайдов. Они помогают раскрыть сущность культуры компании, а также понять, как она проводит масштабирование своего стека технологий и почему он действительно работает.
Цитата из презентации Netflix:
Цитата из презентации Netflix:
Полный текст презентации вы можете посмотреть здесь.
Инфраструктура Netflix построена на основе сервиса Amazon EC2, где хранятся мастер-копии цифровых фильмов из хранилища в Amazon S3. Каждый из фильмов закодирован в 50 вариантах в зависимости от разрешения видео и качества звука, задействуя виртуальные машины в облаке. В сервисе Amazon хранится более одного петабайта данных. Эти данные передаются в сети доставки контента (CDN), через которые контент поставляется местным интернет-провайдерам.
Netflix использует набор открытого программного обеспечения серверной части, в состав которого входят Java, MySQL, Gluster, Apache Tomcat, Hive, Chukwa, Cassandra и Hadoop.
Большое число комбинаций кодеков и значений битрейта в Netflix подразумевает «обязательность кодирования одного фильма 120 различными способами перед его передачей на любую стриминговую платформу».
Помимо того, что Netflix использует технологию адаптивного стриминга [англ. adaptive bitrate streaming], которая позволяет регулировать качество аудио и видео, чтобы соответствовать скорости загрузки пользователя, компания также предоставляет клиентам возможность выбрать качество видео на своем сайте.
Вы можете смотреть фильмы онлайн с любого устройства с выходом в Интернет через приложение Netflix. Это может быть компьютер, игровая приставка, DVD или Blu-Ray плеер, ресивер цифрового телевидения [англ. set-top box], домашний кинотеатр, телефон или планшет.
Все фильмы на сайте Netflix поддерживаются следующими кодеками с разными битрейтами, позволяя смотреть видео с любого устройства при наличии выхода в Интернет:
Сеть доставки контента Netflix Open Connect предоставляет свои услуги более крупным интернет-провайдерам, имеющим более 100 000 клиентов. Специальное встроенное оборудование с низкой мощностью и высокой плотностью записи за определенную плату может передать с сайта Netflix контент, хранящийся в дата-центах интернет-провайдеров, тем самым сокращая затраты на передачу данных из Сети. Это оборудование работает на операционной системе FreeBSD, используя сервер nginx и службу маршрутизации BIRD [англ. bird Internet routing daemon].
NetFlix Open Connect в Париже. Фото сделано @dtemkin
Здесь вы можете посмотреть видео о Netflix Open Connect.
В 2009 году компания Netflix провела конкурс под названием Netflix Prize. Компания открыла доступ к своим личным данным и дала командам возможность попытаться усовершенствовать ее алгоритмы. Команда-победитель улучшила алгоритм Netflix на 10,06%. Компания собиралась провести Netflix Prize еще один раз, но в итоге так и не провела в связи с вмешательством Федеральной торговой комиссии (FTC), занимающейся вопросами конфиденциальности.
Рекомендательная система Netflix состоит из нескольких алгоритмов. Двумя базовыми алгоритмами продукционной системы компании являются ограниченные машины Больцмана [англ. restricted Boltzmann machines, RBM] и факторизация матриц, которая носит название SVD++. Комбинация двух этих алгоритмов использует линейное смешивание и выдает оценку высокой точности.
Ограниченная машина Больцмана (RBM) – это нейронная сеть, настроенная на работу с совместной фильтрацией. Для каждого пользователя имеется отдельная RBM, а в роли входных узлов сети выступают фильмы, оцененные пользователем.
SVD++ – это асимметричная форма сингулярного разложения [англ. singular value decomposition, SVD], которая позволяет извлекать информацию из неявных данных RBM. Алгоритм SVD++ был разработан командой-победителем соревнования Netflix Prize.
В своем блоге о современных технологиях команда Netflix описывает процесс «Обучения персонализированной домашней страницы».
Здесь вы можете ознакомиться со всеми открытыми проектами компании. У Netflix есть отличный блог о технологиях, в котором не так давно ее сотрудники написали пост под названием «Эволюция открытых проектов Netflix».
P.S. Мы в 1Cloud считаем, что подобный подход: открытость для необычных идей, активное использование новых разработок, создание корпоративной культуры, которая поощряет поиск нестандартных решений и не фиксируется на количестве отработанных сотрудниками часов как минимум заслуживает внимания — его часто не хватает в технологических проектах.
Мы со своей стороны стремимся поддерживать ИТ-компании, создающие новые, интересные и удобные сервисы — в том числе SaaS-проекты и крупные распределенные системы — так, чтобы их разработчики как можно больше времени уделяли своей непосредственной работе, созданию творческой и продуктивной рабочей среды и не беспокоились о вопросах инфраструктуры и оптимизации затрат на нее.
Обзор интересных особенностей масштабирования Netflix
Компания Netflix была основана в 1997 году Марком Рэндольфом и Ридом Гастингсом в Скотс-Вэлли, штат Калифорния, и на начальном этапе в ней находилось 30 сотрудников, работавших над 925 фильмами и сериалами по подписке. Сегодня Netflix является ведущей мировой сетью интернет-телевидения, обслуживающей более 69 миллионов клиентов из 50 стран, которые каждый месяц наслаждаются просмотром телесериалов и фильмов общей длительностью более десяти миллиардов часов. Компания очень открыта и выкладывает в Сеть много информации. Мы собрали все самое интересное и решили им поделиться.
Культура масштабирования
Компания NetFlix известна своей презентацией об организационной культуре: ее основные идеи отражают новый взгляд на управление персоналом. Масштабирование компании основано на принципах, представленных в презентации. Ниже приведены некоторые из ее слайдов. Они помогают раскрыть сущность культуры компании, а также понять, как она проводит масштабирование своего стека технологий и почему он действительно работает.
Цитата из презентации Netflix:
Тяжелая работа больше не актуальна:
- Мы не следим за тем, сколько часов наши сотрудники тратят на свою работу или сколько времени они проводят в офисе;
- Для нас важны результаты работы;
- Стабильная производительность на «уровне B», несмотря на недостаточно высокие результаты, поощряется щедрым выходным пособием и уважением со стороны руководства;
- Высокая результативность на «уровне A», несмотря на небольшое количество приложенных усилий, поощряется дополнительной ответственностью и более высокой оплатой.
Цитата из презентации Netflix:
Создание рабочей атмосферы, а не контроля
Помогайте советами и рекомендациями для принятия разумных решений
Рабочая атмосфера (принять):
- Составление стратегии;
- Определение ключевых показателей;
- Введение допущений;
- Постановка целей;
- Четкое распределение обязанностей;
- Знание стеков;
- Открытость в процессе принятия решений.
Контроль (избегать):
- Нисходящее принятие решений;
- Постоянное согласование с руководством;
- Введение органов регулирования;
- Придание большей важности планированию и самому процессу, нежели результатам.
Полный текст презентации вы можете посмотреть здесь.
Поддержка множества фильмов с помощью сервисов Amazon
Инфраструктура Netflix построена на основе сервиса Amazon EC2, где хранятся мастер-копии цифровых фильмов из хранилища в Amazon S3. Каждый из фильмов закодирован в 50 вариантах в зависимости от разрешения видео и качества звука, задействуя виртуальные машины в облаке. В сервисе Amazon хранится более одного петабайта данных. Эти данные передаются в сети доставки контента (CDN), через которые контент поставляется местным интернет-провайдерам.
Netflix использует набор открытого программного обеспечения серверной части, в состав которого входят Java, MySQL, Gluster, Apache Tomcat, Hive, Chukwa, Cassandra и Hadoop.
Поддержка множества различных устройств
Большое число комбинаций кодеков и значений битрейта в Netflix подразумевает «обязательность кодирования одного фильма 120 различными способами перед его передачей на любую стриминговую платформу».
Помимо того, что Netflix использует технологию адаптивного стриминга [англ. adaptive bitrate streaming], которая позволяет регулировать качество аудио и видео, чтобы соответствовать скорости загрузки пользователя, компания также предоставляет клиентам возможность выбрать качество видео на своем сайте.
Вы можете смотреть фильмы онлайн с любого устройства с выходом в Интернет через приложение Netflix. Это может быть компьютер, игровая приставка, DVD или Blu-Ray плеер, ресивер цифрового телевидения [англ. set-top box], домашний кинотеатр, телефон или планшет.
Все фильмы на сайте Netflix поддерживаются следующими кодеками с разными битрейтами, позволяя смотреть видео с любого устройства при наличии выхода в Интернет:
- Видео: VC-1, H.264 (AVC), VC-1, H.263, H.265 (HEVC)
- Аудио: WMA, Dolby Digital, Dolby Digital Plus, AAC и Ogg Vorbis
Сеть доставки контента Netflix Open Connect
Сеть доставки контента Netflix Open Connect предоставляет свои услуги более крупным интернет-провайдерам, имеющим более 100 000 клиентов. Специальное встроенное оборудование с низкой мощностью и высокой плотностью записи за определенную плату может передать с сайта Netflix контент, хранящийся в дата-центах интернет-провайдеров, тем самым сокращая затраты на передачу данных из Сети. Это оборудование работает на операционной системе FreeBSD, используя сервер nginx и службу маршрутизации BIRD [англ. bird Internet routing daemon].
NetFlix Open Connect в Париже. Фото сделано @dtemkin
Здесь вы можете посмотреть видео о Netflix Open Connect.
Масштабирование алгоритмов
В 2009 году компания Netflix провела конкурс под названием Netflix Prize. Компания открыла доступ к своим личным данным и дала командам возможность попытаться усовершенствовать ее алгоритмы. Команда-победитель улучшила алгоритм Netflix на 10,06%. Компания собиралась провести Netflix Prize еще один раз, но в итоге так и не провела в связи с вмешательством Федеральной торговой комиссии (FTC), занимающейся вопросами конфиденциальности.
Рекомендательная система Netflix состоит из нескольких алгоритмов. Двумя базовыми алгоритмами продукционной системы компании являются ограниченные машины Больцмана [англ. restricted Boltzmann machines, RBM] и факторизация матриц, которая носит название SVD++. Комбинация двух этих алгоритмов использует линейное смешивание и выдает оценку высокой точности.
Ограниченная машина Больцмана (RBM) – это нейронная сеть, настроенная на работу с совместной фильтрацией. Для каждого пользователя имеется отдельная RBM, а в роли входных узлов сети выступают фильмы, оцененные пользователем.
SVD++ – это асимметричная форма сингулярного разложения [англ. singular value decomposition, SVD], которая позволяет извлекать информацию из неявных данных RBM. Алгоритм SVD++ был разработан командой-победителем соревнования Netflix Prize.
В своем блоге о современных технологиях команда Netflix описывает процесс «Обучения персонализированной домашней страницы».
Открытые проекты
Здесь вы можете ознакомиться со всеми открытыми проектами компании. У Netflix есть отличный блог о технологиях, в котором не так давно ее сотрудники написали пост под названием «Эволюция открытых проектов Netflix».
Big Data
- Genie представляет собой мощный инструмент на базе REST, повышающий абстракцию различных фрейморков для обработки данных, в частности, Hadoop;
- Inviso дает подробный анализ задач и кластеров Hadoop;
- Lipstick ясно и наглядно описывает процесс обработки потока задач на платформе Pig;
- Aegisthus является кластером Hadoop с абстракцией данных из Cassandra для обработки выходных сигналов.
Инструменты разработки и поставки контента
- Nebula – средство Netflix для совместного использования своей внутренней инфраструктуры разработки;
- Aminator – инструмент для создания образов EBS AMI;
- Asgard – веб-интерфейс для развертывания приложений и управления облаком в Amazon Web Services (AWS).
Общие сервисы исполнения и библиотеки
- Eureka – средство обнаружения сервисов для облачной платформы Netflix;
- Archaius – распределенная конфигурация;
- Ribbon – гибкое программируемое средство связи между процессами;
- Hystrix обеспечивает надежность отдельных запросов и устойчивость к скрытым отказам и сбоям во время их исполнения;
- Karyon и Governator – сервисы-контейнеры для виртуальных машин Java;
- Prana – приложение, придающее экземпляру Netflix свойства прокси-сервера;
- Zuul обеспечивает динамическое проксирование в рамках процесса облачного развертывания;
- Fenzo предоставляет улучшенное распределение и управление ресурсами для фреймворков, используемых в облаке [англ. cloud-native frameworks].
Сохранность данных
- EVCache и Dynomite предназначены для использования в хранилищах Memcached и Redis в требуемых масштабах;
- Astyanax и Dyno – клиентские библиотеки для улучшения обслуживания хранилищ данных в облаке.
Аналитика, надежность и производительность
- Atlas – платформа для телеметрии временных рядов;
- Edda – сервис для отслеживания изменений, происходящих в облаке;
- Spectator упрощает интеграцию кода Java-приложения с Atlas;
- Vector определяет метрику с высокой точностью на уровне хоста при минимальных накладных расходах;
- Ice определяет тенденции изменения текущих издержек и использования облачных сервисов;
- Simian Army тестирует экземпляры Netflix на случайные сбои.
Безопасность
- Security Monkey помогает отслеживать и обеспечивать безопасность масштабной среды разработки на базе сервисов AWS;
- Scumblr использует поиск в Интернете, направленный на выявление определенных проблем безопасности;
- MSL – гибкий и расширяемый протокол защищенного обмена сообщениями, учитывающий ряд сценариев использования и требований к безопасной связи;
- Falcor – средство представления источников удаленных данных в виде модели одиночного домена с помощью виртуального графа на JSON;
- Restify – фреймворк на платформе node.js, предназначенный исключительно для создания REST API веб-серверов;
- RxJS – библиотека для реактивного программирования на JavaScript.
Полезные ссылки
- On HackerNews
- en.wikipedia.org/wiki/Netflix
- gizmodo.com/this-box-can-hold-an-entire-netflix-1592590450
- edition.cnn.com/2014/07/21/showbiz/gallery/netflix-history
- techblog.netflix.com/2015/01/netflixs-viewing-data-how-we-know-where.html
- gigaom.com/2013/03/28/3-shades-of-latency-how-netflix-built-a-data-architecture-around-timeliness
- gigaom.com/2015/01/27/netflix-is-revamping-its-data-architecture-for-streaming-movies
- stackshare.io/netflix/netflix
- www.quora.com/How-does-the-Netflix-movie-recommendation-algorithm-work
- netflix.github.io
P.S. Мы в 1Cloud считаем, что подобный подход: открытость для необычных идей, активное использование новых разработок, создание корпоративной культуры, которая поощряет поиск нестандартных решений и не фиксируется на количестве отработанных сотрудниками часов как минимум заслуживает внимания — его часто не хватает в технологических проектах.
Мы со своей стороны стремимся поддерживать ИТ-компании, создающие новые, интересные и удобные сервисы — в том числе SaaS-проекты и крупные распределенные системы — так, чтобы их разработчики как можно больше времени уделяли своей непосредственной работе, созданию творческой и продуктивной рабочей среды и не беспокоились о вопросах инфраструктуры и оптимизации затрат на нее.
Комментарии (6)
Psych0
20.11.2015 01:43Использовали netflix инфраструктуру в последнем проекте. В купе с Spring Cloud оказалось очень здорово. За пару дней я сделал POC провели стресс тестирование — все получилось и мы решили взять этот стек за основной.
gydex
23.11.2015 09:21Отказ от фиксации на количестве отработанных часов — это полезный подход. Считаю оптимальным ориентироваться на результативность и выполнение задач в срок.
Справочные ссылки из статьи нам пригодились, спасибо.
BigD
«Каждый из фильмов закодирован в 50 вариантах в зависимости от разрешения видео и качества звука, задействуя виртуальные машины в облаке. В сервисе Amazon хранится более одного терабайта данных»
Сколько? 1 терабайт? Может все-таки петабайт?
justyork
Может 1 терабайт на каждое видео?
zelenin
1cloud
Петабайт, опечатка вкралась. Сейчас все ок