# Отчет. Лабораторная работа 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.