The event nature seems like a light version of Erlang or Elixir without the power of those. Erlang and Elixir can run millions of light weight processes though vs 1000s. Still so many questions though like what is deployment like? Build something using just workers so we can see the power of it.
Durable Objects aren't exactly the same as Erlang actors (which is why we don't usually call them "actors" -- we found it led to some confusion), but at some level it's a similar concept.
You can easily have millions of Durable Objects in a Workers-based application.
Currently workerd has partial support for Durable Objects -- they work but data is stored in-memory only (so... not actually "durable"). The storage we use in Cloudflare Workers couldn't easily be decoupled from our network, but we'll be adding an alternative storage implementation to workerd soon.
Durable Objects are incredible - I've been using them and they just make so much sense. I'm surprised none of the other cloud providers have ripped them off yet. Do you think they're too different to the usual app deployment patterns, and have either an operational or a conceptual barrier?
It's interesting to read about Durable Objects. It strikes me as conceptually very similar to what's called Virtual Actors, or Grains specifically in Microsoft Orleans, even if the underlying infrastructure is quite different. Seems like they struggled with naming as well.
One critical thing that I couldn't find info about is what reliability to expect from the persistent storage for a Durable Object. Is it more or less a write to a single disk without redundancy? If there's redundancy, to what degree? Essentially, how much would you need to build on your own in terms of replication for a production scenario if using Durable Objects as primary storage?
I get that they can use other, separate storage if necessary, but either way it seems like an important consideration when designing a system on top of them.
Durable Object storage writes are not confirmed until they are on disk in three geographically separate datacenters. So, pretty reliable.
The fact that there is one unique instance of the object live at a time (and therefore only one client for the distributed storage) lets us do a lot of tricks to hide the storage latency.