# Отчет. Лабораторная работа 3 ## Описание В рамках лабораторной работы № 3 были реализованы два сервиса (Java + Spring), осуществляющие CRUD-операции над сущностями. Модель данных следующая: Сущность "Компания" (сервис company) - идентификатор компании - название - адрес Сущность "Вакансия" (сервис vacancy) - идентификатор вакансии - название - описание - нижняя граница зарплаты - верхняя граница зарплаты - идентификатор компании Компания с вакансией связана как "один ко многим". Каждый из сервисов имеет API с пятью эндпоинтами. При этом в сервисе vacancy при запросе вакансии по id происходит дополнительный запрос в сервис company для получения информации по компании, связанной с вакансией. Происходит это взаимодействие с помощью библиотеки OpenFeign, которая "под капотом" использует HttpClient. В качестве хранилища данных использовалась СУБД Postgres. У каждого сервиса своя база данных в поднятой СУБД. Для создания схемы БД была использована библиотека Flyway, которая применила написанные миграции при старте приложения. Запросы к сервисам проксирует шлюз на основе Nginx. Для этого перед запуском nginx был описан конфигурационный файл nginx.conf, в котором описан прослушиваемый порт и название сервера (в блоке server), маршруты до микросервисов и параметры проксирования (в блоке location). Таким образом, с помощью Docker Compose были подняты сервисы: - company - vacancy - postgres - nginx ## Как запустить Для того, чтобы запустить сервисы, необходимо выполнить следующие действия: 1. Установить и запустить Docker Engine или Docker Desktop 2. Через консоль перейти в папку, в которой расположен файл docker-compose.yml 3. Выполнить команду: ``` docker compose up --build ``` В случае успешного запуска всех контейнеров в консоли будет выведено следующее сообщение: ``` [+] Running 5/5 ✔ Network borschevskaya_anna_lab_3_default Created 0.0s ✔ Container postgres Started 0.6s ✔ Container vacancy Started 1.1s ✔ Container company Started 0.9s ✔ Container borschevskaya_anna_lab_3-nginx-1 Started ``` Далее можно осуществлять запросы к сервисам по адресу http://localhost/{location}, где часть пути location меняется в зависимости от сервиса и запроса. ## Видео-отчет Работоспособность лабораторной работы можно оценить в следующем [видео](https://disk.yandex.ru/i/KPNBfnlcgl1auw). Демонстрация взаимодействия с системой производится с применением сервиса Postman.