現在、私はモノリスREST APIをマイクロサービスに分割するように取り組んでいます。 Domain Driven Design
(現在学習中)をご紹介したいと思います。この時点で私の最大の懸念はRepository
を実装することです。DDDリポジトリのクエリ言語
ドメインUBIQUITOUS LANGUAGEはProfile
エンティティ(ソーシャルメディアプロファイル、例えばTwitterプロファイル)を定義します。私は別のマイクロサービスにProfile
を抽出することを考えています。プロファイルを照会するには、私はProfileRepository
を紹介します。
APIゲートウェイを含む他のマイクロサービスには、独自のProfile
検索パターンがあります。これらすべての検索パターンを満たすためにリポジトリを設計する方法を教えてください。クエリごとにfind
メソッドを作成する必要がありますか?何らかの動的クエリ言語を導入すべきでしょうか?
モノリスアーキテクチャでは、複数のリポジトリを作成できました。ユースケースごとに1つ。マイクロサービスアーキテクチャでは、他のマイクロサービスが新しいクエリを必要とするたびにProfile
の責任を負うマイクロサービスを変更する必要があります。
完璧なものは何もありません。クエリーの仕組みが抽象すぎると柔軟になりますが、パフォーマンスを最適化するのは非常に難しいでしょう。一方、クエリがすべて明示的であれば、カップリングはマイクロサービス間で強すぎるかもしれません。私はあなたが考えることができるアプローチは、メッセージベースのインフラストラクチャを使用して、他のすべてのマイクロサービスでクエリを処理するために必要な情報を複製することだと思います。それが適切でない場合は、柔軟性、パフォーマンス、明示的な見解のバランスをとる必要があります。 – plalx