These are challenges that are experienced across the codebase. It is important for the software architecture to address these concerns in a uniform way.
Some examples of cross-cutting concerns are: event logging, command cancellation, serialization, state machine communication, and memory management.