# Лабораторная работа №3 - REST API, шлюз и синхронный обмен данными между микросервисами ## Задание ### Цель Изучение принципов проектирования с использованием паттерна шлюза, организации синхронной передачи данных между микросервисами и применения архитектурного стиля RESTful API. ### Задачи 1. Создание двух микросервисов, которые реализуют операции CRUD для связанных сущностей. 2. Реализация механизма синхронного обмена данными между микросервисами. 3. Настройка шлюза на базе Nginx в качестве прозрачного прокси-сервера. ### Микросервисы 1. **user_service** — сервис, который управляет информацией о пользователях. 2. **order_service** — сервис, который обрабатывает данные о заказах пользователей. ### Связь между микросервисами - Один документ (user) может иметь множество связанных предметов (orders) (соотношение 1 ко многим). ### Структура проекта ``` lab_3/ |-- nginx/ | |-- nginx.conf |-- order_service/ | |-- Dockerfile | |-- main.py | |-- requirements.txt |-- user_service/ | |-- Dockerfile | |-- main.py | |-- requirements.txt |-- docker-compose.yml ``` ## Описание работы: Для разработки микросервисов был выбран язык программирования Python. ### Синхронный обмен данными Сервис `user_service` отправляет HTTP-запросы к `order_service` при выполнении определенных операций CRUD. Это позволяет получать актуальную информацию о предметах, связанных с конкретными героями. ### Docker Compose Конфигурационный файл `docker-compose.yml` представляет собой многоконтейнерное приложение, которое включает в себя три сервиса: `user_service`, `order_service` и `nginx`. Функция маршрутизации возложена на сервер Nginx, который обрабатывает запросы и перенаправляет их на соответствующие микросервисы. ### Nginx Конфигурационный файл Nginx определяет настройки веб-сервера и обратного прокси, который управляет входящими запросами и направляет их на соответствующие сервисы. ### Видеозапись работы программы https://vkvideo.ru/video174596752_456239396