Дмитрий Кабанов

Как масштабировать бэкенд для Ким Кардашьян?

История Грэга Кнаусса, отвечающего за работу сайта PaperMag.com, на котором были впервые опубликованы скандальные фото Кардашьян.


Дмитрий Кабанов, сооснователь контент-студии Rockin’Robin, делится с читателями Rusbase историей веб-разработчиков журнала Paper – в момент появления в Сети фотографий с Ким Кардашьян команде пришлось постараться, чтобы обеспечить работу площадки.

Интернет взорвался

11 ноября 2014 года журнал об искусстве и ночных развлечениях Paper «взорвал интернет», поместив на свою обложку фотографию почти голой и блестящей от масла Ким Кардашьян, сделанную Жаном-Полем Гудом. Подобные фотографии Ким были выложены и на их сайте. Появился даже отдельный хэштег – #breaktheinternet. 

Но было кое-что, что Paper не собирались «взрывать»: часть сервиса, которая отвечала за то, чтобы миллионы копий фото с обнаженной Ким Кардашьян отображались в любой точке мира без каких-либо неполадок.

Главная страница сайта PaperMag.com, на котором впервые были опубликованы фото знаменитости

Публикация фотографий с ягодицами Ким — это смелый шаг. Вы не можете просто разместить их в интернете и отправиться по своим делам. Это все равно, что бросить гранату в костер: взрыв посещаемости может обрушить сервер. Здесь необходим план.

#ПустьВызрывНеЗатронетРаботуСервиса

В первую неделю ноября сотрудники Paper связались с администраторами сайта и сообщили следующее: «На сайте может сильно возрасти трафик».

Тут надо заметить, что Paperэто журнал об искусстве, культуре, знаменитостях и ночных развлечениях, который за 30 лет существования стал важной частью культуры Нью-Йорка. В течение 20 из них у журнала был сайт. Это не крупный и не маленький журнал — согласно официальной информации, ежемесячно его читают 650 тыс. человек, включая и пользователей сайта. Кроме того, сообщается, что у журнала более 100 тыс подписчиков.


По теме: «Взрывной» пиар для самых смелых – 10 формул


Так вот, поступил телефонный звонок касательно «возросшего трафика». Сначала, Дэвид Джэкобс (на фото), основатель компании 29th St. Publishing, не воспринял данное предупреждение всерьез. Как Дэвид написал мне в чате, когда люди из журнала Paper организуют какие-то мероприятия или запускают крупные рекламные кампании,  «подобные предупреждения поступают очень часто». Он объяснил, что сайт Paper рассчитан на бесперебойное обслуживание полумиллиона посетителей в месяц, и хорошо справлялся с этой задачей в течение многих лет. Компания, которая управляет сайтом Papermag.com, называется 29th St. Publishing. Она расположена в Нью-Йорке. Сотрудницу Paper, которая тогда, в первой неделе ноября, получила это сообщение, зовут Джэйми Грэноф. Она является администратором сайтов Paper, управляет отделами, занимающимся веб-рекламой и составлением статьей, а также организует мероприятия и участвует в работе над печатным изданием журнала.

«И тут Джэйми говорит: «Что ж, нам нужно сделать звонок», — рассказывает Джэкобс, — «и продолжает: «Я вас всех люблю! Позвонить — это прекрасная идея! Ну…хорошо, давайте сделаем звонок».

Джэкобс был удивлен, что по телефону ему ответил Дэвид Гершковиц, один из основателей Paperчто было нетипично в ситуации, когда нужно просто обсудить архитектуру сайта. В тот момент мы и узнали, что новые изменения в сайте будут включать фотографии Кардашьян с обнаженными ягодицами. 

«Это ее настоящие ягодицы», — пояснил Гершковиц.

«Эти слова по какой-то причине озадачили меня, — рассказывает Джэкобс. — Чем же еще это могло обернуться?»

Он добавил: «Но теперь, когда я знаю, в чем суть проекта, я понимаю, почему это было так важно».

Самая скромная фотография из опубликованных Ким на сайте

Ага

Джэкобс связался с Грэгом Кнауссом, который проживает в Калифорнии и «является одновременно владельцем, администратором и стажером» компании ExtraMoon, LLC — подрядчика 29th St. Publishing, а также ряда других фирм и организаций. В то время как Джэкобс управляет продуктами компании и занимается планированием, Кнаусс обеспечивает функционирование серверов.

По электронной почте Джэкобс сообщил Кнауссу о том, что Paper считают – «они придумали кое-что, и это подарит им по меньшей мере 100 миллионов просмотров, вопрос – справится ли их сервер с такой нагрузкой».

«По моей спине пробежали мурашки, — рассказывает Кнаусс. — И единственный ответ, который я смог придумать, был: «Ага».

Джэкобс начал работать при поддержке людей из Paper, чтобы действовать эффективнее. Кнаусс приступил к выполнению требований, не зная, что конкретно он разрабатывает. 

«Я автоматически начал проектировать необходимую архитектуру в своей голове, – говорит Кнаусс. – Это рефлекс заядлого программиста. Собаки бегут за брошенным мячиком, а системные администраторы стараются организовать работу сайта при произвольном трафике».

Работа над сайтом началась 6 ноября, а ко вторнику, 11 ноября, уже нужно было запуститься со всеми изменениями.

Масштабирование: все зависит от обстоятельств

Вы можете заявить: «Работа в интернете не требует много времени и обходится дешево, а создать сайт и привлечь целую толпу читателей — это же очень просто!» Как и в любых других случаях при работе с информационными технологиями, ответ на это такой: «Все зависит от обстоятельств». Не у всех сайтов и сервисов в интернете одинаковая структура.

Давайте рассмотрим так называемую метафору транспортировки с крайне необычной точки зрения.

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

Сайт печатного издания, к примеру, PaperMag.com, требует персональной настройки. Его можно сравнить с автобусом музыкальной группы, на котором она отправляется в тур по городам. В целом это обычный автобус, но его необходимо обустроить согласно требованиям музыкального коллектива. В нем может быть большой телевизор, компактная звукозаписывающая аппаратура и холодильник. Музыканты не управляют своим автобусом — вместо этого они платят людям, которые водят его, убирают в салоне и следят за тем, чтобы не произошло поломки. В данном случае Paper играет музыку, а 29th St. Publishing водит автобус.

Если вы владеете крупным сервисом, таким как Facebook, Twitter, или даже BuzzFeed, то ваш сайт можно сравнить с самолетом. Все должно работать идеально – если хоть что-то ломается, падает весь самолет. Оборудование подвергается риску поломки, стоит больших денег и требует наблюдения. На вас постоянно работает группа профессионалов, и вы можете справиться с наплывом большого количества посетителей за очень короткое время.


Paper задавали следующий вопрос: «Можете ли вы взять наш сайт, на который заходят сотни тысяч пользователей в течение месяца, и сделать из него сайт, способный обслуживать десятки миллионов пользователей, и даже больше?» Или, если сформулировать вопрос иначе: «Можете ли вы превратить наш автобус для тура по городам в самолет на одну или две недели?»

Установка реактивных двигателей на автобус

Я попросил Кнаусса (на фото) вкратце рассказать, как работал PaperMag.com перед тем, как он начал подготавливать сайт к публикации фотографий Кардашьян. Вот что он рассказал:

(эта часть статьи является очень занудной, наполненной названиями программ и аббревиатурами, но и также хорошо демонстрирует, как каждый день по всему миру в интернете публикуются миллиарды веб-страниц).Грег Кнаусс

1.Сначала все загружается на сервис Amazon Web Services или AWS. Amazon (тот самый Amazon, который продает книги и памперсы) предлагает вам сотни различных специализированных сервисов, которые вы можете подключить нажатием кнопки (виртуальной кнопки в интернете). У этого сайта есть сотни тысяч компьютеров, которые используются в течение какого-то времени в качестве хранилища баз данных, к файлам которых может быть обеспечен доступ в сети и т.д. AWS является одним из наиболее известных «облаков» новой сферы «облачной обработки данных».

2. Существует база данных, которая управляется Amazon и которая отвечает специфическим требованиям сайта Paper. Это обычная старомодная реляционная база. В нее можно добавлять данные и извлекать их.

3. В дополнение к этой базе данных Paper по программе лизинга использует компьютер компании Amazon (который может быть как реальным компьютером, так и виртуальным образом другого, более мощного компьютера — у нас нет об этом информации). Эта машина обслуживает от 500 тыс. до миллиона уникальных посетителей в месяц.

4. На этом компьютере, который служит сервером на базе операционной системы Linux, работают несколько серверных программ (да, все именно так — серверы, функционирующие на серверах). Эти программы работают постоянно и ожидают запросов от пользователей. Среди них – Movable Type, легендарная система управления веб-контентом (CMS). При работе со статьями журнала программа MovableType использовалась для создания и редактирования статей, установки  шрифтов, загрузки изображений и так далее. Подобные системы сохраняют статьи в базе данных (см. информацию выше), где они индексируются и сортируются. Спустя какое-то время (несколько минут или лет) пользователь может зайти на сайт и сделать запрос на страницу. Система CMS должна извлечь соответствующую информацию из базы данных, сформировать веб-страницу и показать статью (либо стартовую страницу с ссылками на множество статей).

5. Но не в нашем случае!

Системы CMS отлично справляются с созданием и хранением данных, но не очень эффективны при извлечении информации из базы данных и при создании страниц. Информация, предстающая перед читателями журнала в готовом виде, проходит более сложный путь. В данном случае MovableType сохраняет все данные, необходимые для создания страницы, в едином формате (это формат JSON, если кому-то интересно). Специализированный веб-сервер под названием Tornado со множеством возможностей по настройке считывает эти данные и обрабатывает их, используя специальный программный код, написанный несколько лет тому назад программистом по имени Натали Подразик, бывшим техническим директором 29th St. Publishing. Под действием этого кода файлы немного изменяются, а после –превращаются в веб-страницы при помощи шаблонов, обычно путем скаффолдинга, когда вы указываете, куда поместить заголовок, саму статью и т.д.

6. Но и это еще не все! Главная роль отводится временному хранилищу данных под названием Varnish. Когда вы заходите на PaperMag.com и делаете запрос на страницу, Varnish проверяет, построена ли страница и готова ли она к загрузке. Если страница готова, Varnish загружает ее, и вы можете просмотреть страницу в своем браузере. Если же она не готова, сервис запрашивает страницу у сервера Tornado. Тот, в свою очередь, извлекает данные из MovableType и, используя шаблоны, создает страницу. После этого она загружается в интернет, а Varnish сохраняет копию страницы для следующего пользователя, который сделает запрос на нее. Периодически Varnish удаляет сохраненную версию страницы, так как сайты могут изменяться.

Вот таким образом веб-страницы создаются и отправляются пользователям — по уровню сложности этот процесс занимает место где-то между рождением ребенка и созданием нового правительства. Прокрутите все этапы, описанные выше, пару сотен тысяч раз, и вы получите представление о работе PaperMag.com в течение обычного месяца. (Безусловно, я описал далеко не весь процесс. Работа сайта — это сложнейшая вещь).

Стэк

Вы уже заметили, что вышеуказанные технологии базируются одна на другой? Специалисты по архитектуре программного обеспечения называют всю совокупность таких связанных технологий «стэком» (термин «стэк» также относится к способу хранения и взаимодействия с файлами в памяти компьютера — все слова в сфере информационных технологий многозначны).

То, что любят делать все заядлые компьютерщики — это, посмотрев на такой «стэк», используемый кем-то другим, восклицать: «Просто карточный домик какой-то!» И на самом деле, вполне ожидаемо, что люди, ссылаясь на эту статью, будут давать подобные комментарии: «Звучит неплохо, но им стоило использовать программу «W» с настройками «X», а еще команду «Y», чтобы организовать процесс «Z». 

Вы, конечно, можете с помощью математики описать, что способен выполнить тот или иной компьютер в тех или иных условиях. Но в мире постоянно функционируют миллиарды компьютеров, передающих информацию друг другу посредством программного обеспечения различных версий – таким образом, мы получаем хаос. То есть, все является карточным домиком. Вы можете показывать на него пальцем и смеяться – или сесть за покерный стол, взять в руки карты и заняться делом. 

«Подготовка к Ким», или «Все вокруг меня зависит от кэша», или «Учим автобус летать»

Неважно, насколько эффективен Varnish при кэшировании страниц – одного компьютера все равно не хватило бы для успешной работы. Первым делом Кнаусс запустил добротный сервер с вместительным жестким диском для процессов в облаке Amazon. Он скопировал все изображения и прочие файлы с небольшого веб-сервера, который использовался до этого, на новый, крупный сервер. После этого он установил программу под названием Gluster, которая организует обмен файлами между большим количеством компьютеров — она похожа на вариант сервиса Dropbox, и ее можно полностью контролировать. Таким образом, Кнаусс мог добавлять в сеть новые серверы, у которых была бы общая функционирующая файловая система.

Перемещение содержимого веб-сайта с продуманной структурой и системой распределения файлов с одного компьютера на другой, на самом деле, не такая тяжелая задача. Что по-настоящему трудно — так это менять код, с помощью которого загружаются страницы сайта. Целью Кнаусса было вносить как можно меньше изменений в основную структуру PaperMag.com и оставить код, написанный Подразик годы назад, в изначальном виде.

«Любые изменения программного обеспечения подобны мышиным норам, — объясняет он. — И какие-либо манипуляции с ним приведут к проблемам, которые не удастся обнаружить до тех пор, пока это программное обеспечение не начнут использовать 100 миллионов человек».

После установки программы Gluster на сервер Кнаусс добавил еще один компьютер, другой мощный сервер от Amazon. Он назвал его «сервером предварительной обработки». Этот сервер взаимодействовал с Gluster. Он также выполнял все, что делал старый сервер: управлял работой MovableType, Varnish и Tornado.

Кнаусс добавил еще три таких же сервера, чтобы всего для сайта работало четыре сервера предварительной обработки. Благодаря Gluster эти компьютеры использовали большой общий виртуальный диск. Если один из этих серверов выходил из строя, то его место мог занять другой. И таким образом вместо одного сайт обслуживало сразу пять мощных машин — и все они функционировали как единый небольшой компьютер.

После этого Кнауссу было необходимо решить еще три проблемы. Во-первых, каким образом распределить между четыремя серверами поступающие запросы на веб-страницы. Во-вторых, требовалось придумать способ распространения фотографий. И, наконец, Кнауссу нужно было протестировать всю систему. Он бы смог прикрепить реактивный двигатель к автобусу для тура по городам, но ему не хватало крыльев. Плюс — еще никто не пробовал на нем летать. 

«Поздней ночью в среду, — рассказывает он, — мне не спалось, и в четверг я рано встал. К этому времени я понимал, что придется работать с действительно скандальными фотографиями Ким Кардяшьян, и пребывал в тревожном состоянии».

В четверг утром он опубликовал в Твиттере такое сообщение:

@gknauss: Порой забавно ощущать, как всепоглощающая тревога медленно разрывает вас изнутри.

Он связался с сайтом Amazon (если заплатить, то можно рассчитывать на хорошую помощь с их стороны), чтобы подключить сервис «ElasticLoadBalancer». Этот балансировщик нагрузки принимает запрос в сети и перенаправляет его на определенный компьютер — каждый следующий запрос может поступить уже на другой компьютер. Таким образом, исключается возможность перегрузки отдельной машины и происходит распределение трафика. Это позволяет расширять сервис «горизонтально», путем добавления дополнительных компьютеров, вместо того, чтобы расширять его «вертикально» — за счет использования более мощных машин. 

«Затем наступила пятница, — продолжал Кнаусс, — и у меня на руках был готовый к работе балансировщик нагрузки, четыре одинаковых сервера предварительной обработки, а также один сервер, который должен был предоставлять им общую файловую систему».

После этого он подключил еще один сервис Amazon — Cloudfront (Amazon и вправду занимается всем, что звучит одновременно вдохновляющее и пугающе). Cloudfront — это CDN, или сеть распределения контента, которая представляет собой глобальный, распределенный сервис кэширования. Подобные сервисы позволяют сделать контент общедоступным — они даже могут распространить его по всему миру, и люди будут иметь возможность быстро скачивать файлы из своего дома. Сегодня интернет, без сомнения, очень быстрый, но географическое положение пользователей по-прежнему играет в этом вопросе большую роль. 

Архитектура сайта PaperMag.com, фото предоставлено Грэгом Кнауссом сайту Medium.com

Cloudfront занимается постоянным копированием всех файлов с PaperMag.com. К этому моменту у Кнаусса были следующие инструменты:

1. Пять компьютеров, выполняющих функцию единого большого компьютера и обслуживаемых балансировщиком нагрузки,

2. И сервис CDN, загружающий изображения, которые занимают много места, статичны и обрабатываются абсолютно независимо от большого компьютера.

Каким же образом происходит построение веб-страницы из всех этих файлов? Что ж, это осуществляет браузер, который объединяет все элементы веб-сайта.

Именно так работают многие крупные сайты: страницы таких журналов, как NewYorkTimes или BuzzFeed создаются множеством компьютеров. Браузер получает заготовку HTML-страницы, а затем на нее загружаются изображения, иконки для видео, логотипы и реклама. Он может взаимодействовать с одним, двумя или сразу с десятками серверов. Все эти элементы собираются браузером в одном месте, а затем вылетают на ваш экран, как жуки на лобовое стекло машины. Так и создаются веб-страницы.

Кнауссу было необходимо просто изменить код сервера так, чтобы при выборе какого-либо изображения формировался запрос на точно такое же изображение, только расположенное на сервисе CDN. 

«Единственной корректировкой, которую я внес в изначальный код, — объяснил он, — было изменение домена-указателя: я исправил адрес «http://www.papermag.com» на «http://cdn.papermag.com» в одном из файлов конфигурации».

В остальном код веб-сайта сохранялся неизменным в течение всего процесса реализации проекта.

Пчелы, вооруженные автоматами

Публикация фотографий неминуемо приближалась. Кнауссу нужно было смоделировать ситуацию, в которой тысячи людей одновременно начнут делать запросы на фотографии обнаженной Ким Кардяшьян. Он решил использовать инструмент под названием Bees with Machine Guns («Пчелы, вооруженные автоматами»), созданный Chicago Tribune. Когда программа запущена, в облаке Amazon появляется множество новых компьютеров, которые начинают «атаковать» сайт. Так можно проверить сценарий « а что если ваш сайт в течение десяти секунд будет использовать 2000 человек». «Пчелы» тестируют сайт и выносят вердикт: «Рой уничтожил цель», «Цель успешно выдержала атаку роя» – или какой-то другой.  

Но что бы он ни делал (а времени было все меньше и меньше), Кнаусс не мог сделать так, чтобы сервер смог обработать более чем 2000 запросов в секунду. Он пытался усовершенствовать сайт, но пока удавалось улучшить его лишь на 25% от того, чего он хотел достичь. В итоге — он выглядел слегка уставшим, когда объяснял все это — он осознал, что проблема заключалась не в самой системе, а в методе использования тестирующей программы: она не могла смоделировать необходимое количество запросов.

Поэтому он протестировал каждый из элементов системы отдельно и определил, что в совокупности они успешно справятся с задачей. 

«Сайт должен суметь обработать 8000 запросов в секунду, — заключил он. — Это соответствовало 500 000 запросам в минуту и почти 30 миллионам в час».

Кнаусс понял: он действительно будет готов к тому, что на сайт зайдет 30 млн пользователей в течение часа, если вдруг такое произойдет. У него также была возможность за пару минут добавить еще один сервер предварительной обработки, если бы возникла необходимость обслужить 60 млн, 90 млн или даже 120 млн пользователей за час. Конечно, были и способы автоматизации процесса — например, использование инструментов Puppet или Chef — но Кнаусс решил, что они будут замедлять работу. 

«В критический момент, — пояснил он, — я скорее буду использовать операцию «копирования и вставки» в Google Docs, чем рассчитывать на эффективность программ».

На сцене появляются ягодицы

«Я тренировал детскую команду, — рассказывает Кнаусс, — когда получил письмо по электронной почте о том, что первые фотографии были опубликованы. Вот черт! Я так сильно опоздал? Я побежал домой (то есть, сел в машину и поехал, обливаясь потом), а когда оказался дома – запустил программу тестирования производительности для каждого из серверов предварительной обработки».

Хотя глобальное интернет-сообщество и так постоянно ведет бурное обсуждение всего на свете, то, что началось после, было подобно извержению вулкана Кракатау. Пользователи активно высказывали свои мнения по поводу самой Ким Кардашьян, ее тела, в целом женского тела, обсуждалось мужское внимание к женщинам, симметрия ягодиц, сводки новостей, потребительство, феминизм, расизм, СМИ, женская и мужская сексуальность, демонстрация обнаженного тела, права человека, материнство, а также Канье Уэст. Об этом люди в интернете спорят каждый день, однако теперь все шло в связке с обнаженным телом Ким Кардашьян и фотографиями, опубликованными журналом Paper.

Фотосессия Ким не оставила интернет равнодушным: например, влоггер Davison Davison примерила на себя образ Кардашьян

Уровень трафика в итоге оказался не просто оптимальным, но даже чересчур низким. Гигантское количество людей заходило на сайт, однако четыре больших сервера предварительной обработки функционировали без проблем, загруженные лишь на 10%. Кардяшьян опубликовала в Twitter новость, но при этом со ссылкой на свои фото в Instagram. Ее 25 миллионов читателей стали заходить на этот сайт вместо Paper.

«Я спросил Кнаусса: «Вы бы справились с задачей, располагая одним компьютером?»

«Да», — ответил он.

Ситуация оставалась прежней до следующего дня, когда Paper опубликовал фотографию полностью обнаженной Кардашьян, повернутой лицом к зрителю. Она не могла опубликовать это в Instagram – политика сайта позволяет размещать изображения ягодиц, но запрещает фотографии, демонстрирующие гениталии. И она разместила ссылки на сайт Paper.

«Теперь, — рассказывает Кнаусс, — трафик на сайте безумно вырос».

Серверы работали стабильно, когда трафик увеличился в пять раз, а CDN, как и прежде, загружал изображения. Система работала. Сбоев не было и ничто не сломалось. Paper повысили трафик до уровня, которого хотели: сайт зарегистрировал 30 миллионов уникальных посетителей в течение двух дней. Интернет взорвать не удалось, но получилось встряхнуть (хотя приложение Google Analytics, отслеживающее трафик на сайте, вышло из строя на полтора дня).

А несколько недель спустя сайт вернули в прежнее состояние, и все стало работать, как раньше.

«Компьютеры — это не те устройства, которые нельзя совершенствовать и совершенствовать, — говорит Кнаусс, — но они требуют внимания».

Он весело подвел итог: «Думаю, что выскажу мнение всех, кто занимался подобной работой, если скажу: я попросту рад, что косвенно помог миру получить еще больше обзорных статей».

Я спросил его, что Кнаусс думает о Ким Кардашьян, ее роли в культуре и фотографиях с ее обнаженным телом на сайте.

«Вот бы мне ее уверенность в себе», — сказал он.


(Между прочим: я работал в 29th St. Publishing несколько лет назад, и среди моих друзей много сотрудников этой компании. Я написал эту статью, потому что тема мне интересна, и тот факт, что команде удалось за короткое время успешно осуществить такую безумную идею, вызывает у меня восхищение. Paper разрешили мне задать им вопросы по этому проекту, и я не ищу тут никакой финансовой выгоды – прим. автора).


Фото: Medium.com и Shutterstock.

comments powered by Disqus

Подпишитесь на рассылку RUSBASE

Мы будем вам писать только тогда, когда это действительно очень важно