An important caveat is that C4 is narrowly tailored to monolithic software systems. When diagramming cloud or (micro-)service systems, its prescribed abstractions start to work against you. For example, there is no appropriate level for (e.g.) VPCs, virtualized containers, or abstract concepts like microservices. At that point, you’re left either abandoning C4 or debating with everyone about the exceptions you have to make to make it fit.