DAS_2023_1/senkin_alexander_lab_3
2023-11-06 23:41:21 +04:00
..
bd1 senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
bd2 senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
service1 senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
service2 senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
.gitignore senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
docker-compose.yml senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
img_1.png senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
img_2.png senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
img_3.png senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
img_4.png senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
img_5.png senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
img_6.png senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
img_7.png senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
img_8.png senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
img_9.png senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
img_10.png senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
img_11.png senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
img_12.png senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
img_13.png senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
img_14.png senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
img_15.png senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
img_16.png senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
img_17.png senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
img_18.png senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
img.png senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
nginx.conf senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00
README.md senkin_alexander_lab_3 is ready 2023-11-06 23:41:21 +04:00

Лабораторная работа №3 - REST API, Gateway и синхронный обмен между микросервисами

Цель: изучение шаблона проектирования gateway, построения синхронного обмена между микросервисами и архитектурного стиля RESTful API.

Задачи:

  • Создать 2 микросервиса, реализующих CRUD на связанных сущностях.
  • Реализовать механизм синхронного обмена сообщениями между микросервисами.
  • Реализовать шлюз на основе прозрачного прокси-сервера nginx.

Разработка двух распределенных приложений

Было решено на первом сервисе(service1) сделать реализацию рабочего(clerc), на втором сервисе(service2) сделать реализацию офиса(office), которая хранит uuid работников. Было решено сделать как принято в микросервисной архитектуре бд на микросервис, поэтому реализовано 2 базы данных на PostgreSQL. Также реализован nginx - proxy сервер на общения сервисов между друг другом, а также для доступа к сервам снаружи через ngnix.

img.png

Запуск

Запуск контейнеров производится командой "docker-compose up -d"

Работа программы

  • Создание репозиторий service1 и service2 для сервисов, bd1 и bd2 для образов баз данных
  • Создание go.mod для подтягивания зависимостей.
  • Описание Dockerfile для создания образов для сервисов, одинковые для обоих сервисов:
  • img_1.png
  • Описание Dockerfile для создания образов для бд, одинаковые для обоих:
  • img_2.png
  • Создание файлов server_run.go с логикой работ сервисов.
  • Создаем файл nginx.conf с конфигурацией работы nginx:
  • img_3.png
  • Создаем файл docker-compose.yml для описания запуска контейнеров в одной сети:
  • img_4.png
  • img_5.png
  • Сборка и запуска контейнеров.
  • img_6.png
  • img_7.png
  • Проверка работы докер сети и контейнеров, все работает стабильно:
  • img_8.png
  • Делаем запросы через insomnia:
  • img_9.png
  • img_10.png
  • img_11.png
  • img_12.png
  • img_13.png
  • img_14.png
  • img_15.png
  • img_16.png
  • img_17.png
  • img_18.png
  • Все запросы работают.

Видео

Видео с разбором лабораторной работы - https://youtu.be/RQCwqW9jwH4