DAS_2023_1/senkin_alexander_lab_3/README.md

3.3 KiB
Raw Permalink Blame History

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