私たちには、C++で書かれた既存のアプリケーションとリレーショナルデータベースがあります。アプリケーションはC#で書き直す必要があります。ビジネスは、誰が誰が変更したのかを追跡する必要があります。 CQSは読み書きのためにうまくいくようですが、既存のアプリは新しいアプリと一緒に使用する必要があるため、イベントソーシングはほとんど不可能です。既存のC++アプリケーションは、データベースに直接書き込むコンポーネント(データビュー)を使用します。 進化するには、C++アプリケーションの編集可能なテーブルをすべて変更して、新しいアプリケーションにサービスを呼び出す必要があります。これは非常にコストがかかります。Cqrsと既存のリレーショナルデータベースのイベントソース
古いC++アプリケーションを壊すことなく古いものから進化させることができるアーキテクチャが必要であり、それらを連携させる必要があります。
私たちが持っているアイデアは、イベント調達のためのすべてを準備していて、使用していないということです。次に、両方のアプリが書き込むトラッキングテーブルを作成します。ブロックの準備ができたら、新しいアプリでその部分をアクティブにし、古いC++アプリでその部分を無効にします。
しかし実際には、転送中に既存のデータベースに保存するのが最善の瞬間ですか? CommandHandlerでは? EventHandlerでは? UserAddedイベントは、ユーザーが実際に追加されたときにのみ論理的に送信される場合があります。私たちは気分の悪い指揮官を最善の選択とすると思います。
他のアイデアですか?
レガシーC++アプリケーションの誰が&何をしたのかを知る必要がありますか? –
はい、それはGDPR要件ですが、伝統的にはそれほど厳しくはないと言います。我々はリスクを冒したいとは思わないし、両方のために働く解決策を見つけるのが大好きです。最後のmeegingでpop'upという新しいアイデアは、すべてのイベントをSQL Server上で完全に追跡することです。問題は、古いC++アプリケーションがテーブル内のSqlUserを使用し、アプリケーション内の認証されたユーザーではないことです。 – Emmanuel
あなたは単一のデータベースを持っていますか?トランザクションを使用していますか? –