Есть время собирать камни, и есть время разбрасывать. Рано или поздно, специализируясь в какой-то области, например, в корпоративной архитектуре, человек начинает не только и не столько стремиться к получению знаний, необходимых для ориентирования в своей области, но и делиться накопленным обобщениями. Или опытом (сыном ошибок трудных). Не миновал этот этап и меня.

Начну с «исправления имен» как базы для совершенствования (меткое наблюдение конфуцианства) на примере того, как у нас переводится базовый принцип построения микросервисной архитектуры: «loose coupling and high cohesion». И как понимание терминологии помогает отличить профанов, изображающих с помощью птичьего языка некое знание, от действительно понимающих суть людей.

Прежде, чем переходить к качественному переводу, нужно понять контекст и суть термина в исходном языке. Если кратко, loose coupling это про то, что изменения одного микросервиса по возможности не должны приводить к масштабным изменениям смежных и далее по цепочке микросервисов. А high cohesion говорит нам о том, что микросервис должен целостно закрывать явно выделенный кусок бизнес контекста. т. е. чтобы изменение бизнес контекста, требующее ИТ доработок, в идеале (недостижимом как горизонт) приводило к доработке одного микросервиса. т. е. микросервис не настолько мал, чтобы бизнес задача была сильно больше его, и не настолько зависим от смежников, чтобы любая задача требовала перелопачивания всего ИТ ландшафта.

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

Теперь, проговорив контекст, можно обсудить, как правильно перевести loose coupling and high cohesion на русский. Из контекста следует, что мы должны стремиться к понижению зависимостей на смежные команды, и повышать внутреннюю связность микросервиса. т. е. чтобы микросервис был достаточно независим и внутренне сплочен для самостоятельного плавания по волнам кровавого энтерпрайза.

Мне видится наиболее правильным перевод в стиле задачи minimax: «минимизация зависимостей и максимизация внутренней связности» микросервиса. Термин «зависимость на смежные команды» по моему опыту интуитивно понятен в ИТ среде. С точки зрения этимологии русского языка «связность» уже отсылает к чему то внутреннему, но чтобы не было разночтений, усилим до «внутренняя связность». Видится, что данный выше перевод целостен и внутренне непротиворечив и интуитивно помогает понять проблематику.

Выше написанное кажется очевидным (как минимум мне), и вроде нет повода для статьи. Но! На этой неделе опять увидел перевод: «Шаблоны GRASP: Low Coupling (низкая связанность) и High Cohesion (высокое зацепление)» некоторой конторы обучающей архитектуре. Пытливый читатель может загуглить, чтобы убедиться, что я не придумал. Я утверждаю, что если понимать контекст и смысл термина, не возможно в здравом уме переводить (не будем про то, что low это не исходное loose) «loose coupling» как » низкая связность», так как связность на русском языке про внутреннее состояние, а в исходном термине coupling про взаимоотношение со внешним по отношению к микросервису. И наоборот «зацепление» это в русском языке про взаимодействие со внешним, а «high cohesion» в исходном термине это про целостность внутренней структуры.

Предвижу обвинения в душноте. Отвечу на них тем, что «loose coupling high cohesion» это ключевой термин микросервисной архитектуры, нужный не только для внутренних дискуссий архитекторов, но и для того, чтобы пояснять держателям бюджета (людям от бизнеса), что и почему делается. И поэтому обязанный быть максимально интуитивно понятным. Держитесь подальше от тех, кто рассказывает про правильность стремления «к низкой связности и высокому зацеплению».

Комментарии (4)


  1. atsv
    18.07.2024 08:29

    КДВП не видна в посте


  1. danilovmy
    18.07.2024 08:29
    +1

    Мне кажется, что пояснять держателям бюджета (людям от бизнеса), что и почему делается через объяснение про "минимизацию зависимостей и максимизацию внутренней связности" одинаково бессмысленно как и про " низкую связанность и высокое зацепление". И то и то для программистов, не для бизнеса. Вот какой "выхлоп" будет - это да, это держателям бюджета нравится. А сейчас, например, в Австрии вообще про минимизацию выхлопов очень хорошо говорить, я про carbon impakt.


    1. Dominux
      18.07.2024 08:29

      Следует отличать бизнесменов от инвесторов

      Вот какой "выхлоп" будет - это да, это держателям бюджета нравится

      Это инвестор. Он не думает о том, как бизнес устроен детально, а просто вкладывается и ждёт аналитики, которая будет ему максимально проста и понятна

      "минимизацию зависимостей и максимизацию внутренней связности" одинаково бессмысленно как и про " низкую связанность и высокое зацепление"

      А вот это уже вполне для самих бизнесменов, т.к. организация бизнеса, структуры того, из чего он состоит и как что с чем взаимодействует - это уже на плечах бизнесмена. Например, откуда берется сырье, как преобразуется и как и куда потом продается - бизнесмен должен не то, что знать, а сам придумать и контролировать! И да, тут все эти DDD как раз и всплывают на поверхность, т.к. высокоуровневая разработка ничем не отличается от организации бизнеса, особенно малого, где сами бизнесмены должны делать все сами, без аналитиков и тд. И автор пытался сказать именно это

      А те, кто просто хочет вложить свои миллионы туда, не знаю куда, и получать супер разжеванную аналитику на пальцах, потому что сам не хочет вникать ни в организацию, ни в расчеты расходов, налогов и прибыли - это просто инвесторы


  1. olku
    18.07.2024 08:29
    +1

    Бизнес говорит языком денег. Вы пишете про объяснения технических решений, которые принято называть ADR. Эти решения бизнесу до фонаря, до тех пор пока архитектор не станет оценивать риски и возможности в разделе Consequences в понятных им единицах. Это мостик к ним, а не вот все то узкоспециальное.