Comments
Description
Transcript
Web 環境における非同期通信 の価値 トピック
<MQ-WAS連携-第1章> Web環境における非同期通信 の価値 2004/06/14 <MQ-WAS連携-第1章> トピック MQを使用するメリット Webアプリケーションの特徴 Web環境での非同期通信 Web環境でのMQの使用 この章での目的 MQを使用するメリットとWebアプリケーションの特徴についておさらい Webの環境でどのようにMQを使うことができ、その価値がどこにあるのかをまとめる 2 Copyright ISE Co,.Ltd <MQ-WAS連携-第1章> MQを使用するメリット 非同期処理 同期処理も非同期処理も両方こなせる 接続先の稼動状況に左右されないアプリケーション構築が可能 プログラム システム_A プログラム システム_B ホストなどの様々なアプリケーションを接続する マルチプラットフォーム、マルチプロトコル対応 IBM、non-IBMプラットフォームで単一のインターフェースの提供 DB 3 Copyright ISE Co,.Ltd <MQ-WAS連携-第1章> MQを使用するメリット <Note> MQを使用することで得られるメリットについて2点振り返って見ます。 まず、非同期アプリケーションを構築できるという点です。 MQを使用した場合には、同期アプリケーションももちろん構築することは可能ですが、非同期アプリケーションの構築も行うこと が出来ます。 アプリケーションが非同期に稼動することで、それぞれのシステムが同時に常に稼動していることが必須ではなくな ります 開発時はそれぞれ別個に開発することができます 運用時には片方のアプリケーションのメンテナンスや構成変更などの影響をうけることがありません 様々なアプリケーションの統合が可能というのが2点目です 様々なプラットフォームやプロトコルのアプリケーションを接続することができます。 異なる言語で記述されたアプリケーションの接続も容易になります。 4 Copyright ISE Co,.Ltd <MQ-WAS連携-第1章> Webアプリケーションの特徴(1) Webアプリケーションの特徴 Webブラウザをクライアントとして、HTTPプロトコルを使用した通信を行う HTTPプロトコルはステートレスなプロトコル クライアントとWebサーバー間は1リクエスト/レスポンスごとに切断される Webサーバー側から、クライアントの処理がどこまで進んでいるかはわからない ブラウザのタイムアウトなどで接続が切断された場合に、クライアント側からサーバー側での処理がどうい う状況であるのかわからない Webサーバーを使った静的な、参照系中心のアプリケーションから、Webアプリケーション サーバーによる様々な業務処理へ 1リクエストごとにクライアントとサーバーは切断 5 Copyright ISE Co,.Ltd <MQ-WAS連携-第1章> Webアプリケーションの特徴(1) <Note> Webアプリケーションの特徴としてクライアントにWebブラウザを使用するという点を考えてみます。 Webブラウザを使用することで、基本的に特殊なクライアントアプリケーションを個々の端末に導入することなくシス テムを利用することができるようになります HTTPプロトコルを使ってサーバーと通信することになりますが、HTTPプロトコルではクライアントとサーバーの接続 が1リクエスト・レスポンスで切れてしまいます。 Keep-Aliveを考慮しない場合です。 また、クライアントとサーバーの間でお互いに相手がどこまで処理が進んでいるかを把握することは出来ません。 クライアントからみて応答がかえらなくなった場合に、サーバー側でどこまで処理が進んでいるか、クライアントにはわかりません。 最初は情報の閲覧などといった静的なアプリケーションが中心だったWebアプリケーションですが、B2B、B2C、社 内システムといった様々なシステムでデータの更新を伴うアプリケーションとして利用されることが一般化しています。 6 Copyright ISE Co,.Ltd <MQ-WAS連携-第1章> Webアプリケーションの特徴(2) Webアプリケーションをつかって様々な業務がWeb化されている 各種申請処理 チケット予約、商品の注文 帳票作成 ・・・・・・・ このような更新が必要な処理では、ブラウザでの処理待ちを考慮する必要がある HTTPのリクエストを送信し、様々な処理を行ったあと、ブラウザにその結果を送信する必要が あるため 多くのリクエストが集中している場合に、処理に時間がかかりブラウザがタイムアウトしてしまうよ うなことも発生する レスポンスが帰ってこない場合、クライアントには処理が成功しているのか成功していないのか わからない ? 処理が完了しているかしていないかは クライアント側からはわからない 7 Copyright ISE Co,.Ltd <MQ-WAS連携-第1章> Webアプリケーションの特徴(2) <Note> Webアプリケーションを利用して様々な業務のWeb化などを進めるお客様が増えています。 いくつものページをまたがって行われる更新処理をまとめることによって、業務のWeb化を実現しているため、考慮 しなければならない問題が出てきます。 サーバーはレスポンスとしてクライアントのブラウザに何らかの送信を行います。 逆にレスポンスが返ってこない場合には、実際に処理が終了したのか、まだ処理中なのか、そもそも処理がされて いないのか、といった状態を把握することさえ出来ません。 また処理に時間がかかっている場合には、ブラウザが処理待ちでタイムアウトしてしまうことも考えられます。 クライアント側からの二重送信なども発生する可能性があります。 システム的な問題(パフォーマンス、二重送信によるデータや処理の整合性)と同時に人間的な問題(処理が進 まないことへのいらいら)など、いろいろなところに影響が発生する可能性があります。 8 Copyright ISE Co,.Ltd <MQ-WAS連携-第1章> Web環境での非同期通信 レスポンスに時間のかかる処理を非同期化し、レスポンスタイムを上げる 複数の大きなSQLによる処理 ファイルの転送 処理のイメージ リクエストを受け付け、キューにPutする クライアントには処理を受け付けたことを通知する 処理が終わったタイミングで、メールなどで別途通知する 非同期化を行わない場合には様々な考慮点を解決しなくてはならない 処理そのものの重さ 同時に受け付けることのできるリクエスト数 ボタンの二度押しによる二重送信 App1 Appl2 処理を受け付けたことをクライアントに戻し、 9 処理そのものは別のアプリケーションで行う Copyright ISE Co,.Ltd <MQ-WAS連携-第1章> Web環境での非同期通信 <Note> 処理の時間のかかる部分を非同期アプリケーションとして作成することで、レスポンスタイムや全体のスループット を向上させることが見込めます。 リクエストを受け、処理をメッセージとしてキューにPutします。 クライアントには処理を受け付けたというレスポンスを返し、あとで照会可能なようにIDなどを伝えます。 必要に応じてメールで処理が完了したことをメールで伝えるなどして、処理結果を照会可能にします。 このように非同期のアプリケーションを利用すれば、クライアント側の待ち時間を短縮することが可能になり、同時 に時間のかかる処理は別のサブシステムに任せることができます。 逆に完了するまでに時間のかかる処理を同期で処理する場合には、同時に受け付けることのリクエスト数をある 程度に制限するなどの対策が必要になります。 10 Copyright ISE Co,.Ltd <MQ-WAS連携-第1章> (参考)WASキューイング・ネットワーク それぞれの入り口で待ち行列が発生するように徐々に絞り込むよう調整した方がパ フォーマンスが期待できる 一般に、WAS内で待たせるよりも、ネットワーク側で待たせる方がよい 負荷テストを行なった際に、それぞれのキューの最大数に達したときに、システムのCPU が適正使用率になるようパラメータを決定する クライアント EJBクライアントとEJBが同一JVMで稼動する 場合、両者は同一スレッド上で稼動する。 つまり、WebコンテナーEJBコンテナー間で待 ち行列は発生しない 0 20 待ち行列:25 WebServer 待ち行列:125 最大クライア ント数=75 75 待ち行列:40 Web Container EJB Container 50 20 リモート EJB クライアント 最大接続プー ル・サイズ=30 30 スレッド・プー ル・サイズ=50 データソース 70 ORBスレッド・プール=20 DB リモートからのEJBコールのみORBス レッド・プールでキューイングされる 11 Copyright ISE Co,.Ltd <MQ-WAS連携-第1章> blank page 12 Copyright ISE Co,.Ltd <MQ-WAS連携-第1章> Web環境でのMQの使用 ホストアプリケーションなど、既存の資産を有効利用する 既存のアプリケーションに対してWebのインターフェースを提供する ホストアプリケーションのWeb化には様々な方法がある J2C エンタープライズサービス MQ どの方法にも開発負荷や自由度、パフォーマンスなどの考慮すべきポイントはあるが、 MQの使用は選択肢の一つとして挙げられる 既存システム WAS 既存のシステムはどのようなもの? どのようにしてつなぐ? 13 Copyright ISE Co,.Ltd <MQ-WAS連携-第1章> Web環境でのMQの使用 <Note> ホストアプリケーションなど、既存の資産をWeb化することにはシステムの使いやすさの向上や新規開発のコストを 削減するなどメリットがあります。 それを実現するためにはアプリケーションの構築手法としていくつかの選択肢が存在します。 J2C Java 2 Connector J2EEで規定されているEIS(Enterprise Information System)へアクセスする仕様 エンタープライズサービス WSIF(Web Service Invocation Framework) StudioADIEが開発環境として考えられる MQ IMSブリッジなど、ホストアプリケーションなどとの接続に多くの実績あり JMSなどを使用してWAS側との接続が可能 どれを使用するかは既存のアプリケーションがどのようなアーキテクチャーで構築され、どのようなインターフェースを 持っているかにも左右されます。 新規開発部分のコスト 実績や信頼性 将来動向 14 Copyright ISE Co,.Ltd <MQ-WAS連携-第1章> (参考)J2C J2EE Connector ArchitectureはJ2EE1.3の構成要素のひとつ Java環境からEIS(Enterprise Information Systems)へアクセスするための標準仕様 EISの例 CICS、IMS、SAP/R3 など J2Cの構成要素 Resouce Adapter 各EISに依存するモジュール アプリケーションコンポーネントやアプリケーションサーバーに対して、EISに依存しないインターフェースを提 供する System Contract コネクションプールやトランザクション管理、セキュリティなど、アプリケーションサーバーが提供する共通す る機能 CCI EISで共通のAPIとして提供される Application Server EIS Resource adapters 15 Copyright ISE Co,.Ltd <MQ-WAS連携-第1章> (参考)J2C <Note> J2Cはシステムレベルとプログラミング・インターフェースレベルの2つの統合を目的としています。 システムレベルの統合 Application Serverから各ベンダーが提供するEISに接続するためのインターフェースがEISベンダーの独自実装に なっている場合、Application Server側やEIS側で独自に接続できるように仕様を取り決める必要があります。 共通で利用するようなコネクションプールなどの機能を各ベンダーごとの独自実装で作っていくのではなく、共通の インターフェースにすることで、システムの統合が容易になるというメリットがあります。 プログラミング・インターフェースの統合 各EISにアクセスするロジックを記述する際、コネクションの取得やパラメータのセット、処理結果の取得といった共 通の処理があります。個々のベンダー独自のプログラミング・インターフェースしか提供されていない場合、プログラ マーはそれら複数の手続きを修得する必要があり、非効率であるといえます。 また、開発ツールのベンダーもそれら個々のEISに対応したプログラムコードの生成機能を実装する必要があるこ とになります。 そういった非効率を共通のプログラム・インターフェースを利用することで防ぐことができます。 16 Copyright ISE Co,.Ltd <MQ-WAS連携-第1章> (参考)エンタープライズサービス WebSphere Studio Application Developer Integration Editionが提供するプログラミ ングモデルのひとつ サービス:JavaやEJB、J2EE Connector、Web Services などで実装される業務など WSIF(Web Services Invocation Framework)による呼び出し 既存のCICSやIMSのアプリケーションをEJBやWebサービスでラッピングする Studioのウィザードによるアプリケーション開発 ユーザー・コード Session Bean EJB Proxy WSIF WSDL クライアント RMI/IIOP WSIF Resource Adapter WSDL サービス EIS 17 Copyright ISE Co,.Ltd <MQ-WAS連携-第1章> blank page 18 Copyright ISE Co,.Ltd <MQ-WAS連携-第1章> まとめ MQのメリットとして非同期処理を実現することとホストアプリケーションなどとの連携とい う2つが考えられます。 WebアプリケーションはステートレスなHTTPプロトコルを使用した同期処理という特徴が あります。 そのため、クライアント、サーバーの両方で互いに相手の状況がわからないということが起 こりえます。 Web環境においてMQのような非同期処理を使用することで、同期アプリケーションでは 様々な考慮点が発生する時間のかかる処理などの実装が容易になるといえます。 既存のホストアプリケーションなどの資産をWeb化して再利用する際にも、MQを利用す ることが一つの選択肢となります。 19 Copyright ISE Co,.Ltd <MQ-WAS連携-第1章> blank page 20 Copyright ISE Co,.Ltd