Тула, НИИ и миграция на PostgreSQL
Александр начинает с истории знакомства: лет пять-шесть назад их поселили в один номер на конференции в Тирасполе, где оба выступали в местном Дворце культуры — Костя рассказывал про саги, Александр про приложения и Kubernetes, а заметная часть зала пришла как на выходное культурное событие, с детьми и без отношения к ИТ. Сейчас Костя — директор департамента сервисов поддержки инфраструктуры в X5 Digital: в его зоне ответственности инфраструктура, платформенные команды, центры компетенций и гильдии, платформа автоматизации, дата-платформа, проектный офис и продуктовое направление ценообразования, а сам X5 Digital строит сервисы доставки из торговых сетей X5 и интеграции с внешними витринами и службами доставки. Дальше он отматывает к началу: Тула, политехнический университет, специальность по комплексному обеспечению информационной безопасности и очень много математики — вуз он вспоминает как школу быстро учиться и решать задачи за ограниченное время.
Курса со второго одногруппник позвал его в научно-исследовательский институт: денег не платили, зато там были базы данных и складские системы учёта. «Игрушечная» работа растянулась на пять лет с поездками по всей России, внедрением аппаратно-программных комплексов и госиспытаниями, а в одной из прочитанных там книг автор описывал, как из-за сломавшегося запроса встаёт производство и специалиста по базам вызывают чинить, — Костя решил, что это отличная работа, а образ скорой помощи с мигалками принадлежит Александру. Импортозамещение добавило в резюме строчку про PostgreSQL, и когда проект закончился, а московская математика по деньгам не сошлась, его позвали на собеседование в Туле с обещанием московской зарплаты: дали флешку с базой, попросили ускорить запрос, перелить данные в PostgreSQL и ускорить снова. Экспертизы не было никакой, а переносить пришлось продакшн на несколько сотен гигабайт, не останавливая бизнес: год работы, стек Microsoft, PostgreSQL в том числе на Windows, базовые вопросы на профильном форуме, где людей удивляли объёмы, и ночные субботние приезды в офис, потому что ноутбук домой не выдавали.
Авито: логика в базе и сообщество
Переезд решался вместе с супругой, и в последний день отпуска Костю позвали на собеседование в Авито: красивый офис, ребята с горящими глазами и три часа интервью, из них полчаса на вопросы, остальное — рассказ Миши про контроллер с батарейкой, тюнинг настроек базы и файловой системы и логическую репликацию. Примерно в 2014 году базами занималось, кажется, человек пять; всю бизнес-логику исторически писали в базе — материализация, денормализация, таблицы в памяти, — а триггерная логическая репликация растаскивала данные на другие узлы, в хранилище и поисковые индексы. Кластеров, по его памяти, было около трёх, и как раз тогда их начали пилить по доменам. Руками делали модерацию объявлений, верификацию телефонов, запуск оплаты объявлений, и сделанное сразу видели миллионы людей; меньше чем за два года Костя стал тимлидом. Но модель не масштабировалась: таких экспертов почти невозможно нанять, бизнес рос быстрее, кто-то уходил за новыми вызовами.
Дальше был распил монолита с выносом логики из базы: взялись не за самый сложный сервис, а за второй по сложности, людей пересаживали в кросс-функциональные команды, а нагрузку около 20K rps держали сагами для распределённых транзакций и кэшем на Tarantool, потому что отставание реплик было неприемлемо. Закончилось это платформенными командами, базами как сервисом и шиной данных: стек был не Java, лучше всего подходила Kafka, разбирались, как растянуть её на несколько ЦОД, и разговаривали с Confluent, изучая, что именно им хотят продать, — а написали в итоге своё. Себя команда сверяла с внешними экспертами: приезжали ребята из Zalando, авторы Patroni, и было видно, что идут примерно одним путём. Свой аналог Patroni у них тоже работал в продакшене, но потом решили перейти на готовое решение, которое ушло вперёд.
Открытый код, хакатон и X5 Digital
Отдельная линия разговора — сообщество. В Туле Костя не знал, что бывают конференции; в Москве они как раз начали запускаться, и общение с единомышленниками стало способом сверять идеи. В рассылках PostgreSQL он слал репорты и предложения, и в одной из версий его записали контрибьютором, а доклад о том, как асинхронная логическая репликация расходится после аварии, они с коллегами прочитали сначала в Москве, а потом отвезли на конференцию разработчиков в Канаде — её формат Костя описывает как большую планёрку, где темы набрасывают прямо на доске. Про мейнстрим трезво рассуждает Александр: если фича нужна только тебе, дешевле форк под свои сценарии, — и следом пересказывает фильм о том, как eBPF заезжал в ядро Linux маленькими инкрементами. Из той же линии — хакатон, придуманный с коллегой Петром Коробейниковым: участникам давали сломанную базу с побитыми битами и индексами и предлагали её починить. Азарт был такой, что эксперт мог чуть не сломать клавиатуру, а кто-то из участников потом пришёл в компанию работать.
После шести лет в Авито Костя увидел пост о том, что у знакомых начинается большая история, где нужна экспертиза по командам и микросервисам; пандемия дала доставке кратный рост заказов, и он решил прыгать сейчас. В новой компании было около тридцати человек, из них двое-трое в инфраструктуре, незнакомый стек на Node.js и MongoDB и запуск приложения через четыре месяца. Первой запустили дата-платформу, а выстроить аналитическое хранилище помог Коля, его бывший руководитель, которого он подключил на час в неделю к команде — нетворк переезжает вместе с тобой. Дальше шли инцидент-менеджмент, где офлайн со сборщиками и курьерами поднимает цену любой нестабильности, платформы автоматизации и нагрузочного тестирования и выросший из самодельного деплоера внутренний инструмент. Когда Костя больше года вёл ещё и три продуктовых направления, пересобрать команды помогло упражнение про колхоз: каждая команда растит свои огурцы в теплице, и руководители рассказывают друг другу, что у них за продукты, клиенты и планы, называя плохое плохим. Сейчас в платформе около ста человек, и она, по его формуле, должна оставаться маленькой и снимать когнитивную нагрузку с продуктовых команд.
Что стоит унести с собой
- 01Команда экспертов, выжимающая максимум из одной базы, упирается в потолок найма: бизнес растёт быстрее, люди уходят — и это, а не мода, толкает к распилу монолита и платформенным командам.
- 02Инновация появляется на стыке культуры докапываться до конца и большого бизнес-вызова, который порождает техническую сложность; без второго первое остаётся хобби.
- 03Патч уходит в мейнстрим, только если фича нужна не тебе одному: чаще дешевле форк под свои сценарии, а большое изменение приходится завозить инкрементами, как в истории eBPF.
- 04Совет на прощание: фундаментальные знания не устаревают, учиться нужно постоянно, а вокруг должны быть люди умнее тебя — Александр добавляет принцип своего первого руководителя нанимать тех, кто разбирается лучше.