Система автоматизации корпоративной логистической службы для обработки и доставки заказов интернет-магазина.
Система автоматизирует полный цикл обработки заказа от момента его создания до доставки клиенту. Основные этапы обработки:
- Регистрация заказа
- Проверка и осуществление оплаты
- Проверка наличия товаров на складе и комплектация
- Организация доставки
- Микросервисная архитектура
- Асинхронное взаимодействие между сервисами через Apache Kafka
- Распределенные транзакции с использованием паттерна SAGA (хореография)
- Отказоустойчивость на каждом этапе обработки заказа
- JWT-based аутентификация
- API Gateway для маршрутизации и балансировки нагрузки
- Java 17
- Spring Boot 3.2.0
- Spring Cloud 2023.0
- Spring Cloud Gateway
- Spring Cloud Netflix Eureka
- Spring Cloud Config
- Spring Cloud OpenFeign
- Spring Security + JWT
- Spring Data JPA
- Spring for Apache Kafka
- Gradle 7.5+
- PostgreSQL 14
- Redis 7.0
- Apache Kafka (Confluent Platform 7.3.0)
- Zookeeper
- Spring Boot Actuator
- SpringDoc OpenAPI 2.2.0 (Swagger UI доступен для сервисов auth, payment, order, inventory, delivery)
- JUnit 5
- Testcontainers
- WireMock
- Mockito
- AssertJ
- Docker
- Docker Compose
- Order Service - управление заказами, отслеживание статусов
- Payment Service - обработка платежей
- Delivery Service - управление доставкой
- Inventory Service - управление складом и товарами
- Auth Service - аутентификация и авторизация
- API Gateway - единая точка входа, маршрутизация
- Config Service - централизованная конфигурация
- Discovery Service - обнаружение сервисов (Eureka)
- JDK 17
- Docker и Docker Compose
- Gradle 7.5+
- Минимум 8GB RAM для запуска всех сервисов
-
Клонируйте репозиторий:
git clone <repository-url>
-
Запустите инфраструктурные сервисы:
docker-compose up -d
Это запустит:
- PostgreSQL (порт 5432)
- Redis (порт 6379)
- Zookeeper (порт 2181)
- Kafka (порты 9092, 29092)
-
Порядок запуска сервисов:
- Discovery Service (Eureka) - порт 8761
- Config Service
- Gateway Service
- Auth Service
- Остальные сервисы (order, payment, delivery, inventory)
-
При первом запуске автоматически создается администратор системы со следующими учетными данными:
{ "username": "defaultAdmin", "password": "defaultPassword" }Рекомендуется сменить пароль после первого входа в систему.
- Eureka Dashboard: http://localhost:8761
- Swagger UI доступен для каждого сервиса: http://localhost:{port}/swagger-ui.html
- Actuator endpoints: http://localhost:{port}/actuator
REGISTERED- заказ зарегистрированPAID- заказ оплаченPAYMENT_FAILED- ошибка оплатыINVENTED- заказ укомплектованINVENTMENT_FAILED- ошибка комплектацииDELIVERED- заказ доставленDELIVERY_FAILED- ошибка доставкиUNEXPECTED_FAILURE- непредвиденная ошибка
common-dto- общий модуль, содержащий:- DTO классы для обмена данными между сервисами
- Общие утилиты и константы
- Базовые классы для обработки ошибок
- Общие конфигурации
Все микросервисы зависят от этого модуля, что обеспечивает согласованность данных и переиспользование кода.
Каждый сервис имеет свою независимую базу данных в PostgreSQL, что обеспечивает изоляцию данных и независимость сервисов друг от друга.
Взаимодействие между сервисами происходит асинхронно через Kafka, за исключением обновления статуса заказа, которое выполняется синхронно через REST API.
# Запуск модульных тестов
./gradlew test
# Запуск интеграционных тестов
./gradlew integration-test:test- Реализация мониторинга и логирования (ELK стэк)
- Реализация полноценного CI\CD
- Sleuth\zipkin