この問題にどのようにアプローチし、ドメイン駆動設計が本当にここで最高のパターンであるかを理解するための提案を探してください。エンタープライズ規模のDDD?
私のクライアントは、近々廃止されたツールとサービスのスタックを再構築中です。クライアントは急速に拡大しているeマーチャントです。それは、その大規模な電子商取引のウェブサイトです。このWebサイトの周りには、パートナーに公開されるさまざまなデータフィードがあります。マーケティング、販売、レポート作成などを支援する数多くの内部アプリケーションです。ユーザーサポートやパートナーサポートアプリケーションが数多くあります。さまざまなデータ同期、ETLジョブなどの優れた量...あなたは画像を取得します。
データストアとデータプロバイダも豊富です。 NOSQLのクラウドベースの大規模スケーラブルなストレージは、公開されているWebサイトのほとんどを提供します。多数のデータベースを持つSQLサーバは、内部アプリケーションにデータを提供します。メガカザブルな検索機能を提供するための特別な検索専用サーバーや、サードパーティーのさまざまなベンダーからアプリが消費するその他のフィードもあります。 DDDが採用されている場合、データストア固有のリポジトリベースクラスから継承したリポジトリオブジェクトのさまざまなグループを作成する計画になります。
クライアントでは、ビジネスエンティティの大部分を"ジェネリック"レベル:エンティティ名と関係。その "一般的な"レベルの外には、アプリケーションに応じてさまざまな具体的なオブジェクトを適切に再利用するだけでなく、その実装が異なるかなりの量のエンティティがあります。例えば
:私は上の提案を探していますYのようなサポートコールを扱うアプリケーションのためながら、さらにZ.
のような詐欺分析をやって誰かのためにeコマースのウェブサイト上のOrderエンティティは、Xのように見えるかもしれませんこの巨大な混乱を処理するためにDDDやその他のアーキテクチャパターンを適合させる方法:再利用を容易にし、必要に応じてロジックを分離することができる堅固な企業戦略を持つ。通常の(拡張性、柔軟性、適応性、ユニットテスト可能、シンプルなど)の基準に加えて
異なるデータストアのため、DTOの構造は、データストアとデータストアとで大きく異なります。さまざまなビジネスニーズのために、さまざまなアプリには特定のエンティティの異なるバージョンが必要です。会社が急速に拡大しているため、未来は非常に不安定であり、柔軟性が最も重要です。
私の最大の問題は、ビジネスモデルを別のドメインに分けて、共有や再利用の量が多い場合でも、高いレベルの変更に対応できるようにすることです。
ありがとうございます。ご意見ありがとうございます。
P.S.このショップはマイクロソフトのショップです。 VS2010/.NET/SQL/Azureの
+1「DDDはビジネスロジックを分離することです」 @イゴレク、あなたが見ているものの規模はそれを超えています。 (しかし、私はあなたがすでにそれを考えていたと思う) –
@Igorek RE: "私の最大の問題を抱えていると思います..."是非、より大きな画像を "モデル化"(理解)しようと思うが、単一の "モデル"実装。彼らはまだマクロレベルで適用されるので、物事をシンプルにしようとし、良い古いOOの原則(懸念の分離のような)を忘れないでください。 –