本文へジャンプ

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

送信されたすべての情報は安全です。

  • 閉じる [x]

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


送信されたすべての情報は安全です。

  • 閉じる [x]

SLAで第二世代Webサービス・アプリケーションを保証

SOAの待ち時間とスループット

Judith Myerson, Systems Engineer and Architect
Judith M. Myerson はシステム・アーキテクト兼システム・エンジニアです。ミドルウェア・テクノロジー、企業単位のシステム、データベース・テクノロジー、アプリケーション開発、ネットワーク管理、セキュリティー、RFID テクノロジー、そしてプロジェクト管理を含む数多くの分野を得意としています。

概要: ビジネスが出資するサービスの信頼性、可用性、そして品質をSLA(Service-Level Agreement:サービス品質保証制度)が保証することを、第二世代のWebサービス・アプリケーションは必要とします。一部のアプリケーションが非Webサービスと相互に作用すれば、顧客はより精密な測定をするSLAを要求します。そのようなアプリケーション向けのSLAをどのようにして確立するかを、Judith M. Myerson氏はこの記事で説明します。障害アラート、待ち時間、そしてスループットを取り上げ、アプリケーションのテストに関与する質問とその解答の例を提供します。

日付:  2004年 8月 17日
レベル:  中級 この記事の原文:  英語
アクティビティー: 1394 ビュー
お気軽にご意見・ご感想をお寄せください: 


第一世代のアーキテクチャー

「SLAによるWebサービスの保証」(参考文献を参照)にて考察されるとおり、下記の図はSLAが取り扱うWebサービスのアーキテクチャーを表わします。ご覧のとおり、構造はとてもシンプルです。


図1. SLAが取り扱う第一世代Webサービスのアーキテクチャー
図1. SLAが取り扱う第一世代Webサービスのアーキテクチャー

Webサービス内で、サービス・プロバイダーが別のサービスを公開する間にクライアントがサービスを探し、サービスがプロバイダーにバインドされていれば、この構造はそのWebサービスと共にうまく機能します。互いのサービス・ロールをつなぐのは、それぞれ一本の矢印(上記の図を参照)のみです。

今日の日々複雑さを増し続けるWebサービスの世界では、このアーキテクチャーは不適切です。特にSOA(Service-Oriented Architecture: サービス指向アーキテクチャー)にて、次に挙げる4つの理由から、それは時代遅れになりつつあります。

  • 理由1:発生するWebサービス・アプリケーションのタスクを完了する別のWebサービスを発見するWebサービスのアプリケーション・クライアントの必要性を、第一世代のアーキテクチャーは根本的に考慮しません。タスクを終了させるのに費やす時間は、割り込み無しで非常に長くなるかも知れませんし短いかも知れません。Webサービスの発見の成功または失敗を確認または検証するうえで重要なアラートをクライアントは受信しません。
  • 理由2:プロバイダーが全てのサービスを何の問題も無く公開するように要求を送信し、ブローカーが100%の確率と信頼性でそれらを公開することを、アーキテクチャーは前提とします。リポジトリーでのサービス公開の完了の成功または失敗の通知を、プロバイダーはブローカーから受ける必要はありません。
  • 理由3:WebサービスをWebアプリケーションと統合する上で次にどうするかで、プロバイダーから応答を受信する必要性をクライアントに強調しません。通信が同期(クライアントがATMで預金からお金を引き出す)または非同期(数週間もの間在庫切れで注文された品物にからむ長期的な取引期間)のどちらかであることを、統合は必要とするかも知れません。
  • 理由4:SOAでは、照会またはWebサービス・アプリケーションへの要求に応答するのに必要とするリソースのために、Webサービス・アプリケーションが非Webサービス・アプリケーションと競合します。しかし、アーキテクチャーはそのSOAを考慮しません。それはインターオペラビリティーの課題がもたらす可能性を排除し、非Webサービス・アプリケーションをWebサービス・アプリケーションと統合すると言う論点を扱いません。

第二世代Webサービスのアーキテクチャー

第一世代アーキテクチャーの欠陥を修正するために、ブローカーからのプロバイダー・アラート(Provider alert)とクライアント・アラート(Client alert)そして通信(Communicate)を起動する仕組みに、SOA内のプロバイダーとクライアント間の処理を取り込みます。そうすることにより、サービス・ロール同士をつなぐ2本ずつの2方向の矢印(図2を参照)を取り入れる第二世代のアーキテクチャーが完成します。


図2. 第二世代アーキテクチャー
図2. 第二世代アーキテクチャー

プロバイダー・アラートとクライアント・アラートを両方とも独断で3種類(確認、検証、障害)に分類してみましょう。イベントにより、それぞれのタイプの内容は異なります。

例えば、アプリケーション・クライアントがWebサービス・アプリケーションの発見に成功したとき、ブローカーは発見の成功を確認または検証するためにアラートを発信します。もしもクライアントがサービスを発見できなければ、発見の試みが失敗したことを通知する別の種類のアラートをブローカーは送信します。

発見の成功を受信すれば、クライアントはそれをプロバイダーと共にバインドします。引き起こされるWebサービス・アプリケーションのタスクを完了させるには追加的なWebサービスをサービスが必要とするかどうかをプロバイダーが判断したら、次に何をするかについてクライアントと通信します。

アプリケーション・プロバイダーはサービスを発行するために要求をブローカーに送信します。もしもブローカーがそのリポジトリー内のサービスの発行を成功させたら、それはプロバイダーにアラートを送信し成功を確認させます。さもなければ、その発行への試みが失敗したことをアラートで知らせます。


SOA: 総括的な展望

Webサービス・アプリケーションはプラットフォームから独立したプロトコル(SOAP、WSDL、UDDI、HTTP)の上に構築されます。これらのプロトコルはWebサービスよりも昔から存在するSOAの必須条件を満たします。サービスが発見可能であり呼び出し可能なインターフェースを抱いてビジネス処理を実行することを、SOAは必要とします。

Webサービス以前の時代には、WebサービスはSOAに存在しませんでした。今日では、WebサービスはSOAの主力選手です。非Webサービス・アプリケーションまたはコンポーネントからなるEAI(Enterprise Application Integration: エンタープライズ・アプリケーション統合)アプリケーションを補足します。発見する照会、公開する要求、そしてバインドする要求に反応するのに持つべきリソースのために、Webサービス・アプリケーションは非Webサービス・アプリケーションと競合します。

(製造環境にSLA付きのWebサービス・アプリケーションが登場する以前から、SOAP、WSDL、そして他のインターオペラビリティー関連の問題がすでに解決されているという前提で)SOAは主に(企業をとおしてインターオペラビリティーをサポートするために)Webサービス標準を使用します。UDDIや他のパブリック・レジストリー内のパブリック・サービスとしてSLAを公開するSLA Webサービスをそれは包括します。応答時間のリソースにからむ競合の性能面のインパクトに与えられる技術面と資金面での権限と改善措置を、これらのWebサービスは扱わなくてはなりません。

Webサービス・アプリケーションのアーキテクチャーのロジックと類似する形で、SOAサービス・クライアントはサービスのためにディレクトリー・サービスを照会します。クライアントがサービスを検出すれば、ディレクトリー・サービスはプロキシーを介してサービスを呼び出すサービス・プロバイダーを入手します。他方では、クライアントがサービスを探せない場合には、それは失敗したサーチを表示するディレクトリー・サービスからのアラートを受信するかも知れません。同様に、プロバイダーがディレクトリー内でサービスを公開できないのであれば、それは失敗した試みを示すアラートを受信するかも知れません。


障害アラートを送信

様々な障害の事態から回復するうえでプロバイダーが踏まえるべきステップを、全てのSLAが含みます。それぞれのサービス・ロールが多種にわたる失敗事象(致命傷を除く)にどれだけの時間をかけて応答し、そして警告の失敗からどれだけの時間をかけて自動的に回復したかの情報を、通信そしてアラート・メッセージは包括すべきです。

この障害イベントのインスタンスはプロバイダーの制御下にあるべきです。サービスの保証が一定のレベル(例えば、99.9%未満の実行可能時間)で障害を起こす場合には、プロバイダーは回避すべき障害の種類、そして強制すべき権限と改善措置を決定する必要があります。それがプロバイダーの制御の手に負えないのであれば、プロバイダーと共に開発者はそれを(ハードの障害、通信の障害、ソフトウェアのバグに欠陥、そして画像表示システムに測定システムの障害のような)SLAの例外として受け入れるべきです。

障害によっては説明が回りくどくなりがちですので、実際のそして潜在的な障害の事態のそれぞれのメッセージにコード(数値(できれば16進数)、アルファベット、またはその両方)を割り当てる作業でプロバイダーを援助するのが得策でしょう。測定された応答時間にウェイトを割り当てる場合、任意的にコードを3種類のはっきりとしたカテゴリー(警告、重大、致命)に分けるべきです。もしもビジネス・オペレーションがあまりにも頻繁に割り込むのであれば、クライアントは繰り返し発生する問題への不十分な対処に不満を覚え、SLAを終了する条項を実装する権限の行使を希望します。


応答時間を測定

質問を送信し解答を返すのが、応答時間を測定する最も妥当な手段のひとつです。質問を集めた後、待ち時間、スループット、そしてフェイルオーバーを基に優先順位を付けられます。

待ち時間とは、データ・パケットがある地点から別の地点に移りそしてまた元の場所に戻る往復に費やす時間です。例を下に記します。

  • データベース・サーバーでのSQL待ち時間
  • Network AのルーターからNetwork Bのアプリケーション・サーバーへの待ち時間
  • 動的なアラート(dynamic alerts)とバインディングの待ち時間
  • 動的なアプリケーション統合(dynamic application integration)の待ち時間

スループットとは、与えられた特定の時間内にブローカーが供給できる要求の容量です。フェイルオーバー・テストは、Webサービス・アプリケーション用のフェイルオーバーの解決法がどれほどうまく機能しているかを測定します。待ち時間とスループットの間にあるトレードオフを、開発者は考慮すべきです。別の測定の要素として、デッドロック、ハングされた処理、そしてタイムアウト期間への修正処置をどれだけアプリケーションが提供しているかを考慮するのもあります。

疑問点

アプリケーションの修正そして新規アプリケーションの開発により、Webサービス・アプリケーションのパフォーマンスの向上に努めるには、ここに例として挙げられる疑問を投げかけるべきです。

  • クライアントの照会に応答するのに、Webサービス・アプリケーションは時間を(例として、10秒間以上)かけ過ぎていないでしょうか?Webサービスが公開そして呼び出し不可能なときに、アラートをエンド・ユーザーに送信するのは可能なのでしょうか?
  • プロバイダーにより開始させられた通信への応答に、Webサービス・クライアントは時間をかけ過ぎていませんでしょうか?Webサービス・クライアントがサービス発見に失敗したことを知らせるアラートをブローカーが開始するのに、時間をかけすぎているのでしょうか?
  • サービス公開の要求への応答に、Webサービス・ブローカーは時間をかけ過ぎていませんでしょうか?サービスを公開または発見した後に要求を検証または確認するのはどうなっているのでしょうか?
  • 多量のクライアントまたはプロバイダーの照会要求を処理するのに必要なリソースのために、SOA内にてWebサービス・アプリケーションは非Webサービス・アプリケーションを相手に競合しているのでしょうか?
  • Webサービス・アプリケーションのネットワーク・トラフィックの増加は不適切なキャッシング・メカニズムによるものなのでしょうか?

これらの質問に答えるには、応答時間を測定する基準が正確でなくてはなりません。そうでなければ、(多種にわたるネットワークのシナリオで)サービス、パフォーマンス、そしてSOA内のサービス・レベルでの測定で、SLAは合意しなくなります。

クライアントの見解を考慮

次にあげられる1つの例では、合意を得たサービス・レベルが(とある特定の時間にてWebサービス・アプリケーションと非Webサービス・アプリケーションの異なる分配をそれぞれがともなう)ネットワークを3種類にわたり測定するとクライアントは思うかも知れません。


表1. シナリオその1
ネットワーク Webサービス・アプリケーション 非Webサービス・アプリケーション
A90%0%
B100%0%
C70%30%

次にあげられる別の例では、合意を得たサービス・レベルが上記と同一の分配で同じネットワークを測定します。3種類のネットワーク全てにて実行される非Webサービス・アプリケーションを応答時間測定から除外すると、クライアントは確信を持つことでしょう。


表2. シナリオその2
ネットワーク Webサービス・アプリケーション 非Webサービス・アプリケーション
A90%0%
B85%0%
C75%0%

タスクの連続を完成するための非Webサービス・アプリケーションへのWebサービス・アプリケーションからの呼び出しは、問題のさらなる複雑化につながりますが、これらの非Webアプリケーションが測定から除外されるとクライアントは思うかも知れません。表3にて示されるとおり、全てのWebサービス・アプリケーションが非Webサービス・アプリケーションに依存するわけではありません。


表3. シナリオその3
ネットワーク Webサービス・アプリケーション 非Webサービス・アプリケーション 非WebサービスへのWebサービス・アプリケーション呼び出し
A90%10%7%
B100%0%0%
C70%30%10%

SLAをテストそしてモニター

PushtoTest(下記にある参考文献の段落にて、リンクをお使いください)に提供されるようなWebサービス用テスト・ツールだけが、SLAモニターとして機能するメカニズムではありません。例外条件を設定し、Webサービスの待ち時間、スループット、そしてキャッシング・メカニズムをモニターそしてチェックできます。これらの条件は合意を得られたSLAの一部としてリストされなくてはなりません。


まとめ

ここまでに、SLA付き第二世代Webサービス・アプリケーションのより進歩した技術パラメーターの説明をしました。もしも非Webサービスと相互反応するWebサービス・アプリケーションを(出費を惜しまない)顧客に提供することを予定しているのであれば、予測される投資への見返りをSLAが確証するのをその顧客たちが期待するのは当然のことでしょう。

顧客の期待に応えるために、待ち時間とスループットの測定の土台を築き上げるのに使える質問形式をともなう実例も提供しました。それらに妥当な解答を提供すれば、SOAにて合意を得たサービス・レベルに顧客が満足する可能性が少しは高まると思われます。

そうでなければ、クライアントとプロバイダーは権限、改善措置、そして例外を含む契約条件の再交渉に乗り出し、EAIアプリケーションへの補足として顧客を満足させるレベルを確立しなくてはなりません。開発者にとって、Webサービス・アプリケーションを非Webサービス・アプリケーションと統合しそれらを実装する過程でそれを心に留めておくのは大事なことです。顧客が抱くビジネスそして技術的な(SOAにて結果として得られる統合がどう振る舞うかの)期待を考慮に入れなくてはなりません。


参考文献

  • PushtoTestについてより多くを学び、Webサービスをテストそしてモニターしましょう。

  • システム・デザインの本質的な原理と優先権に焦点を合わせe-commerceと分散統合システムの登場により推進される新たな必須条件を強調する、Judith Myerson著の「The Complete Book of Middleware」をお読みください。

  • Enterprise Systems Integration, Second Edition」を読むことにより、システム統合を成功させるのに欠かせられないビジネス的洞察力と技術的なノウハウを養えます。

  • 公共の使用に適したGUIそして順応するAPIを備えるIIBMのUDDI version 2 registryにて、Webサービスまたはアプリケーションを発行しましょう。IBMのUDDIバージョン3ベータの登録もテスト用にあります。

  • SLA付きWebサービスの第一世代アーキテクチャーへの例外そしてテストのメカニズムを取り扱う「SLAによるWebサービスの保証」(developerWorks、2002年04月)をお読みください。

  • 現存のJavaコードからSOAPを基にしたWebサービスを構築するのであれば、「SOAPベースのWebサービスにおける複雑なデータ・タイプ」(developerWorks、2001年05月)を探究することにより、より多くを学べます。

  • Dominoアドミニストレーター用のIBM Redbookを読み、サービス・レベル・アグリーメント(SLA)の実践的な仕組みに入り込みましょう。

  • IBMからのJavaを基にした最新のソフトウェア開発ツールとミドルウェア(トライアル版)、それとオンラインのチュートリアルと記事、そしてオンラインの技術フォーラムを提供するSpeed-start Web servicesにて、Webサービスに関する知識(情報)、ツール、そしてスキルを取得しましょう。

  • Webサービスに関連する数百ものタイトルを含む技術書物の包括的なリストのあるDeveloper Bookstoreを訪れてみて下さい。

  • 知識欲の袋に底はないのでしょうか?SOA and Web services のページは、数百にもわたる情報豊かな記事と、Webサービス・アプリケーションの開発方法についての(初級、中級、そして上級の)チュートリアルを提供します。

著者について

Judith M. Myerson はシステム・アーキテクト兼システム・エンジニアです。ミドルウェア・テクノロジー、企業単位のシステム、データベース・テクノロジー、アプリケーション開発、ネットワーク管理、セキュリティー、RFID テクノロジー、そしてプロジェクト管理を含む数多くの分野を得意としています。

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


developerWorks: サイン・イン


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。 プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。 お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

表示名をお選びください

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

(半角英数字で3文字以上31文字以下にする必要があります)


「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


この記事を評価する

コメント

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=SOA and Web services
ArticleID=245553
ArticleTitle=SLAで第二世代Webサービス・アプリケーションを保証
publish-date=08172004
author1-email=jmyerson@bellatlantic.net
author1-email-cc=

タグ

Help
このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。

スライダーバーを使用することで、より多く(少なく)タグを表示します。

人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。

マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。

このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。