Код Дурова. Реальная история «ВКонтакте» и ее создателя
Шрифт:
Новый год друзья отмечали в победном расположении духа. Цель – миллион пользователей к ноябрю 2007-го – казалась быстродостижимой. Но уже в феврале сайт рухнул.
Месяцем ранее, раскинувшись, как патриций, на глубоких подушках, Олег Бунин затягивался кальяном и пускал дым в потолок. Он, консультант по высоким нагрузкам, больше напоминавший менестреля (кудри, что-то типа кованого амулета на шее, никаких пиджаков-галстуков), слушал чайников, затащивших его в вальяжный азиатский шалман.
Парни не рубили в предмете, но выглядели любопытно. Замкнутый старший брат, обращаясь к собеседнику,
Стороны встретились в кафе «Рубаи». Еще несколько лет у «ВКонтакте» не будет офиса, и Дуров с программистами полюбят обсуждать дела в заведениях Невского. Лишь годом позже тотем посадит соратников в специально приобретенную квартиру.
Окутанный дымом Бунин растолковывал азы – как хранить и отдавать информацию с сервера, какие особенности существуют при расчете необходимых мощностей, масштабировании системы и т. д. По тому, как заказчики схватывали идеи, менестрель чувствовал, что долго консультировать их не придется.
Но он не предполагал, насколько быстро они въедут в тему. Николай хоть и выигрывал олимпиады по программированию, но решать сложные задачи – все равно что учиться колоть штыком манекен. Укрощение трафика, когда он растет в геометрической прогрессии, – иная баталия.
Бунин посоветовал использовать сервер Apache в комбинации с сервером Nginx. Через несколько часов от Николая пришла весточка – я поставил эту конфигурацию, посмотрите. Бунин изумился. Nginx обычно настраивают полнедели. Еще больше поразило, что Дуров-старший все написал правильно.
Консультант «подкрутил параметры», и первая версия запустилась. «Дуровы все быстро поняли и через три месяца перестали советоваться, – резюмировал Бунин. – Мы показали, куда копать, и они перекопали нас».
Мы встретились на конференции HighLoad-2011. «ВКонтакте» прислала разработчика Андрея Илларионова, и набитый битком зал задавал ему недоуменные вопросы по их системе распределения нагрузок. Некоторые решения не то что не приходили никому в голову – даже после выступления не стало яснее, как они работают.
«Когда общаешься с обычным человеком, почти всегда представляешь, что он ответит, – говорил Бунин. – Павел постоянно думал по-другому и масштабно. Знаете, как Цукерберг в фильме „Социальная сеть“ – когда девушка его отвергла, приятель хочет посочувствовать, а он уже думает о своей сети: „Пора расширяться“. Дуров – такой же».
Это наблюдение Бунина повторяли разные деятели рунета. Способность думать иначе стала краеугольным камнем для дуровской команды, спровоцировала изменения личности ее участников и привела к неминуемому конфликту с окружающей реальностью.
Но тогда, первой зимой «ВКонтакте», сентенции Дурова выдавали лишь оригинальный ум. Для интернет-тусовки соцсеть выглядела не более чем любопытным проектом с пассионарным основателем, уверенным, что выведет сайт в топ популярных ресурсов.
Дуровы советовались с консультантами, но вызывали их все реже. «Какие-то вещи я сразу сделал,
как считал нужным, – рассказывал Николай. – Например, Бунин советовал хранить фотографии на одном домене и пропускать все через один сервер. А я предложил отдавать фото с того сервера, где они находятся».Счетчик посещаемости крутился как бешеный, пока однажды февральским вечером Павел Дуров не набил в браузере vkontakte.ru и не обнаружил вместо соцсети «ошибку 502». Вход на сайт для пользователей оказался закрыт.
Дуров набрал телефон хостинг-провайдера. Трубку взял дежурный инженер.
– Алло, привет. Мы висим.
– Привет, сейчас разберемся. (Пауза.) Так. Идет огромный поток запросов к сайту, волна полтора гигабита. Канал забился.
– Есть идеи, что делать?
– Если честно, нет.
Звонить в Бонн поздно, брат наверняка ушел из лаборатории. Пальто, штиблеты, ключ, деньги, такси. Дуров ворвался в прохладную комнату со стеклянными стеллажами, нашел свои сервера и перезагрузил их.
Волна шла из Китая, Южной Америки, Украины. Даже если передать провайдерам списки IP-адресов, участвовавших в атаке, чтобы те их заблокировали, – все равно шансы на успех мизерны. Соперник не идиот, атакует с других компьютеров.
Утром Дуров известил брата, и они начали суматошно перебирать способы защиты. Сначала арендовали маршрутизатор, который идентифицирует врага. Зная провайдера, можно его блокировать – но, опять же, провайдеров-то тысячи.
Ночами они с Николаем, который еще не дописал диссер, созванивались и ломали головы, что бы предпринять. Атаки продолжались – их старались заваливать запросами ближе к ночи. Особой популярностью пользовался вечер пятницы, когда в офисе провайдера оставался только дежурный. На форуме СПбГУ жаловались, что «ВКонтакте» лежит, сочувствовали, но ничего посоветовать не могли. Слава и Лев вели свое расследование, и им даже слили переписку с исполнителями атаки, однако установить заказчика не удалось.
Дуров написал письмо юзерам:
«В течение прошедшего дня (18.02.2007) активность доходила до фантастической отметки в 2 млн запросов в минуту. Это позволило предположить, что весомая доля запросов была создана искусственно для того, чтобы часть пользователей не смогла попасть на сайт. 95 % из этих искусственно создаваемых запросов шли из-за рубежа.
Также мы получили серию новых коммерческих предложений, часто смешанных с угрозами. Мы по-прежнему отклоняем предложения людей, которые хотели бы превратить студенческое сообщество в обычный бизнес. „ВКонтакте“ никуда и никому не будет продаваться».
Строго говоря, атаки были разновидностью проблемы высоких нагрузок на сайт. Но здесь советы Бунина – да и никого другого – не помогали. Дуров спал по несколько часов в день, метался злой, с мутными глазами, между серверной и компьютером и лихорадочно искал вакцину против эпидемии.
Наконец он наткнулся на статью в журнале «Хакер» о том, как сисадмин на языке Perl написал программу, которая вычленяет IP-адреса нападающих, и сервер блокирует их. Операция происходит каждые три секунды.