Перейти к основному содержимому

Связи на C2

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

В уроке используются три способа создания связи: через левую панель, через контекстное меню исходного элемента и с помощью выбора пары элементов при зажатой клавише Shift. После первых примеров остальные связи создаются в ускоренном темпе, а внимание уделяется правилам моделирования зависимостей.

Создание связей между контейнерами и внешними системами на C2.

Исходная диаграмма​

Перед началом на C2 уже находятся актёры, внешние системы, бизнес-контейнеры и техническая инфраструктура. Иконки платформ были назначены в предыдущем уроке.

Загрузка изображения...
Все элементы и иконки готовы, связи ещё не добавлены

Три способа создания​

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

Загрузка изображения...
Источник и целевой элемент выбираются непосредственно в форме
Загрузка изображения...
Наименование фиксирует общий способ взаимодействия, описание уточняет назначение

Во втором способе сначала выбирается исходный элемент, а затем команда создания связи в его контекстном меню. Источник подставляется автоматически, остаётся выбрать целевой элемент.

Загрузка изображения...
Меню выбранного элемента позволяет начать связь с уже заданным источником
Загрузка изображения...
Целевой элемент и свойства взаимодействия заполнены в форме

Третий способ самый быстрый: выберите источник, удерживайте Shift и выберите целевой элемент. Система сразу откроет форму с заполненными концами связи.

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

Иерархия связей​

Для связи между контейнерами система может указать родительскую связь уровня C1. Так формируется иерархия: верхнеуровневая зависимость между системами раскрывается через конкретные взаимодействия их контейнеров. В следующих уроках покажем, как раскрывать такую структуру непосредственно на C1.

Загрузка изображения...
Контейнерные зависимости дополняют связи верхнего уровня между системами

Что показывает структурная связь​

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

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

Иногда полезно раздельно моделировать чтение из базы данных и запись в неё. Это позволяет анализировать процессы чтения и изменения данных независимо, а при необходимости планировать разделение нагрузки и применение CQRS.

Загрузка изображения...
Разные виды доступа к данным можно представить отдельными зависимостями

Направление стрелок​

Стрелка идёт от элемента, который инициирует взаимодействие и знает, как обратиться к целевому элементу. База данных или брокер сообщений обычно не знают о своих клиентах и сами к ним не обращаются. Поэтому зависимости направляются от использующих их контейнеров к базе или брокеру, а не наоборот.

Итоговая C2 показывает все основные зависимости между пользователями, внешними системами, контейнерами и инфраструктурой.

Загрузка изображения...
Диаграмма показывает устойчивые направления взаимодействия между всеми элементами

Таймкоды​

  • 00:00 — три способа создания связи;
  • 00:10 — создание через левую панель;
  • 00:22 — создание через контекстное меню;
  • 00:33 — создание с помощью Shift;
  • 00:45 — иерархия связей C1 и C2;
  • 01:07 — назначение структурной диаграммы;
  • 01:43 — обобщённые наименования связей;
  • 02:03 — несколько связей между одной парой элементов;
  • 02:20 — привязка потоков данных к связям;
  • 02:40 — раздельные связи для чтения и записи;
  • 02:58 — аналитика и CQRS;
  • 03:19 — направление взаимодействия;
  • 03:38 — зависимости от баз данных;
  • 04:11 — зависимости от брокера сообщений;
  • 04:26 — готовая C2.

Предыдущий урок: Инфраструктура на C2.

Следующий урок: Скрытие и переиспользование связей.