C4 is a model created by Simon Brown for depicting a software architecture by the 4 Cs — Context, Container, Component and Code–, as per the following definitions:
- Context – the highest level of abstraction and describes something that delivers value to its users.
- Container – something that needs to be running in order for the overall software system to work (e.g.: a Server-side web application, a Microservice, a Serverless function, a File system)
- Component – a collection of implementation classes behind an interface.
- Code – the code elements (e.g. classes, interfaces, objects, functions, database tables, etc) within the component in scope.
I have used C4 model as an activity in technical inception sessions, for detailing the technical aspects for the proposed software solution.
The 4 Cs terminology (context, containers, components and code) is commonly used by many organisations and many types of software. Although, it is important to note that ‘container’ is not the docker container. Two examples of containers: (1) a micro-service, along with its data store, and (2) a monolithic application with a number of components running inside it
For more about the C4 model, check out https://c4model.com/