DAS_2024_1/kosheev_maksim_lab_3/Readmy.md

46 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Лабораторная работа №3 - REST API, шлюз и синхронный обмен данными между микросервисами
## Задание
### Цель:
Изучение принципов проектирования с использованием паттерна шлюза, организации синхронной передачи данных между микросервисами и применения архитектурного стиля RESTful API.
### Задачи:
1. Создание двух микросервисов, которые реализуют операции CRUD для связанных сущностей.
2. Реализация механизма синхронного обмена данными между микросервисами.
3. Настройка шлюза на базе Nginx в качестве прозрачного прокси-сервера.
### Микросервисы:
1. **books_service** — сервис, который управляет информацией о книгах.
2. **subscriptions_service** — сервис, который обрабатывает данные об абонементах.
### Связь между микросервисами:
- Один абонемент может быть связан с несколькими книгами. Взаимодействие между сервисами осуществляется через синхронные HTTP-запросы.
## Как запустить проект:
Для запуска приложения необходимо выполнить команду:
```bash
docker-compose up --build
```
После этого проект будет доступен на следующих адресах:
Books Service: http://localhost:5000/books/
Subscriptions Service: http://localhost:5001/subscriptions/
## Описание работы:
Для разработки микросервисов был выбран язык программирования Python, с использованием фреймворка Flask для реализации API.
## Синхронный обмен данными
Сервис books_service обращается к subscriptions_service для получения информации о подписках, связанных с каждой книгой.
Все запросы между сервисами выполняются синхронно с использованием HTTP-запросов, что позволяет обеспечить актуальность данных при выполнении операций CRUD.
Docker Compose
Конфигурационный файл docker-compose.yml представляет собой многоконтейнерное приложение, которое включает в себя три сервиса: books_service, subscriptions_service и nginx. С помощью Docker Compose можно удобно запустить все сервисы одновременно.
## Nginx
Конфигурация Nginx настроена так, чтобы обрабатывать входящие HTTP-запросы и перенаправлять их на соответствующие сервисы. Это позволяет использовать один общий адрес для доступа к разным API-сервисам.
Nginx будет действовать как шлюз, который будет маршрутизировать запросы от пользователей в соответствующие микросервисы.
### Видео
https://disk.yandex.ru/i/b12BECyaGmbqUQ