Приложение, которое позволяет пользователям делиться информацией об интересных событиях и находить компанию для участия в них.
Приложение состоит из двух сервисов:
- основной сервис, который содержит всё необходимое для работы продукта;
- сервис статистики, который хранит количество просмотров и позволит делать различные выборки для анализа работы приложения.
API основного сервиса состоит из трех частей:
- публичная: доступна без регистрации любому пользователю сети;
- закрытая: доступна только авторизованным пользователям;
- административная — для администраторов сервиса.
Собирает информацию о ,во-первых, о количестве обращений пользователей к спискам событий и, во-вторых, о количестве запросов к подробной информации о событии. На основе этой информации формируется статистика о работе приложения.
В ходе разработки в рамках обучения в Яндекс.Практикуме выполнена следующая работа:
- Разработаны два микросервиса на основе спецификаций OpenAPI
- Микросервисы контактируют друг с другом при помощи HTTP-клиента
- Для каждого экземпляра микросервисов запускается свой экземпляр PostgreSQL в Docker-контейнере
- Приложение запускается в Docker-контейнерах с помощью Docker compose
- Написана коллекция тестов Postman
Самостоятельно на сегодняшний день выполнена следующая работа:
- Реализована поддержка HATEOAS для основного сервиса (уровень 3 модели зрелости Ричардсона)
- Добавлена поддержка Spring Cloud Config: файлы конфигураций перенесены в удаленный репозиторий (github), используется шифрование чувствительных данных (пароль от БД)
- Добавлена поддержка Spring Cloud Netflix: микросервисы регистрируются в Eureka
- Поддержка Spring Cloud Stream (Kafka): основной сервис посылает сообщение сервису статистики с помощью брокера сообщений вместо синхронного обмена запросами
- Сбор статистики с помощью Prometheus и Grafana
TODO:
- Поддержка HTTP-клиентом механизма обнаружения служб Eureka и балансировщика нагрузки
- Поддержка Resilience4j Retry
- Поддержка Keycloak через Spring Security: добавлены роли пользователей и конфигурация
- Оптимизация Docker-образов с помощью Buildpacks
- Тесты (Testcontainers)