Veltos.Tech

Разработка

Монолит

Также называют: монолитная архитектура, монолитное приложение

Определение

Монолит — приложение, которое собирается и разворачивается одним куском: весь код лежит в общем репозитории и выполняется в одном процессе, работает с одной базой и выкатывается целиком, что даёт простоту разработки ценой связанности.

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

Проблемы начинаются не от размера кода, а от отсутствия внутренних границ. Если модули свободно лезут в чужие таблицы, а бизнес-логика размазана по контроллерам, монолит превращается в «большой ком грязи»: любая правка задевает соседей, регресс становится непредсказуемым, а время сборки и релиза растёт. Отсюда рабочая середина — модульный монолит: единый деплой, но жёстко разделённые домены со своими границами и собственными таблицами, к которым обращаются только через внутренний интерфейс.

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

Смежные термины

Услуги по теме

Почитать подробнее

Нужна помощь с этим на практике?

Мы не только объясняем термины, но и делаем это руками. Опишите задачу — разберём и пришлём смету по этапам.