DAS_2024_1/borschevskaya_anna_lab_3/README.md

4.4 KiB
Raw Permalink Blame History

Отчет. Лабораторная работа 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 меняется в зависимости от сервиса и запроса.

Видео-отчет

Работоспособность лабораторной работы можно оценить в следующем видео. Демонстрация взаимодействия с системой производится с применением сервиса Postman.