SOAについてUdi Dahanが何と言っているかを読むと、多くの非常に優れたアイデアが得られます。
サービスは、特定のビジネス機能に対する技術的な権限です。データまたはルールは、1つのサービスのみが所有する必要があります。
これが意味することは、サービスがお互いのイベントをパブリッシュおよびサブスクライブしているときでさえ、すべてのデータとルールに対する信頼できる真実の源が何であるかを常に知っているということです。
また、ビジネス機能のレンズからサービスを見ると、多くのユーザーインターフェイスがさまざまな機能に属する情報、つまり在庫があるかどうかに加えて製品の価格を提示していることがわかります。上記のサービスの定義に準拠するために、これにより、そのようなユーザーインターフェイスは実際にはマッシュアップであることがわかります。各サービスは、特定のデータを処理するUIのフラグメントを持っています。
具体的にはUI組成物に関して、オンマウロServientiの記事UI組成物は、良好な出発点です。こちらから入手できる Udiのビデオも参照してください。
これらのサービスは互いに直接通信できる必要がありますか?もしそうなら、それらはマイクロサービスの概念に反するカップルになるでしょうか?
2つのサービスが相互にメッセージを交換する場合、いくつかのカップリングが発生します。主な答えは、それらが他のサービスのAPIに結合するということです。サービスは、内部が変更されても安定した状態を保つことを約束します。
さらに、サービスディスカバリーのような手法は、特定のサービスプロバイダーへの依存を緩和し、メッセージブローカーはプロデューサーとコンシューマーを分離することができます(メッセージとブローカーのAPIと対話する方法を互いに理解する必要があります-魔法はありません) )。