Реализовать сервис заказа. Сервис биллинга. Сервис нотификаций.
При создании пользователя, необходимо создавать аккаунт в сервисе биллинга. В сервисе биллинга должна быть возможность положить деньги на аккаунт и снять деньги.
Сервис нотификаций позволяет отправить сообщение на email и позволяет получить список сообщений по методу API.
Пользователь может создать заказ. У заказа есть параметр - цена заказа. Заказ происходит в 2 этапа:
- сначала снимаем деньги с пользователя с помощью сервиса биллинга
- отсылаем пользователю сообщение на почту с результатами оформления заказа. Если биллинг подтвердил платеж, должно отослаться письмо счастья. Если нет, то письмо горя. Упрощаем и считаем, что ничего плохого с сервисами происходить не может (они не могут падать и т.д.). Сервис нотификаций на самом деле не отправляет, а просто сохраняет в БД.
Спроектировать взаимодействие сервисов при создании заказов. Предоставить варианты взаимодействий в следующих стилях в виде sequence диаграммы с описанием API на IDL:
- только HTTP взаимодействие
- событийное взаимодействие с использование брокера сообщений для нотификаций (уведомлений)
- Event Collaboration cтиль взаимодействия с использованием брокера сообщений
- вариант, который вам кажется наиболее адекватным для решения данной задачи. Если он совпадает одним из вариантов выше
- просто отметить это.
Выбрать один из вариантов и реализовать его.
На выходе должны быть:
- описание архитектурного решения и схема взаимодействия сервисов (в виде картинки)
- команда установки приложения (из helm-а или из манифестов). Обязательно указать в каком namespace нужно устанавливать.
- тесты постмана, которые прогоняют сценарий:
- Создать пользователя. Должен создаться аккаунт в биллинге.
- Положить деньги на счет пользователя через сервис биллинга.
- Сделать заказ, на который хватает денег.
- Посмотреть деньги на счету пользователя и убедиться, что их сняли.
- Посмотреть в сервисе нотификаций отправленные сообщения и убедиться, что сообщение отправилось
- Сделать заказ, на который не хватает денег.
- Посмотреть деньги на счету пользователя и убедиться, что их количество не поменялось.
- Посмотреть в сервисе нотификаций отправленные сообщения и убедиться, что сообщение отправилось.
В тестах обязательно:
- наличие
{{baseUrl}}
для урла - использование домена
arch.homework
в качестве initial значения{{baseUrl}}
- отображение данных запроса и данных ответа при запуске из командной строки с помощью newman