23 comments

[ 1.6 ms ] story [ 4.3 ms ] thread
Well that couldn't have been any more timely. Did they know? Were they keeping this in a back pocket for the time?

CloudFlare OS: https://blog.cloudflare.com/cloudflare-os/ https://news.ycombinator.com/item?id=49182996

And yes, celld is isolates! The very lightweight within v8 isolation boundary. Hence the "very low idle cost". The deno team rolled their own new runtime! This one without deno_core! Shout out to this excellent 2022 post: https://deno.com/blog/roll-your-own-javascript-runtime https://news.ycombinator.com/item?id=35819990 https://news.ycombinator.com/item?id=35819990

It's super super exciting having an age where many pieces of software can all run with low profiles. Very timely, again, for the unbelievably order of magnitude (and thats 10 to the not 2 to the, for you fellow computer nerds) ish ram crunch we are in. Next up, at some point, ideally we get some v8-like runtimes where we can share libraries across multiple isolates! Separating the shared code from the shared data, so we have multiple instances of the library, seems much harder. (It feels like wasm has some/much promise here and I eagerly await clearer signals that code-sharing while sandboxing is indeed possible)

> Next up, at some point, ideally we get some v8-like runtimes where we can share libraries across multiple isolates!

I'm probably missing your point, but aren't wasm memories achieving exactly this? Just an example from wasmtime: https://docs.wasmtime.dev/examples-multimemory.html

All we need is a way to run these on spot instances
> addressed by name and replicated to an S3-compatible bucket you own; nodes coordinate through that bucket alone, with no control plane or consensus

... but that S3 _is_ the control plane and consensus layer, no? You're just pushing this down the stack to whoever runs that S3 clone.

sure, but s3 is far easier to buy and also far more reliable than typical distributed systems coordinator stuff like etcd/zookeeper/consul. every major cloud offers it, and there’s several decent open source options.
i donno...i have some doubts about this

cloudflare gives you that instant geo-sync across the world that is hard to beat

with Celld do i need to buy bare metal in major continents

> cloudflare

the stuff is great when it works but Durable Objects can be quite expensive. whenever i get too excited about em all it takes is a little time trying to price it out to calm me down.

> do i need to buy bare metal

my first idea would be to run celld on AWS Kubernetes deployed to local zones https://docs.aws.amazon.com/eks/latest/userguide/auto-local-...

it’s not “region: earth” like cloudflare but perhaps worth the trade off.

Finally!

So happy to see support for running durable objects outside of one provider. Upvoted.

The "durable object" concept has been repeatably demonstrated to be a valuable abstraction.

"Each object is its own SQLite database, addressed by name and replicated to an S3-compatible bucket you own" -- this concept can take you a long way, both in its power and simplicity.

I like it! Would be great if I could run locally from the start without configuring an s3 for easy playing/prototyping
(comment deleted)
Wonder if this will become common practice from now on ?

  > Pull requests are disabled. Coding agents make it too easy to send a large, 
  > low-context change that costs maintainers more time than it saves. 
  > Thoughtful contributions are welcome; please understand the code, 
  > keep the patch focused, and respect the review time you are asking for.
  > 
  > Send a git format-patch attachment to ...
I recently spun up a simple app for our annual mango tasting event[0] using Cloudflare Workers and Durable Objects.

It worked really well! Excited to see more options outside of Cloudflare.

[0]https://github.com/jumploops/mangotango

claim is that very many things are not needed, but they are. they are just provided by the layer beneath (S3). so isn't correctness highly dependent on s3 correctness? was s3 built for that, vs just plain durability? for example, would it be just as reliable with minio?

i would prefer a thing that was more self-contained, not dependent on a black box service layer underneath.

much apologies if i just have a poor understanding.

Could someone explain to me in practice how one would use these to do… a thing? Like a straightforward use case? Having trouble figuring out what these are for
Hey, is this something that compares to Temporal or Restate or Azure Durable Functions? If so, what are the differences and when would I use Cells instead of the aforementioned?
There's some overlap and some similar use cases. I've seen a few people being confused between Durable Objects and Durable Execution.

Short writeup: https://crabmusket.net/2024/durable-execution-versus-session...

Summary:

I think the way to decide is, do you want to program with "objects" or "processes"?

I'd use Durable Objects (or what I called Session Backends in my article, after Jamsocket) if I wanted to model an "entity" that lasts indefinitely (e.g. a Figma doc, a user, a concert/event). I'd use a temporal/restate function for something that has a linear sequence of events and eventually comes to an end.

This isn't a hard rule. You can get the same outcome out of both technologies. (For example, Cloudflare built Workflows on top of Durable Objects; Rivet did the reverse.) You can use either one to implement the other, but you're going to be going out of your way based on what APIs are provided.

Ryan & the Deno team thanks for this. not that I'm going to use it anytime soon - but yeah having durable objects outside Cloudflare and also self hosted ones means a lot.
Wish there were more performance related benchmarks that compare this to cloudflare durable objects.
I don't think AI is killing open source.

It's just making it way easier to spam maintainers with code.

Good contributors are probably worth even more now.

Seeing something like this reminds me of Kleppmann's blog post: https://martin.kleppmann.com/2016/02/08/how-to-do-distribute....

celld's README states "Object-storage compare-and-swap ensures that exactly one node owns a cell at a time," but I'm skeptical this actually holds at the point where data is written to storage - I had an AI skim through the code with me, and the actual segment writes looked like plain, unconditional PUTs with no epoch check.

In many cases, I think using Cloudflare's Durable Objects is probably the right call instead.