Что такое C4 Model?

«Что такое C4 Model?» — вопрос из категории Архитектура, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

C4 Model — это методология для визуализации и документирования архитектуры программного обеспечения через четыре уровня детализации (абстракции). Она помогает обсуждать систему с разными аудиториями — от бизнес-заказчиков до разработчиков.

Четыре уровня модели C4:

  1. Контекст (System Context): Высокоуровневая диаграмма, показывающая систему в целом, её взаимодействие с пользователями и другими внешними системами.
  2. Контейнеры (Containers): Диаграмма, раскрывающая, из каких крупных исполняемых блоков (веб-приложение, мобильное приложение, база данных, микросервис) состоит система и как они взаимодействуют.
  3. Компоненты (Components): Диаграмма, детализирующая ключевые модули или компоненты внутри одного контейнера и связи между ними.
  4. Код (Code): Детальная диаграмма (например, UML), показывающая конкретные классы, интерфейсы и их отношения внутри компонента. Этот уровень используется реже и обычно генерируется автоматически.

Пример для интернет-магазина:

  • Контекст: Покупатель взаимодействует с системой «Интернет-магазин», которая, в свою очередь, использует внешний «Платежный шлюз».
  • Контейнеры: Веб-приложение (Frontend), API-сервис (Backend), База данных PostgreSQL, Кэш Redis.
  • Компоненты (внутри API-сервиса): OrderService, PaymentProcessor, UserRepository.

Преимущества подхода:

  • Простота и ясность: Каждая диаграмма фокусируется на конкретных вопросах.
  • Масштабируемость: Позволяет «зумировать» от общей картины к деталям реализации.
  • Универсальный язык: Облегчает коммуникацию между разработчиками, архитекторами и заинтересованными лицами.