Some clarification on what "one log" means here: - It means using one log across different concerns like state a, communication with b, lock c. Often that is in the scope of a single entity (payment, user, session, etc.) and thus the scope for the one log is still small. You would have a lot of independent logs still, for separate payments. - It does _not_ mean that one should share the same log (and partition) for a…
Interesting read, not my area but I think I got the gist of it. In your Restate example of the "processPayment" function, how do you handle errors of the "accountService" call? Like, what if it times out or returns a server error? Do you store the error result and the caller of "processPayment" has to re-trigger the payment, in order to generate a new log?
Every System is a Log: Avoiding coordination in distributed applications
61–70 of 157 posts
Re: Every System is a Log: Avoiding coordination in distributed applications
#62This post makes a great case for how universal logs are in data systems. It was strange to me that there was no log-as-service with the qualities that make it suitable for building higher-level systems like durable execution: conditional appends (as called out by the post!), support very large numbers of logs, allow pushing high throughputs with strict ordering, and just generally provide a simple serverless experien…
very exciting. this is the future. i am working on a very similar concept. every database is a log at its core, so the log, which is the highest performance part of the system, is buried behind many layers of much lower performing cruft. edge persistence with log-per-user application patterns opens up so many possibilities.
Re: Every System is a Log: Avoiding coordination in distributed applications
#63Haven't formed thoughts on the content yet, but happy to see a company launching something non-AI for a change.
My startup, Yetto ( http://www.yetto.app ) is building a better way for support professionals to do their job. (Shameless plug but we always gotta hustle.) We, too, are weighed down by how much space AI-focused companies are taking.
Re: Every System is a Log: Avoiding coordination in distributed applications
#64Though to be fair I've only read Temporal docs, and this Restate blog post, without much experience in either. Temporal may not have as much on the distributed locking (or concept of) side of things that Restate does, in this post.
Re: Every System is a Log: Avoiding coordination in distributed applications
#65It sounds like they have just re-discovered Distributed Transactions with a Distributed Transaction Coordinator. But DTs have a huge problem: What happens if the owner of the lock netsplits? Either the DTC waits (potentially forever?) for the owner of the lock to get back in touch and release the lock, or a timeout is applied and now the owner of the lock (who may be unaware of the netsplit) will be out of sync with…
Re: Every System is a Log: Avoiding coordination in distributed applications
#66Earlier quoted context omitted.
Interesting read, not my area but I think I got the gist of it. In your Restate example of the "processPayment" function, how do you handle errors of the "accountService" call? Like, what if it times out or returns a server error? Do you store the error result and the caller of "processPayment" has to re-trigger the payment, in order to generate a new log?
By default, failing ctx.run() calls (like the accountService call) will be retried indefinitely until they succeed unless you have configured a retry policy for them. In the case of a configured retry policy where you have exhausted the number of retry attempts, Restate will mark this call as terminally failed and record it in its log as such and return it to the caller.
Re: Every System is a Log: Avoiding coordination in distributed applications
#67I wonder how this compares, conceptually, to Temporal? While Temporal doesn't talk about a single centralized log, I feel the output is the same: your event handlers become durable and can be retried without re-executing certain actions with outside systems. Both Restate and Temporal feel, as a developer coding these event handlers, like a framework where they handle a lot of the "has this action been performed yet?"…
If you only consider appending results of steps of a handler, then you have something like Temporal.
This here uses the log also for RPC between services, for state that outlives an individual handler execution (state that outlives a workflow, in Temporal's terms).
Re: Every System is a Log: Avoiding coordination in distributed applications
#68> Having a single place (the one log) that forces a linear history of events as the ground truth and owns the decision of who can add to that ground truth, means we don’t have to coordinate much any more. Well, yes, but then you've backed into CAP again because you only have one log.
But can't any log be implemented as a CRDT? Was that not implied in the post? I didn't read it that close...
Re: Every System is a Log: Avoiding coordination in distributed applications
#69Earlier quoted context omitted.
My startup, Yetto ( http://www.yetto.app ) is building a better way for support professionals to do their job. (Shameless plug but we always gotta hustle.) We, too, are weighed down by how much space AI-focused companies are taking.
TBH looking at helpdesk software in 2025, I would expect new ones to be built AI first. It would be hard for me to consider one without at least some sort of LLMs helping with triage or at classifications of tickets, etc.