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

Бесплатный доступ

Цель работы состоит в разработке распределённой системы для отправки уведомлений. В ходе выполнения работы разработаны алгоритмы работы микросервисов распределенной системы. Выполнена реализация микросервисов и их тестирование. Оценена эффективность работы системы в условиях предприятия.

Обмен уведомлениями, микросервисы, распределенная система, алгоритм, реализация

Короткий адрес: https://sciup.org/170189186

IDR: 170189186   |   DOI: 10.24412/2500-1000-2021-8-1-119-122

Analysis of issues of security of information systems on the basis of application of high performance computer systems

The purpose of the work is to develop a distributed system for sending notifications. In the course of the work, algorithms for the operation of microservices of a distributed system were developed. Implementation of microservices and their testing has been completed. The efficiency of the system operation in an enterprise environment is estimated

Текст научной статьи Разработка распределенной системы обмена уведомлениями на основе микросервисной архитектуры

Актуальность темы обуславливается необходимостью автоматизировать рутинные действия по рассылке рассылка email и sms-уведомлений пользователям [1]. На данный момент каждый сервис самостоятельно отправляет уведомления, что приводит к задержкам в работе пользователя и усложняет обслуживание рассылок администраторам, так как настраивать контент уведомлений приходится отдельно для каждого сервиса. В работе [2] разработана концепция распределённой системы для отправки уведомлений на основе микро-сервисной архитектуры распределенной системы. Предложена общая схема работы распределённой системы. Обоснован выбор иехнологий и средств реализации разработки.

Цель работы состоит в разработке распределённой системы для отправки уведомлений на языке Golang. Задачи решаемые в ходе выполнения работы: разработка алгоритмов работы программ, реализация разработки, анализ эффективности разработки. Предметом исследования является разработка распределённой системы отправки уведомлений на языке Go.

В системе необходимо реализовать сле- дующие микросервисы: scheduler, builder, email-sender, sms-sender [2].

В процессе проектирования микросервисов необходимо разработать модели работы их программной части [3]. Можно использовать высокоуровневое моделирование как в работе [4] и построить гибридную модель модулей подсистемы [5]. Однако, для получения модели сложной подсистемы [6] с точностью до действия удобнее воспользоваться низкоуровневыми методами моделирования. Для составления блок-схем, отражающих работу разрабатываемых алгоритмов, использованы инструменты для создания диаграмм и блок-схем (Microsoft Visio).

Как было сказано выше, scheduler – это основная точка входа в систему и маршрутизатор сообщений по очередям других микросервисов. Он консолидирует всю информацию о уведомлениях, решает какому микросервису дать обработку уведомления в определённом состоянии и записывает информацию о обработке уведомлений в базу данных.

На рисунке 1 представлена блок схема алгоритма работы микросервиса scheduler.

Рис. 1. Блок-схема работы микросервиса scheduler

Микросервис builder предназначен для сборки уведомления из готовых шаблонов, путём замены специальных маркеров на передаваемые данные. Шаблоны email отличаются от версии для sms наличием HTML-верстки, тогда как для sms используется обычный текст, соответственно для разных типов уведомлений используются разные файлы шаблонов, было принято добавлять в конце имени sms шаблона суффикс sms.

Передаваемые параметры сериализуются в тип данных Json, если при десериализация параметров произойдёт ошибка, микросервис вернёт уведомление обратно в очередь scheduler с состоянием “fail”.

При успешной сборке шаблона, он будет передан в очередь scheduler с состоянием “builded”.

Микросервис email-sender предназначен для отправки собранного уведомления электронной почты в smtp-шлюз. В роли шлюза можно использовать SMTP-сервер, бесплатно предоставляемый компанией Яндекс, зарекомендовавший себя как ста- бильный и довольно производительный сервер отправки электронной почты. Микросервис производит соединение с smtp-сервером в зашифрованном TLS-режиме и отправляет в него подготовленное уведомление

Каждое действие микросервиса записывается в лог файл, при ошибках уведомление возвращается в очередь schedulerqueue в состоянии “fail”, при успехе в состоянии “success”.

Микросервис sms-sender предназначен для отправки собранного sms уведомления в http-шлюз. В роли шлюза использован российский сервис отправки смс сообщений SMSRU.

Каждое действие микросервиса записывается в лог файл, при ошибках уведомление возвращается в очередь schedulerqueue в состоянии “fail”, при успешной обработке в состоянии “success”.

При реализации алгоритмов использован компилятор языка go 1.15 с официального сайта проекта Для создания микросервисов системы, реализован способ конфигурирования запускаемых приложений. Для этого разработан пакет с именем config, в котором реализованы функции конфигурирования микросервисов. Для определения и хранения конфигурационных определены переменными окружения, которые хранятся в env-файле. В корне приложения файл с именем «.env» содержит все необходимые параметры: параметры подключения к базе данных, параметры для соединения с брокером rabbitMq, имена очередей, необходимых для работы микросервису, параметры соединения с smtp-сервером, параметры соединения с сервисом отправки sms. На серверах предприятия данный файл наполняется автоматически из хра- нилищ в соответствии с запускаемым окружением.

После реализации исходного кода описанных сервисов выполнена разработка автоматических тестов. Язык Go содержит в себе встроенный пакет и набор утилит для автоматических тестов. Чтобы разработать тест функций программы, необходимо создать файл с именем тестируемого пакета и суффиксом «_test». Код этих файлов не используется при сборке приложения, тесты запускаются по команде go test. Исходный код автоматических тестов позволил выполнить проверку работоспособности приложения.

В работе реализована разработка микросервисов, составляющих распределённую систему отправки уведомлений. Проведён анализ эффективности внедрения результата работы на примере предприятия. Система решает задачи по отправке рассылок уведомлений в виде электронной почты и смс сообщений на предприятии и минимизируют сбои в работе сервисов компании, использующих рассылку уведомлений. Система показала высокую эффективность готова к внедрению на предприятиях различного профиля в качестве средства автоматизации рассылки уведомлений пользователям.

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

  • Фролов Р.Н. Информатизация современного российского общества: социально-экономические и правовые аспекты // Информационные ресурсы России. - 2020. - №4 (176). - С. 26-29.
  • Цебренко К.Н. Распределенная система обмена уведомлениями // Вестник ИМСИТ. - 2021. - №2 (86). - С. 39-42.
  • Саакян Р.Р. Моделирование электронной информационно-образовательной среды образовательной организации// Информационные ресурсы России. - 2019. - № 5. - С. 25-29.
  • Цебренко К.Н. Моделирование подсистемы автоматизации технологических процессов и учета в информационных системах медицинских лабораторий // Вестник ИМСИТ. - 2017. - №3 (71). - С. 31-34.
  • Цебренко К.Н. Гибридное моделирование информационной системы агентства недвижимости // Естественно-гуманитарные исследования. - 2017. - № 17 (3). - С. 28-34.
  • Саакян Р.Р. Проектирование информационной системы мониторинга и распределения заказов курьерской службы на основе машинного обучения // Информационные ресурсы России. - 2020. - №3. - С. 34-38.