Активнее всего Браун публикуется в LinkedIn (кто угадает, почему?). И недавно мне там на глаза попалось относительно свежее его выступление на конференции 25го года (которое стало доступно на ютуб канале буквально пару недель назад). Мне показалось интересным, рекомендую посмотреть и тем, кто интересуется C4 и использованием его в работе (как инструментом описания архитектуры для любых задач, см. мой пост по второй ссылке), и тем, кто в целом интересуется темой программной архитектуры.
Важный момент, что в этом видео Браун не рассказывает о базовых вещах, связанных с моделью, он идет чуть дальше, поэтому если вы не очень глубоко копали тему, то лучше начать с видео, которое я пошарю следом, а затем вернуться сюда.
Тезисно интересные мысли подобью тут:
🔹 контейнеры (не путать с контейнерными технологиями, типа Docker, Браун этот термин стал использовать раньше, может доказать) - это абстракция для БД и приложений, взаимодействие между которыми всегда будет межпроцессным. Это хороший критерий для определения границ контейнера - изоляция процессов и взаимодействие между ними. Например, контейнером не может быть некий "сервис", состоящий из Java-кода и MySQL БД, потому что это два разных процесса - следовательно, два разных контейнера.
🔹 кстати про технологии - их на диаграмме контейнеров указывать стоит обязательно, потому что так можно валидировать архитектуру. Например, если нарисовать контейнер с JS, который интегрирован с контейнером с БД, это не может быть реализовано, значит эта архитектура некорректна. Без технологий валидировать арх решение будет сложнее.
🔹 каждый контейнер - это деплоймент-модуль (то, что должно быть развернуто в среде исполнения), но не каждый деплоймент-модуль должен порождать контейнер. Особенно это актуально для инфраструктурных элементов, которым а) не место на структурной архитектурной диаграмме (а диаграмма контейнеров - именно такая), и б) которые "ломают" визуализацию связей и делают диаграмму бессмысленной. Например, рисовать на диаграмме контейнеров брокер сообщений нерационально, так как он убирает визуально полезные связи между приложениями и заменяет их несомненно более точными, то абсолютно бесполезными связями всех с брокером.
🔹 микросервисы - это программные системы или группы контейнеров. Критерий "выделять ли микросервис в систему" по сути такой же, как и в принципе для системы - отдельная команда, отдельный цикл поставки в среду исполнения, отдельная зона ответственности и т.д. (тут с границами системы в целом интересный пойнт, расскажу попозже отдельно)
🔹 вообще в целом границы в моделях C4 - очень полезная штука, с учетом того, что C4 не дает менять состав уровней абстракции (что является и его слабостью для некоторых задач, но и его силой для тех задач, для которых он был создан).
Тему C4 еще зацеплю, не разбегайтесь!