Какие плюсы и минусы у монолитной архитектуры?

«Какие плюсы и минусы у монолитной архитектуры?» — вопрос из категории Архитектура, который задают на 31% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Плюсы монолита:

  • Простота разработки и развертывания: Один кодовая база, один процесс. Запуск и отладка происходят локально без сложной инфраструктуры.
  • Согласованность данных: Все транзакции выполняются в рамках единой БД, что упрощает поддержание ACID-свойств.
  • Производительность: Отсутствуют накладные расходы на межсервисные сетевые вызовы (RPC/gRPC) и сериализацию.
  • Более простой мониторинг и логирование: Все логи и метрики сосредоточены в одном месте.

Минусы монолита:

  • Сложность масштабирования: Чтобы масштабировать одну «горячую» функциональность, приходится масштабировать все приложение целиком (горизонтально клонировать весь монолит).
  • Высокая связность: Изменение в одном модуле может неожиданно сломать другие, так как нет жестких границ.
  • Технологический стек: Сложно применять разные языки или версии библиотек для разных частей системы.
  • Непрерывная интеграция: По мере роста команды и кодовой базы процесс сборки, тестирования и деплоя становится медленным и рискованным.

Когда выбирать монолит: Для стартапов, MVP, внутренних инструментов с небольшой командой и четкими, стабильными требованиями. Пример типичного PHP-монолита на Laravel:

// Единая точка входа (public/index.php) загружает весь фреймворк
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
$kernel = $app->make(IlluminateContractsHttpKernel::class);
$response = $kernel->handle($request = IlluminateHttpRequest::capture());
// Все маршруты, контроллеры, модели и бизнес-логика выполняются в одном процессе.