# Лабораторная работа №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