C4 model Note¶
Abstractions¶
Container¶
- Server-side web application
- Client-side web application
- Client-side desktop application
- Mobile app
- Server-side console application
- Microservice
- Serverless function
- Database
- Blob or content store
- File system
- Shell script
- etc
Core diagrams¶
Level 1: System Context diagram¶
Level 2: Container diagram¶
Level 3: Component diagram¶
Level 4: Code¶
Supplementary diagrams¶
- System Landscape diagram
- Dynamic diagram
- Deployment diagram
Notation¶
- Person
- Software System
- Container
- Component
- Relationship
Diagram key/legend¶
Notation, notation, notation¶
Examples¶
- Big Bank plc (System Landscape, System Context, Container, Component, Dynamic and Deployment)
- Financial Risk System (System Context)
- Spring PetClinic (System Context, Container, Component, Dynamic and Deployment)
- Message bus and microservices (Container and Dynamic)
- Widgets Limited (System Landscape, System Context and Dynamic)
- Contoso University (System Context, Container, Component and Dynamic)
Frequently asked questions¶
What’s the inspiration behind the C4 model?
- make it easier for software developers to describe and understand how a software system works
- minimise the gap between the software architecture model/description and the source code
Tooling¶
- Structurizr
- Structurizr for Java/.NET + PlantUML
- c4-draw.io
- Extras → Plugins → Add: https://tobiashochguertel.github.io/c4-draw.io/c4.js