В БД:
- Развернуть локально postgresql
- Создать свою бд
- Настроить своего пользователя.
- Создать таблицы для хранения полученных данных.
В сервисе:
- Подключение и подписка на канал в nats-streaming
- Полученные данные писать в Postgres
- Так же полученные данные сохранить in memory в сервисе (Кеш)
- В случае падения сервиса восстанавливать Кеш из Postgres
- Реализовать REST ручку для получения данных по ID
Доп инфо: • Данные статичны, исходя из этого подумайте насчет модели хранения в Кеше и в pg.
• При написание сервиса руководствуйтесь правилами чистой архитектуры
• Модель в файле model.json
• В канал могут закинуть что угодно, подумайте как избежать проблем из-за этого
• Чтобы проверить работает ли подписка онлайн, сделайте себе отдельный скрипт, для публикации данных в канал
• Подумайте как не терять данные в случае ошибок или проблем с сервисом
• Nats-streaming разверните локально ( не путать с Nats )
• база данных и nats-streaming разворачиваются с помощью docker-compose
• тестовые база данных и nats-streaming разворачиваются отдельно, с помощью docker-compose и после прохождения тестов удаляются
• настройки сервиса хранятся в файле config.yaml, настройки для тестов хранятся в файлах с тестами
• при первом запуске сервиса в базе данных создается одна запись с id = 1
• данные получаются по адресу http://localhost:8080/{id}
• для первичной проверки на функциональность сервиса приложен test-api.http файл
• любое пустое значение в данных считается не валидным
• тестирование запускаяется с помощью Makefile с флагом test
• сервис запускаяется с помощью Makefile с флагом run