# Лабораторная работа №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