Ответ
Плюсы монолита:
- Простота разработки и развертывания: Один кодовая база, один процесс. Запуск и отладка происходят локально без сложной инфраструктуры.
- Согласованность данных: Все транзакции выполняются в рамках единой БД, что упрощает поддержание 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());
// Все маршруты, контроллеры, модели и бизнес-логика выполняются в одном процессе. Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶