Quick question. We have 4 microservices which are exposing APIs and Kafka today. And an orchestration is being done via a centralized orchestrator as of today.
We are looking at temporal to help us with orchestration of flows across the 4 microservices that we have.
Just wanted to see which is the right approach.
-
Keep the 4 services as it is and just replace the orchestration service to be a temporal based workflow engine - which will have activities as part of workflow and these activities would invoke the 4 existing services vis APIs
-
Make the 4 services also to be aware of Temporal so the activities are directly implemented in these 4 services and they pick the request from activity task queue directly from temporal server.
With Option 1 - I feel that there would be too many i/o operations when invoking an activity from workflow. Workflow – GRPC–> Temporal Server → Task Queue → Activity Worker → Rest call to microservice and gets the response. Response would again go through the same path but backwards to go back to workflow (please correct me if I am not). But the advantage with option 1 is that the existing microservices know nothing about temporal and can work as it is today
With Option 2, I feel the i/o comes down but all services in architecture is aware and consume tasks from task queues directly from temporal
Can you please let me know what’s the preferred approach here?