forked from Alexey/DAS_2024_1
64 lines
2.4 KiB
Markdown
64 lines
2.4 KiB
Markdown
# Лабораторная работа №3 - REST API, Gateway и синхронный обмен между микросервисами
|
||
|
||
## Задание
|
||
|
||
#### Цель:
|
||
|
||
Изучение шаблона проектирования gateway, построения синхронного обмена между микросервисами и архитектурного стиля RESTful API.
|
||
|
||
#### Задачи:
|
||
|
||
* Создать 2 микросервиса, реализующих CRUD на связанных сущностях.
|
||
* Реализовать механизм синхронного обмена сообщениями между микросервисами.
|
||
* Реализовать шлюз на основе прозрачного прокси-сервера nginx.
|
||
|
||
### Сервисы:
|
||
1. ```product_server``` - сервис, отвечающий за продукты
|
||
|
||
2. ```document_server``` - сервис, отвечающий за документы, которые содержат в себе продукты
|
||
|
||
#### Связь между сервисами:
|
||
```document (single) <- product (many)```
|
||
|
||
## Как запустить программу:
|
||
```
|
||
docker compose up
|
||
```
|
||
|
||
## Файловая иерархия
|
||
|
||
```
|
||
Лаба 3/
|
||
|-- document_server/
|
||
| |-- Dockerfile
|
||
| |-- document_server.py
|
||
|-- product_server/
|
||
| |-- Dockerfile
|
||
| |-- product_server.py
|
||
|-- nginx.conf
|
||
|-- docker-compose.yml
|
||
|-- requirements.txt
|
||
|-- Test_commands.txt
|
||
```
|
||
|
||
## Описание работы:
|
||
|
||
Для разработки приложений был выбран язык программирования - ```python```
|
||
|
||
#### Синхронный обмен сообщениями
|
||
`product_server` будет отправлять http-запрос на `document_server` при определенных crud операциях.
|
||
|
||
### Docker-compose
|
||
|
||
|
||
Конфигурационный файл ```docker-сompose``` представляет собой многоконтейнерное приложение с тремя сервисами: ```product_server```, ```document_server``` и ```nginx```. Обязанности маршрутизатора возложены на сервер Nginx
|
||
|
||
|
||
### Nginx
|
||
|
||
|
||
Этот файл представляет собой конфигурацию для ```Nginx```, который является веб-сервером и обратным прокси.
|
||
|
||
|
||
# ВК
|
||
https://vk.com/video256017065_456239873 |