53 lines
3.3 KiB
Markdown
53 lines
3.3 KiB
Markdown
|
# Лабораторная работа №3 - REST API, Gateway и синхронный обмен между микросервисами
|
|||
|
Цель: изучение шаблона проектирования gateway, построения синхронного обмена между микросервисами и архитектурного стиля RESTful API.
|
|||
|
|
|||
|
Задачи:
|
|||
|
- Создать 2 микросервиса, реализующих CRUD на связанных сущностях.
|
|||
|
- Реализовать механизм синхронного обмена сообщениями между микросервисами.
|
|||
|
- Реализовать шлюз на основе прозрачного прокси-сервера nginx.
|
|||
|
|
|||
|
# Разработка двух распределенных приложений
|
|||
|
Было решено на первом сервисе(service1) сделать реализацию рабочего(clerc), на втором сервисе(service2) сделать реализацию офиса(office), которая хранит uuid работников.
|
|||
|
Было решено сделать как принято в микросервисной архитектуре бд на микросервис, поэтому реализовано 2 базы данных на PostgreSQL.
|
|||
|
Также реализован nginx - proxy сервер на общения сервисов между друг другом, а также для доступа к сервам снаружи через ngnix.
|
|||
|
|
|||
|
![img.png](img.png)
|
|||
|
|
|||
|
# Запуск
|
|||
|
Запуск контейнеров производится командой "docker-compose up -d"
|
|||
|
|
|||
|
# Работа программы
|
|||
|
- Создание репозиторий service1 и service2 для сервисов, bd1 и bd2 для образов баз данных
|
|||
|
- Создание go.mod для подтягивания зависимостей.
|
|||
|
- Описание Dockerfile для создания образов для сервисов, одинковые для обоих сервисов:
|
|||
|
- ![img_1.png](img_1.png)
|
|||
|
- Описание Dockerfile для создания образов для бд, одинаковые для обоих:
|
|||
|
- ![img_2.png](img_2.png)
|
|||
|
- Создание файлов server_run.go с логикой работ сервисов.
|
|||
|
- Создаем файл nginx.conf с конфигурацией работы nginx:
|
|||
|
- ![img_3.png](img_3.png)
|
|||
|
- Создаем файл docker-compose.yml для описания запуска контейнеров в одной сети:
|
|||
|
- ![img_4.png](img_4.png)
|
|||
|
- ![img_5.png](img_5.png)
|
|||
|
- Сборка и запуска контейнеров.
|
|||
|
- ![img_6.png](img_6.png)
|
|||
|
- ![img_7.png](img_7.png)
|
|||
|
- Проверка работы докер сети и контейнеров, все работает стабильно:
|
|||
|
- ![img_8.png](img_8.png)
|
|||
|
- Делаем запросы через insomnia:
|
|||
|
- ![img_9.png](img_9.png)
|
|||
|
- ![img_10.png](img_10.png)
|
|||
|
- ![img_11.png](img_11.png)
|
|||
|
- ![img_12.png](img_12.png)
|
|||
|
- ![img_13.png](img_13.png)
|
|||
|
- ![img_14.png](img_14.png)
|
|||
|
- ![img_15.png](img_15.png)
|
|||
|
- ![img_16.png](img_16.png)
|
|||
|
- ![img_17.png](img_17.png)
|
|||
|
- ![img_18.png](img_18.png)
|
|||
|
- Все запросы работают.
|
|||
|
|
|||
|
# Видео
|
|||
|
Видео с разбором лабораторной работы - https://youtu.be/RQCwqW9jwH4
|
|||
|
|