IBM®
本文へジャンプ
    Japan [変更]    ご利用条件
 
 
検索範囲検索:    
    ホーム    製品    サービス & ソリューション    サポート & ダウンロード    マイアカウント    
skip to main content

developerWorks Japan  >  Autonomic computing  >

オートノミック・マネージャーのコンセプトを理解する

developerWorks
ページオプション

JavaScript を要するドキュメントオプションは表示されません

原文はこちら

原文はこちら


レベル: 初級

Jason Bell (jaseb@jaseb.net), Technical Architect

2004年 2月 17日

オートノミック・コンピューティングのリファレンス・アーキテクチャは、実際のオートノミック・システムを構築する上で、フレームワークの役割を果たします。このリファレンス・アーキテクチャでは、中心的なテーマとして、「制御ループ」を定義しています。制御ループは、オートノミック・システムでイベントをハンドリングします。この制御ループは、オートノミック・マネージャーの中に実装されます。この記事では、動作時のオートノミック・マネージャーの基本的なシナリオを提示すると共に、オートノミック機能を持つ IBM ソフトウェア・アプリケーションと、Emerging Technologies Toolkitに含まれる簡単なサーモスタット・アプリケーションを使ったより詳細な例を解説します。

オートノミック・コンピューティングの概要

オートノミック・コンピューティングという用語は、自分自身をモニターし、ビジネスの要件によって変化する要求に対して、自身を適応させていけるシステムに適用されます。オートノミック・コンピューティング・システムには、以下の4つの機能があります。

  • 自己構成
  • 自己修復
  • 自己最適化
  • 自己防御

オートノミック・コンピューティング・システムは人間の身体と比較することができます。("Autonomic Manifesto"を参照してください)人間の身体には自律神経系が備わっているため、意識的に努力すること無く、また外部からの調整無しに、眼球を通る光の量を調整したり、体温を一定に保つために汗を出したりすることができます。

オートノミック・コンピューティング・システムも、究極的には、最小限の人間の介入のみで自分自身を動かし続けなければなりません




上に戻る


オートノミック・マネージャーはオートノミック・コンピューティング・システムのどこにあてはまるか?

すべてのオートノミック・コンピューティング・システムの内部には、1つかそれ以上のオートノミック・マネージャーが存在します。これらのマネージャーは継続的にシステムをモニターしており、アクションが必要なイベントを取り扱います。すべてのマネージャーは4つに分けられた機能を持ちます。まず、それは「センサー」によって環境をモニター(Monitor)し、モニター結果を分析(Analyse)します。オートノミック・マネージャーはそれから必要なアクションを計画(Plan)し、それを実行(Execute)します。もし、計画フェーズで特に必要なアクションが無い場合には、オートノミック・マネージャーはモニター・ステージに戻ります。アクションは「エフェクター」を通して実行されます。センサーは管理されるリソースの現在の状態を監視し、エフェクターはその現在の状態を変える能力を持ちます。

これらの機能は、一緒にまとめられ、以下の部分を持つ制御ループとして定義されます。

  • モニター(Monitor)
  • 分析(Analyse)
  • 計画(Plan)
  • 実行(Execute)

この4つの機能は「知識」を消費したり、生産したりします。この知識ベースは、まず当該システムに関する既知の情報によって構築され、オートノミック・マネージャーが管理対象のリソースについてより多くを学ぶにつれ、成長していきます。この知識は4つの機能によって常に共有され、より良い意思決定のために役立てられます。図1はこの制御ループの一般的な像を示しています。


図1. 動作中の制御ループ
図1. 動作中の制御ループ



上に戻る


オートノミック・マネージャーの基本シナリオ

以下のセクションでは、オートノミック・コンピューティング・システムに適用されるオートノミック・マネージャーの基本シナリオを詳述します。このシナリオでは、Webサーバー・システムの中に制御ループがあるものと仮定します。このシナリオの主たる目的は、CPU使用率が90%を超えないことを保障することです。もし90%を超えた場合には、システムは何らかのアクションを取る必要があります。

モニターと分析

モニター・プロセスの任務は、必要なソースからデータを集め、まとめることです。知識ベースの大きな部分は、モニターされた情報によって構成されます。今日のソフトウェア・システムが出力するレポートやログの量を考慮すると、実際に制御ループで使用されるデータのみをモニターするということが重要です。もし、例えば、大量のログデータをそのまま格納するとなると、実際にはシステムの動作に関係しないデータを継続的にモニターしなければならないため、システムの性能は大幅に劣化してしまうでしょう。

この例での最初のステップは、CPU使用率をモニターすることです。これには読み取り操作が必要であり、もしUnixシステムを使っているならば、"top"コマンドを走らせることになります。"top"コマンドからの出力例は以下のようになります。


リスト1."top"コマンドの出力例
                
PID   User    PRI NICE   SIZE    RES   STATE    TIME   WCPU	  CPU    Command
57687 www     18   0     17428K  6048K lockf    2:48   0.00%  0.00%  httpd

オートノミック・マネージャーはCPU使用率をシステムに問い合わせ、次にそのデータを「分析」フェーズに渡します。「分析」フェーズはそのデータを読み、何かしなければいけないかどうかを判断します。今の場合、上記の出力を見てお分かりの通り、サーバーは正常に動作しており、すべきことは何もありません。

オートノミック・マネージャーは動き続け、データをモニターし続けます。CPU使用率の変化は「分析」フェーズに、問題解決のための「計画」オブジェクトを呼び出させるトリガーになります。


リスト2.CPU使用率の変化
                
PID   User    PRI NICE   SIZE    RES   STATE    TIME   WCPU	   CPU    Command
57687 www     18   0     17428K  6048K lockf    2:48   0.00%   91.43% httpd

さて、ここで(理論的には)何が起こるかを見るため、制御ループの「計画」と「実行」フェーズを見てみましょう。

計画と実行

制御ループはポリシーに基づいています。つまり、ある条件が成立すると、あるアクションが実行されなければならないというわけです。これは、高水準言語にあるif/else 文に似ています。

以前の例にあるとおり、CPU使用率が変化したので、その対応方法を計画し、実行しなければなりません。

この例では、オートノミック・マネージャーの計画ステージは、サーバーをリスタートし、問題が直るかどうかを見るためのアクションをスケジュールしなければなりません。(ほかにもこの状況を修復する方法はありますが、この例ではこの方法を取ります。)

知識

既に簡単に述べたように、知識の大きな部分は、制御ループの最初のステップ、つまりモニタリングから得られます。必要な知識データのタイプはどのようなものかを考慮することが大切です。Webサーバーが生成するトランザクションを全部記録することは簡単なことですが、そのデータを入れるためのプロセス時間は、確実にループのパフォーマンスを損ねるでしょう。

オートノミック・コンピューティング・システムの全体を考慮して、記録されるべき知識や、どのような定常状態を保持するのか、どのような情報を探すべきかを計画しなければなりません。上記の基本的な例では、出力データをタイムスタンプと共にデータベースに格納しました。制御ループがレポートしているものを見つけるのと同じように、さらに何かエフェクターに実行させる必要のあるデータの傾向を見つけ出すのも、簡単でなければなりません。

必ずしもすべての知識がモニタリングからもたらされるわけではありません。専門家のチームが、いくつかのシナリオを設計し、知識ベースに追加することも十分にあり得ます。モニター対象が呈する症状と、その是正方法に関するデータベースを持つことも可能です。例えば、"データベースがダウンした"という症状を検索すると、手っ取り早い解決方法として、"サーバーをリブートする"という是正措置が見つかるかもしれません。

Arthur Hays Sulzberger は「人の判断は、その判断の元となった情報を上回ることはない。」と述べています。このことはオートノミック・コンピューティング・システムについても言えます。システムがエフェクターを実行するか否かの判断をするためには、情報が適切な形式で整っていなければなりません。




上に戻る


ツール: Emerging Technologies Toolkit から引用したサーモスタットの例

オートノミック・マネージャーの制御ループがどのように動作するのかを学ぶ一つの方法は、それが実際に動いているところを観察することです。実際に動いているシステムで、各パーツがどのように協力しあって動いているのかを見ることは、たいへん役に立ちます。こうした例を観察することにより、将来あなたが自分でイベント・ハンドラーを実装する時の参考にすることができます。ここでの例は、Emerging Technologies Toolkit に収録されているサーモスタット・プログラムを使います。(参考文献を参照)

注意:Emerging Technologies Toolkitインストール用のドキュメントを読むことをお勧めします。このサンプルはIBM WebSphereか、Jakarta Tomcatの上で動作します。

Toolkitをインストールしたら、サーバーを起動します。


リスト3.サーバーの起動
                
C:\ettk\actk\bin>startserver.bat

次に、クライアントを起動します。クライアントはサーモスタットの状態を表示します。これは小さなJavaアプリケーションであり、サーバーに接続します。


リスト4.クライアントの起動
                
C:\ettk\actk\services\grid\thermostat\client>runThermostat3.bat

クライアントを起動すると、温度計が希望の温度に達するまでなだらかに上昇していくのが見えます。(起動時には70°に設定されています。)

サーモスタット・デモの図1にあるように、このサーモスタットは69°から71°の間で振れています。これは、制御ループが常に温度をモニターしているからです。リスト5は、何が起こっているかを擬似コードで表したものです。


リスト5.温度のモニタリング
                
if temperature is less than the required temperature
    then turn the heater on
if temperature is more than the required temperature
    then turn the heater off

サーバー側で何が起こっているかは、コンソール・ウィンドウに表示されています。


リスト6.サーバーの状態
                
Get heater status = off
Set heater status = on
Get heater status = on
Set heater status = off
Get heater status = off
Set heater status = on
Get heater status = on
Set heater status = off

Iユーザーがスライダー・バーで設定温度を変えると、制御ループは(上記の擬似コードのように)ポリシーが満たされるまで働き続けます。もし設定温度を100°にしたら、クライアント・コンソールにはそのリクエストに応じたメッセージが表示されます。(Sending 100° to thermostat as new goal)

エフェクターがヒーターを"On"に設定するため、サーモスタットの温度は上昇し始めます。

このサーモスタットの例では、制御ループがどのように使われるかが示されています。Emerging Technologies Toolkitの中には、あなたが自分のアプリケーションに制御ループを実装するのに役立つコードが他にも含まれています。




上に戻る


オートノミック・マネージャーのより進んだ例

私がここで紹介した簡単なサーモスタットの例の他にも、オートノミック・コンピューティング・ツールキットにはオートノミック・マネージャーのより進んだ例が含まれています。そこでは、あなたが自分自身のオートノミック・マネージャーを開発するために必要なドキュメントとツールが提供されています。(参考文献を参照)




上に戻る


オートノミック・マネージャーの実世界での例

現状では、オートノミック・コンピューティングはまだ新しく、絶えず進化している技術ですが、既にいくつかのツールや製品では、オートノミック・マネージャーの機能が実装されています。例えば、DB2®の評価版をダウンロードして、今すぐにオートノミック機能を試してみることができます。

  • DB2 -- このリレーショナル・データベース管理システム(RDBMS)はいくつかの機能でオートノミック・コンピューティングの技術を使っています。まず最初は、ヘルス・モニターです。この機能は、データベースのパフォーマンスを最適な状態に保ちます。パフォーマンスに影響する問題が見つかった場合、DB2はそれを報告し、状況を是正するためのエキスパート・レベルのアドバイスを提供します。また、コンフィグレーション・アドバイザーは、やはり従来はこの道のエキスパートでなければ不可能だった、通常長い時間がかかるデータベースの構成方法を初心ユーザーに指南します。

    DB2の将来のリリースでは、よりいっそう、オートノミック・コンピューティングの自己修復と自己防御の部分にフォーカスした機能を盛り込んでいきます。

  • Tivoli ® -- Tivoliのインテリジェントなシステム管理ソリューションは、オートノミック・コンピューティングの4つの機能をすべて含んでいます。その構成要素は、自己構成し(Configuration Manager)、自己最適化し(Workload Manager)、自己修復し(Enterprise Console)、自己防御(Risk Manager)します。

    この記事はオートノミック・マネージャーの制御ループの紹介と概観を提供することを目的としています。DB2とTivoliの詳細については、それぞれのWebサイトを参照することをお勧めします。




上に戻る


まとめ

オートノミック・コンピューティング・システムが成熟していくにつれ、そのツールも進化していきます。Emerging Technologies Toolkitとオートノミック・コンピューティング・ツールキットはあなたのアプリケーションにオートノミック機能を実装するためのツールとテクノロジーを提供しています。これらのツールキットには、オートノミック・コンピューティング・システムを組み上げていくのに役立つサンプル・コードやドキュメント、実際に動かして見ることができる多くの例が含まれています。

この記事では、オートノミック・マネージャーを紹介し、それがいかにオートノミック・コンピューティングのレファレンス・アーキテクチャーに適合するかを説明しました。オートノミック・マネージャーの実例を示し、かつ、もう実際に使われているツールの紹介もしました。



参考文献

  • The Autonomic Computing Manifesto」では、オートノミック・コンピューティング・システムと人間の身体との比較がなされています。

  • 制御ループが実際に動く例に関しては、Emerging Technologies Toolkit を参照してください。

  • オートノミック・コンピューティング・ツールキットはdeveloperWorksから入手できるオファリングです。

  • DB2 はクリティカルなソリューションを開発/展開するお客様とパートナーに支持されているデータベースです。

  • Tivoli Developer Domain を見ると、Tivoli製品がいかにオートノミック・コンピューティングのアーキテクチャーに適しているかがわかります。

  • Java 1.4.2 は Sun Microsystems のWebサイトからダウンロードできます。

  • Tomcat Servlet コンテナはここからダウンロードできます。

  • Apache Web Server はオープンソースのHTTPサーバーであり、Apache HTTP Server プロジェクトのWebサイトからダウンロードできます。

  • Apache Web Services プロジェクトからAXIS をダウンロードできます。

  • オートノミック・コンピューティング・ツールキットをダウンロードしてください。このツールキットにはSolution Installation and Deployment Technologies(ソリューション・インストールと展開技術)やIntegrated Solutions Console、Log/Trace Analyzer、Adapter Rule Builder、Autonomic Management EngineそれにResource Model Builder tools等が含まれています。

  • AlphaWorksにあるさらに新しいツールをチェックしてみてください。

  • developerWorksのAutonomic Comoputing Zoneには、他にもオートノミック・コンピューティングに関する資料が用意されています。


著者について

Jason BellはStudio B の執筆者であり、英国のテクニカル・アーキテクト、APIドキュメント執筆者でもあります。彼はJava Developer Jopurnal の中心的な編集者であり、RSSLibJを含む多くのオープンソース・プロジェクトに関わっています。RSSLibJはWebサイトのリッチな要約ニュースを作り、読み込むためのJavaのAPIです。彼のメール・アドレスは:jaseb@jaseb.netです。




記事の評価


サイト改善のため、ご意見をお寄せください。こちらのフォームからお願いいたします。



はいいいえわからない
 


 


12345
不充分・不完全である大変素晴らしい
 


この記事を共有する

はてなブックマーク はてなブックマーク livedoorクリップ livedoorクリップ del.icio.us del.icio.us Buzzurl(バザール) Buzzurl(バザール) Choix! Choix!
Saafブックマーク Saafブックマーク FC2ブックマーク FC2ブックマーク MM/memo MM/memo ニフティクリップ ニフティクリップ Yahoo!ブックマーク Yahoo!ブックマーク
CZブックマーク CZブックマーク newsing newsing




上に戻る


    日本IBMについて プライバシー お問い合わせ