0

イベントソーシングを使用してアプリケーションを実装する場合、稼働中の永続性エンジンはイベントストアです。つまり、過去の時制で、順序または発生のイベントの追加専用ログです。アプリケーションを介してイベントを再生するだけで、任意の時点の状態を再現することができます。追加専用イベントストアは、追加専用コードベースになりますか?

私の懸念は - この追加のみイベント・ストアは、必然的に追加のみコードベースにつながりませんか?コードを削除したり、コードを変更しても、アプリケーションが一連のイベントを再生できない場合、どのようにコードベースを維持できますか?コードのソース行の数が減少することはありますか?

どうかのビジネスルールを変更する必要がある、または厄介なバグが早期適用の初期の頃で、それが禁止状態に入ることを許可されている場合どのような、おそらくさらに悪いですか?障害のあるコードを無期限に生存させる必要がありますか?もちろん、これらの問題の多くは、することができます - 理論的には - イベントのバージョン管理、イベントのスキーマを使用して対応することが、スナップショットのバージョン管理などしかし、イベントソーシングは、その時点での負担になっていませんか?

イベントソーシングは、少なくとも生産で、かなり新しい技術です。私は、2、3年以上それを実行しているアプリケーションはほとんどないと考えています。彼らは10年間でどのように見えるでしょうか?これは、エンタープライズアプリケーションにとって非現実的な時代ではありません。

答えて

0

私の懸念 - この追加専用イベントストアは必然的に追加専用コードベースにはなりませんか?

いいえ、それはあなたの実装から切り離されている追加のみスキーマを、意味しています。

ビジネスルールを修正する必要がある場合、またはおそらく悪いことに、アプリケーションの初期の厄介なバグによって禁止された状態に入ることができたらどうしますか?障害のあるコードを無期限に生存させる必要がありますか?

実際には、ドメインは耐久性のある表現から切り離されています。

はい、あなたのデザインに組み込む必要があるいくつかの一般的なシナリオがあります。イベント履歴の早い段階でエラーを補う必要があるかもしれないという考え方のように。

それは、基本的に、あなただけの現在の状態を保存している場合、あなたがどうなるのかは異なるではありません。あなたのデータベースに、間違った状態にある集合体の表現がある場合、その場で更新するだけです。いくつかの分野を自分たちのものに変えることによって、

アイデアは、イベントソーシングで同じです。参加したくない状態を生成するイベントストリームがあります。参加する必要がある状態に到達するために必要な追加のイベントを特定し、追加します。タダ。

もちろん、これらの問題の多くは、イベントバージョニング、イベントスキーマ、スナップショットバージョニングなどを使って扱うことができます。しかし、イベントソーシングはその時点で負担にならないのですか?

実際にはありませんか?はい、スキルに柔軟性を持たせる必要があります。そのため、モデルを積極的に進化させることができますが、コアでは現在の状態を保存することと違いはありません。はまだ移行します。

しかし、他のプレイヤーと遊ぶこともできます。

スキンライフタイムやレコードのブックがモデルの複数のリビジョンからのデータを蓄積するという事実について考える必要があります。

これはではありません。はすべての足の靴です。優れたメッセージスキーマの設計は投資です。そのスキーマの消費者(この場合は実際にあなたのモデルと加入者を意味します)が独立して進化する必要がなければ、その投資は意味をなさないかもしれません。

関連する問題