- •Содержание
- •Введение
- •1. Общая архитектурная схема
- •2. Архангельский Максим Вячеславович — Роль: Архитектор приложения
- •Откат изменений
- •Интеграция с мониторингом
- •Заключение
- •3. Ларин Никита Сергеевич – Роль: инженер инфраструктуры (IaC)
- •Китова Евгения Александровна – Роль: Разработчик конфигурационной системы
- •Динамическое обновление конфигураций
- •5. Каширский Александр Александрович – Роль: DevOps / Интегратор
- •Деплой и проверка конфигураций
2. Архангельский Максим Вячеславович — Роль: Архитектор приложения
В рамках текущего проекта были спроектированы следующие модули:
Order Service
Courier Service
Route Optimization Service
Notification Service
Tracking Service
Config Server
Описание проектируемых модулей и их ответственности
Order Service
Ответственность:
Полный жизненный цикл заказа: создание, редактирование, отмена.
Управление статусами заказа (новый, назначен, в доставке, доставлен, отменен).
Назначение заказов курьерам с учетом их доступности и загрузки.
Валидация бизнес-правил при работе с заказами.
Courier Service
Ответственность:
Управление профилями курьеров (личные данные, статус, типы доставки).
Контроль доступности курьеров (активен/неактивен).
Назначение текущих заданий и отслеживание загрузки.
Расчет производительности и статистики курьеров.
Route Optimization Service
Ответственность:
Геокодирование адресов в координаты через внешние API.
Расчет оптимальных маршрутов с использованием алгоритмов TSP/VRP.
Определение времени прибытия (ETA) с учетом дорожной ситуации.
Кэширование результатов для снижения нагрузки.
Notification Service
Ответственность:
Управление шаблонами сообщений для разных каналов.
Роутинг уведомлений по каналам доставки (SMS/email).
Интеграция с внешними провайдерами рассылок.
Обработка событий из брокера сообщений.
Tracking Service
Ответственность:
Прием GPS-координат от мобильных устройств.
Валидация и фильтрация данных о местоположении.
Генерация гео-событий (прибытие в зону, приближение к точке).
Хранение и предоставление актуального местоположения курьеров.
Config Server
Ответственность:
Централизованное хранение конфигураций всех микросервисов.
Version-controlled управление настройками через Git.
Предоставление конфигураций по запросу сервисов.
Обеспечение согласованности настроек across всех инстансов.
Параметры поведения приложения, вынесенные в конфигурацию
Order Service
Параметры:
Yaml
order:
validation:
max-order-weight-kg: 50
allowed-delivery-timeframes: ["09:00-18:00", "19:00-23:00"]
assignment:
auto-assignment-enabled: true
max-orders-per-courier: 10
Причины выноса:
max-order-weight — ограничения могут меняться в зависимости от типа транспорта.
delivery-timeframes — временные окна доставки могут адаптироваться под сезонность.
auto-assignment — возможность быстрого переключения между ручным и автоматическим назначением.
Courier Service
Параметры:
Yaml
courier:
status:
auto-inactive-after-minutes: 120
performance:
min-delivery-score: 4.5
max-active-orders: 5
Причины выноса:
auto-inactive — автоматическое снятие с линии при простое.
delivery-score — пороговые значения для отсева некачественных курьеров.
max-active-orders — ограничение нагрузки на курьера для обеспечения качества.
Route Optimization Service
Параметры:
yaml
routing:
optimization:
algorithm: "time_based"
constraints:
max-route-duration-minutes: 480
Причины выноса:
algorithm — смена стратегии оптимизации без переписывания кода.
max-route-duration — compliance с трудовым законодательством.
Notification Service
Параметры:
yaml
notification:
rules:
order-created:
channels: ["sms", "email"]
order-delayed:
channels: ["sms"]
Причины выноса:
channels — гибкое управление каналами коммуникации с клиентами.
Tracking Service
Параметры:
yaml
tracking:
location:
update-interval-seconds: 30
events:
geofence:
radius-meters: 150
Причины выноса:
update-interval — баланс между точностью и энергопотреблением.
radius-meters — настройка чувствительности гео-событий.
Config Server
Параметры:
yaml
config:
server:
git-uri: "https://gitlab.com/logistics-platform/config-repo.git"
refresh-rate: "30s"
encrypt:
enabled: true
key: "${CONFIG_ENCRYPTION_KEY}"
Причины выноса:
git-uri — возможность быстрого переключения между staging/prod репозиториями.
refresh-rate — контроль частоты обновления конфигов без перезапуска сервисов.
encrypt — безопасное хранение чувствительных данных (пароли, API-ключи).
Примеры сценариев
Сценарий 1. Автоназначение заказов
Если
в конфиге указано:
yaml
order:
assignment:
auto-assignment-enabled: true
max-orders-per-courier: 8
Тогда Order Service автоматически назначает заказы свободным курьерам, но не более 8 заказов на одного курьера.
Сценарий 2: Контроль качества курьеров
Если
в конфиге указано:
yaml
courier:
performance:
min-delivery-score: 4.7
auto-inactive-after-minutes: 90
Тогда Courier Service автоматически переводит в неактивный статус курьеров с рейтингом ниже 4.7 и тех, кто не подтверждал активность более 90 минут.
Сценарий 3: Временные ограничения доставки
Если
в конфиге указано:
yaml
order:
validation:
allowed-delivery-timeframes: ["09:00-13:00", "14:00-18:00"]
max-order-weight-kg: 30
Тогда Order Service отклоняет заказы с весом более 30кг и заказы на доставку вне разрешенных временных окон.
Сценарий 4: Уведомления о задержках
Если
в конфиге указано:
yaml
notification:
rules:
order-delayed:
channels: ["sms", "email"]
delay-threshold-minutes: 15
Тогда Notification Service отправляет SMS и email уведомления клиентам, если заказ задерживается более чем на 15 минут.
Взаимодействие с другими частями системы
Взаимодействие с Config Server
При запуске каждого сервиса:
Сервис читает из переменных окружения адрес Config Server
Запрашивает свою конфигурацию по имени (order-service.yml, courier-service.yml)
Получает и применяет настройки
Подписывается на обновления (webhook или polling)
Пример
конфигурации для Order Service:
yaml
# order-service.yml
server:
port: 8080
spring:
datasource:
url: jdbc:postgresql://${DB_HOST:localhost}:5432/order_db
order:
validation:
max-weight: 50
allowed-timeframes: ["09:00-23:00"]
Взаимодействие между сервисами:
Order Service взаимодействует с:
Courier Service для проверки доступности и назначения курьеров.
Route Optimization Service для расчета маршрутов при создании заказа.
Config Server — загрузка настроек при старте.
Брокером сообщений — публикует события ORDER_CREATED, ORDER_STATUS_CHANGED.
Courier Service взаимодействует с:
Order Service — предоставляет информацию о доступных курьерах.
Config Server — загрузка настроек при старте.
Tracking Service — получает актуальное местоположение курьеров.
Route Optimization Service взаимодействует с:
Order Service — получает данные о заказах для маршрутизации.
Внешними картографическими API для геокодирования и построения маршрутов.
Config Server — загрузка настроек при старте.
Redis для кэширования результатов.
Tracking Service взаимодействует с:
Мобильными приложениями курьеров — прием GPS-данных.
Брокером сообщений — публикует события о перемещениях.
Config Server — загрузка настроек при старте.
Redis — хранение актуальных позиций.
Notification Service взаимодействует с:
Брокером сообщений — подписывается на события для триггеров уведомлений.
Config Server — загрузка настроек при старте.
