celld v0.3.0 is released. This version contains what (hopefully) will be the last major architecture change: a replicated write behind log.
I want celld to be scalable enough to handle a site like Discord. Every channel would be a cell. At an estimated 4B messages per day, before this release celld would be doing ~46k PUTs per second to S3. That equates to $600k/month in write ops alone.
In 0.3.0, celld doesn’t write to S3 on each message sent. It buffers before sending off to object store. Cutting it to ~300 PUTs per second, ~$4k per month.
But doesn’t that weaken the durability and correctness guarantee? In the new version of celld, writes aren’t ack’d until they’ve been persisted on three disks. And should a crash happen in the short buffer period, it can restore from peers. RPO=0, surviving even the loss of an availability zone. This is the replicated write-behind log.
Aside from the cost savings, writes get much faster: ~5ms instead of a ~50ms round trip to S3.
This latest release also includes support for the D1 database, crons, azure blob service, in addition to many bug fixes.
celld is effectively a database. We take correctness and durability problems seriously. The software is becoming more robust, but do keep in mind this is still a 3 week old project and is labeled as Alpha software. We’re making good progress and hope to raise that to a Beta standing soon. Your bug reports and patches are much appreciated!