- gRPC, Rust (по нему ничего не передается, но он есть), Postgres, Kafka, Docker (сам ничего не собираю, но сташил кафку от туда)
В общем. Имеется 5 сервисов:
- Сервис пользователей. Обычный CRUD
- Сервис товаров. Обычный CRUD
- Сервис корзины. На основе пользователя и товаров собирает корзину
- Сервис заказов. На основе корзины создает заказ
- Сервис оплаты. Умеет оплачивать заказ (переводить в статус оплачено, или наоборот фейлить)
Все это вместе работает через gRPC. Я до конца не сообразил, какой архитектуры придерживаться, поэтому могла получится солянка
- Провести все миграции которые найдутся (увы, я не собрал все в одном месте. Да и вообще у меня одна база под все дело)
- Запустить каждый сервера в каждом сервисе. Они лежат в
internal/service_name/cmd/server/main.go
Далее вариативно:
Либо
- Запихать proto в какой-нибудь клиент
/protos
- Тыкать запросы
Либо
- Запустить кафку (этот вариант не доработан и сделан только в демонстрационных целях)
- Прилагается docker-compose со сборкой кафки
- Запустить продюсера
saga/producer/main.go
- Запустить консьюмера
saga/user/main.go
- Данный функционал через кафку отправляет сообщения на создание пользователей. Принимает, после отправляет gRPC запрос клиенту. Тот отправляет сервису пользователей, а тот создает пользователя