私は、古代のレガシーシステムをゼロから置き換えるプロジェクトを引き継いでいます。私が来る前に、会社はシステムの基本的なスケッチをまとめてSOAを大いに推し進めたコンサルタントを雇いました。これにより、より複雑なサービスの組み合わせに構成されることを意図して、「エンティティサービス」の長いリストが作成されました。たとえば、委員会の情報が必要なユーザーは、「委員会」サービスにアクセスし、「委員会」サービスを呼び出してメンバーを取得し、「会議」サービスを呼び出して会議を取得します。
これにより柔軟性が向上することは理解していますが、私の懸念はパフォーマンスに関するものです。サービスにこのような細かいレベルで構築されたシステムは、サービスメッセージの変換に多くのリソースを費やし、パフォーマンスが許容できないものになると思われます。また、基本的な再利用可能なオブジェクトを使用して柔軟性を向上させることもできるように思われますが、その場合、パフォーマンスを向上させるためにテクノロジーに依存しないインターフェイスの利点が失われます。
詳細な背景:このソフトウェアを要求している組織には、現在、と統合する必要のある安定したサードパーティソフトウェアスイートがありません。このソフトウェアは、すべてのスイートを置き換えます。現在、提供されたWebサイトインターフェイスの外部でデータにアクセスする必要のある外部の消費者もいません。すべてのサービス呼び出しは、システム内の他の部分から行われます。この場合のSOAの選択は、完全に「準備」の概念に基づいているようです。
だから私の質問-パフォーマンスを犠牲にすることなく、安定したサービスで許容できる粒度のレベルはどれくらいですか?すべてのエンティティをサービスとして実装することで得られるパフォーマンスへの影響に懐疑的すぎませんか?機能は、必要な場合にのみWebサービスとして利用できるようにする必要があります。代わりに、「準備」に重点を置いて、後でサービスがその上にドロップされる可能性を考慮してビジネスレイヤーを設計します。