2

RESTful サービス指向アーキテクチャ Web アプリケーションを設計して、可能な限りスケーリングし、さまざまな種類のサービスをさまざまなマシンに配置します (リソースを集中的に使用する操作を他のサービスから分離します)。

また、ユーザーが自分のデータにアクセスして独自のアプリケーションを作成できるようにしたいと考えています。これらのサービスを世界に公開するように設計する必要があるかどうかはわかりません。そのため、Web ドメイン (AWS など) でリッスンするようにするか、API 要求を処理する別のサービスを作成するだけです。

セキュリティで保護されたオープンな Web サービスを使用することは理にかなっていますが、各サービスが同じスイート内の他のサービスによって認識 (信頼) されなければならないクライアントになるため、アーキテクチャ自体に多くの複雑さが加わります。独自のデータにアクセスしようとしているサードパーティのアプリケーションを認識する必要があります。

これは正しい SOA アプローチですか? 私が確認したいのは、間違ったサービス指向アーキテクチャを設計する間違った概念を混ぜ合わせていないということです。

すべてのサービスには、REST 原則を使用してクエリを実行できるように、crud インターフェースがあります。

4

1 に答える 1

0

システムの性質によっては、セキュリティで保護されていない Web サービスが存在する可能性があるため、セキュリティのオーバーヘッドなしですべての Web サービスが相互に通信できます。サードパーティがサービスを利用できるようにするには、外部からサービスにアクセスするための唯一のメカニズムとしてサービス境界ガードを使用し、このレイヤーにセキュリティを適用します。これには、すべてのサービスにわたって一貫したセキュリティを提供するという利点がありますが、境界が侵害された場合、すべてのサービスへのアクセスが取得されます。

このアプローチは、すべてのサービスで実行できるわけではありません。たとえば、「機密」と見なされる情報 (自宅の住所、緊急連絡先、健康データなどの従業員データなど) は、許可されていないスタッフがアクセスできないように保護する必要があります。

さまざまなサービスをさまざまなマシンに配置するというコメントについては、一部のマシンではリソースが十分に活用されず、他のマシンではリソースが過剰に使用される可能性があります。これを回避するには、すべてのサービスをすべてのマシンに展開し、ロード バランサーを使用します。これにより、すべてのノードが同じであるため、より最適なリソース使用が提供され、展開が簡素化されます (Chef や Puppet を使用するなど)。リソースの使用量が増えると、ノードを追加するだけで済みます。同様に、リソースの使用率が低い場合は、ノードを削除できます。

最後の文に関しては、CRUD (HATEOAS など) よりも REST の方がはるかに多くあります。

于 2012-10-07T12:57:13.550 に答える