Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: Научного журнала «Студенческий» № 4(300)

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

Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4, скачать журнал часть 5, скачать журнал часть 6

Библиографическое описание:
Урванова Е.С. СРАВНИТЕЛЬНЫЙ АНАЛИЗ ВИДОВ АРХИТЕКТУР ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ // Студенческий: электрон. научн. журн. 2025. № 4(300). URL: https://sibac.info/journal/student/300/359879 (дата обращения: 04.03.2025).

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

Урванова Елизавета Сергеевна

студент, программной инженерии кафедры МОСИТ, МИРЭА - Российский технологический университет,

РФ, г. Москва

Петросян Лусинэ Эдуардовна

научный руководитель,

канд. экон. наук, доц., МИРЭА - Российский технологический университет,

РФ, г. Москва

COMPARATIVE ANALYSIS OF TYPES OF SOFTWARE ARCHITECTURES

 

Elizaveta Urvanova

student, Software engineering Department of MOSIT, MIREA - Russian Technological University,

Russia, Moscow

Lusine Petrosyan

scientific supervisor, candidate of Sciences in Economics, MIREA - Russian Technological University,

Russia, Moscow

 

АННОТАЦИЯ

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

ABSTRACT

This article presents a comparative analysis of the main types of software architectures: monolithic, microservice, client-server, and distributed. The key characteristics of each architectural model are considered, the advantages and disadvantages of architectures are highlighted, as well as their applicability in development. The article provides recommendations on the choice of architecture depending on the requirements of the project, its complexity and the expected load.

 

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

Keywords: microservice architecture; client-server architecture; monolithic architecture; distributed architecture.

 

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

Типы архитектурных стилей:

  1. Монолитная архитектура. Монолитная архитектура представляет собой единую систему, где все компоненты тесно связаны друг с другом. Преимущества включают простоту разработки и развертывания, а также высокую производительность из-за отсутствия сетевых задержек, но недостатки — сложность масштабирования и обновления. В монолитной архитектуре все компоненты системы разрабатываются и развертываются как единое целое, что упрощает управление проектом, но затрудняет внесение изменений и масштабирование [1]. Такая архитектура удобна на начальном этапе проекта, чтобы облегчить развертывание и не тратить много сил на управление и структуризацию кода и подойдет для маленьких и средних проектов;
  2. Микросервисная архитектура. Микросервисная архитектура разделяет систему на независимые сервисы, каждый из которых отвечает за определенную функциональность. Преимущества включают легкость масштабирования отдельных сервисов, высокую отказоустойчивость и гибкость в разработке, но недостатки — сложность управления и взаимодействия между сервисами, а также потребуется внедрение DevOps [1]. Такая архитектура подойдет для больших и высоконагруженных проектов, которым нужна гибкость в развертывании и обновлении;
  3. Клиент-серверная архитектура. Клиент-серверная архитектура - это модель, где работа в сети делится между "серверами" (программами-поставщиками услуг) и "клиентами" (программами-потребителями этих услуг). В общем случае, клиент и сервер находятся на разных компьютерах и общаются между собой посредством сетевых протоколов, но они могут быть и на одном устройстве [2]. Клиент-серверная архитектура может быть одно-, двух-, трех- и многоуровневой. Одноуровневая архитектура «клиент-сервер» (1-Tier) – такая, где все прикладные программы рассредоточены по рабочим станциям, которые обращаются к общему серверу баз данных или к общему файловому серверу. Никаких прикладных программ сервер при этом не исполняет, только предоставляет данные [2]. Двухуровневая архитектура приложений (2-Tier) — это что-то вроде обычной двухсторонней беседы: участник А говорит что-то, участник Б отвечает [2]. Трехуровневая архитектура приложений (3-Tier) — это как трехсторонний разговор: участник А говорит что-то, а участник В переводит это участнику С. Здесь сервер разделен на два уровня: один для приложения, другой для хранения данных и базы данных. Все запросы идут через посредника (промежуточное программное обеспечение), который обрабатывает данные и обеспечивает общение между двумя уровнями сервера [2]. Многоуровневая архитектура приложений (N-Tier) - это немного усовершенствованная версия трехуровневой архитектуры. Эта модель предусматривает больше уровней или "слоев" серверов, каждый из которых занимается своими специальными задачами [2]. Преимуществами данной архитектуры являются хорошая масштабируемость со стороны сервера и простота его обновления, а также разграничение ответственности между клиентом и сервером. Из недостатков можно выделить следующие: сервер становится точкой отказа такого ПО, необходима дополнительная защита данных при передаче по сети, ограничение производительности при увеличении числа клиентов. Клиент-серверная архитектура подойдет для веб-приложений и мобильных приложений, а также для корпоративных систем с удаленным доступом;
  4. Распределенная архитектура. Это архитектура, основанная на объединении множества независимых вычислительных узлов для совместной работы над выполнением одной задачи. Узел может быть физическим устройством, программным процессом или сложной вложенной системой [3]. Преимуществами данной архитектуры являются высокая отказоустойчивости и масштабируемость. Из недостатков можно выделить сложность координации между узлами, задержки при взаимодействии между узлами, а также высокие затраты на инфраструктуру. Такая архитектура подойдет для облачных платформ, распределенных баз данных, Big Data проектов и систем обработки событий.

Таким образом, при выборе архитектуры стоит обратить внимания на следующие факторы:

  1. Требования к масштабируемости. Если требуется высокая масштабируемость, лучше выбрать микросервисную или распределенную архитектуру. Если нагрузка не будет высокой, то монолитная или клиент-серверная архитектура;
  2. Сложности разработки и поддержки. Микросервисная архитектура требует высококвалифицированных разработчиков и DevOps-подхода. Монолитная и клиент-серверная проще в разработке;
  3. Бюджет. Монолитная архитектура дешевле на старте, но сложнее в масштабировании, следовательно, затраты на нее будут расти. Микросервисная и распределенная архитектуры с самого начала требуют серьезных вложений. Клиент-серверная же находится где-то посередине.

 

Список литературы:

  1. Архитектура программного обеспечения: основы и примеры [Электронный ресурс]. – URL: https://sky.pro/wiki/profession/arhitektura-programmnogo-obespecheniya-osnovy-i-primery/ (дата обращения 25.01.2025).
  2. Виды архитектуры ПО [Электронный ресурс]. – URL: https://pro-test.studio/post/7?ysclid=m6ciwu5eam897711559 (дата обращения 25.01.2025).
  3. Что такое распределенная система — обзор распределенных систем и микросервисных архитектур [Электронный ресурс]. – URL: https://dzen.ru/a/Z4ZQFgYSLyYMntjP (дата обращения 25.01.2025).

Оставить комментарий