АНАЛИЗ МЕТОДОВ ОПРЕДЕЛЕНИЯ ЭФФЕКТИВНОЙ АРХИТЕКТУРЫ ПРОГРАММНЫХ СИСТЕМ

Авторы: Шуватова Е.А., Мартыненко Т.В.
Донецкий национальный технический университет, кафедра автоматизированных систем управления
E-mail: mauritia88@gmail.com

Аннотация

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

Abstract

Shuvatova E.A., Martynenko T.V. Analysis of determining the effective architecture of software systems. With the increasing complexity and requirements for software, there is a need to develop effective architectures of software systems that can adapt to changing conditions and ensure high performance, reliability and security. The article is aimed at analyzing the key problems associated with the definition of an effective architecture for software systems (SS). The main criteria for evaluating the effectiveness of the SS architecture are identified. The analysis of research on modern architectures and methods of their optimization is provided. The author has drawn conclusion about the use of genetic algorithms to optimize SS architecture.

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

архитектура программных систем, эффективность, композиция сервисов, микросервис, методы оптимизации.

Keywords

architecture of software systems, efficiency, composition of services, microservice, optimization methods.

Введение

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

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

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

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

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

Общая постановка проблемы

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

Анализ литературных источников и примеров реализации ПС показал основные критерии, которые позволяют оценить эффективность их архитектуры [2]:

  1. Функциональность – критерий, описывающий способность архитектуры решать задачи, которые должна выполнять ПС.
  2. Надежность – критерий, определяющий, насколько архитектура обеспечивает стабильную работу программной системы, отказоустойчивость и защиту от ошибок.
  3. Эффективность – критерий, описывающий способность архитектуры обеспечивать высокую производительность программы и оптимальное использование ресурсов.
  4. Масштабируемость – критерий, связанный с возможностью архитектуры управлять большими объемами данных и обеспечивать работу при высокой нагрузке.
  5. Удобство сопровождения и расширения – критерий, который позволяет оценить, насколько легко можно сопровождать и расширять программу, основанную на данной архитектуре.
  6. Совместимость – критерий, определяющий, насколько архитектура совместима с другими системами и технологиями.
  7. Безопасность – критерий, связанный с защитой данных и обеспечением безопасности работы программы.

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

Аналитический обзор архитектур программных систем

К наиболее популярным архитектурам программных систем относятся: монолитная, сервис-ориентированная, микросервисная.

Монолитная архитектура

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

Сервис-ориентированная архитектура

Сервис-ориентированная архитектура – подход к построению программных систем, в котором функциональность приложения разбивается на независимые компоненты или сервисы, каждый из которых предоставляет определенный функционал. Эти сервисы могут взаимодействовать между собой через стандартизированные протоколы, такие как HTTP или SOAP. Сервис-ориентированная архитектура позволяет достичь лучшей гибкости и масштабируемости системы, но может быть сложной в управлении из-за необходимости координации между сервисами.

Микросервисная архитектура

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

Рисунок 2 – Этапы подготовки изображения

Рис. 1 – Монолитная и микросервисная архитектуры

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

Рисунок 2 – Этапы подготовки изображения

Рис. 2 – Зависимость количества работ по архитектурам ПС

Анализ современных работ, посвященных различным архитектурам программных систем, дает представление о том, какие архитектуры наиболее популярны и активно исследуются в научном сообществе. Исследование проводилось на основе базы научных работ Elibrary.ru и Google Scholar. Таким образом, наблюдаемый на рис. 2 эффект соответствует тенденции увеличения популярности типов архитектуры сервисов.

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

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

  1. Распределение сервисов – отвечает за определение, какие компоненты должны быть размещены на отдельных серверах;
  2. Композиция сервисов – отвечает за выбор конкретных экземпляров компонентов, которые будут выполнять определенные шаги бизнес-процессов;
  3. Планирование сервисов – определяет порядок выполнения задач сервисов в очереди компонентов.
Рис. 3 – Диаграмма развертывания UML с примером распределения
        компонентов по серверам

Рис. 3 – Диаграмма развертывания UML с примером распределения компонентов по серверам

На рис. 3 показана диаграмма развертывания UML с примером распределения компонентов по серверам, где компонент Компонент 2 был развернут на обоих серверах. Компонент, развернутый на сервере, является поставщиком сервиса. Таким образом, один поставщик для Сервис 2 – это Компонент 2, развернутый на Сервер 1, а другой – Компонент 2, развернутый на Сервер 2. При этом под компонентом понимается программное обеспечение, способное выполнять функции сервисов. Компонент может обеспечивать один или несколько сервисов. Примером компонента может быть контейнер Docker с программой на Java, реализующей сервисы REST. Сервис – это предоставляемая функциональность, к которой можно получить доступ удаленно, обычно через WWW. Сервисы обычно реализуются с использованием простого протокола доступа к объектам (SOAP) или REST. Сервис также называется веб-сервисом.

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

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

Рис. 4 – Количество статей, использующих выбранные алгоритмы на этапе
        композиции сервисов

Рис. 4 – Количество статей, использующих выбранные алгоритмы на этапе композиции сервисов

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

Генетические алгоритмы в оптимизации архитектур ПС

Генетические алгоритмы являются видом метаэвристического алгоритма основными элементами которого являются: представление хромосомы, фитнесс-функция и набор проблемно-ориентированных операторов.

Таблица 1 – Операторы, используемые генетическими алгоритмами

Категория оператора Операторы
Кодирование Бинарный, Восьмеричный, Шестнадцатеричный, Значение, Перестановка, Дерево
Отбор Рулетка, Ранг, Турнир, Больцмана, Статистический универсальный выбор
Кроссинговер (скрещивание) Одногочечный, К-точечный, Равномерный, Частично сопоставленный, Порядок, Перемешивание, Цикл, Сокращенный заменитель, Сохранение предшествования
Мутация Перемещение, Инверсия, Перемешивание, Обращение, Инверсия битов

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

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

Выводы

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

Литература

  1. Górski T., A. P. WOźniak, "Optimization of Business Process Execution in Services Architecture: A Systematic Literature Review," // IEEE Access, vol. 9, pp. 111833-111852, 2021, doi: 10.1109/ACCESS.2021.3102668.
  2. Мариничев, И. И. Проблема выбора архитектуры для платформы дистанционного обучения / И. И. Мариничев, Е. А. Шуватова, С. Ю. Землянская // Информатика, управляющие системы, математическое и компьютерное моделирование (ИУСМКМ-2023) : Материалы XIV Международной научно-технической конференции в рамках IX Международного Научного форума Донецкой Народной Республики, Донецк, 24–25 мая 2023 года. – Донецк: Донецкий национальный технический университет, 2023. – С. 249-253. – EDN OSXIBS.
  3. Фаулер, М. Архитектура корпоративных программных приложений. / Мартин Фаулер // Архитектура корпоративных программных приложений.: Пер. с англ. — М.: Издательский дом "Вильямс", 2006. — 544 с.