DAS_2023_1/senkin_alexander_lab_3/README.md

53 lines
3.3 KiB
Markdown
Raw Permalink 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, 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