Logistics Portal Backend
Личный кабинет B2B клиента для транспортно-логистической компании. WebSocket + Kafka архитектура, интеграция с legacy SOAP-системами.
70+ обработчиковТрёхэтапная регистрацияWebSocket + Kafka
Бизнес-задача
Цифровая платформа для B2B клиентов логистической компании: управление заявками на перевозку, отслеживание статусов заказов в реальном времени, интеграция с legacy-системами, трёхэтапная регистрация с проверкой через ИНН/КПП.
Ключевая задача
Event-driven архитектура для real-time обновлений через WebSocket + Kafka, интеграция с legacy SOAP-системами, гранулярная система прав.
WebSocket + Kafka
Event-driven архитектура для обновлений в реальном времени.
- •Web Service: STOMP/WebSocket gateway, маршрутизация JSON-RPC запросов
- •Process Service: бизнес-логика, 70+ обработчиков, интеграции
- •Kafka: pub/sub между сервисами (request/response топики)
- •Маршрутизация: ответы направляются клиенту по sessionId
Интеграция с legacy-системами
SOAP-клиенты для работы с существующими системами.
- •Финансовая система: верификация компаний по ИНН/КПП, получение GUID контрагента
- •Система заказов: синхронизация статусов, парсинг вложенных CDATA в XML
- •Периодическая синхронизация: CRON-задачи для актуализации данных
Регистрация
Трёхэтапная регистрация B2B клиента.
- •Клиент заполняет данные компании, подтверждение email
- •Админ проверяет через финансовый API, назначает менеджера
- •Менеджер подтверждает, привязывает контракты
Система прав
Гранулярная модель доступа.
- •RBAC: роли (admin, manager, client) с базовыми правами
- •Переопределение: индивидуальные права поверх ролей
- •@RoleSecured: аннотация для проверки прав на уровне обработчика
Технологии
Backend
Java 21Spring Boot 3.4Spring WebSocket + STOMPSpring Web Services (SOAP)
Data
PostgreSQLLiquibaseCaffeine (cache)
Messaging
Apache KafkaJSON-RPC over WebSocket
Infra
Keycloak (OAuth2)DockerYandex Cloud
Моя роль
- Архитектура WebSocket + Kafka для обновлений в реальном времени с горизонтальным масштабированием
- Гранулярная система прав с переопределением поверх RBAC