-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Hi @javiertoledo, I like this repo, the READMEm and the deterministic and analytical way to reach the conclusions. Congratulations!
Some time ago, I was looking for this type of study, but I did not find any.
I was especially worried about how often developers consider the CQRS+ES solution "overengineering". In my experience, when you have to maintain a project after prototyping you have to do a lot of "overengineering" in order to make it work. And complexity grows exponentially.
I also tried to compare both solutions (without Event Sourcing and without metrics). I just wanted to compare the readability and maintainability of both solutions.
- CQRS: https://github.com/josecelano/ddd-laravel-sample
- CRUD: https://github.com/josecelano/my-favourite-appliances
As you mentioned, you should evaluate if the solution fits your case, but something I see very often is that applications that are intensive in reports/views/read become very fast a chaotic mess, where maybe you can have a well-organized code, but where all is coupled to all in the database. Very often, all the complexity is hidden in the database, and the domain logic is very coupled to the persistence. I guess you could have projections (read models as DB views or duplicate info in other tables or DBs) without CQRS or ES, but I think it would not be as easy to integrate as when you use these CQRS+ES patterns.
On the other hand, I have to say I have no experience with this approach in production and I know there are other problems you do not have with the CRUD version. I would like to see also a comparison between things that are easier but also with things that can be harder. In my case, for example, after executing a command you do not have the projection of the new entity immediately and you have to deal with that type of asynchronous problems when you split the write and read models.