{"id":2083539,"url":"https://alion.io/job/infotec-java-razrabotchik-ticketnet","title":"Java-разработчик (TicketNet)","company":{"id":722884,"name":"Infotec","domain":"infotec.ru","url":"https://alion.io/company/infotec","size_band":"11-50","is_staffing_agency":false,"employer_type":"direct","is_intermediary":false,"listed_via":null,"ats_vendor":"HeadHunter","truth_index":null},"role":"Backend","role_family":"Backend","seniority":null,"employment_type":null,"work_mode":"on_site","remote_scope":null,"remote_scope_basis":null,"remote_working_hours":null,"hiring_geo_confidence":"structured","locations":["Saint Petersburg, Russia"],"countries":["RU"],"hiring_countries":[],"hiring_countries_total":0,"salary":null,"salary_estimate":null,"experience_years_min":null,"visa_sponsorship":false,"relocation_package":false,"has_equity":false,"technologies":[{"name":"Apache Kafka","optional":false},{"name":"Java","optional":false},{"name":"JUnit","optional":false},{"name":"Oracle","optional":false},{"name":"PostgreSQL","optional":false},{"name":"Redis","optional":false},{"name":"Spring Boot","optional":false},{"name":"Testcontainers","optional":false},{"name":"GitLab CI","optional":true},{"name":"Keycloak","optional":true},{"name":"MinIO","optional":true},{"name":"OpenTelemetry","optional":true},{"name":"Prometheus","optional":true},{"name":"SQL","optional":true}],"status":"live","first_seen_at":"2026-10-08T11:13:59Z","employer_posted_date":"2026-10-08","last_verified_at":"2026-10-10T04:34:43Z","board_verified":true,"closed_at":null,"days_open":2,"trust":{"level":"ok","repost_count":null,"flags":[],"days_open":2},"description":"О проекте\n Мы строим новое ядро TicketNet - мультиарендной платформы продажи билетов - и ищем Java-разработчика, который будет писать его сервисы.\n Платформа работает сейчас, но на легаси: логика продаж живёт в сервисах виджета и в процедурах Oracle, бронь места держится блокировкой на всю транзакцию заказа, события теряются при доставке, арендатор определяется по HTTP-заголовкам. Целевая архитектура описана до уровня компонентов (C4 Level 3) и согласована: десять сервисов на Java и Spring Boot, свои модели в PostgreSQL, события с гарантией доставки через Kafka, Oracle остаётся только адаптером миграционного слоя.\n Это работа не на поддержке и не на доработках: дизайн готов, сервисы предстоит написать с нуля. Часть решений ещё открыта и обсуждается - язык правил, разбиение инвентаря больших залов, хранение ключей подписи на edge-узлах.\n Чем предстоит заниматься\n Разрабатывать сервисы ядра продаж и платформы расширений по утверждённому дизайну.\n Инвентарь мест и квоты - единственный владелец статуса места. Защита от двойной продажи строится на атомарном условном обновлении вместо долгих блокировок. Самый нагруженный участок системы.\n Заказы и билеты - оркестрация процесса от создания до возврата: таймауты, компенсации, идемпотентные повторы, подписанный QR-код билета.\n Корзина, каталог мероприятий, схемы залов - состояние в Redis, read-модели, версионирование схем.\n Платформа расширений - настройки арендатора с наследованием, движок правил, хаб вебхуков, каталог коннекторов.\n Отдельный пласт работы - общие библиотеки, одна версия на все десять сервисов: контекст арендатора из JWT с RLS в PostgreSQL, outbox с доставкой «хотя бы один раз», идемпотентность, встроенный вычислитель правил, клиент синхронных хуков с бюджетом времени, трассировка.\n И миграция: перенести логику из легаси-сервисов виджета и свести связь с Oracle к одному адаптеру, который потом отключается.\n Что мы ждём\n От четырёх лет коммерческой разработки на Java и опыт самостоятельного ведения сервиса от проектирования до прода.\n Java и Spring Boot. Версия не критична, но проект на Java 25 и Spring Boot 4.1 - готовность работать на свежих версиях обязательна.\n PostgreSQL на уровне понимания, а не ORM. Уровни изоляции, блокировки, гонки, умение читать план запроса.\n Опыт с Kafka или другой шиной. Гарантии доставки, дедупликация у потребителя, порядок событий, повторная обработка.\n Порты и адаптеры. Способность держать домен свободным от знания о БД, HTTP и очередях - это базовое требование к коду, а не пожелание.\n Тесты как часть работы. JUnit, Testcontainers, тесты на реальных PostgreSQL и Kafka вместо моков инфраструктуры.\n Умение писать и читать ADR. Решения у нас фиксируются текстом с аргументацией, а не устно.\n Будет плюсом\n Ничто из этого не обязательно, но каждый пункт снимает месяц разгона.\n Борьба с гонками в бронировании или продажах ограниченного ресурса - билеты, места, складские остатки.\n Multi-tenancy и row-level security в PostgreSQL.\n Миграции с Oracle на PostgreSQL, умение читать чужой PL/SQL.\n Плагинные платформы: вебхуки, синхронные точки расширения, изоляция чужого кода.\n Языки правил - CEL, Drools или собственные вычислители.\n Keycloak, Vault или OpenBao, MinIO, Redis.\n Нагрузочное тестирование и OpenTelemetry.\n Стек\n Область Технологии\nЯзык и фреймворк Java 25, Spring Boot 4.1\nХранилища PostgreSQL с RLS, Redis, MinIO\nАсинхронность Kafka, outbox-релей\nБезопасность Keycloak (JWT), OpenBao\nПравила CEL, собственная rules-lib\nНаблюдаемость OpenTelemetry, Prometheus\nТесты JUnit, Testcontainers\nCI и контракты GitLab CI, OpenAPI, AsyncAPI\nЛегаси на время миграции Oracle\n Как мы работаем\n Каждая задача идёт по цепочке ТЗ → план → ADR : решение сначала описывается и обсуждается, потом кодится. Архитектура задокументирована до уровня компонентов, так что угадывать замысел не придётся.\n Дизайн считается подтверждённым только после трёх видов проверок: контрактные тесты по OpenAPI и AsyncAPI, интеграционные на Testcontainers без моков инфраструктуры и нагрузочный тест конкурентной брони - 110 запросов в секунду на один объект при нулевом числе двойных продаж.\n Отбор\n Скрининг, 30 минут - опыт и ожидания.\n Техническое интервью, полтора часа - конкурентность, транзакции, проектирование сервиса. Без алгоритмов на скорость.\n Разбор реального фрагмента архитектуры TicketNet с тимлидом, час - вопросы и возражения приветствуются.\n Оффер.\n Мы предлагаем:\n Работа в стабильной, полностью «белой» компании.\n Оформление с первого рабочего дня согласно ТК РФ.\n Аккредитованная IT-компания, которая заботится о сотрудниках.\n Гибкий график: обсуждаем старт (9.00ч. - 11.00ч. утра до 18.00ч. - 20.00ч. вечера)\n ДМС, после прохождения испытательного срока.\n Комфортный офис рядом с метро, безлимитный кофе;\n Профессиональная команда, в которой ценят инициативу и опыт.","description_format":"text","description_chars":4803,"description_truncated":false,"requirements":{"experience_years_min":null,"management_years_min":null,"team_size_min":null,"manages_managers":false,"education":null,"security_clearance":false,"languages":[{"language":"Russian","level":"Advanced (C1)","optional":false}]},"benefits":[],"hiring_locations":[],"hiring_excludes":[],"relocation_offered":false,"industries":["Ticketing","Access Control & Alarm Systems"],"lifecycle":[{"event":"open","at":"2026-10-08T11:17:18Z"}],"visa":[],"liveness":{"score":86,"band":"hot","label":"Hiring now","p_open":1,"p_active":0.86,"p_room":1,"age_days":1,"expected_fill_days":70,"reasons":["conf:1","win:early"],"computed_at":"2026-10-10T05:45:15Z"},"pay":null,"html_url":"https://alion.io/job/infotec-java-razrabotchik-ticketnet","json_url":"https://alion.io/job/infotec-java-razrabotchik-ticketnet.json","meta":{"generated_at":"2026-10-10T19:42:22Z","cache_seconds":300,"methodology":"https://alion.io/methodology","terms":"https://alion.io/terms","contact":"https://alion.io/contact","api":"https://alion.io/developers","about":"Alion is a live layer of people, companies and AI agents: who they are, whether they are real and active right now, what they do and how to work with them, readable by people and by agents and paid per call.","catalog":"https://alion.io/catalog.json","usage":{"tier":"assistant_verified","counted_by":"address","units_charged":1,"used_today":4174,"day_limit":null,"remaining_today":null,"minute_limit":300,"resets_at":"2026-10-11T00:00:00Z"}},"offers":[{"id":"company.slices","title":"One company in depth, by slice","status":"live","price":{"credits":0.02,"usd":0.002,"plus_per_slice":{"credits":0.05,"usd":0.005}},"unit":"per company, plus each slice with data","note":"the employer in depth","call":{"mcp_tool":"get_company","arguments":{"id":722884},"rest":"https://alion.io/mcp/rest/get_company?id=722884"},"human":"https://alion.io/catalog?offer=company.slices&for=job%2Finfotec-java-razrabotchik-ticketnet"},{"id":"market.stats","title":"A market slice: pay, demand and time to fill","status":"live","price":{"credits":1,"usd":0.1},"unit":"per slice","note":"pay, demand and time to fill for this role and place","call":{"mcp_tool":"market_stats"},"human":"https://alion.io/catalog?offer=market.stats&for=job%2Finfotec-java-razrabotchik-ticketnet"},{"id":"job.search","title":"Open jobs by role, technology, place, pay and visa","status":"live","price":{"credits":0.02,"usd":0.002},"unit":"per posting in a list","note":"similar open postings","call":{"mcp_tool":"search_jobs"},"human":"https://alion.io/catalog?offer=job.search&for=job%2Finfotec-java-razrabotchik-ticketnet"},{"id":"company.verify","title":"Is this company real and active right now","status":"pilot","price":null,"unit":"per company","request":{"url":"https://alion.io/catalog/request","method":"POST","body":"{\"offer\": \"company.verify\", \"for\": \"job/infotec-java-razrabotchik-ticketnet\", \"note\": \"what you need it for\"}"},"human":"https://alion.io/catalog?offer=company.verify&for=job%2Finfotec-java-razrabotchik-ticketnet"}]}