Термин · Глоссарий B2B-ПО

Монолит

Монолитная архитектура – традиционный подход к разработке приложений, при котором все компоненты системы (UI, бизнес-логика, доступ к данным) объединены в единый исполняемый артефакт, развёртываемый и масштабируемый как единое целое.

Буква «М» В категориях: 4 Платформ: 6+

Введение

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

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

История и контекст

Монолитные приложения – исторически первая форма программных систем. До появления HTTP-микросервисов, Docker и Kubernetes большинство enterprise-систем строились именно как монолиты: ERP-системы, CRM, финансовые платформы. Понятие «монолит» как антипаттерн сформировалось в 2010-е годы на волне популяризации микросервисов, хотя такие компании, как Basecamp и Stack Overflow, успешно используют монолиты под высокой нагрузкой по сей день.

Мартин Фаулер ввёл понятие «Majestic Monolith» для обозначения хорошо структурированного монолита с чёткими внутренними модулями – как альтернативу хаотичному «big ball of mud».

Как это работает

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

  • Presentation layer – контроллеры и шаблоны UI;
  • Business logic layer – сервисы и доменная логика;
  • Data access layer – репозитории, ORM, одна общая БД.

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

Модульный монолит

Современный подход – модульный монолит: приложение разбито на чёткие модули с инкапсулированными зависимостями, каждый из которых теоретически может стать микросервисом. Это сохраняет простоту монолита и обеспечивает переход к микросервисам без рефакторинга всего кода сразу.

Где применяется

  • Стартапы и MVP – скорость разработки важнее масштабируемости;
  • Внутренние бизнес-инструменты с небольшой командой;
  • Приложения с предсказуемой нагрузкой без пиковых всплесков;
  • Российские enterprise-системы: 1С-конфигурации, ERP-решения;
  • Команды без зрелой DevOps-культуры, где операционная сложность микросервисов неоправдана.

Преимущества и ограничения

Преимущества: простота разработки и отладки (один процесс), нет сетевых задержек между компонентами, простое развёртывание, меньше инфраструктурных зависимостей, проще транзакционность (одна БД).

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

Связь с другими понятиями

Монолит противопоставляется микросервисам – декомпозиция монолита по Bounded Context из Domain-Driven Design – самый распространённый путь миграции. Event-driven Architecture и CQRS могут применяться и внутри монолита. Практика «Strangler Fig Pattern» позволяет постепенно выносить части монолита в отдельные сервисы. Техдолг особенно опасен в монолитах из-за высокой связанности кода.

Понятия из глоссария Цифрового маркетплейса, которые часто встречаются вместе с термином «Монолит».

Платформы класса «Монолит»

Решения из каталога Цифрового маркетплейса, относящиеся к этому классу ПО. Карточки ведут на полные карточки платформ с тарифами, обзорами и кейсами внедрения.

Онколинк

Онколинк

Разработка ПО
Платформа для управления онкологическими пациентами и координации медицинского обслуживания. Входит в Единый р...
Цена по запросу
Подробнее →
MO

Moon

Разработка ПО
Moon - platforma avtomatizirovannogo testirovaniya veb-prilozheniy v nastol'nykh i mobil'nykh brauzerakh po pr...
Цена по запросу
★ 4.2
Подробнее →
Модуль обмена C3D Converter

Модуль обмена C3D Converter

Разработка ПО
Модуль обмена C3D Converter отвечает за чтение и запись 3D-моделей в файлах нейтральных форматов и в собственн...
Цена по запросу
Подробнее →
JaCarta АРМ УЦ

JaCarta АРМ УЦ

Разработка ПО
ПО JaCarta АРМ УЦ - приложение, позволяющее генерировать ключевые пары с использованием встроенных криптографи...
Цена по запросу
★ 4.7
Подробнее →
АВ

Автограмма

Разработка ПО
Автограмма — визуальная среда разработки встраиваемых систем управления (No-Code/IDE) для промышленной автомат...
Цена по запросу
Подробнее →

Категории каталога

Разделы каталога Цифрового маркетплейса, в которые входят решения, использующие «Монолит».

Где применяется

Отрасли, в которых «Монолит» используется на практике. Откройте отраслевой раздел Цифрового маркетплейса, чтобы увидеть подходящие решения, кейсы и новости.

Частые вопросы про Монолит

Чем монолит хуже микросервисов?

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

Что такое модульный монолит?

Монолит с чёткими внутренними границами между модулями – каждый модуль инкапсулирует свои данные и логику. Это промежуточный шаг перед микросервисами.

Как мигрировать с монолита на микросервисы?

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

Можно ли масштабировать монолит горизонтально?

Да – запускать несколько идентичных экземпляров за балансировщиком. Но при этом масштабируется всё приложение, а не только узкое место, что менее эффективно.

Монолит и 1С – это связано?

Конфигурации 1С:Предприятие – типичный пример монолитной архитектуры с единой платформой и базой данных. Интеграция с внешними системами происходит через API и обмены данными, а не через сервисную декомпозицию.