Search code examples
node.jsaws-lambdacloudscalingresolvejs

What is the production deployment / runtime architecture of ResolveJS backend systems?


Does the reSolveJS generally run as a single NodeJS application on the server for production deployment?

Of course, event store and read models may be separate applications (e.g. databases) but are the CQRS read-side and write-side handled in the same NodeJS application?

If so, can / could these be split to enable them to scale separately, given the premise of CQRS is that the read-side is usually much more active than the write-side?

The reSolve Cloud Platform may alleviate these concerns, given the use of Lambdas that can scale naturally. Perhaps this is the recommended production deployment option?

That is, develop and test as monolith (single NodeJS application) and deploy in production to reSolve Cloud Platform to allow scaling?

Thanks again for developing and sharing an innovative platform.

Cheers, Ashley.


Solution

  • reSolve app can be scaled as any other NodeJS app, using containers or any other scaling mechanisms.

    So several instances can work with the same event store, and it is possible to configure several instances to work with the same read database, or for every instance to have its own read database.

    reSolve config logic is specified in the app's run.js code, so you can extend it to have different configurations for different instance types.

    Or you can have the same code in all instances and just route command and queries to the different instance pools.

    Of course, reSolve Cloud frees you from these worries, in this case you use local reSolve as dev and test environment, and deploy there.

    Please note that reSolve Cloud is not yet publicly released. Also, local reSolve can not have all required database adapters at the moment, so those yet to be written.