Статья:

Сравнительная характеристика service mesh и middleware подходов в организации взаимодействия в распределенных информационных системах

Журнал: Научный журнал «Студенческий форум» выпуск №6(142)

Рубрика: Технические науки

Выходные данные
Егоров Н.С. Сравнительная характеристика service mesh и middleware подходов в организации взаимодействия в распределенных информационных системах // Студенческий форум: электрон. научн. журн. 2021. № 6(142). URL: https://nauchforum.ru/journal/stud/142/87141 (дата обращения: 23.04.2024).
Журнал опубликован
Мне нравится
на печатьскачать .pdfподелиться

Сравнительная характеристика service mesh и middleware подходов в организации взаимодействия в распределенных информационных системах

Егоров Николай Сергеевич
студент, Казанский национальный исследовательский технологический университет, РФ, г. Казань

 

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

 

Ключевые слова: распределенный информационные системы, service mesh, middleware, ПО промежуточного слоя.

 

Распределенная информационная система в узком смысле - совокупность программных компонент, взаимодействующих друг с другом. С увеличением размера информационных систем вопрос организации взаимодействия между компонентами системы становится более актуальным. С появлением таких концепций как «Интернет вещей» и всеобщим увеличением количества устройств в сети важным становится простота организации работы территориально распределенных систем, включающих в себя эти устройства. В контексте данного исследования будут рассмотрены два доминирующих подхода в организации межсервисного взаимодействия и будет проведен их сравнительный анализ. Целью данного исследования является определение наиболее подходящего подхода для организации работы территориально распределенной системы с большим количеством взаимодействующих компонентов.

Middleware applications- связующее программное обеспечение, или же программное обеспечение промежуточного слоя – ПО выступающее посредником между приложениями, базами данных и операционной системой. По общепринятой классификации выделяют следующие типы программного обеспечения промежуточного слоя:

  • Промежуточное программное обеспечение, ориентированное на обработку сообщений.  Основная задача – асинхронная обработка сообщений между компонентами распределенной системы. Возможны реализации запрос-ответ, публикация подписка.
  • Интеллектуальное промежуточное программное обеспечение – ПО ориентированное на сбор сигналов в информационной системе в реальном времени, преобразование этих сигналов в полезные для конечного пользователя знания, предоставление пользователями доступ к этим знаниям.
  • Контентно-ориентированное промежуточное программное обеспечение - программное обеспечение, предоставляющее пользователям возможность получить необходимые данные, не беспокоясь о том, где и как эти данные получить. Идея данного типа ПО – предоставление унифицированного интерфейса для получения разнородных данных.

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

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

Использование Middleware слоя в распределённых системах – подход, суть которого состоит в использовании специального инфраструктурного слоя, располагающегося между платформами (совокупность физического устройства и операционной системы) и приложениями. Все взаимодействия между компонентами системы происходят через middleware. Слой выступает своеобразным прокси-сервисом, который принимает и отдает информацию.  На рисунке 1 изображена типовая архитектура системы, использующей middleware слой.

 

Рисунок 1. Middleware слой в распределенных системах

 

Все приложения используют общий интерфейс. Middleware обеспечивает не только взаимодействие разных частей одного приложения, но и предоставляет механизм для коммуникации разных приложений. Слой полностью скрывает разницу в программном и аппаратном обеспечении узлов системы. Middleware для распределенных систем – это тот же самое, что операционная система для компьютера. Он позволяет использовать и развертывать общие ресурсы в пределах сети. Функции выполняемые middleware слоем:

  • Коммуникация – middleware за счет контентно-ориентированного промежуточного ПО предоставляет интерфейс для получения необходимых ресурсов.
  • Поддержка транзакций – при использовании распределённых в сети ресурсов необходимо обеспечить неделимость всех операций над ними. С помощью мониторов транзакций middleware слой управляет распределенными транзакциями.
  • Композиция сервисов – при разработке новых приложений бывает удобно объединить данные из разных источников. Middleware слой объединяет данные из нескольких источников, предоставляя унифицированный интерфейс для их получения.
  • Отказоустойчивость – механизмы, обеспечивающие гарантированную доставку данных, гарантированное выполнение операций обычно реализуются как часть middleware слоя.

Более новый подход в организации взаимодействий в распределённых системах получил название Service Mesh – дословно сеть из сервисов.  Service mesh – это программная сеть определенная на седьмом уровне модели OSI, управляющая взаимодействием компонентов системы.  Типовая схема service mesh механизма представлена на рисунке 2.

 

Рисунок. 2. Схема Service Mesh

 

Service mesh система состоит из двух уровней – уровень данных и уровень управления. Уровень данных содержит внутри себя все компоненты системы. Рядом с каждым из компонентов располагается так называемое sidecar-прокси, через которое и осуществляется взаимодействие сервисов.  Уровень управления содержит в себе компоненты, позволяющие управлять прокси сервисами.  Sidecar прокси, по сути своей – это контейнер, включающий в себя приложения промежуточного слоя, обеспечивающие механизмы: коммуникации, безопасности и надежности.  Все приложения внутри service mesh способны взаимодействовать друг с другом. Большинство service mesh систем предоставляют следующий функционал:

  • Service discovery – механизм поиска сервисов в сети. В простейшем случае — это DNS-сервер, предоставляющий экземплярам приложений адрес сервиса, с котором необходимо связаться.
  • Механизмы аутентификации и авторизации.
  • Механизмы шифрования.
  • Механизмы для балансировки нагрузки.
  • Механизм отслеживания. Позволяет контролировать компоненты системы. Данные о состоянии узлов передается от прокси в уровень управления.
  • Предоставляют механизмы гарантированной передачи запросов (Промежуточное ПО, ориентированное на обработку сообщений).
  • Предоставляют унифицированный интерфейс для получения данных (Контентно-ориентированное промежуточное программное обеспечение)

Оба подхода преследуют похожие цели, их различие определяется в первую очередь разницей в композиции системы. Использование middleware слоя или же service mish позволяет достичь:

  • Облегчения управление ресурсами – подходы значительно облегчают управление распределенными ресурсами, обеспечивают их консистентность и доступность.
  • Прозрачности взаимодействий – подходы позволяют сокрыть от пользователей системы и приложений внутреннюю структуру системы. Пользователю неизвестно где конкретно расположены данные. Данные могут быть перемещены без вреда для пользователей. Подходы позволяют централизованно управлять механизмами аутентификации и авторизации.
  • Открытости –системы, использующие данные подходы открыты для новых взаимодействий. Новое приложение, может быть, интегрированно в систему с меньшими затратами за счет наличия унифицированного интерфейса.
  • Расширяемости – подходы упрощают территориальное расширение системы. Упрощается добавление новых приложений и ресурсов.

Service mesh подход, зародившийся в облачных системах, где доминирует микросервисная архитектура, ориентирован в первую очередь на обеспечение связи между узлами системы напрямую, при использование middleware подхода данная связь невозможна, что обуславливает следующие недостатки middleware подхода:

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

В то же время middleware слой может быть объединен в единый пакет, что облегчает развертывание, в то время как в service mesh каждый узел системы требуется развертывать отдельно. Service mesh подход можно использовать вне облачной инфраструктуры, но из-за ориентации существующих подход на облачные решения, подход демонстрирует незрелость инструментов при использовании в территориально-распределенных системах.  Service mesh демонстрирует высокую эффективность при использовании в облачной инфраструктуре с микросерсивной архитектурой системы, middleware в территориально-распределенных системах с монолитными приложениями.

 

Список литературы: 
1. Воройский Ф. Информатика. Новый систематизированный толковый словарь. Litres, 2018.
2. Flo Adam “Does the Service Mesh spell the end for Middleware?”. [Электронный ресурс]. Режим доступа: https://www.cloudops.com/blog/does-the-service-mesh-spell-the-end-for-middleware/, свободный/ (дата обращения: 08.02.2021). 
3. Josh Fruhlinger “What is a service mesh? Easier container networking”. [Электронный ресурс]. Режим доступа: https://www.infoworld.com/article/3402260/what-is-a-service-mesh-easier-container-networking.html, свободный/ (дата обращения: 08.02.2021).
4. Maarten van Steen, Andrew S. Tanenbaum. “A brief introduction to distributed systems”. Computing 98, 967–1009 (2016).