The following considerations should be applied while using this pattern:
- Transactions comprising read and write operations are hard to implement. Usually such operations are contained to an individual Microservice or require the use of other transaction mechanisms such as 2 Phase Commits (2PC) or compensating transactions.
- CQRS is asynchronous by nature, therefore it is hard to ensure consistency across the various Microservices at any point of time.
- CQRS pattern might lead to higher development and infrastructure costs as multiple services need to be developed and deployed.