junior
Что такое монолитная архитектура, каковы её плюсы и минусы
Монолитная архитектура — это архитектурный стиль, при котором всё приложение разрабатывается, развёртывается и масштабируется как единое целое. Весь код находится в одном развёртываемом артефакте (например, один WAR/JAR-файл).
Схема монолита
Пример
┌─────────────────────────────────────────┐
│ Монолит (WAR/JAR) │
│ ┌──────────┐ ┌──────────┐ ┌────────┐ │
│ │ UI │ │ Бизнес- │ │ Доступ │ │
│ │ слой │ │ логика │ │ к БД │ │
│ └──────────┘ └──────────┘ └────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌────────┐ │
│ │ Модуль │ │ Модуль │ │ Модуль │ │
│ │ платежей │ │ клиентов │ │ отчётов│ │
│ └──────────┘ └──────────┘ └────────┘ │
└─────────────────────────────────────────┘
│
┌─────┴─────┐
│ БД │
└───────────┘
Плюсы
- Простота разработки — единая кодовая база, один процесс сборки.
- Простота развёртывания — один артефакт для деплоя.
- Простота отладки — можно пройти весь поток выполнения в одном процессе.
- Нет накладных расходов на сетевое взаимодействие — все вызовы локальные (in-process).
- Транзакционная целостность — легко обеспечить ACID в рамках одной БД.
- Низкий порог входа — не нужна экспертиза в распределённых системах.
Минусы
- Сложность масштабирования — нельзя масштабировать отдельный модуль, только всё приложение целиком.
- Долгий цикл развёртывания — изменение одной строки требует пересборки и передеплоя всего приложения.
- Связанность (coupling) — изменения в одном модуле могут сломать другой.
- Технологическая привязка — весь код использует один стек технологий.
- Сложность для больших команд — конфликты при слиянии кода, сложная координация.
- Рост кодовой базы — со временем становится трудно понять и поддерживать.
Когда монолит оправдан
- На старте проекта, когда границы домена ещё не ясны.
- Для небольших команд (до 5-7 разработчиков).
- Когда важна транзакционная целостность и простота.
- В MVP и прототипах.
На собеседовании: Интервьюер ожидает не только список плюсов/минусов, но и понимание, когда монолит — правильный выбор. Частая ошибка — безусловно критиковать монолит и предлагать микросервисы для любого проекта.