Алексей Миловидов — разработчик и создатель технологии ClickHouse. Проект получил больше $2 млрд инвестиций. Эта распределенная аналитическая система управления базами данных с открытым исходным кодом используется компаниями со всего мира. Она столбцовая и позволяет онлайн обрабатывать аналитические запросы. Значения из разных столбцов хранятся отдельно, а данные одного столбца - вместе. За этот вклад в Open Source сообщество Алексея наградили Премией Highload++. Мы узнали у лауреата, каким был его путь, что помогло ему создать такой сложный и успешный продукт.

Разработчик и создатель технологии ClickHouse Алексей Миловидов
Разработчик и создатель технологии ClickHouse Алексей Миловидов

Признание вдохновляет

Меня наградили премией в 2019 году. Конкурса тогда ещё не было — отмечали значимых в сообществе людей по результатам опроса. Когда узнал, что стал лауреатом, конечно, обрадовался — наша отрасль довольно большая, в ней много направлений и людей, которые занимаются интересными вещами. Одно из них — server-side разработка бэкенда, в котором, в свою очередь, есть направления ещё меньше — базы данных для аналитики. В нём я и получил признание за ClickHouse.

Но, как мне кажется, у каждого человека, который занимается технологиями, всегда присутствует синдром самозванца. Я чувствую его, например, когда вижу себя в одном списке награждённых премией с Олегом Бартуновым — одним из ключевых разработчиков СУБД PostgreSQL, или с Игорем Сысоевым — разработчиком и создателем Nginx. Я думаю: «Ого, и меня туда же!».

Осознание, что меня тоже признали лидером отрасли вдохновляет, но это постепенный процесс. Многие люди, которые делают классные вещи, боятся о них рассказывать. Это неудобно и трудно. У любого доклада всегда бывают и плохие отзывы, но если очень качественно сделать доклад, то получишь преимущественно позитивный фидбек. 

Фантастическое упрямство лидеров

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

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

Мне всегда хотелось создавать новое

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

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

Сейчас занимаюсь серверной разработкой на C++ и обработкой данных, можно сказать, data intensive applications. Фанатею от баз данных и обработки данных. Но моя первая работа была в «Яндекс Метрике». Там также есть фронтенд, и находится этот сервис в предметной области веб-технологий. То есть мне нужно было разобраться с тем, как работает интернет, какие там протоколы, как идут запросы. В этом мне помог школьный опыт по изготовлению сайтов. 

Идея ClickHouse пришла во время работы в «Яндекс», где я занимался продуктом под названием «Яндекс Метрика». Эта метрика измеряет клики, посещения страниц из интернета — всё, до чего можно дотянуться. Эти данные метрика обрабатывает и предоставляет подробные отчеты. Но проблема в том, что данных очень много, а отчеты надо получать быстро.

Сейчас в этом нет ничего удивительного: подумаешь, быстро обрабатывать данные. Но особенность в том, что тогда никакие системы не работали именно так, как нам нужно. И сейчас ClickHouse — это лучшая система именно для таких задач. Когда у вас поступают события, логи, метрики, похожие данные, их постоянно в реальном времени нужно загружать в базу данных, там хранить триллионы этих строк и одновременно делать запросы, чтобы из этих данных получать интересные инсайты.

Технологию я разрабатывал самостоятельно постепенно с конца 2008-го года. Будучи разработчиком в Метрике, мне хотелось сделать сделать в продукте какую-то новую фичу. Я постоянно проявлял инициативу, придумывал идеи. Мне захотелось сделать конструктор отчетов, где любые произвольные критерии можно выбирать для фильтрации и агрегации данных, а главное, чтобы всё это быстро работало. Думая, как это сделать, читал материалы, некоторые из которых меня зацепили и я стал пробовать что-то сделать самостоятельно. В конце концов создал прототип очень простой системы, которая решает только одну задачу, но зато быстро.

Решение называлось OLAP Server. Увидев, что оно прекрасно работает, захотелось большего. Я начал искать способ обобщить систему. Это была уже не рабочая задача. В 2010-2011-х годах я попытался написать что-то похожее на реляционную базу данных, чтобы там можно было создавать таблицы, был доступен язык SQL или хотя бы похожий на него. В 2012-м мне наконец это удалось, я показал ClickHouse и мы пробно выкатили его в продакшн «Метрики» для одной задачи.  

Благодаря ClickHouse в «Метрике 2.0» пользователи сайтов или сервисов могли самостоятельно конструировать свои отчеты и как угодно их модифицировать. Дальше продукт постепенно обрастал новыми функциями. Постепенно его начали использовать в «Поиске», «Маркете», рекламных технологиях и бизнес-аналитике, инфраструктурных проектах. Причём команды могли использовать продукт уже без моего участия. Проект выложили на GitHub, чтобы больше людей могли пользоваться технологией. 

В 2021 году я покинул «Яндекс», чтоб развивать ClickHouse как самостоятельный продукт. В компании организовали всё для того, чтобы я мог этим заниматься. Сначала в команде компании было 15 человек, сейчас — 140. 

Буду дальше работать над продуктом

Для меня важно продолжить развивать основной продукт — ClickHouse облако и ClickHouse в целом, чтобы он рос на рынках разных стран. Сейчас система довольно популярна в России и СНГ, в Китае, её более-менее знают в Европе, но в США — гораздо меньше. При этом перспективы для роста у проекта довольно большие. Их надо использовать по мере возможности, потому что есть и конкуренты, и много проблем в самом продукте, которые нужно решать. Но я вижу, что его можно вырастить, потому что это бесспорно лучшая технология в своей нише. 

Чтобы стать лидером и добиться признания своего продукта, постарайтесь сделать что-то действительно классное — лучше, чем все возможные альтернативы. Безусловно, скептики будут говорить: «все эти технологии давным-давно придумали», Но вместо того, чтобы бросать задуманное, посмотрите на эти технологии внимательнее, сравните их и попробуйте понять, что у них внутри, как они работают. 

Постарайтесь подойти творчески. Иногда нужно попробовать объединить что-то, что не сочетается или придумать какую-то хитрость. Но только так вы сможете сделать технологию, которая действительно будет использоваться всеми. Я постоянно вижу такие проекты. Например, интерфейс для отображения карт Leaflet. Таких примеров очень много: верьте в себя и делайте.

В этом году Премия пройдет при поддержке VK в рамках 20-й конференции HighLoad++. Уже 27 ноября, начнется торжественная церемония награждения, на которой будут объявлены имена новых лауреатов премии. Наряду с другими победителями будет объявлено имя того, кто получит награду в специальной номинации от VK — «Развивающие проекты». Спец номинация посвящена людям и проектам, которые помогают развиваться самим разработчикам, новичкам в IT и экспертных сообществах, а также специалистам в молодых цифровых профессиях и одаренным школьникам.

Комментарии (2)


  1. Melonom
    14.11.2023 06:08
    +2

    много проблем в самом продукте, которые нужно решать

    Встройте функционал бэкапа наконец-то)


  1. peacecoder85
    14.11.2023 06:08

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