Java-разработчик (TicketNet)
Описание
О проекте Мы строим новое ядро 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, TestcontainersCI и контракты GitLab CI, OpenAPI, AsyncAPIЛегаси на время миграции Oracle Как мы работаем Каждая задача идёт по цепочке ТЗ → план → ADR : решение сначала описывается и обсуждается, потом кодится. Архитектура задокументирована до уровня компонентов, так что угадывать замысел не придётся. Дизайн считается подтверждённым только после трёх видов проверок: контрактные тесты по OpenAPI и AsyncAPI, интеграционные на Testcontainers без моков инфраструктуры и нагрузочный тест конкурентной брони — 110 запросов в секунду на один объект при нулевом числе двойных продаж. Отбор Скрининг, 30 минут — опыт и ожидания. Техническое интервью, полтора часа — конкурентность, транзакции, проектирование сервиса. Без алгоритмов на скорость. Разбор реального фрагмента архитектуры TicketNet с тимлидом, час — вопросы и возражения приветствуются. Оффер. Мы предлагаем: Работа в стабильной, полностью «белой» компании. Оформление с первого рабочего дня согласно ТК РФ. Аккредитованная IT-компания, которая заботится о сотрудниках. Гибкий график: обсуждаем старт (9.00ч. – 11.00ч. утра до 18.00ч. – 20.00ч. вечера) ДМС, после прохождения испытательного срока. Комфортный офис рядом с метро, безлимитный кофе; Профессиональная команда, в которой ценят инициативу и опыт.