теория

Дистанция: где связь прощается, а где разоряет

Смотри, сила связи из прошлых модулей отвечала на вопрос «что рвётся». Теперь добавим ось, которая отвечает «насколько это больно» — .

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

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

Отсюда всё правило умещается в одну таблицу:

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

Сильную связь держи на малой дистанции. На большую выноси только слабую. А что вообще задаёт дистанцию? Не только «в каком модуле лежит код», но и кто им владеет (как устроены команды, так система и разрежется), и как части общаются в рантайме — синхронно или асинхронно.

Одна ось у нас уже была, вторую добавили. Осталась третья — и она про время.

← назад