stringtranslate.com

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

Монолитные приложения можно сравнить с монолитами , такими как Улуру , Австралия : большой цельный (моно) камень (лит)

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

Философия дизайна заключается в том, что приложение отвечает не только за определенную задачу, но и может выполнять каждый шаг, необходимый для завершения определенной функции. [5] Некоторые приложения для управления личными финансами являются монолитными в том смысле, что они помогают пользователю выполнять полную задачу от начала до конца и являются частными хранилищами данных , а не частями более крупной системы приложений, которые работают вместе. Некоторые текстовые процессоры являются монолитными приложениями. [6] Эти приложения иногда связаны с мэйнфреймами .

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

Модульность достигается в разной степени различными подходами к модульному программированию . Модульность на основе кода позволяет разработчикам повторно использовать и восстанавливать части приложения, но для выполнения этих функций обслуживания требуются инструменты разработки (например, приложение может потребоваться перекомпилировать). Модульность на основе объектов предоставляет приложение как набор отдельных исполняемых файлов, которые могут независимо поддерживаться и заменяться без повторного развертывания всего приложения (например, библиотека Microsoft Dynamic-link (DLL); общие объектные файлы Sun/UNIX ). [8] Некоторые возможности объектного обмена сообщениями позволяют распределять объектные приложения по нескольким компьютерам (например, модель Microsoft Component Object Model (COM)). Архитектуры, ориентированные на службы, используют определенные стандарты/протоколы связи для связи между модулями. [ необходима цитата ]

В своем первоначальном использовании термин «монолитный» описывал огромные мэйнфреймовые приложения без какой-либо полезной модульности. [9] Это, в сочетании с быстрым ростом вычислительной мощности и, следовательно, быстрым ростом сложности проблем, которые могли быть решены с помощью программного обеспечения, привело к появлению неподдерживаемых систем и « программному кризису ».

Узоры

Вот общие архитектурные шаблоны, используемые для монолитных приложений, каждый из которых имеет свои собственные компромиссы: [3]

Ссылки

  1. ^ Mishra, Mayank; Kunde, Shruti; Nambiar, Manoj (2018). «Cracking the monolith: Challenges in data transitioning to cloud native architectures». Труды 12-й Европейской конференции по архитектуре программного обеспечения: Companion Proceedings . Нью-Йорк, США: Ассоциация вычислительной техники (ACM). стр. 1–4. doi : 10.1145/3241403.3241440. ISBN 9781450364836. S2CID  52295004.
  2. ^ ab Harris, Chandler (2022). «Микросервисы против монолитной архитектуры: когда монолиты становятся слишком большими, возможно, пришло время перейти к микросервисам». atlassian.com .
  3. ^ ab Основы архитектуры программного обеспечения: инженерный подход . O'Reilly Media. 2020. ISBN 978-1492043454.
  4. ^ Эволюционные шаблоны от монолита к микросервисам для преобразования вашего монолита . O'Reilly Media. 2019. ISBN 9781492047810.
  5. ^ Информационные технологические сервисы Монолитное приложение Архивировано 2007-09-02 на Wayback Machine Получено 28 ноября 2019 г.
  6. ^ Microsoft Three-tier Application Получено 3 августа 2007 г.
  7. ^ «Внедрение облака как часть пути цифровой трансформации». kumaran.com . 2 марта 2022 г.
  8. ^ Люткевич, Бен. "динамически подключаемая библиотека (DLL)". techtarget.com .
  9. ^ Рэймонд, Эрик С. (2003). Искусство программирования Unix . Addison-Wesley Professional.