A C4 Container diagram explains the major applications and data stores within one software system. In C4, a container is a runnable application or a data store, not necessarily a Docker container. It is the level where a team can discuss deployable responsibilities and communication choices without reading classes.
Follow the purchase path
Start at a customer-facing application, locate the entry point and follow the request to the order-related services and stores. Then inspect the event broker and notification path. Which steps must succeed before checkout returns? Which can continue after the order is accepted?
A good container diagram makes that distinction readable. Label a synchronous call with its purpose and protocol. Label an event relationship with what is published or consumed. Avoid using one unlabeled arrow style to imply that every dependency behaves the same way.
Model ownership instead of proximity
Give a store an explicit owner. Placing an orders database next to a checkout API does not prove the API owns it. Record its responsibility and show the actual access path. If several services access the same schema, represent that coupling honestly rather than drawing an idealized database per service.
Similarly, a folder named “services” does not establish independently runnable containers. Check deployment configuration and runtime behavior. Components inside a single process belong at the next level of detail.
Use a tool evaluation exercise
Download the checkout reference model. Render the container view, rename the Payment provider and verify the corresponding context view. Add the Notification worker only to views where its responsibility matters; shared identity does not mean every element must appear everywhere.
In the UXXU C4 model tool, reuse existing architecture elements and maintain separate view layouts. Ask a colleague to find the order store and describe the failure impact of the external payment provider. Measure how much explanation the drawing still requires.
Know when to stop adding detail
Split a container into components when someone needs to understand its internal responsibilities. Add a supplementary deployment diagram when the question is about replicas, regions or infrastructure. Do not squeeze both questions into the same container view.
Read the official container definition and the container guide for further examples. Browse public C4 models to test navigation before building your own.