[1/2] The C4 Model - Misconceptions, Misuses & Mistakes - Simon Brown - GOTO 2024 (Рубрика Architect)
Очередное интересное выступление от Simon Brown, создателя C4 Model, на тему моделирования архитектуры. Конкретно в этом выступлении он выступает в качестве человека, который развеивает мифы об использовании C4 Model для этих целей. Начнем с описания того, что Simon говорит о том, что такое C4 Model
- A set of hierarchical abstractions (software systems, containers, components, and code).
- A set of hierarchical diagrams (system context, containers, components, and code).
- Notation independent.
- Tooling independent.
Суть в том, что C4 Model позволяет рассказывать разные истории разным аудиториям - автор показывает это на примере Google Maps, где мы можем от уровня всего Земного шарика спуститься до уровня Google Street View и посмотреть как выглядит наш домик:) Если же переходить к элементам C4 Model, то у нас есть системный контекст, что описывает систему и ее окружение, а контейнеры показывают технологические составляющие и их взаимодействие. А дальше автор перечисляет набор мифов и дальше разбирается с ними
- C4 Model новвая штука на рынке - нет C4 Model существует с 2007 года и обладает общирным тулингом - С4 Model была создана для замены UML - Нет C4 не создавала как замена UML, она его дополняет структурированным подходом к созданию иерархических абстракций и диаграмм - C4 Model стала популярна в последние 5 лет? - да, она стала популярнее после пандемии, особенно среди организаций, работающих удаленно. - Почему Model C4 называется C4, а не C3 - Саймон считает важным, чтобы диаграммы заземлялись на реальность, а именно на компоненты и код (нижние 2 уровня) - Синий и серый цвет в нотации скучный - Саймон говорит, что вы можете выбрать свой любимый цвет - C4 модель может быть не ясна, если в ней много текста - Саймон рекомендует использовать много текста, который помогает передать больше информации о системе. А наличие метаданных на диаграммах помогает устранить двусмысленность и правильно интерпретировать диаграммы. - C4 не создана для фиксации решений по архитектуре прямо на диаграммах - Саймон говорит, что их лучше описывать отдельно в виде ADR (architecture decision records), прикладывая диаграммы из C4 Model для ясности и наглядности - C4 не содержит deployment схемы - C4 была вдохновлена UML и моделью 4+1 Филиппа Крачтена, в которых deployment схема очень важна. В итоге, вы можете при помощи C4 Model собрать свою deployment диаграмму, где будут контейнеры, системы и инфраструктура. - Мы не используем C4 Model, так как мы используем DDD вместо этого - это просто бессмысленная штука, которая показывает, что люди, которые так говорят не шарят - Нейминг container и component не очень хороши - да, но их лучше не переименовывать, так это запутает людей еще больше - C4 Model is too limiting - автор показывает что 4 уровня абстракции помогают оставаться на определенном уровне абстракции. Если снять ограничение на уровни абстракций, то легко попасть в N-уровней, которые уже сложно различать даже на уровне слов. Саймон показывает пример с неймингом database - это сервер баз данных? конкретная база данных? конкретная схема? В общем, Саймон говорит, что ограниченный набор уровней позволяет внести ясность в обсуждение, а не провалиться во фрактальную история с системами, подсистемами, подпод....системами, в которых сам черт ногу сломит. - Может добавить дополнительные абстракции? - Саймон объясняет почему следующие термины не очень хороши: подсистемы, bounded contexts, layers. Эти абстракции не добавляют пользы в диаграммах. Часть из этих терминов - это не абстракции, а элементы организации элементов
Продолжение обзора в следующем посте.
P.S. Я уже рассказывал про другие выступления Саймона на тему моделирования архитектуры
- The lost art of software design by Simon Brown at Devoxx Belgium 2022
- C4 Models as Code • Simon Brown • YOW! 2022
- Continuous Architecture in Practice Eoin Woods & Simon Brown • GOTO 2021
#Software #Architect #SystemDesign #SoftwareArchitecture #Processes