advanced

Coupling

Определяйте compile-time, runtime, data, temporal и organizational coupling перед выбором architectural boundary.

Coupling измеряет, насколько один модуль зависит от внутренностей другого. На интервью разбирают compile-time coupling (общие типы, библиотеки), runtime coupling (синхронные вызовы, shared database), data coupling (общие схемы), temporal coupling (согласованное время) и organizational coupling (команды, которые релизятся вместе).

Меньший coupling даёт независимые изменения, но увеличивает стоимость интеграции. Цель не нулевой coupling, а размещение связности на стабильных, явно владеемых границах.

На интервью: классифицируйте типы coupling на диаграмме, объясните, какие границы снижают change risk, и обоснуйте, где tight coupling допустим (например, внутри bounded context).

Типовые ошибки: coupling через общую БД; HTTP как иллюзия независимости; shared libraries, возвращающие монолитный release train.

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

Чеклист:

  • Перечислите типы coupling в дизайне.
  • Определите изменения, требующие coordinated releases.
  • Предложите границы, поглощающие volatility.
  • Допускайте intentional coupling только с ясным ownership.