This document discusses several enterprise software patterns including bounded contexts, command query responsibility segregation (CQRS), domain events, event sourcing, asynchronous messaging, non-relational data storage, performance versus scalability, and scale-up versus scale-out. It provides definitions and examples of how these patterns address challenges with complex enterprise applications and domains by decomposing models, separating reads from writes, using events to communicate changes, and leveraging asynchronous and distributed architectures.