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

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

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

Авторы: ,

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

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

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

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

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

Штефуряк, А. С. Грамотный выбор стратегии развёртывания микросервисного программного продукта / А. С. Штефуряк, Т. С. Яницкая. — Текст : непосредственный // Молодой ученый. — 2020. — № 43 (333). — С. 19-21. — URL: https://moluch.ru/archive/333/74359/ (дата обращения: 16.11.2024).



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

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

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

− выбранная среда развёртывания;

− допустимое время простоя;

− стабильность новых версий;

− доступность предыдущих версий;

− необходимые вычислительные ресурсы.

Обращаясь к первому упомянутому фактору, возьмём за условие, что контейнерной платформой для продукта является OpenShift (надстройка над Kubernetes). В связи с этим становится необходимым исследование возможностей OpenShift, а именно — встроенных стратегий развёртывания. OpenShift предлагает два варианта стратегий развёртывания микросервисов в своём контейнером окружении: Rolling и Recreate [2].

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

Стратегия Recreate отличается от Rolling стратегии тем, что OpenShift сначала прекращает работу микросервиса старой версии и только после этого разворачивает микросервис новой версии. Учитывая это отличие, становится очевидно, что при использовании стратегии Recreate программный продукт подвергается значительному риску простоев.

Так как следующий фактор выбора стратегии развёртывания — допустимое время простоя — является не менее приоритетным для любого серьёзного программного продукта, следует ознакомиться и с альтернативными стратегиями развёртывания, обеспечивающими нулевое время простоя, не представленными в составе инструментария OpenShift.

Стратегия канареечного развёртывания, в отличии от Recreate, имеет значимую общую черту с Rolling стратегией: микросервисы новой версии проходят проверку работоспособности перед прекращением работы микросервисов предыдущей версии [3]. Однако, в случае канареечного развёртывания микросервисы новой версии проверяются с помощью перенаправления на них небольшого числа реальных запросов, в то время как остальная часть запросов всё ещё продолжает обрабатываться микросервисами старой версии. В том случае, если микросервисы новой версии корректно обрабатывают адресованные им запросы, процесс канареечного развёртывания считается успешно завершённым. Весь объём запросов направляется на микросервисы новой версии, а микросервисы старой версии прекращают работу. В ином случае микросервисы старой версии продолжают обрабатывать поступающие запросы в полном объёме. Как и стратегия Rolling, канареечное развёртывание обеспечивает нулевое время простоя программного продукта за счёт увеличенной потребности в ресурсах: при исполнении данной стратегии в контейнерном окружении также одномоментно развёрнуты и старая, и новая версии программного продукта. Стоит добавить, что стратегия канареечного развёртывания доступна для применения только в программных продуктах, для которых стабильность не является приоритетом — для микросервисов таких программных продуктов допустимо проводить обкатку непосредственно в рабочем окружении с обработкой реальных запросов. То есть в таких программных продуктах допускаются определённые объёмы некорректно обработанных запросов.

Ещё одной стратегией, обеспечивающей нулевое время простоя при развёртывании новой версии программного продукта, является стратегия сине-зелёного развёртывания. Оригинальное название обусловлено тем, что в контексте данной стратегии микросервисы старой версии называют синими, а микросервисы новой версии — зелёными [3]. Частично эта стратегия похожа на Rolling и канареечное развёртывание: микросервисы предыдущей версии прекращают работу только в случае успешного развёртывания микросервисов новой версии. Следовательно, осуществление сине-зелёного развёртывания также требует вдвое больше ресурсов. Однако, данная стратегия обладает важной особенностью: запросы начинают поступать на обработку микросервисам новой версии только в тот момент, когда все разворачиваемые микросервисы новой версии прошли проверку доступности. Более того, стратегия сине-зелёного развёртывания не подразумевает вывода из эксплуатации микросервисов предыдущей версии после развёртывания микросервисов новой версии. Данная отличительная черта выделяет эту стратегию среди остальных — её можно применять в программных продуктах, для которых важна не только бесшовная доставка новой версии, но и доступность предыдущей версии на случай внештатных ситуаций.

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

Литература:

  1. Эберхард В. Continuous delivery. Практика непрерывных апдейтов — СПб.: Питер, 2018.
  2. Маркелов А. А. Введение в технологии контейнеров и Kubernetes — М.: ДМК Пресс, 2019.
  3. Хамбл Д., Фарли Д. Непрерывное развертывание ПО. Автоматизация процессов сборки, тестирования и внедрения новых версий программ — М.: Вильямс, 2016.
Основные термины (генерируются автоматически): микросервис новой, программный продукт, предыдущая версия, версия, стратегия, старая версия, канареечное развертывание, нулевое время простоя, запрос, сине-зеленое развертывание.


Ключевые слова

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

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

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

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

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

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

Эволюция архитектурных стилей при разработке информационных систем: от монолитных приложений к микросервисной архитектуре

Архитектура приложения является краеугольным камнем в разработке программного обеспечения (далее ПО), определяя структуру того, как его основные компоненты взаимодействуют друг с другом. Существуют различные подходы к проектированию архитектуры прило...

Выбор языка программирования для разработки серверной части веб-приложения

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

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

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

Оптимизация программного кода на основе конечных автоматов

В статье рассматриваются основные принципы применения конечных автоматов для автоматизированного поиска возможных вариантов оптимизации программного кода.

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

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

Сравнительный анализ моделей жизненного цикла программного обеспечения

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

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

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

Анализ эффективности разработки программных продуктов

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

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

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

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

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

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

Эволюция архитектурных стилей при разработке информационных систем: от монолитных приложений к микросервисной архитектуре

Архитектура приложения является краеугольным камнем в разработке программного обеспечения (далее ПО), определяя структуру того, как его основные компоненты взаимодействуют друг с другом. Существуют различные подходы к проектированию архитектуры прило...

Выбор языка программирования для разработки серверной части веб-приложения

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

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

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

Оптимизация программного кода на основе конечных автоматов

В статье рассматриваются основные принципы применения конечных автоматов для автоматизированного поиска возможных вариантов оптимизации программного кода.

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

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

Сравнительный анализ моделей жизненного цикла программного обеспечения

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

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

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

Анализ эффективности разработки программных продуктов

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

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