Hi all, I'm really excited about Prefect, and am also looking at Dagster and Temporal. Where can I learn more about the differences between the three? Here's my initial understanding.
Dagster,
Prefect, and
Temporal are the most promising options. All of these tools have positive reviews from developers, lots of production users, and a ton of product momentum.
Temporal is a workflow manager.
Demo code here. Several companies that I know are using Temporal and have very positive experiences. It also is a more generalizable tool that we could use for complex workflows such as device onboarding and other complex microservice sagas. However, it requires more customization to get it working, it’s more difficult to code in because all of your functions have to be able to run asynchronously, and it doesn’t have out-of-the-box data pipeline tools.
Prefect takes a generalizable workflow manager approach that Temporal takes, with a bit more data pipeline focus.
Demo code here. It’s easier to use than Temporal because code can be synchronous, and it's less opinionated than Dagster because it has fewer abstractions such as I/O management, partitioning, and a software development lifecycle. Unlike Dagster and Temporal,
it doesn’t persist task execution results. It’s imperative only, with no declarative option. This imperative philosophy extends to the deployment of the jobs.
The Prefect API internal state, not the configuration code, is the state of the jobs. TODO figure out how the other frameworks keep track of configuration state.
Dagster specializes in data orchestration as opposed to generalizable workflow management, and it’s more opinionated than
Prefect and Temporal. Dagster has more data pipeline specific tools, has a declarative approach to data pipelines as well as an option to do it imperatively, and has a nice software development lifecycle.