So I am exploring two use cases for two not disimilar business use cases that need to be fulfilled in the coming year for the company I work for.
I think Temporal would work well for one, but not the other, based on what I am reading.
So we are essentially trying to deconstruct a monolithic application into micro-services more or less. The way it existed previously was as a series of Jars that could be either triggered by a Batch Process, a Soap Call or as part of a UI Workflow.
The UI workflow use case I could see working well. We could construct a UI on top of a bunch of newly constructed micro services, And Temporal could sit between the UI and micro services receiving receiving commands to advance the workflow etc from the UI.
The other use case would be replacing the Soap and Batch interface of that application. I think I could see a batch use case for Temporal (Batch is after all a defacto asynchronous process). But Could we replace the SOAP interface with a new Rest Interface that Sits on top of Temporal?
I guess this is begging the question, is temporal a good use case for microservice orchestration that needs to happen quickly, ideally in less than 5 seconds and return a result back to the client (either Failure or success)?
I guess this is begging the question, is temporal a good use case for microservice orchestration that needs to happen quickly, ideally in less than 5 seconds and return a result back to the client (either Failure or success)?
Temporal main value proposition is resiliency. It ensures that your business process executes exactly once in the presence of intermittent (which can be pretty long) failures.
If you don’t want to complete your transaction eventually in case of some dependency being down and just return an error immediately to the caller then Temporal doesn’t bring much value to your use case.
Thanks for the answer maxim.
So in this particular case, the case of replacing the soap interface with a rest interface, it seems like a library like Akka would make more sense to ‘Orchestrate’ any recomposed microservices as opposed to temporal right?
It is not about long running or not. It is about resiliency. Do you want your operation to complete in the presence of failures and ensure to run compensations if necessary? Then Temporal is a good fit. But if you can bail out on any error and do not care about data consistency, etc then Temporal is overkill.