/microservices

Homework #3 for Route256

Primary LanguageGo

Сервис создания и оплаты заказа

Используемые технологии

  • 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 запрос клиенту. Тот отправляет сервису пользователей, а тот создает пользователя