| ▲ | horsawlarway 4 hours ago | |
This is a rough explanation, but generally it does a couple of things that are helpful. Functionally, it's a "workflow" runner (ex - you can mostly treat it like a queue, where you've got workers that are picking up work to do). But it wraps a couple of pretty handy features on top like: - It preserves most arguments to actions, and it makes system details deterministic for retries (ex you can re-run a workflow at a later time, and temporal will make sure the code sees details like date and time as though it were the original run, and will yell at you if you try to write code that won't be deterministic on retries) - It supports very long waits easily. (ex - very easy to have a workflow do a couple things, wait a week, then do some more things). - It has decent profiling and UI tools - It can "restart" a failed workflow deterministically from the step at which it failed (using details from the original point) --- Basically - it's a background worker service that's put a lot of time and thought into ways to handle failures better. It absolutely still has some considerable pain points though, and I find it difficult to use for larger tasks (ex - their message gRPC size limit of 4mb is a b*&^% to work around, since it often breaks a lot of the utility they provide, and the history cap at 50mb is also really painful in certain situations.) Really - I think it was just the right tool at the right time to make calling LLMs with long waits relatively easy and somewhat foolproof. | ||
| ▲ | t2r3121 3 hours ago | parent [-] | |
Another cool thing is it handles version rollouts. Say a customer started some kind of business process on v1.1 of your code, and then you deploy v1.2. You can configure whether that customer should continue that process on v1.1 - even if it's something that takes a long time in the real world - or whether they should be upgraded to 1.2. And it's not just one version but you can do this with an entire rainbow of versions across your business (think A/B testing, custom workflows for different use cases, lots of dev and staging environments, etc.) | ||