# Лабораторная работа №3 - REST API, Gateway и синхронный обмен между микросервисами ## Цель изучение шаблона проектирования gateway, построения синхронного обмена между микросервисами и архитектурного стиля RESTful API. ### Задачи 1. Создать 2 микросервиса, реализующих CRUD на связанных сущностях. 2. Реализовать механизм синхронного обмена сообщениями между микросервисами. 3. Реализовать шлюз на основе прозрачного прокси-сервера nginx. 4. Оформить отчёт в формате Markdown ### Инструменты для выполнения: 1. Docker 2. Docker Compose 3. Python 4. Postman ## Компоненты системы: 1. Cartoon Service (cartoon_service/) - сервис для управления мультфильмами 2. Producer Service (producer_service/) - сервис для управления режиссерами 3. Nginx - обратный прокси и балансировщик нагрузки 4. Docker Compose - оркестрация контейнеров ## API Endpoints: GET / - Получить все мультфильмы GET /{cartoon_uuid} - Получить мультфильм по ID GET /full - Получить все мультфильмы с информацией о продюсерах GET /full/{cartoon_uuid} - Получить мультфильм с информацией о продюсере GET /by-producer/{producer_uuid} - Получить мультфильмы по продюсеру POST / - Создать новый мультфильм PUT /{cartoon_uuid} - Обновить мультфильм DELETE /{cartoon_uuid} - Удалить мультфильм GET / - Получить всех режиссеров GET /{producer_uuid} - Получить режиссера по ID GET /with-cartoons/{producer_uuid} - Получить режиссера с его мультфильмами GET /check/{producer_uuid} - Проверить существование режиссера POST / - Создать нового режиссера PUT /{producer_uuid} - Обновить режиссера DELETE /{producer_uuid} - Удалить режиссера Пример POST http://localhost/cartoon_service/: ```json { "title": "Король Лев", "year": 1994, "producer_id": "997aa4c5-ebb2-4794-ba81-e742f9f1fa30" } ``` ## Особенности реализации: 1. Микросервисная архитектура - каждый сервис независим и выполняет одну бизнес-функцию 2. Взаимодействие через HTTP - сервисы общаются через REST API вызовы 3. Контейнеризация - все компоненты запускаются в Docker контейнерах 4. Автоматическая сборка - Docker Compose автоматически собирает и запускает все сервисы 5. Единая точка входа - Nginx обеспечивает единый endpoint для всех сервисов ## Запуск: 1. На компьютере должны быть установлены Docker и Docker Compose 2. Скачайте папку с репозитория 3. Перейдите в директорию с yml 4. Запустите с помощью команды: `docker-compose up --build` 5. Откройте Postman ## Что делает данная лабораторная работа: Проект представляет собой микросервисное приложение для управления базой данных мультфильмов и их режиссеров. Система состоит из двух независимых сервисов, взаимодействующих через REST API, и обратного прокси на базе Nginx для маршрутизации запросов. ## Видео: https://rutube.ru/video/private/22f82905c7e737e2863bd9726cedf3e5/?p=FkA762T6Z6K0TDyHZ5Yaeg