CQRS
Stack doesn't follow CQS as it both deletes and reads at the same time. FileExists on left can become stale as file may be deleted after FileExists is called. Code on right is safer method however it doesn't follow CQS. Scalability Always far more Reads than writes, so the separation allows you to scale both independently. For instance you could have 1 server for all writes and 10 servers for all reads. Performance You can add in customised performance enhancements to the read side such as caching and highly optimised queries. Simplicity Rather than have one model that is trying to account for reading and writing, CQRS allows you to have one optimised for the specific task of reading or writing. Allows you to make different decisions for reads and writes. We've only model that does one thing well. CQRS solves a lot of problems with CRUD based interface. How many features are in this UI? The solution to solve a CRUD based interface is a Task based interface...