Hey Temporal community,
Currently I am evaluating using Temporal for an event-driven workflow platform, but I don’t know if the platform is capable of handling my requirements. Therefore, I would kindly ask for assistance.
The following scenario is planned: I want to build an event-driven DAG platform where users can create their own workflows. Those workflows consist of nodes and edges, which can be connected. Those are nodes for data manipulation like aggregation, merge, and split, but also things like OpenAPI or database connectors for fetching external data or offloading data to Spark batch processing for large processing. Overall, to have a general idea, you could think of something like n8n. Each node would be a Temporal action in this case.
The workflows should be triggered via an event coming from either Kafka or Nats io.
-
However, I don’t know whether this platform is capable of the load. While users can create their own workflows, this means that there are lots of workflows that are being run simultaneously. To give a number, it should still be performant with millions of workflows running at once or being started at once when going with the approach of starting a workflow on an incoming event instead of using a signal to let an already started workflow wait. Is this working with temporal?
-
Ideally I want to have low latency as near as possible. However, due to the nature of temporal logging every state to the database, I might have some overhead. I think I would have to live with this. Temporal Cloud has write-ahead-log (WAL). Setting up something like this would be impossible on the selfhosted version right?
-
Those workflows can handle large amounts of data and serve as an ETL pipeline. Temporal actions have a parameter and return limit, which you can send. Because of this, I might need to offload results to an external storage and to an external processor like Spark. But with this approach, I will lose the main argument of Temporal in replaying on failure. When storing the data externally, does it even make sense to use Temporal for such an approach?
Thanks in advance
Greetings