.. | ||
company-service | ||
nginx | ||
vacancy-service | ||
docker-compose.yml | ||
init-database.sh | ||
README.md |
Отчет. Лабораторная работа 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
Как запустить
Для того, чтобы запустить сервисы, необходимо выполнить следующие действия:
- Установить и запустить Docker Engine или Docker Desktop
- Через консоль перейти в папку, в которой расположен файл docker-compose.yml
- Выполнить команду:
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.