Архитектура под задачу
Решения и компромиссы
Вид
Текст20

Начальный · Глава 1 / 18

Контекст: кому и зачем нужна система

После главы: Нарисовать границу продукта и назвать внешние зависимости.

В этой главе

До выбора технологии

Небольшой книжный магазин просит «современную архитектуру». Это не условие, которое можно проверить. Полезнее начать с действий: читатель ищет издание, просматривает образец и получает купленный файл; редактор обновляет описание; владелец выясняет причину неудачной выдачи. Архитектура должна поддерживать эти действия при известных ограничениях команды, бюджета и эксплуатации.

Запишите, что принадлежит системе, а что предоставляется снаружи. Например, платёжный провайдер подтверждает финансовое событие, но решение о выдаче книги принимает наш сервер по проверенному событию и собственным правилам. Браузерная страница успеха не становится источником истины только потому, что выглядит убедительно.

Один масштаб на одной схеме

Контекстная схема показывает людей, систему и внешние системы. Она не обязана включать каждую функцию. В модели C4 есть разные масштабы: контекст, контейнеры, компоненты и код. Здесь контейнер означает запускаемую часть или хранилище, а не обязательно Docker. Выберите масштаб под вопрос читателя схемы.

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

У стрелки есть владелец и режим отказа

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

На контекстной схеме библиотека — одна система. Хранилище показывают рядом только если это действительно внешняя система; внутреннее хранилище раскрывают на следующем масштабе C4. Не смешивайте внутреннюю таблицу и внешнего провайдера без объяснения границы.

Сценарий как проверка полноты схемы

Пройдите одну покупку по схеме вслух. Читатель выбирает предложение, приложение фиксирует заказ, внешняя сторона сообщает финансовый результат, приложение сверяет его и создаёт право, затем выдаёт конкретный файл. На каждом шаге назовите данные и владельца решения. Если стрелка требует сведения, которого ни у одного участника нет, схема обнаружила пропуск требования. Например неизвестная политика обновления книги не решается добавлением хранилища: её должен определить владелец продукта. После прохода повторите путь с отказом каждой зависимости. Каталог может оставаться доступным без почты; новая покупка не должна считаться подтверждённой без проверки платежа. Такая прогулка по сценарию полезнее преждевременного уточнения классов, поскольку проверяет смысл взаимодействия на выбранном масштабе.

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

Разобранный пример

Контекст с внешним хранилищем

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

text
Читатель → Библиотека: ищет книгу и запрашивает доступ
Редактор → Библиотека: меняет описание редакции
Библиотека ↔ Провайдер оплаты: создаёт и сверяет платёж
Библиотека → Приватное хранилище: читает разрешённый файл

Теперь самостоятельно

Практика

Добавьте сервис рассылки уведомлений о готовности книги. Где остаётся источник права доступа, если письмо не доставлено?

Результат: Обновлённая связь и правило независимости доступа от письма.

Подсказка
  • Уведомление сообщает о факте, но не обязано создавать этот факт.
Решение и проверка

Добавляется связь «Библиотека → Сервис писем: отправляет уведомление». Право доступа остаётся в собственном учёте библиотеки после подтверждённого основания.

Потерянное письмо не отменяет доступ и не должно повторно создавать покупку. Читатель видит книгу в своём разрешённом разделе. На схеме отдельно можно отметить, какие минимальные данные получает сервис писем.

Проверьте себя без текста

Зачем граница системы до выбора фреймворка?

Она определяет ответственность, внешние зависимости и места проверок.

Что означает контейнер в C4?

Запускаемую часть или хранилище на соответствующем масштабе описания, не обязательно контейнеризацию.

Проверить по первоисточникам

Конец образца

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