レポジトリ
Concrntにおいて、ユーザーの投稿・リアクション操作などの、データを書き換える操作はすべて「ドキュメントのコミット」によって行われます。これは一般的にはイベントソーシングと呼ばれる手法とよく似ています。
例えば、ユーザーが新しいメッセージを投稿したいとき、以下のjsonを自身のサーバーの/commit
エンドポイントに投稿します。(このとき、このjsonの文字列に対応する署名を生成し、添付します。)
[TODO]
サーバーはこのjsonを受け取った際に、このドキュメントに基づく操作(今回の場合は投稿のレコードをDBに作成し、各タイムラインに分配し、リアルタイムチャンネルに通知する)を行い、それらが正常に実行されればこのドキュメントをコミットログに保存します。
このように、Concrntにおける変更操作は一覧のドキュメントの流れによって再現可能であるため、サーバーを引っ越したい場合はこれらのログをすべて保存し、他のサーバーで流し直すことによって状態を同期することができます。
また、署名が施されていることから、他のサーバーからもユーザーの情報が第三者によって改ざんされていないことを確認することができます。