問題タブ [dddd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
api - REST + イベント ソーシング + CQRS を一緒に使用できますか
REST + イベント ソーシングの基本を理解しています。私は厳密な RESTful API に取り組んだことはなく、イベント ソーシング プロジェクトでもありませんでした。
両方を一緒に使用できるかどうかを誰かが説明できますか?
イベント ソーシングの場合と同様に、クライアントがイベントを送信します。これは、サーバー上にイベントの単一のコレクションがあり、API のすべての POST がそのコレクションにあり、イベントを追加することを意味しますか?
クライアントは、サーバーに送信できるコマンドをどのように検出できますか?
cqrs - Kafka を (CQRS) イベントストアとして使用する。良いアイデア?
以前にKafkaに出くわしたことはありますが、最近、Kafka がおそらくCQRS、eventstoreとして (の基礎として) 使用される可能性があることに気付きました。
Kafka がサポートする主なポイントの 1 つ:
- イベントのキャプチャ/保存、もちろんすべて HA。
- Pub/Sub アーキテクチャ
- 新しいサブスクライバーが事後にシステムに登録できるようにするイベントログを再生する機能。
確かに、私は CQRS/イベント ソーシングに 100% 精通しているわけではありませんが、これはイベントストアのあるべき姿にかなり近いようです。面白いのは、Kafka がイベントストアとして使用されていることについてあまり見つけられないので、おそらく何かが足りないということです。
では、優れたイベントストアであるために Kafka に欠けているものはありますか? それはうまくいくでしょうか?それを使用して生産?洞察、リンクなどに興味があります。
基本的に、システムの状態は、通常行われているシステムの現在の状態/スナップショットを保存するだけでなく、システムがこれまでに受信したトランザクション/イベントに基づいて保存されます。(会計における総勘定元帳と考えてください。すべてのトランザクションが最終的に最終的な状態になります) これにより、あらゆる種類の優れたことが可能になりますが、提供されたリンクを読んでください。
domain-driven-design - アカウンティング ドメインの CQRS、DDDD
集計を適切にモデル化する方法を知りたいです。ドメインはアカウンティングで、Account、AccountingEntry (代わりに値オブジェクトにする必要がありますか?)、AccountingTransaction の 3 つのエンティティがあります。アカウントは、顧客の銀行口座と言えます。AccountingEntry はアカウントのエントリであり、AccountingTransaction は単一のトランザクションを構成する複数のエントリを関連付けます (たとえば、アカウント A からアカウント B への送金)。一緒。
私の考えでは、AccountingTransaction 内の集計として Account と AccountingTransaction をモデル化し、AccountingEntry をコレクションとしてモデル化します。これは、トランザクション内のすべてのエントリの合計が 0 になる必要があるという不変条件をアカウンティング トランザクション集計で強制できるようにするためです。エントリは、関連付けられたアカウントの ID への参照を保持します (これは、たとえばトランザクションを取り消したい場合に役立ちます)。アカウントはエントリへの参照を保持しませんが、残高を保持します。
私は saga を使用して、アカウントの入金と引き落としのプロセスをトランザクションで管理します。
私がこれを正しくモデリングしているかどうかを知りたいです。
また、無効な (存在しない) アカウントへの参照 (ID) を保持する会計エントリを作成できないようにする方法も知りたいです。エントリを作成するためのファクトリとしてアカウントを使用し、独自の ID を渡す必要がありますか?
c# - 集約ルートは ID によって別の集約ルートを参照します。RavenDB を使用して整合性を維持するにはどうすればよいですか?
集約ルートとして X があり、別の集約ルートとして Y があるとします。NoSql ドキュメント データベースを使用すると、X は Y の ID によって Y への参照を保持します。Y が (X のコンテキスト外で) 削除された場合、X は存在しない Y への参照を保持します。
DDD でこの問題を解消または解決するために提案されているソリューションは何ですか?
domain-driven-design - 値オブジェクトに入力パラメータの技術的検証を含める必要がありますか?
DDD 実践者がアドバイスするように、ビジネス ルールの検証はドメイン オブジェクト (エンティティ、値オブジェクト、およびドメイン サービス) 内に実装する必要があり、技術的な検証 (長さのチェック、正しい入力形式、正しいデータ型、...) ドメインモデルの外、およびドメインオブジェクトを明確に保つためのアプリケーション層のような場所。
今 私の質問はこれです:
クレジット カード番号の値オブジェクトがある場合、技術的な検証を値オブジェクトから除外する必要がありますか? 言い換えれば、「自己検証済み」という用語は、値オブジェクトを扱う際の技術的検証には関与していませんか?
間違ったデビット カード番号や電子メール アドレスがビジネス ルールに違反する可能性がある場合はどうすればよいでしょうか。
より明確にするために、デビット カード番号を表す次の値オブジェクトに注目してください。
このコードによると、アルゴリズムを実行してカード番号の形式が正しいかどうかを確認する Validation メソッドがあります。このタイプの検証に適した場所だと思いますか?