Проект состоит из четырех независимых микросервисов, разработанных на Go, которые взаимодействуют между собой по REST API. Архитектура построена с применением принципов Clean Architecture, что обеспечивает модульность, тестируемость и простоту масштабирования.
Каждый сервис разворачивается отдельно, имеет собственную базу данных, тесты, Dockerfile и конфигурацию. Проект демонстрирует навыки проектирования микросервисов, разработки на Go, тестирования, интеграции с внешними сервисами и контейнеризации.
- Aggregator (API Gateway) — объединяет все сервисы и предоставляет единый REST API.
- Auth — управление аутентификацией, JWT, двухфакторная авторизация (TOTP), подтверждение email.
- Todo — сервис управления досками и карточками задач.
- User — хранение и управление данными пользователей.
Взаимодействие между сервисами происходит по HTTP, а также через вызовы к репозиториям и внешним сервисам.
cmd/main.go— запуск сервиса.
internal/usecase/interface.go— описание интерфейса бизнес-логики.internal/usecase/v1/<имя_сервиса>.go— реализация бизнес-логики.internal/usecase/v1/<имя_сервиса>_test.go— юнит-тесты.
-
internal/service/<имя_сервиса>/interface.go— интерфейс внешнего сервиса. -
Пример:
type ForecastService interface { GetCurrentTemperature() GetCurrentWeather() GetForecast() }
internal/entity/<имя_сущности>.go— модели, используемые в бизнес-логике.
internal/dto/<имя_сущности>.go— структуры для взаимодействия с внешними системами.
internal/repository/interface.go— интерфейс репозитория.internal/repository/entity.go— структуры для работы с базой данных.
internal/adapter/<имя_порта>/<реализация>/<имя_файла>.go— конкретная реализация интерфейса (например, SQLx, Redis).
internal/handler/v1/<имя_файла>.go— HTTP-обработчики.
internal/api/v1/routes.go— настройка роутинга.
internal/common/<имя_порта>/interface.go— интерфейсы логгера, кэша и т.д.
internal/config/config.go— парсинг конфигурационных файлов.
internal/middleware/<название>.go— middleware для сервиса.
migrations/<бд>/— миграции базы данных.
mocks/— моки для тестов.
tests/<тип_тестирования>/— интеграционные и e2e тесты.
Dockerfile— сборка и запуск сервиса.docker-compose.yml— запуск через Docker Compose.
make