Skip to content

e-commerce-2/backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

298 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

E-commerce Backend API

Надежный бэкенд для интернет-магазина с фокусом на микросервисную архитектуру, безопасность (JWT) и производительность (Redis).

Предварительные требования

  1. Проект запущен: (Java-приложение, PostgreSQL, Redis, Kafka).
  • Соберите JAR: mvn clean package;
  • Соберите образы: docker compose build
  • Запустите контейнеры: docker compose up -d.
  1. База данных инициализирована (Liquibase)
  2. Postman коллекции импортированы: ecommerce-api.postman_collection.json и ecommerce-api-part2.postman_collection.json
  3. Демо: DEMO.md и DEMO-2.md
  4. Демо-видео: demo-video и demo-video-2

Описание проекта

Бэкенд для e-commerce платформы — RESTful API на Spring Boot для онлайн-магазина. Реализованы микросервисы с Feign клиентами, JWT аутентификация, Redis кэширование профилей, PostgreSQL хранение.

ER диаграмма

ER-диаграмма.png

Модули

  • 👤 user-service – микросервис пользователей
  • 🏪 product-service – каталог товаров
  • 🛒 cart-service – корзина пользователя
  • 📦 order-service – заказы и оплата

Функции:

  • Управление пользователями: регистрация, аутентификация.
  • Каталог товаров: просмотр, поиск, фильтрация товаров.
  • Управление запасами: резервирование товаров при добавлении в корзину, TTL 1 час, автоматическое освобождение.
  • Корзина покупок: добавление, удаление, изменение количества товаров.
  • Оформление и управление заказами: создание заказа, выбор способа оплаты и доставки, отслеживание статуса.

Технологии

  • Язык: Java java

  • Фреймворк: Spring Boot spring-boot

  • БД: PostgreSQL postgresql

  • Кэш: Redis redis

  • Брокер сообщений: Apache Kafka (событийное взаимодействие)

  • Безопасность: Spring Security + JWT

  • Коммуникация: Feign Clients

  • Тестирование: JUnit, Mockito, Testcontainers, WireMock

  • Контейнеризация: Docker docker

  • Сборка: Maven maven

Метрики

Сервис URL
Prometheus localhost:9090
Сервис URL Логин Пароль
Grafana localhost:3000 admin admin

🌐 API

Все эндпоинты защищены JWT, кроме публичных:
POST /api/auth/register | POST /api/auth/login

👤 User Service (http://localhost:8081)

Метод Эндпоинт Описание Роли
POST /api/auth/register Регистрация пользователя public
POST /api/auth/login Авторизация public
GET /api/users/profile Профиль текущего пользователя user
PUT /api/users/profile Обновить профиль user

🏪 Product Service (http://localhost:8082)

Категории

Метод Эндпоинт Описание Роли
POST /api/categories Создать категорию admin
PUT /api/categories/{id} Обновить категорию admin
DELETE /api/categories/{id} Удалить категорию admin
GET /api/categories Список категорий user
GET /api/categories/{id} Категория по Id user

Товары

Метод Эндпоинт Описание Роли
POST /api/products Создать товар admin
PUT /api/products/{id} Обновить товар admin
DELETE /api/products/{id} Удалить товар admin
GET /api/products/{id} Детали товара user
GET /api/products Список товаров user
GET /api/products/search Поиск товаров user

Управление запасами (Stock)

Метод Эндпоинт Описание Роли
GET /api/stocks/products/{productId} Информация о запасах товара user
POST /api/stocks/products/{productId}/reserve Зарезервировать товар admin
POST /api/stocks/reservations/{code}/confirm Подтвердить резерв admin
DELETE /api/stocks/reservations/{code} Отменить резерв admin

🛒 Cart Service (http://localhost:8083)

Метод Эндпоинт Описание Роли
POST /api/cart/items Добавить товар в корзину user
GET /api/cart Получить корзину user
PUT /api/cart/items Обновить корзину user
DELETE /api/cart/items/{id} Удалить товар из корзины user
DELETE /api/cart Очистить корзину user

📦 Order Service (http://localhost:8084)

Метод Эндпоинт Описание Роли
POST /api/orders Создать заказ user
GET /api/orders Список заказов user
GET /api/orders/{id} Детали заказа user
GET /api/admin/orders Список всех заказов admin
PUT /api/admin/orders/{id}/status Обновить статус заказа admin

Команда


Alexander Korotkov
numerouno-life

Alexander Chermnykh
A-Cherm

Anastasiya Bogdanova
AnastasiyaBogdanova

Andrey Okunevich
andreiokunevich

Aidar Safin
V1chers

Valeria Butko
progingir

Ekaterina Badeeva
EkaterinaBadeeva

Ilya Greshnov
GreshnovIlya

Irina Gavrilina
Irina-Gavrilina

Nadezhda Tupitsyna
NadezhdaTA

Sergey Zizganov
s-zizganov

Eduard Gritsак
GritsED

🛰 Развёртывание (Docker Compose)

Запуск:

  • Соберите JAR: mvn clean package;
  • Собрать образы: docker compose build
  • Запустите контейнеры: docker compose up -d.

Для запуска только основных сервисов без метрик: docker compose -f docker-compose.dev.yml up -d

📊 Мониторинг (Grafana + Prometheus)

Дашборды

Дашборд URL Описание
Kafka Exporter Overview http://localhost:3000/d/jwPKIsniz/kafka-exporter-overview Мониторинг Kafka: consumer lag, throughput, партиции (ID: 7589)
Stock Management http://localhost:3000/d/stock-management Метрики товарных запасов: low stock, reserved/available ratio

Настроенные алерты

Алерты доступны в Prometheus http://localhost:9090/alerts:

Алерт Условие Длительность Серьёзность
KafkaHighConsumerLag consumer lag > 1000 2m warning
KafkaUnderReplicatedPartitions under-replicated partitions > 0 1m critical
LowStockAlert product_low_stock_count > 0 5m warning

Источники метрик

  • Kafka metrics: kafka-exporter (порт 9308) + JMX exporter (порт 5556)
  • Stock metrics: product-service через Micrometer (/actuator/prometheus)
  • System metrics: node-exporter (порт 9100)
  • Prometheus: localhost:9090
  • Grafana:
    • url: localhost:3000
    • login: admin
    • password: admin

About

Репозиторий для бекенда проекта E-commerce2

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages