Главная » Хабрахабр » Немного закулисья 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 Интересное!

[Перевод] Представляем Amazon Corretto, бесплатный дистрибутив OpenJDK с долгосрочной поддержкой

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

Автомобиль на водороде. Пора ли прощаться с бензином?

К нашей прошлой статье о водородной энергетике вы написали очень интересные и справедливые комментарии, ответы на которые вы сможете найти в этом материале, посвященном использованию водорода в автомобилях. Привет, Хабр! Но при этом водород считается наиболее перспективным видом альтернативного топлива ...