← Назад к блогу
Системная архитектура 01.02.2024·2 мин чтения

Границы доменов в модульном монолите

Как провести реальные границы между модулями, чтобы монолит не превратился в связанный ком.

Модульный монолит работает только при строгих границах. Если модуль напрямую читает внутренности другого, архитектура деградирует так же быстро, как и в «обычном» монолите.

Проще говоря

Как провести реальные границы между модулями, чтобы монолит не превратился в связанный ком. Ниже — что именно делать на практике и где чаще всего ошибаются.

Что считать границей

  • публичный API модуля,
  • собственная модель данных,
  • явные правила зависимости.

Кейс из практики

Коротко про вводные.

Контекст: Команда разделила billing и subscriptions в отдельные модули, но оставила прямой доступ к таблицам. Через 3 месяца любое изменение в billing ломало subscriptions. После перехода на API-слой и события внутри монолита регрессии резко сократились.

Минимальный чеклист

  • нет прямых кросс-модульных SQL-запросов
  • зависимости проверяются архитектурным тестом
  • публичные контракты версионируются

Короткая история из команды

В реальном проекте решение сработало только после того, как его закрепили в процессах команды, а не оставили на уровне договорённостей.

Вывод

Модульность — это не структура папок, а дисциплина границ и контрактов.

Как проверить, что границы реальные

Если изменение в одном модуле регулярно требует правок в трёх соседних — границы фиктивные. Полезный индикатор: количество кросс-модульных изменений в одном PR.

Снижение этого показателя обычно означает, что модульность работает и команда получает выигрыш в независимости поставки.

Как применять это в живом проекте

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

Хорошая последовательность: сначала фиксируем baseline, затем внедряем минимально жизнеспособную версию решения, после чего смотрим на метрики 1–2 недели. Если эффект подтверждается, масштабируем на соседние сценарии. Если нет — откатываем без драм и пересобираем гипотезу.