CQRS is an acronym, and it implies “Command Question Accountability Segregation” – Which once more simply interprets to that you have a special technique for storing and retrieving knowledge.
Throughout my 25 years as knowledgeable software program developer, and 40 years in whole, I feel I’ve seen one app that required CQRS, however I’ve seen a whole bunch of apps implementing CQRS. This disparity between precise utilization and want is de facto only a symptom of CV based mostly software program improvement, the place the developer having applied the unique design cares extra about constructing his CV than fixing the wants of his employer.
To know why that is madness, realise that sometimes the complexity of your drawback simply will increase 10 folds in the event you add CQRS to your app. With CQRS you sometimes want a message dealer, the place none was wanted initially. Putting in Pulsar, Kafka, or RabbitMQ can simply value you a month of improvement, merely to get its configuration information utilized appropriately. Afterwards you will sometimes have to begin desirous about micro service transactional objects, Sagas, document locking, and so forth, and so forth, and so forth. You have successfully magnified the scope of the issue 1 million instances.
Even Martin Fowler suggests to keep away from CQRS when you possibly can, and use CRUD as a substitute. FYI, when Martin advices in opposition to one thing due to added complexity, you may be fairly certain about that it freakin’ provides lots of complexity … 😉
At Aista we’ve got taken a extra daring strategy. Sure, we do have net sockets and even applied these as a easy checkbox you should use when producing your CRUD backends, leading to net socket messages asynchronously printed throughout write invocations, which arguably could possibly be outlined as a CQRS technique. Nonetheless, basically, we are going to do all the things we will to keep away from including complexity to your tasks if we will.
Each time any person in your staff suggests CQRS you might want to be very cautious, and your knee jerk response needs to be believing in that the particular person is extra excited about including complexity for enjoyable, and so as to add “new shiny issues” to his CV, than he (or she) is about fixing your organization’s drawback.
99.9999999999999% of apps on this world don’t want CQRS! Implying 99.999% of all apps that has CQRS are mainly “junkware”, applied that means by egocentric software program builders, for their very own egocentric wants, and the most effective factor to do actually is to easily do SHIFT+DELETE refactoring of the entire thing … :/
Within the video beneath I’m making a CRUD Internet API in 1 second. Should you ask a medium sized software program improvement staff to implement the identical utilizing CQRS, they might simply spend years, and there could be a 90% statistical likelihood of that they’d by no means succeed. Even when they succeeded, the complexity of the factor would render it inconceivable to take care of, and likewise extremely probably scattered with safety points, and the factor would find yourself changing into “junkware” in the long run.
Do not use CQRS, use CRUD please … :/