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