前置き
上の前回の記事で、
イベントソーシングは損失の影響が「データが完全に失われる(復元不可能)」
とあったことに気づきましたか?
この 「データが完全に失われる(復元不可能)」 という表現は、バックアップがないという前提に立った場合の、アーキテクチャ上の役割の深刻さを示しています。
もちろん、実際のシステムではバックアップで対応しますが、なぜそのように表現されるのか、その理由を今回解説します。
それによって、
イベントソーシングにおけるデータのバックアップ戦略課題
という、新たなトレードオフ問題にアンテナを張ってほしいという思惑があります。
なぜ「復元不可能」と表現されるのか
それは、イベントソーシングにおけるイベントストア(イベントの記録場所)が、従来のデータベースとは比較にならないほど根源的な役割を担っているからです。
🏦 銀行の金庫のアナロジー
従来のデータベースの損失
これは銀行の支店のATMが壊れたようなものです。
一時的に現金を引き出せず不便ですが、銀行の本店にある巨大な金庫(バックアップやマスターデータ)は無事なので、ATMを修理すれば元通りになります。
ATM内の現金(キャッシュやレプリカ)は、本店の金庫から復元可能です。
イベントストアの損失
これは銀行の本店にある、
唯一無二の巨大な金庫そのものが消滅 したようなものです。
すべての顧客の預金情報や取引記録の原本がそこにしかなかったため、誰にいくら資産があったのかを証明する手段が完全に失われます。
イベントソーシングの「唯一の真実の情報源」という特性により、他のどの支店のATMを調べても、根本となる情報がないため復元は不可能です。
イベントストアは、まさにこの「唯一無二の金庫(原本)」なのです。
アプリケーションが画面に表示している「現在の状態」は、すべてこの金庫の中身を都度計算して作り出したコピー(写し) に過ぎません。
原本がなければ、コピーも作れません。
バックアップで対応できないのか?
もちろん、実際の運用ではデータバックアップで対応します。
「復元不可能」という言葉は、システムのアーキテクチャ上のリスクの深刻さを強調するための表現であり、
「バックアップという手段が存在しない」という意味ではありません。
しかし、イベントソーシングにおけるバックアップは、従来のデータベースよりもさらに重要性が増します。
復旧ポイント (RPO) の重要性
バックアップは、ある特定の時点までのデータを保護します。
もし、最後のバックアップが昨日の深夜0時で、今朝9時にイベントストアが消失した場合、
0時から9時までの間に発生したすべてのビジネストランザクション(注文が確定した、支払いが行われたなど)は、完全に失われます。
これは単なるデータ欠損ではなくビジネス上の事実そのものの消滅を意味します。
堅牢なバックアップ戦略が必須
このリスクのため、イベントソーシングを採用するシステムでは、単純な日次バックアップだけでは不十分です。
イベントをリアルタイムに近い形で別の物理的場所(例:クラウドの別リージョン)にストリーミングし続けるなど、
継続的なバックアップ戦略が不可欠
となります。
結論
一応まとめとして、従来DBとイベントストアの比較表を以下に載せておきます。
結論として、「データが完全に失われる(復元不可能)」という表現は、
イベントストアがシステムの唯一絶対の真実の源泉であり、
その損失は他のどんなコンポーネントの損失よりも壊滅的
であることを示しています。
そのため、それを保護するためのバックアップ戦略は、アーキテクチャ設計において最も優先的に考慮されなければならないのです。
これだけでは、まだまだ内容が浅いため、次回ん記事でもっと深堀します。
