-
git clone git@github.com:AtaullinShamil/L0.git
-
В L0/cmd/base/main.go в функции init указать свой адрес репозитория
-
В L0/cmd/generator/main.go изменить Path на свой адрес репозитория
-
Запустить Docker
-
В L0/deploy ввести команду "make docker"
-
В L0/deploy ввести команду "make"
-
Для запуска генератора заказов в отдельном терминале в L0/deploy ввести команду "make generator"
Генератор отправляет заказы в nats, печатает uid заказа и количество товаров в заказе в stdout. Данные сохраняются в бд и хранятся в кэше.
По адресу http://localhost:8080/wb можно ввести uid заказа и получить информацию по нему. Информация выдается из кэша. В случае падения сервиса, данные восстанавливаются из бд и записываются в кэш.
Необходимо разработать демонстрационный сервис с простейшим интерфейсом, отображающий данные о заказе. Модель данных в формате JSON прилагается к заданию.
-
Развернуть локально PostgreSQL
- Создать свою БД
- Настроить своего пользователя
- Создать таблицы для хранения полученных данных
-
Разработать сервис
- Реализовать подключение и подписку на канал в nats-streaming
- Полученные данные записывать в БД
- Реализовать кэширование полученных данных в сервисе (сохранять in memory)
- В случае падения сервиса необходимо восстанавливать кэш из БД
- Запустить http-сервер и выдавать данные по id из кэша
-
Разработать простейший интерфейс отображения полученных данных по id заказа
- Данные статичны, исходя из этого подумайте насчет модели хранения в кэше и в PostgreSQL. Модель в файле model.json
- Подумайте как избежать проблем, связанных с тем, что в канал могут закинуть что-угодно.
- Чтобы проверить работает ли подписка онлайн, сделайте себе отдельный скрипт, для публикации данных в канал
- Подумайте как не терять данные в случае ошибок или проблем с сервисом
- Nats-streaming разверните локально (не путать с Nats)
Покройте сервис автотестами — будет плюсик вам в карму. Устройте вашему сервису стресс-тест: выясните на что он способен.
Воспользуйтесь утилитами WRK и Vegeta, попробуйте оптимизировать код.