What is C4?
The software architecture model to rule them all
The C4 model is an approach to software architecture that allows for clear and consise communication between various groups of a company. The basic premise is that software can be viewed into 4 perspectives: contexts, containers, components, and code. In order to view these perspectives, we first must break out software down into the following four abstractions: software systems, containers, components and code.
Abstractions
Software Systems
Example: Internet Banking System
A software system a high level of abstraction that groups a set of containers that deliver value to users.
Containers
Examples: Mobile app, web application, database
A container is an application or data store. A software system is made up of several of these containers.
Components
Example: Authentication Controller
Compontents are logical groupings of related functionality in a specific container. These components are not deployable units individually. They are deploy within a container.
Code
Example: UsersRepository
Code is the lowest level in the C4 model. Code elements are the actual classes in your source code. These should be generated from source code and never created manually.
Examples
System Context Diagram

Container Diagram

More Information
If you need more information about the C4 model, head over to Simon Brown's website, c4model.com.