C4 Model
Problem
Someone draws: [Frontend] → [Backend] → [DB]
Another person draws 400 Kubernetes objects.
Both call them “architecture diagrams.”
The audience doesn't know what level they're looking at.
Solution — C4
C4 zooms into the same system at four levels:
Context: the whole system and its surroundings—for example, a customer uses the shop, which calls a payment provider.
Containers: applications and data stores inside it—for example, a frontend calls an API that accesses a database. Hosting can use Docker, servers, or managed services.
Components: functional parts inside one application—order handling, payment integration, data access inside the API.
Code: classes and methods implementing a component, such as PaymentAdapter.sendPayment().
Core idea: C4 provides consistent levels of abstraction for communicating software architecture.