Кейсы

Java-инженер для логистической платформы. Масштабирование и SLA-контроль

2025-07-02 21:24 Кейсы
Партнёр — логистический оператор с внутренней платформой управления доставками, складами и маршрутами. Команда распределённая, SCRUM. До нашего подключения разработка шла внутри компании. На этапе роста понадобилось расширить регионы, встроить контроль SLA в действующий модуль планирования и снизить число ошибочных заявок от бизнес-пользователей.

Мы подключили Java-инженера, уверенного в Spring Boot, PostgreSQL и Apache Kafka. Он вошёл в контур как часть команды: быстро прошёл техконтекст, согласовал приоритеты с продактом и приступил к изменениям без паузы на «долгий онбординг».

Что сделано по сути

Маршрутизация. Переработана модель с учётом окон доставки, веса, габаритов и ограничений по складам. Правила вынесены в отдельный слой, маршруты считаются детерминированно, добавлены точки расширения под новые регионы и типы рейсов.

SLA-контроль. В планировщике появилось явное соблюдение целевых окон и приоритетов. Если маршрут выходит за рамку SLA, планировщик предлагает альтернативы. Отклонения фиксируются на уровне сервиса и интерфейса.

Валидации и бизнес-правила. На бэкенде добавлены серверные проверки адресов, тайм-слотов, статусов и конфликтов. Интерфейсы получают понятные ответы с подсказками, что править. Неверные заявки блокируются до запуска рейса.

События и отслеживание грузов. В Kafka организована буферизация и гарантированная обработка: ключи и партиционирование по заказу, ретраи с backoff, отдельные DLQ-топики. Consumer-сервисы переписаны с учётом идемпотентности.

Core-модуль и API. Тяжёлые операции вынесены в фоновые задачи. Справочники и геоданные кешируются в Redis. В PostgreSQL наведён порядок с индексами и запросами. На публичных точках включены квоты и лимитирование.

Инженерная гигиена. В CI добавлен статический анализ и параллельные проверки. Для архитектурных решений введены короткие ADR-заметки, чтобы контекст решений был прозрачен для всей команды.

Как это повлияло на работу

Планировщик учитывает SLA по умолчанию, маршруты формируются предсказуемо, некорректные заявки отсекаются на входе. Обновления выкатываются спокойнее, инженеры двигают продукт вперёд, а не разбирают последствия случайных правок. После этого этапа партнёр расширил сотрудничество и запросил ещё одного Java-специалиста от MaDeLa.