Эта новая схема архитектуры охватывает уровни 1–3 модели C4, чтобы дать вам максимально быстрое представление о вашей системе.

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

Около года назад я написал пост о 5 типах архитектурных диаграмм, в котором описал многие из диаграмм, которые мы используем сегодня. В нем рассказывается, как и зачем создавать диаграммы, такие как поток, услуга, персонаж, инфраструктура и диаграммы разработчика.

Они свободно адаптируются к модели c4 для построения диаграмм архитектуры программного обеспечения. Существуют нюансы, и оба они по-разному помогают донести важную информацию о вашем приложении.

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

Мне нужна была диаграмма, показывающая критические пути в системе, чтобы я мог подготовить реалистичный сценарий катастрофы. Что-то, что обобщало архитектуру, но также было достаточно конкретным, чтобы дать мне достаточно деталей, чтобы понять, где в моем приложении находятся точки останова.

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

Мне нужна диаграмма критического пути.

Обзор

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

С помощью этой диаграммы вы можете отслеживать данные по всей системе. Он отслеживает, как данные передаются внутри вашего приложения, и отслеживает все переходы между системами. Если в результате основного бизнес-процесса обновляются 3 или 4 приложения, эта диаграмма является идеальной иллюстрацией.

Аудитория

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

Соображения

Вам не нужно помещать все детали для каждого API в диаграмму критического пути. Вы должны обобщать и группировать похожие конечные точки вместе. Если у вас есть набор конечных точек, которые технически следуют одному и тому же потоку (например, от шлюза API к потокам Lambda, DynamoDB и DynamoDB), вы можете включить этот шаблон один раз.

Потоки данных

Говоря о потоках данных, я имею в виду путь, по которому проходит бизнес-процесс через вашу систему. Если мы возьмем пример из Gopher Holes Unlimited, мы увидим, что происходит, когда в систему добавляется новый суслик. система.

Компоненты

  • Инициатор — место, где начинается бизнес-процесс или поток данных. Обозначен на диаграмме как звезда.
  • Приложение – отдельное автономное приложение, которое играет роль в экосистеме.
     – Известные приложения – приложение, которое принадлежит вам или известно о его внутренней структуре. Представлены на диаграмме в виде белого прямоугольника с контуром
    Сторонние приложения — приложения, которыми вы не владеете и не знаете, как они работают. Представлен на диаграмме в виде черного ящика.
  • Поток данных – серия соединенных линий, показывающих продвижение данных в вашей системе. Обозначается штриховыми линиями для асинхронных вызовов и сплошными линиями для синхронных вызовов. При отображении нескольких потоков данных лучше организовать их по цвету.
  • Инфраструктура. Для известных приложений здесь показаны общие сведения о том, как приложение построено и какие службы обрабатывают данные, проходящие через систему. Представлено изображениями задействованных служб.
  • Взаимодействие с пользовательским интерфейсом — такие действия, как заполнение форм или выполнение поиска, которые обычно запускают поток данных. Представлен прямоугольником с меткой

В приведенном выше примере инициатор потока данных начинается с действия "Добавить нового суслика" взаимодействия с пользовательским интерфейсом. Для этого бизнес-процесса взаимодействие представляет собой мастер в пользовательском интерфейсе, который помогает пользователю добавить все необходимые элементы данных для суслика. Когда мы обводим стрелки, мы начинаем со звезды.

Поток использует механизм поиска для поиска существующих сусликов. Эта конечная точка поиска использует AppSync для поиска сусликов из DynamoDB, вспомогательной функции Lambda и путем вызова API в Национальном реестре грызунов.

Как только данные отправлены, они проходят через первичный поток приема данных, который идет от шлюза API к DynamoDB, от потоков DynamoDB к Step Functions (эта схема описана в этом посте).

После завершения тема SNS публикует сообщение, которое Zapier подхватывает для передачи данных в сторонние приложения Коллектив охотников за варминтами и Общество охраны мелких животных. Он также публикуется в Национальном реестре грызунов, который получает данные через ALB поверх автомасштабируемого парка EC2.

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

Этот бизнес-процесс — прекрасный пример важности диаграммы критического пути. Это гарантирует, что вы сможете видеть наиболее важные потоки данных. Или самый хрупкий. Или самый загруженный. Построение диаграммы критического пути покажет вам каждый проход данных службы, что упростит выделение проблемных областей до того, как они станут проблемой.

Сделайте это интерактивным

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

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

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

Все свои диаграммы я рисую в бесплатном приложении под названием diagrams.net (ранее draw.io). При построении диаграмм критического пути я помещаю каждый поток данных в отдельный слой. Затем я добавляю кнопки в ключ, которые переключают видимость слоя, упрощая отображение/скрытие целых потоков.

Эти кнопки находятся в клавише, поэтому они объединены в одном месте. Пользователи схемы могут щелкнуть кнопку, чтобы скрыть все линии потока данных, или щелкнуть ее еще раз, чтобы вернуть ее обратно. Diagrams.net предлагает полное пошаговое руководство о том, как создавать слои и кнопки, которые отображают и скрывают их.

Чтобы увидеть интерактивную версию диаграммы критического пути Gopher Holes Unlimited, нажмите здесь.

Случаи использования

Существует несколько вариантов использования диаграммы критического пути.

  • Системная диаграмма — перечисляет все приложения, задействованные в вашей экосистеме, и то, как они связаны.
  • Планирование на случай стихийного бедствия — определяет потенциальные узкие места и области с большим радиусом взрыва в случае стихийного бедствия.
  • Архитектурная диаграмма Lite – показывает используемые типы архитектуры. Gopher Holes Unlimited — это бессерверное приложение, National Rodent Registry — это контейнерное приложение ec2 с автоматическим масштабированием и т. д.

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

Невозможно собрать пазл без всех частей.

По сравнению с моделью C4 этот тип архитектурной схемы содержит элементы первых трех уровней (Контекст, Контейнеры и Компоненты). Это обеспечивает интересное сквозное сочетание деталей с первого взгляда. Но диаграмма критического пути должна быть дополнена другими типами диаграмм. Сама по себе полная картина не вырисовывается.

Вам нужен последний уровень детализации. Вам нужны нюансы более подробных диаграмм, чтобы показать зависимости или особенности того, как вещи связаны. Схема инфраструктуры предоставляет подробную информацию, если она вам нужна, когда вы просматриваете сценарии стихийных бедствий. В модели C4 это уровень 4 ( Код).

Последние мысли

Диаграмма критического пути — отличный инструмент, который можно положить в задний карман. Это «агрегатная» диаграмма, то есть она объединяет важные части из нескольких других типов диаграмм в одну.

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

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

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

Попробуйте, дайте мне знать, что вы думаете, и поделитесь тем, что вы строите!

Удачного кодирования!