DAS_2024_1/kalyshev_yan_lab_3/README.md
2024-11-02 20:14:47 +04:00

3.3 KiB
Raw Blame History

Отчет. Лабораторная работа 3

Описание

В рамках лабораторной работы № 3 были реализованы два сервиса (Java + Spring), предоставляющие CRUD-операции для сущностей. Модель данных следующая:

Сущность "Помещение" (сервис room):

  1. идентификатор помещения
  2. название
  3. адрес

Сущность "Компьютер" (сервис computer):

  1. идентификатор компьютера
  2. название
  3. описание
  4. идентификатор помещения

Компьютер с помещением связан как "один ко многим". Каждый из сервисов имеет API с пятью эндпоинтами. При этом в сервисе computer при запросе компьютера по id происходит дополнительный запрос в сервис room для получения информации о помещении, связанным с компьютером. Происходит это взаимодействие с помощью библиотеки OpenFeign, которая использует HttpClient. В качестве хранилища данных использовалась СУБД Postgres. У каждого сервиса своя база данных в поднятой СУБД. Для создания схемы БД была использована библиотека Flyway, применившая написанные миграции при старте приложения. Запросы к сервисам проксируют шлюз на основе Nginx. Для этого перед запуском nginx был описан конфигурационный файл nginx.conf, в котором были указаны прослушиваемый порт и название сервера (в блоке server), маршруты до микросервисов и параметры проксирования (в блоке location). Таким образом, с помощью Docker Compose были подняты сервисы:

  • room
  • computer
  • postgres
  • nginx

Как запустить

Для того, чтобы запустить сервисы, необходимо выполнить следующие действия:

Установите и запустите Docker Engine или Docker Desktop. Перейдите в папку, содержащую файл docker-compose.yml через консоль. Выполните команду: docker compose up --build Далее можно осуществлять запросы к сервисам по адресу http://localhost/{location} , где часть пути location меняется в зависимости от сервиса и запроса.

Видео-отчет

Работоспособность лабораторной работы можно оценить в следующем видео: https://zyzf.space/s/iWxb6b4EFQjPias. Демонстрация взаимодействия с системой производится с помощью утилиты httpie.