LikeC4
LikeC4 — open-source инструмент моделирования архитектуры в нотации C4.
Используется подход Architecture as Code — архитектура системы опи сывается на простом декларативном языке (DSL).
Выполняет задачи:
- хранение архитектурной модели системы в репозитории
- автоматическая генерация диаграмм при изменении модели.
Это позволяет поддерживать архитектурную документацию в актуальном состоянии.
Основа - модель С4, которая описывает архитектуру через уровни абстракции:
- Context — система в окружении пользователей и внешних систем
- Container — основные приложения и сервисы
- Component — внутренние компоненты контейнера
- Code — уровень реализации
LikeC4 позволяет описывать элементы архитектуры:
- системы
- контейнеры
- компоненты
- связи между ними
На основе этого описания автоматически создаются архитектурные диаграммы.
Как работает?
Описывается архитектура в двух блоках:
- Модель (Model): определение сущностей (люди, системы, контейнеры) и связей между ними.
- Представления (Views): описание того, какие диаграммы нужно сгенерировать из модели.
По шагам
- Архитектура системы описывается с помощью DSL-языка. Описание включает:
- участников системы
- сервисы, БД
- взаимодействия между ними
- LikeC4 анализирует DSL-описание и формирует архитектурную модель системы, которая содержит:
- элементы архитектуры
- связи между ними
- структуру системы
- На основе модели автоматически создаются архитектурные диаграммы:
- контекст системы
- контейнерная архитектура
- компонентная структура
Если архитектура системы изменяется, меняется 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/HTML | VSCode/CLI/Vite |
| PlantUML | Да | Нет | UML диаграммы | PNG/SVG | MD/Confluence |
| Mermaid | Да | Нет | Flow/BPMN | SVG/PNG | MD/GitHub |
| Structurizr | Да | Да (workspace) | C4 уровни | Все форматы | Enterprise |
| Draw.io | Нет | Нет | Любые | PNG/SVG | Desktop/Web |
Материалы
- Официальный сайт
- Онлайн пример построения
- Архитектура как код (сравнительная таблица инструментов)
- Устали от устаревших диаграмм? LikeC4 наводит порядок в архитектуре!