2
votes

I am trying to build a microservices POC and trying to incorporate concepts of ES/DDD/CQRS, so I had a couple of questions for practitioners out there who have actually implemented this:

1) Is it possible to build microservices without using ES, since it seems that this adds a major amount of complexity ?

2) Has anyone actually built production microservices using ES/DDD/CQRS with Nodejs, did you use any framework ? I ask this because it seems like if you want to go down this route, you have to build all of the infrastructure yourself, as no full framework such as axon, or akka, exists in the node community, and you basically have to roll your own.

3) What would be the best technology stack to use for building microservices which has a decent framework available to let you concentrate on business logic ?

4) In an EDA architecture with microservices, when you have multiple instances of the same service available, because CQRS requires a separate read/write model, where they can be implemented as two completely separate services, does this imply that for a service A there will be multiple read model services which all need to keep their projections up to date based on the events being received ?

For people who have actually implemented this, can you provide your guidance/experience with this ?

1
I don't know enough Node to talk about stack and frameworks, but the answer to the first part is "yes, it is possible to build microservices without using event sourcing".VoiceOfUnreason
I don't think there is neither the need nor quality framework that make you build microservice or ES/DDD/CQRS system. And for a POC you should just use the minimum tooling... messaging, deployment, eventsourcing storage if you do ES...rad
Addressing #2, there actually is a CQRS and event-sourcing framework for JavaScript / Node.js, called wolkenkit.Golo Roden

1 Answers

1
votes

1) Yes. Event sourcing is only an architectural pattern and not mandatory for microservices.

2), 3) There is full microservices framework for NodeJS. It contains a lot of microservices features. You don't need to worry about how transporting messages & events, handle retries or implement circuit breaker logic. You can focus only on business logic.

4) Yes, if you store models in memory, all instances will receive model events in order to update local projections/aggregations.