Задание
|
Предыдущий урок
Видеоурок
|
2 из 3 уроков
Необходимо выполнить задание
|
Следующий урок
Оценка качества проверки ДЗ
|
Время выполнения задания: ~1-1.5 часа
Сложность: ⭐️⭐️ (максимум ⭐️⭐️⭐️⭐️⭐️)
Бонусы: 200
На вашем счету сейчас: 1 бонуса/ов
Общая схема
💎 Запустить инфраструктуру
Для того чтобы сервис работал, ему нужна база данных и прочие зависимости. Все эти зависимости запускаются в Docker и находятся в проекте Infrastructure.
Подтяните последнюю версию Infrastructure
- Если вы ранее не скачивали проект, то:
git clone https://gitlab.com/microarch-ru/ddd-in-practice/infrastructure.git
- А если скачивали, то просто обновите:
git pull https://gitlab.com/microarch-ru/ddd-in-practice/infrastructure.git
- Откройте терминал и перейдите в папку Infrastructure
- Выполните команду
docker-compose up
- Если ваш компьютер маломощный, то вы можете запускать инфраструктурные системы выборочно. Оставьте в команде, только нужные системы:
docker-compose up postgres kafka init-kafka kowl geo notification discount backoffice basket
После запуска сервис Geo будет доступен для обращения по адресу http://localhost:5004 (или 0.0.0.0:5004)
💎 Логика работы сервиса Geo
switch message.Address {
case "Тестировочная":
return Location{X: 1, Y: 1}
case "Айтишная":
return Location{X: 2, Y: 2}
case "Эйчарная":
return Location{X: 3, Y: 3}
case "Аналитическая":
return Location{X: 4, Y: 4}
case "Нагрузочная":
return Location{X: 5, Y: 5}
case "Серверная":
return Location{X: 6, Y: 6}
case "Мобильная":
return Location{X: 7, Y: 7}
case "Бажная":
return Location{X: 8, Y: 8}
default:
return CreateRandomLocation()
}💎 Подготовка к заданию
Установите в проекте пакеты по инструкции:
https://grpc.io/docs/languages/go/quickstart/
Задание
Легенда
Вы отвечаете за разработку микросервиса Delivery (доставка)
Подготовка
- Вы работаете в своём Git репозитории "delivery"
- Создайте ветку module-9
- Выполните задание в ней
Задача
По легенде корзина нам отправляет информацию о заказе и один из параметров — это Адрес. Но нам, чтобы диспетчеризовать курьеров, нужны Location (геометки), а не адреса. В системе уже есть специальный сервис, который отдаёт Location по названию улицы. Данный сервис называется Geo, и он принимает запросы синхронно по gRPC. У сервиса Geo есть Protobuf контракт и все потребители могут сгенерировать Client и взаимодействовать с ним.
Вам нужно синтегрироваться с сервисом Geo по gRPC и получать Location по названию улицы.
Можете использовать код сервиса Basket как пример.
После реализации
- Запустите приложение
- Попробуйте создать заказ
- Убедитесь, что Location вы получаете из Geo. Это можно сделать, если поставить точку останова в Use Case "CreateOrder"
Критерии оценивания
- Delivery сервис получает Location из Geo сервиса
- Приложение компилируется и запускается
По любым вопросам обращайтесь в комментариях к уроку или в Telegram
Если вы обнаружили ошибку или неточность в данном уроке, сообщите о ней в комментариях к данному уроку. Это поможет сделать курс лучше.