Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛒 Контрольная работа № 3

Микросервисное приложение для обработки заказов, платежей и управления пользователями. Включает в себя:

  • 📦 Сервис заказов (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

  1. Склонировать проект:
git clone https://github.com/Ayungich/sd_final_hw_3.git
cd shop-app
  1. Собрать все модули:
mvn clean install
  1. Запустить все сервисы:
docker compose up --build

Убедись, что порты 8080, 8081, 8082, 5432, 29092 свободны.


🌍 Доступ к Swagger UI


🧪 Как тестировать

  1. Создать аккаунт:

POST /accounts

Headers:
X-User-Id: 11111111-1111-1111-1111-111111111111

Body:
{
  "initialBalance": 100.0
}
  1. Пополнить счёт:

POST /accounts/{id}/top-up

{
  "amount": 50.0
}
  1. Создать заказ:

POST /orders

Headers:
X-User-Id: 11111111-1111-1111-1111-111111111111

Body:
{
  "amount": 120.0,
  "description": "Летние шлёпанцы"
}
  1. Проверить заказ:

GET /orders/{id}

  1. Проверить баланс:

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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages