C4 Model
The C4 model is a visual notation for drawing software architecture diagrams. It was created by Simon Brown, and is based on the concepts of Conway’s Law and the “4+1” architectural view model. The C4 model is intended to provide a way to communicate software architecture by focusing on the relationships and interactions between software components, rather than the individual components themselves.
The C4 model uses four levels of abstraction to represent a software system:
Context: represents the external environment in which the system exists, including other systems and external stakeholders. The context level provides a high-level view of the system and its environment, and is typically used to answer the question “What does the system do and who does it serve?”
System: represents the entire software system, including all of its components and how they interact with each other. The system level provides a more detailed view of the system, and is typically used to answer the question “What are the main components of the system and how do they fit together?”
Container: represents a logical grouping of components that are deployed and run together, such as a microservice or a library. The container level provides an even more detailed view of the system, and is typically used to answer the question “How are the components organized and deployed within the system?”
Component: represents a single, self-contained piece of functionality within the system. The component level provides the most detailed view of the system, and is typically used to answer the question “What does each individual component do?”
Each level of abstraction is represented by a box in the diagram, with the name of the level at the top and the contents of the level inside the box. The lines between boxes represent the relationships and interactions between the different levels of abstraction.