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

System Context

Container Diagram

System Context

More Information

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