Архитектурный репозиторий на базе GitLab и C4 Model для большой компании
Архитектурный репозиторий на базе GitLab и C4 Model для большой компании
Спикер: Кирилл Ветчинкин (создатель DocHub, эксперт по Architecture-as-Code)
Мероприятие: Конференция ArchDays 2022
Источник: [YouTube (cTM6M6BbuMs)](https://www.youtube.com/watch?v=cTM6M6BbuMs)
---
📌 Проблематика в крупных микросервисных системах (MSA)
1. Устаревание документации: Архитектурные схемы в Confluence, Visio или Draw.io быстро теряют актуальность, так как оторваны от репозиториев и процесса разработки. 2. Сложность Arch-Review: Архитекторам трудно отслеживать изменения, согласуемые в разных командах, из-за отсутствия единого формата и версионирования. 3. Рассинхрон схемы и деплоя: В рантайме сервисы ходят в незадекларированные базы данных и сторонние API, создавая скрытые зависимости и уязвимости. 4. Дублирование и хаос: Отсутствие единого каталога систем приводит к повторной разработке одинаковых сервисов и несогласованным контрактам.
---
🔑 Ключевые тезисы и архитектурное решение (ArchOps)
1. Архитектура как код (Architecture as Code)
Вся архитектура компании описывается декларативно в текстовых манифестах (YAML / JSON / PlantUML / C4 DSL). Единым источником правды (Single Source of Truth) является Git-репозиторий (GitLab/GitHub). * Изменение архитектуры оформляется через стандартный Merge Request (MR).
2. Модель C4 (Context, Container, Component, Code)
Иерархический подход к структурированию: C1 (Context): Система во внешнем контексте (пользователи, внешние контрагенты, регуляторы). C2 (Containers): Приложения, базы данных, очереди сообщений, шины данных. C3 (Components): Модули, контроллеры, сервисные слои внутри контейнеров. C4 (Code): Классы, интерфейсы, схемы данных. Схемы не рисуются вручную, а генерируются динамически движком (DocHub / PlantUML) из манифестов.
3. CI/CD пайплайны и автоматическая валидация
Линтинг: Автоматическая проверка синтаксиса манифестов, корректности ссылок между узлами, валидности OpenAPI / AsyncAPI контрактов. Arch-Gates при деплое: Валидация деплоймент-манифестов (Helm / K8s / Docker Compose) относительно утвержденной архитектурной модели. Если контейнер запрашивает доступ к незадекларированному ресурсу, пайплайн сборки блокируется.
4. Service Catalog и идентификация
* Стандартизированная иерархическая номенклатура для всех сервисов и контейнеров (например, company.domain.service_name), исключающая дублирование и позволяющая строить сквозные графы зависимостей.