О проекте
Мы — продуктовая команда игрового проекта с аудиторией 2+ млн игроков и высокими нагрузками. Мы форкнули open-source CDP-платформу Dittofeed (TypeScript, Postgres, ClickHouse, Temporal) и используем её как замену Customer.io для всех маркетинговых и транзакционных коммуникаций: email, push, in-app, Telegram. Платформа в проде, кампании работают, отправляем сотни тысяч уведомлений.
Впереди рост на порядок: цель — стабильная обработка 20–100 млн пользовательских событий в сутки. Ищем инженера, который возьмёт владение data-слоем платформы и проведёт её через этот рост.
Чем предстоит заниматься
- Масштабирование ingestion-пайплайна: Kafka-буферизация, батчинг вставки в ClickHouse, идемпотентность и дедупликация на десятках миллионов событий в сутки
- Перепроектирование движка сегментации: уход от полного периодического пересчёта к инкрементальному, оптимизация тяжёлых запросов, схемы таблиц, партиционирование, шардирование и репликация ClickHouse
- Масштабирование Temporal: тюнинг кластера (history shards, персистенция), оптимизация модели «workflow на пользователя» при миллионах активных journeys, ретраи и backpressure
- Разведение нагрузок: пересчёт сегментов vs аналитические запросы дашборда vs ingestion
- Нагрузочное тестирование, профилирование, метрики и SLO для пайплайна (вместе с нашим DevOps)
- Выборочный мерж обновлений апстрима Dittofeed, архитектурные решения
Наш стек
TypeScript (Node.js, монорепо: Fastify API, Temporal worker) · ClickHouse · Kafka · PostgreSQL (Drizzle ORM) · Temporal · Docker / Kubernetes
Что мы ожидаем
5+ лет backend-разработки, 3+ на Node.js/TypeScript (рассмотрим и сильных кандидатов с Go/Java, готовых работать в TypeScript-кодовой базе)
Боевой опыт с ClickHouse на больших объёмах: проектирование схем, MergeTree-семейство, оптимизация запросов, опыт с кластерной конфигурацией
Опыт построения event-пайплайнов: Kafka или аналоги, exactly-once/at-least-once семантики, backpressure
Уверенный PostgreSQL: массовые upsert'ы, индексы, vacuum/bloat
Опыт нагрузочного тестирования и профилирования распределённых систем
Будет большим плюсом:
- Production-опыт с Temporal или Cadence — самый ценный пункт
- Опыт с CDP/CRM-платформами или построением систем коммуникаций in-house
- Опыт high-load B2C: игры, e-commerce, adtech, финтех
Условия
- Полная удалёнка из любой точки мира. Просим overlap с командой 4+ часа в зоне CET (12:00–16:00)
- Вилка: 300-500к+ в месяц, обсуждаем по итогам интервью
- 24 дня оплачиваемого отпуска + больничные
- Пересмотр компенсации раз в 6 месяцев
- Никакой бюрократии: маленькая команда (в основном продукте 50 человек), решения принимаются быстро, до прода — один ревью
Как проходит найм
Весь процесс — 3 шага:
- Звонок-знакомство (30 мин) — расскажем про проект и нагрузку честно, ответим на любые вопросы, включая индустрию и оформление
- Техническое интервью (~90 мин) — разговор про ваш реальный опыт: как проектировали схемы CH, как разруливали backpressure, что ломалось под нагрузкой. Без лайвкодинга и алгоритмов на доске
- Финал с техлидом (45 мин) — архитектурная сессия по нашей реальной задаче (сегментация на 100 млн событий) + оффер в течение 2 рабочих дней
Тестовых заданий нет — ваше время уважаем.