Важность соблюдения паттернов микросервисной разработки | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 28 декабря, печатный экземпляр отправим 1 января.

Опубликовать статью в журнале

Авторы: ,

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №43 (333) октябрь 2020 г.

Дата публикации: 21.10.2020

Статья просмотрена: 257 раз

Библиографическое описание:

Штефуряк, А. С. Важность соблюдения паттернов микросервисной разработки / А. С. Штефуряк, Т. С. Яницкая. — Текст : непосредственный // Молодой ученый. — 2020. — № 43 (333). — С. 15-17. — URL: https://moluch.ru/archive/333/74357/ (дата обращения: 18.12.2024).



В данной статье приводится обоснование важности соблюдения паттернов микросервисной разработки.

Ключевые слова: микросервисная архитектура, паттерн, программный продукт.

Микросервисная архитектура, фактически, является подвидом сервис-ориентированной архитектуры программных продуктов. Под микросервисами стоит понимать слабо связанные и легко изменяемые модули, размер которых стремится к минимуму [1]. Программный продукт на базе микросервисной архитектуры отличается особой простотой добавления нового и изменения существующего функционала именно благодаря повышенной гранулярности, что и отличает его от классических монолитных программных продуктов. Особенно ценным это свойство стало за последние десять лет — во времена практически повсеместного применения DevOps и agile-методик разработки. Обычно микросервисы размещаются в средах управления контейнерами, например, в чистом Kubernetes или его надстройке OpenShift [2]. Полезной практикой считается включение контейнерной среды в процессы непрерывной интеграции — это обеспечивает автоматизацию развёртывания микросервисов и их быстрое обновление. Однако, для извлечения всех преимуществ микросервисной архитектуры, необходимо придерживаться определённых правил — паттернов проектирования микросервисных программных продуктов.

Суть применения паттерна API Gateway заключается в создании единой точки входа для запросов от внешних систем или пользователей. Для реализации данного паттерна создаётся отдельный микросервис-шлюз, выполняющий функции маршрутизации внешних запросов и аутентификации (в некоторых случаях) [3].

Таким образом, микросервис-шлюз остаётся единственным сервисом, доступным к коммуникации извне программного продукта, что способствует не только упрощению дальнейшей поддержки и документирования, но и повышению уровня безопасности программного продукта. На рис. 1 представлена наглядная иллюстрация организации связи микросервисов и внешних систем с учётом применения паттерна API Gateway. Важно отметить, что стоит избегать выполнения любой бизнес-логики микросервисом-шлюзом, так как его основная цель — передача данных целевым микросервисам. В некоторых случаях возможно использование более одного микросервиса-шлюза, когда программный продукт имеет несколько вариантов взаимодействия с пользователем. Применение паттерна API Gateway имеет смысл в любом программном продукте с микросервисной архитектурой ввиду того, что каждый микросервис выполняет свою отдельную функцию, подобно модулям монолитного продукта, а внешняя система или пользователь должны иметь единую точку входа для выполнения всех видов запросов к программному продукту.

Схематическое отображение концепции паттерна API Gateway

Рис. 1. Схематическое отображение концепции паттерна API Gateway

Позитивные эффекты использования паттерна API Gateway:

− упрощение способа коммуникации пользователей и внешних систем с программным продуктом;

− предоставление оптимальных точек входа для всех вариантов взаимодействия с программным продуктом;

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

Негативные побочные эффекты применения паттерна API Gateway:

− повышается сложность программного продукта: микросервис-шлюз нужно так же разрабатывать, поддерживать и разворачивать, как и остальные микросервисы;

− повышается время ожидания ответа от программного продукта: все запросы производятся через микросервис-шлюз, который тратит время на их обработку.

Использование паттерна Database per service означает, что каждый микросервис в программном продукте имеет свою собственную базу данных. Чтобы одному микросервису получить данные другого микросервиса, нужно произвести обращение именно к нему, а не к его базе данных напрямую [3]. При реализации данного паттерна появляется возможность использовать подходящие типы баз данных для всех типов задач в рамках одного программного продукта.

Преимущества использования паттерна Database per service:

− уменьшение связанности между микросервисами: изменения в базе данных одного микросервиса не влияют на остальные микросервисы;

− каждый микросервис может использовать наиболее подходящий для его функционала тип базы данных.

Среди негативных эффектов реализации данного паттерна: усложнение процессов управления ввиду наличия нескольких типов баз данных.

В подавляющем большинстве случаев внешний запрос обрабатывается в программном продукте более чем одним микросервисом, что вносит определённые сложности в процесс отладки программного продукта. Соблюдение паттерна Distributed tracing позволяет облегчить отслеживание хода выполнения внешних запросов внутри программного продукта [3]. Становится возможным узнать, когда какой запрос и каким микросервисом был обработан благодаря обогащению логов микросервисов трассирующими данными. Наглядная иллюстрация работы данного паттерна представлена на рис. 2.

Схематическое отображение концепции паттерна Distributed tracing

Рис. 2. Схематическое отображение концепции паттерна Distributed tracing

Соблюдение паттерна Distributed tracing имеет следующие преимущества:

− становится проще понять поведение программного продукта при возможных девиациях;

− упрощается процесс поиска источников задержек в сложных программных продуктах.

Однако, стоит учитывать, что реализация паттерна Distributed tracing влечёт за собой расширение технологического стека программного продукта, так как для обогащения, сбора и анализа логов микросервисов требуется использование сторонних технических решений.

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

Литература:

  1. Ньюмен С. Создание микросервисов — СПб.: Питер, 2016.
  2. Маркелов А. А. Введение в технологии контейнеров и Kubernetes — М.: ДМК Пресс, 2019.
  3. Ричардсон К. Микросервисы. Паттерны разработки и рефакторинга — СПб.: Питер, 2019.
Основные термины (генерируются автоматически): программный продукт, API, микросервисная архитектура, микросервис, баз данных, вариант взаимодействия, микросервисная разработка, схематическое отображение концепции.


Похожие статьи

Грамотный выбор стратегии развёртывания микросервисного программного продукта

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

Необходимость количественной оценки удобства использования интерфейсов

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

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

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

Востребованные технологии для разработки микросервисов

В данной статье производится обзор и анализ сочетания наиболее востребованных технологий, применяемых в разработке программных продуктов с микросервисной архитектурой.

Особенности кроссбраузерного/кроссплатформенного тестирования

В статье рассматривается отличительные особенности кроссбраузерного тестирования и их автоматизация.

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

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

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

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

Улучшение производительности разрабатываемого приложения

При разработке программного продукта особенно важно обеспечить достаточный уровень производительности. В данной статье рассматриваются критерии и методы улучшения производительности.

Информационная безопасность автоматизированных систем управления

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

Автоматизация кроссбраузерного тестирования

В статье рассматриваются особенности предлагаемого подхода в процессе автоматизированного кроссбраузерного тестирования web-приложений.

Похожие статьи

Грамотный выбор стратегии развёртывания микросервисного программного продукта

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

Необходимость количественной оценки удобства использования интерфейсов

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

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

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

Востребованные технологии для разработки микросервисов

В данной статье производится обзор и анализ сочетания наиболее востребованных технологий, применяемых в разработке программных продуктов с микросервисной архитектурой.

Особенности кроссбраузерного/кроссплатформенного тестирования

В статье рассматривается отличительные особенности кроссбраузерного тестирования и их автоматизация.

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

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

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

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

Улучшение производительности разрабатываемого приложения

При разработке программного продукта особенно важно обеспечить достаточный уровень производительности. В данной статье рассматриваются критерии и методы улучшения производительности.

Информационная безопасность автоматизированных систем управления

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

Автоматизация кроссбраузерного тестирования

В статье рассматриваются особенности предлагаемого подхода в процессе автоматизированного кроссбраузерного тестирования web-приложений.

Задать вопрос