Микросервисное приложение для обработки заказов, платежей и управления пользователями. Включает в себя:
- 📦 Сервис заказов (
orders-service) - 💰 Сервис платежей (
payments-service) - 🧩 Общая библиотека (
common) - 🌐 API-шлюз (
gateway) - 🐘 PostgreSQL, 🐳 Kafka, Docker Compose
- Java 17 + Spring Boot
- Spring Web / Spring Data JPA
- PostgreSQL
- Apache Kafka
- Docker + Docker Compose
- OpenAPI / Swagger UI
Требования: Docker, Docker Compose, Java 17, Maven
- Склонировать проект:
git clone https://github.com/Ayungich/sd_final_hw_3.git
cd shop-app- Собрать все модули:
mvn clean install- Запустить все сервисы:
docker compose up --buildУбедись, что порты
8080,8081,8082,5432,29092свободны.
- API Gateway: http://localhost:8080/swagger-ui.html
- Orders: http://localhost:8081/swagger-ui.html
- Payments: http://localhost:8082/swagger-ui.html
- Создать аккаунт:
POST /accounts
Headers:
X-User-Id: 11111111-1111-1111-1111-111111111111
Body:
{
"initialBalance": 100.0
}- Пополнить счёт:
POST /accounts/{id}/top-up
{
"amount": 50.0
}- Создать заказ:
POST /orders
Headers:
X-User-Id: 11111111-1111-1111-1111-111111111111
Body:
{
"amount": 120.0,
"description": "Летние шлёпанцы"
}- Проверить заказ:
GET /orders/{id}
- Проверить баланс:
GET /accounts/{id}
- Каждый сервис использует отдельную базу данных (PostgreSQL)
- Взаимодействие между сервисами — через Kafka
- Exactly-once семантика не реализована (используется outbox/inbox для упрощённой idempotent обработки)
shop-app/
├── common/ # Общие классы и события (Kafka Events, DTO)
├── orders-service/ # Микросервис заказов
├── payments-service/ # Микросервис платёжной системы
├── gateway/ # API-шлюз
├── docker-compose.yml # Контейнеризация
└── README.md
- Микросервисная архитектура
- Kafka-обмен событиями
- Outbox/Inbox шаблоны
- Валидация и вежные ошибки
- Swagger UI
- Docker Compose
- Ручное и автоматическое тестирование через PowerShell/Swagger
Разработано в рамках учебного проекта
- Автор: Лефанов Никита Юрьевич
- @ayungich — 2025