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

LikeC4

LikeC4 — open-source инструмент моделирования архитектуры в нотации C4. Используется подход Architecture as Code — архитектура системы описывается на простом декларативном языке (DSL).
Выполняет задачи:

  1. хранение архитектурной модели системы в репозитории
  2. автоматическая генерация диаграмм при изменении модели.

Это позволяет поддерживать архитектурную документацию в актуальном состоянии.

Основа - модель С4, которая описывает архитектуру через уровни абстракции:

  1. Context — система в окружении пользователей и внешних систем
  2. Container — основные приложения и сервисы
  3. Component — внутренние компоненты контейнера
  4. Code — уровень реализации

LikeC4 позволяет описывать элементы архитектуры:

  • системы
  • контейнеры
  • компоненты
  • связи между ними

На основе этого описания автоматически создаются архитектурные диаграммы.

Как работает?

Описывается архитектура в двух блоках:

  1. Модель (Model): определение сущностей (люди, системы, контейнеры) и связей между ними.
  2. Представления (Views): описание того, какие диаграммы нужно сгенерировать из модели.

По шагам

  1. Архитектура системы описывается с помощью DSL-языка. Описание включает:
  • участников системы
  • сервисы, БД
  • взаимодействия между ними
  1. LikeC4 анализирует DSL-описание и формирует архитектурную модель системы, которая содержит:
  • элементы архитектуры
  • связи между ними
  • структуру системы
  1. На основе модели автоматически создаются архитектурные диаграммы:
  • контекст системы
  • контейнерная архитектура
  • компонентная структура

Если архитектура системы изменяется, меняется DSL-описание. Все диаграммы автоматически обновляются . Нет дублирования данных.

Пример описания архитектуры (через DSL)

Упрощенная модель веб-приложения:

model {
user = person "User"

system webApp "Web Application" {
container frontend "Frontend"
container backend "Backend"
container database "Database"
}

user -> webApp.frontend "uses"
webApp.frontend -> webApp.backend "API"
webApp.backend -> webApp.database "reads/writes"
}

В этом примере:

  • определён пользователь системы
  • описана система Web Application
  • указаны контейнеры системы
  • заданы связи между элементами

Пример описания представления (Views)


view container webApp {
title "Web Application Containers"
include *
}
}

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

В данном случае генерируется контейнерная диаграмма системы.

Использование в разработке

LikeC4 удобно использовать вместе с системой контроля версий GIT.

Архитектурная модель:

  • хранится в репозитории
  • изменяется через pull-request
  • проходит архитектурный review

Это позволяет команде контролировать архитектурные изменения.

Плюсы и минусы

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

– необходимо знать синтаксис DSL.
– диаграммы нельзя редактировать напрямую мышью, только через код.
– относительно новая технология, мало примеров использования, обучающих материалов, меньше интеграций.
– только диаграммы (нет встроенной документации/ADR, как в Structurizr).

Инструменты и интеграции

LikeC4 обычно используется вместе с:

  • Visual Studio Code — редактор с поддержкой DSL
  • Node.js — среда выполнения CLI
  • Docker — запуск без локальной установки

Сравнение с аналогами

ИнструментAs-codeАвтообновлениеИерархия уровнейЭкспортИнтеграции
LikeC4ДаДа (hot-reload)C4 уровниPNG/SVG/Mermaid/HTMLVSCode/CLI/Vite
PlantUMLДаНетUML диаграммыPNG/SVGMD/Confluence
MermaidДаНетFlow/BPMNSVG/PNGMD/GitHub
StructurizrДаДа (workspace)C4 уровниВсе форматыEnterprise
Draw.ioНетНетЛюбыеPNG/SVGDesktop/Web

Материалы

  1. Официальный сайт
  2. Онлайн пример построения
  3. Архитектура как код (сравнительная таблица инструментов)
  4. Устали от устаревших диаграмм? LikeC4 наводит порядок в архитектуре!

Видео

  1. Visual architecture: Code-driven diagramming - Expert Talks India
  2. The C4 model for visualising software architecture by Simon Brown
  3. C4 models as code By Simon Brown