Temporal is even better as it replaces Thrift with gRPC and adds tons of improvements.
Would be interested to know what kinds of things you're using it for/what scale/which language client?
About two years ago I built a custom workflow engine in python where I had a few primitives (filesystem, database access, browser (puppeteer scripts), etc), and would define a workflow using those primitives using a YAML DSL.
In a couple weeks I ported the whole thing to Temporal (Java client), where each of those primitive groups is a different activity, which runs in a separate worker. I have a browser worker, which runs in the only servers that have internet access, a filesystem worker, which is on a Windows machine serving as an entrypoint to the company's windows filesystem, a database worker, etc.
This is all very scalable, and I can run as many of each worker and the engine itself as I like.
Currently the scale is not too big though. I launch a few "main" workflows in certain days of the month that will then spawn up to 4 thousand child workflows which run simultaneously with no problem.
This discussion has more on Airflow vs Cadence: https://news.ycombinator.com/item?id=19732447
To understand why Cadence is so useful, you have to go a bit beyond the traditional ETL scheduling usages IMO.