Платный видеосервис Netflix опубликовал исходные коды программного средства под названием Suro. Компания разработала и использовала его в течение нескольких лет в качестве промежуточного звена между приложениями, генерирующими большие объёмы данных, и средствами их обработки. Suro агрегирует данные, полученные из различных источников, и направляет их для обработки при помощи Hadopp, Storm или, например, ElasticSearch.
Netflix представляет собой один из самых популярных западных видеосервисов. За скромную абонентскую плату он позволяет своим пользователям смотреть неограниченное количество фильмов и сериалов, которые имеются в его библиотеке. В третьем квартале 2013 года число абонентов Netflix превысило 40 миллионов. Масштабы Netflix таковы, что по вечерам около трети интернет-трафика в США приходится на этот видеосервис.
В Netflix уделяют огромное внимание сбору и анализу данных:
«Анализируя терабайты данных, в которые вливается каждый клик, каждый просмотр, каждый повтор и каждый отказ, списки открытых страниц и многое другое, мы можем для каждого формировать особый домашний экран, заполненный тем контентом, который с наибольшей вероятностью удовлетворит именно этого пользователя.
Даже снимая собственные сериалы, Netflix руководствуется данными. Прежде чем потратить десятки миллионов долларов, компания просчитывает интерес своих зрителей к различным жанрам, актёрам и сюжетам. Количество накопленных данных о предпочтениях аудитории позволяет делать это с поразительной точностью».
На практике это означает необходимость иметь дело с чудовищными количеством информации. В часы пик серверы, которые компания арендует в Amazon Web Services, регистрируют 1,5 миллиона событий в секунду. За день накапливается 80 миллиардов событий, подлежащих анализу.
Suro создаёт конвейер задач обработки данных, перенаправляющий данные, которые генерируются различными источниками, расположенными на серверах в Amazon Web Services или в собственных дата-центрах Netflix, их потребителям.
Приложения, генерирующие данные, расположены в левой части схемы, которая иллюстрирует пост о Suro в блоге Netflix. Информация направляется в Suro, а оттуда попадает обработчикам событий, сохраняется в Amazon S3 для обработки с помощью Hadoop или передаётся высокопроизводительному диспетчеру сообщений Apache Kafka, который был разработан специалистами LinkedIn, а оттуда распределяется между Storm, ElasticSearch и другими программными средствами, применяющимися в Netflix.
По функциональности Suro можно сравнить с такими инструментами, как Apache Flume или Facebook Scribe. В Netflix предпочли разработать собственное решение по двум причинам. Во-первых, Flume и Scribe хуже подходят для использования в сочетании с Amazon Web Services. Во-вторых, контролируя suro, в Netflix смогли добиться идеальной интеграции с другими разработками компании.