Java-разработчик (TicketNet)
Коротко
Develops core sales and extension platform services for a multi-tenant ticketing platform, including inventory, orders, tickets, cart, and migration from · Needs: 4+ years of commercial Java development
Описание от работодателя
О проекте
Мы строим новое ядро TicketNet — мультиарендной платформы продажи билетов — и ищем Java-разработчика, который будет писать его сервисы.
Платформа работает сейчас, но на легаси: логика продаж живёт в сервисах виджета и в процедурах Oracle, бронь места держится блокировкой на всю транзакцию заказа, события теряются при доставке, арендатор определяется по HTTP-заголовкам. Целевая архитектура описана до уровня компонентов (C4 Level 3) и согласована: десять сервисов на Java и Spring Boot, свои модели в PostgreSQL, события с гарантией доставки через Kafka, Oracle остаётся только адаптером миграционного слоя.
Это работа не на поддержке и не на доработках: дизайн готов, сервисы предстоит написать с нуля. Часть решений ещё открыта и обсуждается — язык правил, разбиение инвентаря больших залов, хранение ключей подписи на edge-узлах.
Чем предстоит заниматься
Разрабатывать сервисы ядра продаж и платформы расширений по утверждённому дизайну.
Инвентарь мест и квоты — единственный владелец статуса места. Защита от двойной продажи строится на атомарном условном обновлении вместо долгих блокировок. Самый нагруженный участок системы.
Заказы и билеты — оркестрация процесса от создания до возврата: таймауты, компенсации, идемпотентные повторы, подписанный QR-код билета.
Корзина, каталог мероприятий, схемы залов — состояние в Redis, read-модели, версионирование схем.
Платформа расширений — настройки арендатора с наследованием, движок правил, хаб вебхуков, каталог коннекторов.
Отдельный пласт работы — общие библиотеки, одна версия на все десять сервисов: контекст арендатора из JWT с RLS в PostgreSQL, outbox с доставкой «хотя бы один раз», идемпотентность, встроенный вычислитель правил, клиент синхронных хуков с бюджетом времени, трассировка.
И миграция: перенести логику из легаси-сервисов виджета и свести связь с Oracle к одному адаптеру, который потом отключается.
Что мы ждём
От четырёх лет коммерческой разработки на Java и опыт самостоятельного ведения сервиса от проектирования до прода.
Java и Spring Boot. Версия не критична, но проект на Java 25 и Spring Boot 4.1 — готовность работать на свежих версиях обязательна.
PostgreSQL на уровне понимания, а не ORM. Уровни изоляции, блокировки, гонки, умение читать план запроса.
Опыт с Kafka или другой шиной. Гарантии доставки, дедупликация у потребителя, порядок событий, повторная обработка.
Порты и адаптеры. Способность держать домен свободным от знания о БД, HTTP и очередях — это базовое требование к коду, а не пожелание.
Тесты как часть работы. JUnit, Testcontainers, тесты на реальных PostgreSQL и Kafka вместо моков инфраструктуры.
Умение писать и читать ADR. Решения у нас фиксируются текстом с аргументацией, а не устно.
Будет плюсом
Ничто из этого не обязательно, но каждый пункт снимает месяц разгона.
Борьба с гонками в бронировании или продажах ограниченного ресурса — билеты, места, складские остатки.
Multi-tenancy и row-level security в PostgreSQL.
Миграции с Oracle на PostgreSQL, умение читать чужой PL/SQL.
Плагинные платформы: вебхуки, синхронные точки расширения, изоляция чужого кода.
Языки правил — CEL, Drools или собственные вычислители.
Keycloak, Vault или OpenBao, MinIO, Redis.
Нагрузочное тестирование и OpenTelemetry.
Стек
Область Технологии
Язык и фреймворк Java 25, Spring Boot 4.1
Хранилища PostgreSQL с RLS, Redis, MinIO
Асинхронность Kafka, outbox-релей
Безопасность Keycloak (JWT), OpenBao
Правила CEL, собственная rules-lib
Наблюдаемость OpenTelemetry, Prometheus
Тесты JUnit, Testcontainers
CI и контракты GitLab CI, OpenAPI, AsyncAPI
Легаси на время миграции Oracle
Как мы работаем
Каждая задача идёт по цепочке ТЗ → план → ADR : решение сначала описывается и обсуждается, потом кодится. Архитектура задокументирована до уровня компонентов, так что угадывать замысел не придётся.
Дизайн считается подтверждённым только после трёх видов проверок: контрактные тесты по OpenAPI и AsyncAPI, интеграционные на Testcontainers без моков инфраструктуры и нагрузочный тест конкурентной брони — 110 запросов в секунду на один объект при нулевом числе двойных продаж.
Отбор
Скрининг, 30 минут — опыт и ожидания.
Техническое интервью, полтора часа — конкурентность, транзакции, проектирование сервиса. Без алгоритмов на скорость.
Разбор реального фрагмента архитектуры TicketNet с тимлидом, час — вопросы и возражения приветствуются.
Оффер.
Мы предлагаем:
Работа в стабильной, полностью «белой» компании.
Оформление с первого рабочего дня согласно ТК РФ.
Аккредитованная IT-компания, которая заботится о сотрудниках.
Гибкий график: обсуждаем старт (9.00ч. – 11.00ч. утра до 18.00ч. – 20.00ч. вечера)
ДМС, после прохождения испытательного срока.
Комфортный офис рядом с метро, безлимитный кофе;
Профессиональная команда, в которой ценят инициативу и опыт.