Multi-group Raft as a daemon. Build a custom bulletproof distributed storage service in any language on top of high performance multi-group Raft just by implementing a handful of HTTP endpoints.
The app should know what shards that replica is responsible for, so then it may call start when it's ready
then raftd doesn't have to poll the app, and can consider any network failure trying to access the app as a catastrophic failure (as a safe and naive implementation)
The readiness check can return an array of shards that are ready, so the replica should be able to wait until all shards are ready from the raft managers.
Additionally, the app should monitor to see if any shard is unavailable for some reason. It could attempt to restart it in theory.
The app should know what shards that replica is responsible for, so then it may call start when it's ready
then raftd doesn't have to poll the app, and can consider any network failure trying to access the app as a catastrophic failure (as a safe and naive implementation)
The readiness check can return an array of shards that are ready, so the replica should be able to wait until all shards are ready from the raft managers.
Additionally, the app should monitor to see if any shard is unavailable for some reason. It could attempt to restart it in theory.