Монолитное приложение

В разработке программного обеспечения монолитное приложение — это единое унифицированное программное приложение , которое является автономным и независимым от других приложений, но обычно не обладает гибкостью. [1] Существуют преимущества и недостатки создания приложений в монолитном стиле программной архитектуры в зависимости от требований. [2] Монолитные приложения относительно просты и имеют низкую стоимость, но их недостатками являются отсутствие гибкости , отказоустойчивости и масштабируемости . [3] Альтернативные стили монолитным приложениям включают многоуровневые архитектуры , распределенные вычисления и микросервисы . [2] Несмотря на свою популярность в последние годы, монолитные приложения по-прежнему являются хорошим выбором для приложений с небольшой командой и небольшой сложностью. Однако, как только он станет слишком сложным, вы можете рассмотреть возможность его рефакторинга в микросервисы или распределенное приложение. Обратите внимание, что монолитное приложение, развернутое на одной машине, может быть достаточно производительным для вашей текущей рабочей нагрузки, но оно менее доступно, менее долговечно, менее изменяемо, менее точно настраиваемо и менее масштабируемо, чем хорошо спроектированная распределенная система . [4]
Философия дизайна заключается в том, что приложение отвечает не только за конкретную задачу, но может выполнять каждый шаг, необходимый для выполнения определенной функции. [5] Некоторые приложения для личных финансов являются монолитными в том смысле, что они помогают пользователю выполнять всю задачу, от начала до конца, и представляют собой частные хранилища данных , а не части более крупной системы приложений, которые работают вместе. Некоторые текстовые процессоры представляют собой монолитные приложения. [6] Эти приложения иногда связаны с мейнфреймами .
В разработке программного обеспечения монолитное приложение описывает программное приложение, спроектированное как единый сервис. [7] В определенных сценариях может оказаться желательным наличие нескольких услуг, поскольку они могут облегчить обслуживание, позволяя ремонтировать или заменять части приложения без необходимости полной замены.
Модульность достигается в различной степени с помощью различных подходов к модульному программированию . Модульность на основе кода позволяет разработчикам повторно использовать и восстанавливать части приложения, но для выполнения этих функций обслуживания требуются инструменты разработки (например, может потребоваться перекомпиляция приложения). Модульность на основе объектов представляет собой набор отдельных исполняемых файлов, которые можно независимо обслуживать и заменять без повторного развертывания всего приложения (например, библиотека динамической компоновки Sun/UNIX ). Microsoft (DLL); общие объектные файлы [8] Некоторые возможности обмена объектными сообщениями позволяют распределять объектно-ориентированные приложения по нескольким компьютерам (например, модель компонентных объектов Microsoft (COM)). Сервис-ориентированные архитектуры используют определенные стандарты/протоколы связи для связи между модулями. [ нужна ссылка ]
В своем первоначальном использовании термин «монолитный» описывал огромные приложения для мэйнфреймов без полезной модульности. [9] Это, в сочетании с быстрым увеличением вычислительной мощности и, следовательно, быстрым увеличением сложности проблем, которые можно было решить с помощью программного обеспечения, привело к необслуживаемости систем и « кризису программного обеспечения ».
Узоры [ править ]
Вот распространенные архитектурные шаблоны, используемые для монолитных приложений, каждый из которых имеет свои компромиссы: [3]
- Многоуровневая архитектура
- Модульный монолит
- Микроядерная архитектура
Ссылки [ править ]
- ^ Мишра, Маянк; Кунде, Шрути; Намбияр, Манодж (2018). «Взлом монолита: проблемы при переходе данных на облачную архитектуру». Материалы 12-й Европейской конференции по архитектуре программного обеспечения: сопутствующие материалы . Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники (ACM). стр. 1–4. дои : 10.1145/3241403.3241440 . ISBN 9781450364836 . S2CID 52295004 .
- ^ Jump up to: Перейти обратно: а б Харрис, Чендлер (2022). «Микросервисы против монолитной архитектуры: когда монолиты становятся слишком большими, возможно, пришло время перейти на микросервисы» . atlassian.com .
- ^ Jump up to: Перейти обратно: а б Основы архитектуры программного обеспечения: инженерный подход . О'Рейли Медиа. 2020. ISBN 978-1492043454 .
- ^ От монолита к микросервисам. Эволюционные закономерности для преобразования вашего монолита . О'Рейли Медиа. 2019. ISBN 9781492047810 .
- ^ Information Technology Services. Монолитное приложение Архивировано 2 сентября 2007 г. на Wayback Machine. Проверено 28 ноября 2019 г.
- ^ Microsoft Трехуровневое приложение , получено 3 августа 2007 г.
- ^ «Внедрение облачных технологий как часть пути цифровой трансформации» . kumaran.com . 2 марта 2022 г.
- ^ Луткевич, Бен. «динамически подключаемая библиотека (DLL)» . techtarget.com .
- ^ Раймонд, Эрик С. (2003). Искусство программирования для Unix . Аддисон-Уэсли Профессионал.