Проект Explore With Me был переработан из монолитного приложения в набор микросервисов. Целью изменений стало повышение масштабируемости, отказоустойчивости и удобства развития системы.
Все внешние запросы клиентов обрабатываются через API Gateway, что позволяет сохранить единый входной API независимо от внутренней архитектуры приложения.
Проект состоит из следующих компонентов:
- Config Server — централизованное хранение конфигураций всех сервисов.
- Discovery Server (Eureka) — сервис обнаружения, обеспечивающий динамическую регистрацию микросервисов.
- API Gateway — единая точка входа для всех HTTP-запросов (порт 8080).
- event-service — управление событиями, категориями и подборками.
- user-service — управление пользователями.
- request-service — управление заявками на участие в событиях.
- comment-service — работа с комментариями.
- stats-service — сбор и предоставление статистики просмотров.
- ewm-common — содержит общие DTO, enum’ы, исключения и вспомогательные утилиты, используемые несколькими микросервисами.
- Внешние клиенты взаимодействуют только с API Gateway.
- Gateway перенаправляет запросы в соответствующие микросервисы.
- Межсервисное взаимодействие реализовано с использованием OpenFeign и Eureka.
- Все сервисы получают конфигурации из Config Server при запуске.
При недоступности зависимого микросервиса используется деградация функциональности:
возвращаются значения по умолчанию (например, 0 или пустые коллекции).
Для повторных запросов и повышения устойчивости используются механизмы повторных попыток (Retry).
Для проверки совместимости и корректности работы системы используются Postman-тесты. Все запросы выполняются через API Gateway и не зависят от внутреннего устройства сервисов.
Описание внешнего API доступно в спецификации OpenAPI, предоставленной в рамках группового проекта.