тестовое задание
Проект состоит из двух микросервисов: StatisticService и APIGateway.
Сервисы общаются по gRPC (контракты описаны в ./protos
).
Для быстрого запуска проекта, можно воспользоваться утилитой make
и Docker
:
make start
Скрипт сбилдит образы и поднимет контейнеры, прописанные в docker-compose.yaml
(в том числе проведет миграцию и заполнит данными)
Два микросервиса:
Контракты:
Общая структура проекта:
├───api-gateway // Сервис APIGateway (второй микросервис)
│ ├───cmd
│ │ └───app
│ ├───configs
│ └───internal
│ ├───app
│ ├───clients
│ │ └───stats-service
│ │ └───grpc
│ ├───config
│ ├───delivery
│ │ └───http
│ └───domain
│ └───models
│
├───protos // Сгенерированные и описанные protobuf-контракты
│ ├───gen
│ │ └───go
│ │ └───stats-service
│ └───stats-service
│
└───stats-service // Сервис сбора и хранения статистики (первый микросервис)
├───cmd
│ ├───app
│ └───migrate
├───configs
├───internal
│ ├───app
│ ├───config
│ ├───delivery
│ │ └───grpc
│ │ └───statistic
│ ├───domain
│ │ ├───errors
│ │ └───models
│ ├───logger
│ ├───repository
│ │ └───postgres
│ └───service
│ └───statistic
└───migrations
Хотел бы еще (но не успел):
- Прологгировать опасные места
- Дописать тесты (unit & функциональные)
- В APIGateway сделать response.go, где описал бы типичные HTTP-ответы