LikeC4 — open-source инструмент моделирования архитектуры в нотации C4
Используется подход
Architecture as Code — архитектура системы описывается на простом декларативном языке (DSL)Выполняет задачи:
💙 хранение архитектурной модели системы в репозитории
💙 авто-генерация диаграмм при изменении модели
Это помогает поддерживать архитектурную документацию в актуальном состоянии
LikeC4 позволяет описывать элементы архитектуры:
💙системы
💙контейнеры
💙компоненты
💙связи между ними
На основе этого описания автоматически создаются архитектурные диаграммы
Как работает?
Описывается архитектура в двух блоках:
🟡модель (Model): определение сущностей (люди, системы, контейнеры) и связей между ними
🟡представления (Views): описание того, какие диаграммы нужно сгенерировать из модели
По шагам
1️⃣Архитектура системы описывается с помощью DSL-языка. Описание включает:
➖ участников системы
➖сервисы, БД
➖взаимодействия между ними
2️⃣LikeC4 анализирует DSL-описание и формирует архитектурную модель системы, которая содержит:
🟣элементы архитектуры
🟣связи между ними
🟣структуру системы
3️⃣ На основе модели автоматически создаются архитектурные диаграммы:
➖контекст системы
➖контейнерная архитектура
➖компонентная структура
❗️Если архитектура системы изменяется, меняется 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)
views {
view container webApp {
title "Web Application Containers"
include
}
}Этот блок определяет, какую диаграмму нужно построить из архитектурной модели
В данном случае генерируется контейнерная диаграмма системы
Плюсы и минусы
➖архитектурная модель - часть исходного кода проекта
➖диаграммы всегда соответствуют архитектурной модели
➖напрямую использует принципы модели C4, упрощает архитектурное моделирование
➖подходит для сложных систем, удобен для микросервисных архитектур, распределённых систем, крупных платформенных решений
➖необходимо знать синтаксис DSL
➖диаграммы нельзя редактировать напрямую мышью, только через код
➖относительно новая технология, мало примеров использования, обучающих материалов, меньше интеграций.
➖только диаграммы (нет встроенной документации/ADR, как в Structurizr)
Инструменты и интеграции
LikeC4 обычно используется вместе с:
💙Visual Studio Code — редактор с поддержкой DSL
💙Node.js — среда выполнения CLI
💙 Docker — запуск без локальной установки
📎 Материалы
1. Официальный сайт
2. Онлайн пример построения
#инструменты
➿➿➿➿➿➿➿➿
🧑🎓 Больше полезного в базе знаний по системному анализу