Каталог решений - Микросервисы на Golang. Часть 6. Докеризация, Начальная оркестрация, CD\CI

Микросервисы на Golang. Часть 6. Докеризация, Начальная оркестрация, CD\CI

Микросервисы на Golang. Часть 6. Докеризация, Начальная оркестрация, CD\CI

В наличии

Создадим микросервис, поместим его в докер, проведем его масштабирование на нескольких виртуальных машинах с помощью оркестрации Docker Swarm, выполним также CD\CD микросервиса с помощью GitHub Action (Микросервис взят с прода, обрезан лишний функционал) будет показан пример его взаимодействия с 1С клиентом.

Категория:

Описание

Предыдущие и будущие статьи:

Для понимания материала возьмем небольшой функционал, реализуемый микросервисом. Есть некий справочник, в котором аналитики могут просматривать количество записей в выбранной таблице postgresql, очищать эту таблицу, а также добавлять колонки, изменять их, добавлять индексы (Сделано это чтобы аналитики не беспокоили ИТ-шников по всяким пустякам).

Возьмем для примера только функционал получения количества записей и очистки, выглядит это в 1С так. 

Вырезал из микросервиса все лишнее и положил его в ранее опубликованный GitHub репозиторий посмотреть можно тут

Как собрать этот микросервис и поместить в докер можно посмотреть в ранних статьях цикла.

Предположим, что у нас появилось условно 100 000 аналитиков :), которые регулярно взаимодействуют с postgresql, теперь один наш контейнер с микросервисом не способен обработать такой поток нагрузки. Поэтому мы применяем оркестрацию контейнеров. Например это умеют Kubernetes, но более простой вариант для понимания — это Docker Swarm, его и рассмотрим в статье. (Маcштабирование postgresql, серверов и сети в этой статье рассматривать не будет, предполагается, что оно уже сделано).

Docker Swarm умеет объединять несколько северов в кластер, распределяя между ними множество контейнеров — например, для моих микросервисов используется 3 сервера.

А сам микросервис запушен в 80 контейнерах, которые система распределяет по серверам (можно сказать, оркестрирует).

Развернуть все это можно yml скриптом, он очень похож на docker-compose файл.

Стрелочками я выделил количество контейнеров, а также образ для контейнера. Собрал я образ с помощью GitHub Action (инструмент из области CD\CI).

Для сборки образа нужен докер файл, ранее я описывал как его делать. 

Вкратце — GitHub Action на основании скрипта собирает образ и помещает его в реджестри (регистр образов для докера). Кстати, Docker Hub является одним из самых популярных публичных регистров образов. Как туда поместить свой собственный образ я тоже писал ранее.

GitHub Action выглядит примерно так:

Видел, как некоторые делали CD\CI 1С на GitHub Action, найти такие материалы — это возможность погрузиться в этот функционал глубже…

Когда выполняется коммит в код микросервиса, стартует сборка, которая в конечном итоге обновляет докер образ в registry, а Docker в режиме Swarm обновляет запущенные контейнеры на новый образ перезапуская все 80 запущенных реплик.

Я сделал докер образ публичным, можете с ним экспериментировать, если интересно

Пример клиента на 1С тоже есть в репозитории. Запускался на 8.3.18.1208

P.S. Интересно, увидим ли мы платформу 1С в докер контейнерах, которые можно легко масштабировать и компоновать?

has been added to your cart:
Оформление заказа