That's great. Is it persisted to retry even after a reboot?
What informs the end user, in interactive situations, and what does it tell them?
What if the operation is delayed so much that it no longer makes sense; can we cancel it?
How do we identify a particular one, out of thousands going through the same function: by some of the arguments, like in memoization?
> That's great. Is it persisted to retry even after a reboot?
Absolutely! Our scheduler service manages the state on behalf of the application, even if the program restarts, the operation persists until completion.
> What informs the end user, in interactive situations, and what does it tell them?
Since the Dispatch SDK integrates directly in the code of the application, it's compatible with typical system observability tools. Say you're using metrics or traces to track operations, you can emit this telemetry on your dispatch functions. That being said, we know how important it is to have a built-in solution for this!
> What if the operation is delayed so much that it no longer makes sense; can we cancel it?
Different ways to solve this, one is to simply raise a permanent error so the operation stops, but in some cases it makes more sense for the system to expose controls so the operator can act on group of similar operations for example. Those are features on our roadmap at this time, but definitely agree on the importance!
> How do we identify a particular one, out of thousands going through the same function: by some of the arguments, like in memoization?
Searching through the state or history of the systems is also a key feature that a platform like Dispatch needs to provide to be "complete". We're still in early development so we haven't gotten to add this feature yet, but definitely excited to delivering it!
Today marks an important milestone for us with the launch of the developer preview of Dispatch.
Along with a serverless scheduler, we released an open-source Python SDK, providing developers with a simple programming model to integrate with Dispatch. This is the first of many steps on our mission to make distributed application development radically simpler.
To all developers tired of wrestling with infrastructure and eager to experience better tools to develop distributed applications, check out our blog post and take Dispatch for a ride!
A major barrier to Erlang is adopting a new programming language, development tooling, etc...
What we aim to do with Dispatch is bring those distributed programming superpowers to mainstream programming languages that are developers are using.
A major conviction we have is that it should be possible to adopt Dispatch incrementally in an existing application.
What we hope to deliver with Dispatch is a model that is a lot more incremental in its adoption and much simpler than what existing solutions have been able to achieve so far, both in terms of development UX and operational complexity.
Give it a try, and let us know what you think of it!
unless the backend breaks somehow (server changed ip/ssl/imap password...) in which case it will result in an endless useless retry loop?