Container diagram

Once you understand how your system fits in to the overall IT environment, a useful next step is to zoom in to the system boundary with a Container diagram. In C4, a container is an application or a data store. For example, a server-side web application, a client-side single-page application, a desktop application, a mobile app, a database schema, a folder on a file system, an Amazon Web Services S3 bucket, etc.

The Container diagram shows the high-level shape of the software architecture and how responsibilities are distributed across it. It also shows the major technology choices and how the containers communicate with one another. It’s a simple, high-level technology focussed diagram that is useful for software developers and support/operations staff alike.

Example

A container diagram

Diagram key

A diagram key

Scope

A single software system.

Primary elements

Containers within the software system in scope.

Supporting elements

People and software systems directly connected to the containers.

Intended audience

Technical people inside and outside the software development team; including software architects, developers and operations/support staff.

Yes, a container diagram is recommended for all software development teams.

Notes

This diagram says very little about deployment aspects such as clustering, load balancers, replication, failover, etc because it will likely vary across different environments (e.g. production, staging, development, etc). Deployment information is better captured via one or more deployment diagrams, one per environment.