Главная » Хабрахабр » Немного закулисья VK

Немного закулисья VK

В преддверии cибирской HighLoad++ мы побеседовали с одним из наших спикеров — Юрием Насретдиновым, расспросив его о том, хорошо ли работается во ВКонтакте, одновременно приоткрывая завесу тайны над внутренней кухней социальной сети.

В рамках же самой конференции Юрий будет рассказывать о том, как социальная сеть вставляет данные в ClickHouse с десятков тысяч серверов, чего в текущей беседе мы коснулись лишь вскользь.
— Расскажи, пожалуйста, о своей работе?

Правда, не так уж долго — с начала этого года. На текущий момент я работаю во ВКонтакте. Сайт в основном написан на PHP, и я разрабатываю сервисы и утилиты на PHP и Go. Занимаюсь видеоинфраструктурой и инфраструктурой сайта.

— Что побудило тебя пойти работать в VK?

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

— До этого тебе приходилось сталкиваться с чем-то похожим по масштабу?

Но нагрузки в VK на порядок больше. Да, около пяти лет я работал в компании Badoo на похожей должности — в разработке инфраструктуры.

— Возникли ли какие-то проблемы при переходе в VK?

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

— Нет ощущения, что жизнь осталась где-то внутри МКАД?

Но на самом деле мне Санкт-Петербург нравится, наверное, даже больше, чем Москва. Поначалу мне действительно так казалось, несмотря на то, что я и ранее бывал в других городах России, помимо Москвы. Он более спокойный — меньше людей, они никуда не торопятся, и это приятно.

— А с точки зрения используемых в работе технологий — что было для тебя принципиально новым?

Например, в Badoo практически нет очень популярных профилей, на которые заходит значимый процент людей. ВКонтакте очень большой, соответственно, здесь действительно есть некоторые нюансы, с которыми я раньше не сталкивался. У ВКонтакте такое есть, как есть и целый ряд интересных инструментов, позволяющих быстро масштабировать очень популярные аккаунты.

В отличие от, к примеру, Badoo, который в основном использует MySQL и Memcache (плюс свои сервисы), ВКонтакте использует свои базы данных и даже свою версию Memcache. Кроме того, ВКонтакте отличается тем, что по историческим причинам здесь практически всё своё. Большинство готовых инструментов без напильника нельзя использовать в инфраструктуре, включающей десятки тысяч серверов, как у VK, и это создает существенные трудности. Разработчики VK могли позволить себе создавать более высокоэффективные сервисы (на фоне того же MySQL), которые хорошо работают на таком огромном масштабе.

— Сложно ли было быстро вникнуть в такие «внутренние» инструменты?

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

Любой желающий может ознакомиться с ней, почитать, как это все работает. В принципе, ощутимая часть инфраструктуры VK была выложена Павлом Дуровым в open source вместе с документацией. Вы приходите и начинаете делать задачи, постепенно изучая то, что нужно для их решения. Но, конечно, намного легче это воспринимать в контексте того, как оно используется внутри. И этого достаточно. Смотрите, как это уже сделано, и делаете так же. Ведь даже если вы осилите прочтение всей документации по инфраструктуре VK, пока вы не начнете это использовать, скорее всего, не поймете, как это все работает в деталях.

Замечу, что все вышесказанное касается моего отдела (в других может быть иначе).

В решении каких задач ты успел поучаствовать? — Есть ли у тебя внутри VK какая-то специализация?

Делаю то, что в данный момент требуется.
Я работаю в отделе, деятельность которого затрагивает разные части инфраструктуры социальной сети, а это огромный проект (чтобы полностью охватить пониманием устройство VK, нужно много времени). Специализации как таковой нет.

Это в принципе касается всего сайта, но в то же время не относится к каким-то конкретным деталям. Например, я участвовал в частичном переходе на PHP7.

Об этом я как раз и буду рассказывать на HighLoad++. Еще пример — проблема со сбором логов, для решения которой мы использовали ClickHouse.

— Дадим небольшой спойлер — в чем была особенность этой проблемы?

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

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

— Читателям, возможно, будет интересно, почему для решения использовалась именно колоночная ClickHouse?

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

Это система сбора данных и построения графиков по серверам. Отмечу также, что ClickHouse и до моего прихода использовался в VK админами в довольно узкоспециализированной задаче — в качестве back-end инструмента Grafana. Правда, было развернуто всего несколько серверов с ClickHouse, то есть по сути для программистов он был недоступен.

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

— Используются ли в VK в каком-то значимом количестве сторонние решения (помимо упомянутых выше)?

Например, Linux, на котором всё это крутится. Конечно, используются. Не стоит преуменьшать долю работы, которую за нас делает операционная система.

У нас есть самописный движок под названием KittenPHP, который транслирует PHP в C++, но для ряда задач, в том числе в продакшене, применяется и обычный PHP. Как ни странно, используется PHP.

До сих пор в некоторых местах задействован MySQL, но постепенно мы от него отказываемся — используем самописную базу данных. Используется nginx.

— А как построен процесс разработки?

У нас есть баг-трекер, отделы, которые занимаются разной функциональностью, отвечая за свою часть проекта; есть спринты, ответственные за компоненты и т.д. Я не вижу больших отличий процессов в VK от того, что принято в индустрии.

— Вместо итогов можно ли обозначить направление, в котором развивается отдел, в котором ты работаешь?

Поэтому пока рано говорить о планах — мы решаем существующие проблемы, и пока работы у нас хватает. Насколько я знаю, раньше отдел, в котором я сейчас работаю, состоял из 1-2 человек.
И заниматься инфраструктурой в том виде, в каком это делается сейчас (наверное, это похоже на DevOps), начали не так давно. А дальше посмотрим.

Подробнее о внутренностях VK, использовании ClickHouse и других деталях Юрий расскажет в своём докладе на сибирском HighLoad++ 25-26 июня. Также вас наверняка заинтересуют и вот эти доклады:


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Google оштрафован на рекордные $5 млрд за нарушение антимонопольного законодательства в Европе

Это самый большой штраф в истории компании. Еврокомиссия закончила многолетнее расследование против Google и потребовала рекордный штраф в 5 миллиардов долларов (4,3 млрд евро). Товары из каталога Google Shop, согласно обвинению, намеренно ставились выше, чем остальные. Прошлый рекордный штраф, кстати, ...

«Яндекс» начал работу над созданием собственной системы «умный дом»

Сегодня стало известно о том, что компания «Яндекс» осенью может представить собственную систему «умный дом». Во всяком случае, она зарегистрировала в странах Евразийского экономического союза устройство «Яндекс.Модуль», о чем сообщает «Коммерсант». Этот девайс был создан американской компанией NotAnotherOne, у истоков ...