Какие преимущества монолитной архитектуры
Что проверяют
Не поддаётесь ли вы моде на микросервисы и умеете ли обосновать архитектуру требованиями: размером команды, нагрузкой, сроками. Системному аналитику следом часто задают вопрос, какие признаки говорят, что монолит пора делить.
Как отвечать
Монолит это одно развёртываемое приложение с общей кодовой базой и, как правило, общей базой данных. Его плюсы проще всего объяснять через то, чего в нём нет:
- нет сетевых вызовов между модулями: вызов внутри процесса быстрее и не падает из-за сети, не нужны таймауты, ретраи и контракты API между командами;
- простые транзакции: оформление заказа, списание остатка и запись платежа укладываются в одну ACID-транзакцию. В микросервисах то же требование превращается в сагу с компенсациями, и аналитику приходится описывать каждый промежуточный статус и откат;
- простое развёртывание: один артефакт, один пайплайн, одна точка мониторинга, без оркестрации десятков сервисов;
- сквозная отладка и тестирование: сценарий от запроса до записи в базу проходит в одном процессе, end-to-end тест собрать проще;
- быстрый старт: пока предметная область не устоялась, границы модулей двигаются рефакторингом, а в микросервисах ошибка в границах стоит переписывания контрактов и миграции данных.
Упомяните модульный монолит: модули с чёткими границами и своими данными внутри одного приложения. Он сохраняет простоту и оставляет путь к выделению сервиса, если конкретному модулю понадобится своё масштабирование.
Закончите тем, когда монолит перестаёт подходить: десятки разработчиков мешают друг другу в релизах, частям системы нужно разное масштабирование или разный ритм выпуска.
Где спотыкаются
Называют монолит устаревшим подходом. Для большинства новых продуктов и небольших команд это разумный выбор по умолчанию.
Путают монолит с запутанным кодом. Проблема «большого кома грязи» решается модульностью, а не распилом на сервисы.
Говорят только о технике и не связывают её с требованиями: сроками, размером команды, требованиями к согласованности данных и доступности. Для аналитика именно эта связь и есть ответ.