Примечание переводчика: В нашем блоге мы много пишем о построении облачного сервиса 1cloud, но немало интересного можно почерпнуть и из опыта по работе с инфраструктурой других компаний. Мы уже рассказывали о дата-центре фотосервиса imgix, описывали детективную историю поиска проблем с SSD-дисками проекта Algolia, а сегодня представляем вашему вниманию адаптированный перевод статьи создателя блога Scale Scale Криса Уэланда, в которой представлен подробный обзор стека технологий Netflix.



Обзор интересных особенностей масштабирования 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 поддерживаются следующими кодеками с разными битрейтами, позволяя смотреть видео с любого устройства при наличии выхода в Интернет:


Сеть доставки контента 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.

Полезные ссылки

  1. On HackerNews
  2. en.wikipedia.org/wiki/Netflix
  3. gizmodo.com/this-box-can-hold-an-entire-netflix-1592590450
  4. edition.cnn.com/2014/07/21/showbiz/gallery/netflix-history
  5. techblog.netflix.com/2015/01/netflixs-viewing-data-how-we-know-where.html
  6. gigaom.com/2013/03/28/3-shades-of-latency-how-netflix-built-a-data-architecture-around-timeliness
  7. gigaom.com/2015/01/27/netflix-is-revamping-its-data-architecture-for-streaming-movies
  8. stackshare.io/netflix/netflix
  9. www.quora.com/How-does-the-Netflix-movie-recommendation-algorithm-work
  10. netflix.github.io

P.S. Мы в 1Cloud считаем, что подобный подход: открытость для необычных идей, активное использование новых разработок, создание корпоративной культуры, которая поощряет поиск нестандартных решений и не фиксируется на количестве отработанных сотрудниками часов как минимум заслуживает внимания — его часто не хватает в технологических проектах.

Мы со своей стороны стремимся поддерживать ИТ-компании, создающие новые, интересные и удобные сервисы — в том числе SaaS-проекты и крупные распределенные системы — так, чтобы их разработчики как можно больше времени уделяли своей непосредственной работе, созданию творческой и продуктивной рабочей среды и не беспокоились о вопросах инфраструктуры и оптимизации затрат на нее.

Комментарии (6)


  1. BigD
    18.11.2015 17:56
    +1

    «Каждый из фильмов закодирован в 50 вариантах в зависимости от разрешения видео и качества звука, задействуя виртуальные машины в облаке. В сервисе Amazon хранится более одного терабайта данных»

    Сколько? 1 терабайт? Может все-таки петабайт?


    1. justyork
      18.11.2015 18:44
      +2

      Может 1 терабайт на каждое видео?


      1. zelenin
        18.11.2015 22:35
        +1

        Over 1 petabyte of data is stored on Amazon.


    1. 1cloud
      19.11.2015 01:35
      +2

      Петабайт, опечатка вкралась. Сейчас все ок


  1. Psych0
    20.11.2015 01:43

    Использовали netflix инфраструктуру в последнем проекте. В купе с Spring Cloud оказалось очень здорово. За пару дней я сделал POC провели стресс тестирование — все получилось и мы решили взять этот стек за основной.


  1. gydex
    23.11.2015 09:21

    Отказ от фиксации на количестве отработанных часов — это полезный подход. Считаю оптимальным ориентироваться на результативность и выполнение задач в срок.
    Справочные ссылки из статьи нам пригодились, спасибо.