(57)【要約】  分散型アプリケーションプログラムにおいて、分散型アプリケーションプログラムの行動を反映する高レベル命令を自動的に実施するためのシステムは、少なくともツールコンポーネントを含む。このツールコンポーネントは、宣言的モデルの形態で高レベル命令を書き込み、当該宣言的モデルをリポジトリ内に配置するために使用される。次いで、実行コンポーネントは、当該リポジトリから宣言的モデルを受信して、あいまいさがなくなるまで、（例えば、段階的な詳細化によって）当該宣言的モデルを改良（精製）する。次いで、プラットフォーム固有ドライバは、実行コンポーネントからのコマンドを変換して、当該宣言的モデル命令を１つまたは複数のアプリケーションコンテナ内で実施することになる必須の活動のセットに効果的に変化させる。このプラットフォーム固有ドライバは、１つまたは複数のイベントストリームを解析手段にも中継し、これは、結果として、当該宣言的モデルおよび後の時点で当該プラットフォーム固有ドライバから生じる命令の対応する新しいセットに対する修正をもたらす。
2010532532.tif 000002
【特許請求の範囲】
【請求項１】
分散型のコンピュータ化されたシステム環境において、１つまたは複数のプラットフォーム固有ドライバを介して、１つまたは複数の分散型アプリケーションプログラムを管理するように構成された１つまたは複数の実施手段および１つまたは複数の解析手段を有するサーバにおいて、宣言的モデルを使用して、分散型アプリケーションプログラムの実行の間に、前記分散型アプリケーションプログラム内の高レベル命令の１つまたは複数のセットを自動的に実施する方法であって、
リポジトリ内の対応する１つまたは複数の宣言的モデルに対する１つまたは複数の修正を識別する動作であって、前記１つまたは複数の宣言的モデルは、分散型アプリケーションプログラムの１つまたは複数の動作に関する高レベル命令を含む、動作と、
前記分散型アプリケーションプログラムのオペレーションに関するコンテキスト上の情報を含めるために、前記１つまたは複数の宣言的モデルを改良（精製）する動作と、
前記１つまたは複数の改良（精製）された宣言的モデルを、前記分散型アプリケーションコンテナによって実施されることになる１つまたは複数のコマンドに変換する動作と、
前記変換されたコマンドを１つまたは複数のアプリケーションコンテナに送信する動作であって、前記変換されたコマンドは、前記分散型アプリケーションプログラムを構成および制御するために、前記１つまたは複数のアプリケーションコンテナによって受信および実行される、動作と
を備えることを特徴とする方法。
【請求項２】
リポジトリ内に前記１つまたは複数の宣言的モデルを格納する動作をさらに備え、前記１つまたは複数の宣言的モデルは、必要に応じて、取り出されることが可能であることを特徴とする請求項１に記載の方法。
【請求項３】
前記１つまたは複数の宣言的モデルは、１つまたは複数の分散型アプリケーションプログラムのオペレーション上の意図を既述し、前記分散型アプリケーションプログラムのオペレーション上の意図を実施するための特定情報を含まないことを特徴とする請求項１に記載の方法。
【請求項４】
前記識別された１つまたは複数の修正は、１つまたは複数の新しい宣言的モデルを識別することを特徴とする請求項１に記載の方法。
【請求項５】
前記識別された１つまたは複数の修正は、すでに存在する１つまたは複数の先の宣言的モデルに対する変更を備えることを特徴とする請求項１に記載の方法。
【請求項６】
前記１つまたは複数の修正を識別すると、実行コンポーネントが、対応する修正された形態の前記１つまたは複数の宣言的モデルに情報を追加する改良（精製）プロセスをスケジュールする動作をさらに備えることを特徴とする請求項１に記載の方法。
【請求項７】
前記１つまたは複数の宣言的モデルを改良（精製）する動作は、前記実行コンポーネントが、前記１つまたは複数の宣言的モデル（１５３）および前記１つまたは複数のアプリケーションコンテナ（１３５）の在庫のうちのいずれかにおける要素同士の間の依存に関する情報を追加する動作をさらに備えることを特徴とする請求項１に記載の方法。
【請求項８】
前記１つまたは複数の宣言的モデルを改良（精製）する動作は、プラットフォーム固有ドライバによる変換のために要求される、前記１つまたは複数の宣言的モデル内の任意の不足データを追加する動作をさらに備えることを特徴とする請求項１に記載の方法。
【請求項９】
任意の不足データを追加する動作は、前記分散型アプリケーションプログラムの１つまたは複数のモジュールが実行すべき特定のコンピュータシステムを識別する動作を含むことを特徴とする請求項８に記載の方法。
【請求項１０】
任意の不足データを追加する動作は、前記分散型アプリケーションプログラムによって使用される接続されたモジュール同士の間で使用するための１つまたは複数のトランスポートプロトコルを判断する動作を含むことを特徴とする請求項８に記載の方法。
【請求項１１】
任意の不足データを追加する動作は、前記１つまたは複数の宣言的モデルのうちの少なくとも１つの中の任意の依存データを識別する動作を含むことを特徴とする請求項８に記載の方法。
【請求項１２】
前記識別された依存データに関する１つまたは複数のＵＲＩアドレスを識別する動作と、
前記識別された依存データ同士の間で任意の追加のＵＲＩアドレスを伝搬する動作と
をさらに備えることを特徴とする請求項１１に記載の方法。
【請求項１３】
任意の不足データを追加する動作は、特定のコンピュータシステム上の１つまたは複数の分散型アプリケーションプログラムモジュールの位置に関する、前記１つまたは複数の宣言的モデル内の任意の制約を識別する動作をさらに備えることを特徴とする請求項８に記載の方法。
【請求項１４】
任意の不足データを追加する動作は、前記１つまたは複数の宣言的モデルがプラットフォーム固有ドライバによって変換されるように、それらを完成する動作をさらに備えることを特徴とする請求項８に記載の方法。
【請求項１５】
前記１つまたは複数の宣言的モデルが変換されるように完成する動作は、前記改良（精製）され、完成された１つまたは複数の宣言的モデルのそれぞれの中にプラットフォーム固有ドライバのアドレスを含める動作をさらに備えることを特徴とする請求項１４に記載の方法。
【請求項１６】
それぞれのプラットフォーム固有ドライバを用いて、前記１つまたは複数の宣言的モデルを検証して、前記１つまたは複数の宣言的モデルのそれぞれが変換されることを判断する実行コンポーネントをさらに備えることを特徴とする請求項１５に記載の方法。
【請求項１７】
分散型のコンピュータ化されたシステム環境において、１つまたは複数のプラットフォーム固有ドライバを介して、１つまたは複数の分散型アプリケーションプログラムを管理するように構成された１つまたは複数の実施手段および１つまたは複数の解析手段を有するサーバにおいて、宣言的モデルを使用して、１つまたは複数の分散型アプリケーションコンテナ内の分散型アプリケーションプログラムの実行の間に、前記分散型アプリケーションプログラム内の高レベル命令の１つまたは複数のセットを自動的に実施する方法であって、
リポジトリから新しい１つまたは複数の宣言的モデルのセットを受信する動作であって、前記新しい１つまたは複数の宣言的モデルが、分散型アプリケーションプログラムのオペレーションに関する高レベル命令を含む、動作と、
実施手段および１つまたは複数のアプリケーションコンテナを介して、前記新しい１つまたは複数の宣言的モデルを実施する動作であって、実行されることになる低レベルコマンドの第１のセットが作成されて、前記１つまたは複数のアプリケーションコンテナに送られる、動作と、
１つまたは複数の解析手段を介して、前記新しい１つまたは複数の宣言的モデル内の変更を識別する動作であって、前記変更が、前記１つまたは複数のアプリケーションコンテナから受信された前記分散型アプリケーションプログラムに関するパフォーマンス情報を反映する、動作と、
前記実施手段および前記１つまたは複数のアプリケーションコンテナを介して、前記１つまたは複数の宣言的モデルの更新されたバージョンを実施する動作であって、前記１つまたは複数の新しい宣言的モデルに対する前記変更に基づいて実行されることになる低レベルコマンドの第２のセットが作成されて、前記１つまたは複数のアプリケーションコンテナに送られる、動作と
を備えることを特徴とする方法。
【請求項１８】
前記新しい１つまたは複数の宣言的モデルを実施する動作は、
前記新しい１つまたは複数の宣言的モデルに対応する１つまたは複数の新しい命令の改良（精製）されたセットを作成する動作と、
１つまたは複数の新しい命令の前記セットがプラットフォーム固有ドライバによって低レベルコマンドの前記第１のセットに変換されることを検証する動作と
をさらに備えることを特徴とする請求項１７に記載の方法。
【請求項１９】
前記１つまたは複数の宣言的モデルの前記更新されたバージョンを実施する動作は、
前記１つまたは複数の宣言的モデルの前記更新されたバージョンに対応する１つまたは複数の更新された命令の新しい改良（精製）されたセットを作成する動作と、
１つまたは複数の更新された命令の前記新しい改良（精製）されたセットがプラットフォーム固有ドライバによって低レベルコマンドの前記第２のセットに変換されることを検証する動作と
をさらに備えることを特徴とする請求項１７に記載の方法。
【請求項２０】
分散型のコンピュータ化されたシステム環境において、１つまたは複数のプラットフォーム固有ドライバを介して、１つまたは複数の分散型アプリケーションプログラムを管理するように構成された１つまたは複数の実施手段および１つまたは複数の解析手段を有するサーバにおいて、実行された場合、前記サーバにおいて、１つまたは複数のプロセッサに、
リポジトリ内の対応する１つまたは複数の宣言的モデルに対する１つまたは複数の修正を識別する動作であって、前記１つまたは複数の宣言的モデルが、分散型アプリケーションプログラムの１つまたは複数の動作に関する高レベル命令を含む、動作と、
前記分散型アプリケーションプログラムのオペレーションに関するコンテキスト上の情報を含めるために、前記１つまたは複数の宣言的モデルを改良する動作と、
前記１つまたは複数の改良（精製）された宣言的モデルを、前記分散型アプリケーションコンテナによって実施されることになる１つまたは複数のコマンドに変換する動作と、
前記変換されたコマンドを１つまたは複数のアプリケーションコンテナに送る動作であって、前記変換されたコマンドが、前記分散型アプリケーションプログラムを構成および制御するために、前記１つまたは複数のアプリケーションコンテナによって受信および実行される、動作と
を備える方法を実行させる、その上に格納されたコンピュータ実行可能命令を備えることを特徴とするコンピュータプログラム記憶製品。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータ化されたシステムの人気が増すにつれて、かかるシステム内で用いられるソフトウェアおよびハードウェアの複雑さも増大した。一般に、一見して、より複雑なソフトウェアに対する要求は引き続き高まっている。この要求が、さらに、ハードウェアのより多くの開発を促す影響力の１つになる傾向がある。例えば、アプリケーションプログラムがあまりに多くの所与のハードウェアシステムを必要とする場合、そのハードウェアシステムは、動作が非効率になる可能性がある。そうでなければ、ハードウェアシステムがアプリケーションプログラムをまったく処理できない可能性がある。しかし、アプリケーションプログラム開発における最近の傾向は、少なくとも部分的に、分散型アプリケーションプログラムを使用して、この種のハードウェアの制約の多くを取り除いた。通常、分散型アプリケーションプログラムは、多くの場合、階層的な環境（ｔｉｅｒｅｄ  ｅｎｖｉｒｏｎｍｅｎｔ）において異なるコンピュータシステム上のいくつかの異なるハードウェアコンポーネントを介して実行されるコンポーネントを備える。
【０００２】
異なるコンピュータシステムは、分散型アプリケーションプログラムを用いて、ネットワーク上で様々な処理結果を互いに通信することが可能である。これらの方針に沿って、企業は、多くの異なるコンピュータシステム上でいくつかの異なる分散型アプリケーションプログラムを管理するために、分散型アプリケーションサーバを用いることになる。例えば、ユーザは、異なるコンピュータシステムの１つのセット上で実行される電子商取引アプリケーションプログラムの動作を管理するために、１つの分散型アプリケーションサーバを用いることが可能である。ユーザは、コンピュータシステムの同じセット上で、またはコンピュータシステムの異なるセット上ですら、カスタマ管理アプリケーションプログラムの実行を管理するために、分散型アプリケーションサーバを使用することも可能である。
【０００３】
当然、分散型アプリケーションサーバを介して管理されるそれぞれの対応する分散型アプリケーションは、次に、依然としてその他の異なるコンピュータシステム上で実行されるいくつかの異なるモジュールおよびコンポーネントを有する場合がある。したがって、いくつかの異なるコンピュータシステムを介して処理能力を組み合わせるこの能力は有利であると同時に、アプリケーションプログラムモジュールのかかる広範囲な分散にはその他の欠点が存在することを理解されよう。例えば、企業は、通常、分散型アプリケーションサーバが、オプションで、利用可能なリソース上で分散型アプリケーションを最適に実行することを期待して、変化する需要パターンおよびリソースの利用可能性を考慮に入れる。
【０００４】
残念ながら、従来の分散型アプリケーションサーバは、通常、分散型アプリケーションプログラムのそれぞれの所与のモジュールに関して発生することができる、異なる問題のすべてを自動的に処理および管理する設備が不十分である（または、設備がまったく整っていない）。例えば、ユーザは、販売促進の期間中や毎年同じ休日の間は、いつも決まって注文が殺到するオンラインストアのアプリケーションプログラムを有する場合がある。場合によっては、ユーザは、分散型アプリケーションサーバが、所与の分散型アプリケーションプログラムの様々なコンポーネントまたはモジュールに対するこれらの変動する需要を解析および予想することを期待する場合がある。
【０００５】
特に、企業は、需要の高いプロセスが、あまり忙しくない可能性があるその他のシステム上のソフトウェアおよびハードウェアコンポーネントによって処理されるように、分散型アプリケーションサーバが、様々なリソースを交換して回る（ｓｗａｐ  ａｒｏｕｎｄ）ことを期待する場合がある。しかし、かかる対応は、従来の分散型アプリケーションサーバプラットフォームで行う場合、不可能でないとしても、困難な場合がある。具体的には、大部分の従来の分散型アプリケーションサーバプラットフォームは、設備が不十分であるか、または、そうでない場合、分散型アプリケーションプログラムのコンポーネント同士の間で、異なる需要パターンを識別して、適切に管理することが不可能である。これは、その多くが、長期間のワークフローである多くの分散型コンポーネントおよび分散型サブシステム、ならびに／または、そうでない場合、レガシーシステムもしくは外部システムを有することができるアプリケーションプログラムを管理する際の複雑さに少なくとも部分的に起因する場合がある。
【０００６】
加えて、従来の分散型アプリケーションプログラムサーバは、通常、効率的なスケーラビリティに対して構成されていない。例えば、大部分の分散型アプリケーションサーバは、正確な基準アドレス体系および／またはコンポーネントアドレス体系（ｒｅｆｅｒｅｎｃｅ  ａｎｄ／ｏｒ  ｃｏｍｐｏｎｅｎｔ  ａｄｄｒｅｓｓｉｎｇ  ｓｃｈｅｍｅｓ）など、所与の分散型アプリケーションプログラムの正確な命令を管理するように構成される。すなわち、多くの場合、アプリケーションプログラムのコンポーネント同士の間に「疎結合」はわずかに存在するか、またはまったく存在しない。したがって、サーバの管理者が、別のサーバ上もしくは別のコンピュータシステムのセット上に、ある種のモジュールまたはコンポーネントを再配備することを望む場合、特に、多くの異なるコンピュータシステムおよび／またはモジュールが必要とされる場合、エラーのより一層の可能性が存在する。新しいモジュール基準もしくは新しいコンポーネント基準のいくつかが、必要とされるあらゆる場合にその先に渡されない場合、または当該基準が不正確にその先に渡された場合、このエラーの可能性は現実のものとなる。
【０００７】
このエラーの可能性をさらに高める可能性がある分散型アプリケーションプログラムの一態様は、分散型アプリケーションサーバは、そのそれぞれが異なるプラットフォーム上で実行するいくつかの異なる分散型アプリケーションプログラムを管理することができるという概念である。すなわち、分散型アプリケーションサーバは、対応する分散型アプリケーションプログラムがその変更を受け入れて、それを実施することが可能である前に、それぞれの異なるプラットフォームに対する異なる命令を変換する必要がある。これらのおよびその他の複雑な状態により、分散型アプリケーションプログラムは、需要スパイク（ｄｅｍａｎｄ  ｓｐｉｋｅｓ）にかなり敏感な傾向がある。
【０００８】
需要スパイクに対するこの敏感さは、様々な分散型アプリケーションプログラムモジュールが、エラーが検出される前に、長い時間にわたって準最適レベルで引き続き動作することができることを意味する。場合によっては、修正措置を試みることは、結果として、さらにより多くのエラーをもたらす可能性があるため、分散型アプリケーションサーバの管理者は、修正措置を講じない場合がある。結果として、分散型アプリケーションプログラムモジュールは、分散型アプリケーションプログラムの寿命の間、決して訂正されずに、連続的に自らを再ブートするなど、非効率な動作のパターンに行き詰る可能性が潜在的にある。したがって、現在の分散型アプリケーションプログラムおよび分散型アプリケーションプログラムサーバの管理について、対処されるいくつかの困難が存在する。
【発明の概要】
【課題を解決するための手段】
【０００９】
本発明の実装形態は、分散型アプリケーションプログラムサーバを介して分散型アプリケーションプログラムのオペレーションを自動的に実施するように構成されたシステム、方法、およびコンピュータプログラム製品を提供する。少なくとも１つの実装形態において、例えば、分散型アプリケーションプログラムサーバは、実施手段のセットおよび解析手段のセットを備える。分散型アプリケーションプログラムのそれぞれの所与のモジュールに対するプラットフォーム固有ドライバを介して、当該実施手段は、それぞれのプラットフォーム上で所与の分散型アプリケーションプログラムモジュールを作成するために、高レベル命令、すなわち、宣言的モデル（ｄｅｃｌａｒａｔｉｖｅ  ｍｏｄｅｌｓ）のセットを配備する。一方、当該解析手段は、必要に応じて、当該宣言的モデルを自動的に監視および調整する。宣言的モデルによる、分散型アプリケーションプログラムに対するサーバコンポーネントのこの疎結合、ならびに自動的な監視および調整は、サーバが、需要、リソース、もしくは利用急増（ｕｓａｇｅ  ｓｐｉｋｅｓ）、および／またはその他の形態の分散型アプリケーションプログラムの行動変動をよりよく管理することを可能にできる。
【００１０】
したがって、宣言的モデルを使用して、分散型アプリケーションプログラムの実行の間に、当該分散型アプリケーションプログラム内の高レベル命令の１つまたは複数のセットを自動的に実施する方法は、リポジトリ内の対応する１つまたは複数の宣言的モデルに対する１つまたは複数の修正を識別することを含むことができる。この１つまたは複数の宣言的モデルは、分散型アプリケーションプログラムの１つまたは複数の動作に関する高レベル命令を含む。この方法は、また、分散型アプリケーションプログラムのオペレーションに関するコンテキスト上の情報を含めるために、１つまたは複数の宣言的モデルを改良すること（ｒｅｆｉｎｉｎｇ）を含むことができる。加えて、この方法は、１つまたは複数の改良（精製）された宣言的モデルを、分散型アプリケーションプログラムのコンテナによって実施されることになる１つまたは複数のコマンドに変換することを含むことができる。さらに、この方法は、変換されたコマンドを１つまたは複数のアプリケーションコンテナに送ることを含むことができる。次いで、変換されたコマンドは、当該コンテナによって受信されて、そのコンテナ内の分散型アプリケーションプログラムの行動を決定および構成するために使用される。
【００１１】
加えて、宣言的モデルを使用して、分散型アプリケーションプログラムの実行の間に、当該分散型アプリケーションプログラム内の高レベル命令の１つまたは複数のセットを自動的に実施する追加の方法または代替の方法は、リポジトリから新しい１つまたは複数の宣言的モデルのセットを受信することを含むことができる。この新しい１つまたは複数の宣言的モデルは、分散型アプリケーションプログラムのオペレーションに関する高レベル命令を含む。この方法は、実施手段および１つまたは複数のアプリケーションコンテナを介して、新しい１つまたは複数の新しい宣言的モデルを実施することも含むことができる。結果として、実行されることになる低レベル命令の第１のセットが作成されて、１つまたは複数のアプリケーションコンテナに送られる。
【００１２】
加えて、この方法は、１つまたは複数の解析手段を介して、新しい１つまたは複数の宣言的モデル内の変更を識別することを含むことができる。この変更は、１つまたは複数のアプリケーションコンテナから受信された分散型アプリケーションプログラムに関するパフォーマンス情報を反映する。さらに、この方法は、実施手段および１つまたは複数のアプリケーションコンテナを介して、１つまたは複数の宣言的モデルの更新されたバージョンを実施することを含むことができる。したがって、１つまたは複数の新しい宣言的モデルに対する変更に基づいて、実行されることになる低レベル命令の第２のセットが作成されて、１つまたは複数のアプリケーションコンテナに送られる。
【００１３】
この概要は、発明を実施するための形態において以下でさらに説明される概念の簡素化された形での概念の選択を導くために提供される。この概要は、特許請求される主題の主な特徴または必須の特徴を識別することが意図されず、または特許請求される主題の範囲を決定する際の手掛かりとして使用されることも意図されない。
【００１４】
本発明の追加の特徴および利点は、続く説明において記載され、かつ部分的に当該説明から明らかになるか、または本発明の実施により理解される。本発明の特徴および利点は、特に添付の特許請求の範囲において特定される手段および組合せによって実現され、および得られる。本発明のこれらの特徴およびその他の特徴は、以下の説明および添付の特許請求の範囲からより完全に明らかになり、または、以下に記載された本発明の実施によって理解される。
【００１５】
本発明の上述のおよびその他の利点ならびに特徴が取得される様式を説明するために、上で短く説明された、本発明のより詳細な説明は、添付の図面に例示されるその特定の実施形態の参照によって示される。これらの図面は本発明の典型的な実施形態だけを示し、したがって、その範囲の限定とみなされないことを理解して、本発明は、添付の図面の使用によって、追加の特定性および詳細を用いて記述および説明される。
【図面の簡単な説明】
【００１６】
【図１Ａ】本発明の実装形態による、１つまたは複数の宣言的モデルを使用して、分散型アプリケーションプログラム動作を自動的に実施するように構成されたシステムの概要概略図である。
【図１Ｂ】図１Ａに示す実行コンポーネントおよびプラットフォーム固有ドライバのより詳細な概略図である。
【図２】本発明の実装形態による、宣言的モデルを使用して、分散型アプリケーションプログラムの実行の間に、当該分散型アプリケーションプログラム内の高レベル命令の１つまたは複数のセットを実施する方法における一連の活動の流れ図である。
【図３】本発明の実装形態による、宣言的モデルを使用して、分散型アプリケーションプログラムの実行の間に、当該分散型アプリケーションプログラム内の高レベル命令の１つまたは複数のセットを実施するための追加の方法または代替の方法の追加の流れ図である。
【発明を実施するための形態】
【００１７】
本発明の実装形態は、分散型アプリケーションプログラムサーバを介して、分散型アプリケーションプログラムのオペレーションを自動的に実施するように構成されたシステム、方法、およびコンピュータプログラム製品に及ぶ。少なくとも一実装形態において、例えば、分散型アプリケーションプログラムサーバは、実施手段のセットおよび解析手段のセットを備える。分散型アプリケーションプログラムのそれぞれの所与のモジュールに関するプラットフォーム固有ドライバを介して、当該実施手段は、それぞれのプラットフォーム上で所与の分散型アプリケーションプログラムモジュールを作成するために、高レベル命令、すなわち、宣言的モデルのセットを配備する。一方、当該分析手段は、必要に応じて、宣言的モデルを自動的に監視および調整する。宣言的モデルによる、分散型アプリケーションプログラムに対するサーバコンポーネントのこの疎結合、ならびに自動的な監視および調整は、サーバが、需要、リソース、または利用スパイク、およびその他の形態の分散型アプリケーションプログラムの行動変動をよりよく管理することを可能にできる。
【００１８】
したがって、以下の明細書および特許請求の範囲から、本発明の実装形態は、分散型アプリケーションプログラムの管理にいくつかの異なる利点を提供できることが理解されよう。これは、プラットフォーム固有ベースで分散型アプリケーションモジュールを構成しおよび管理する分散型アプリケーションコンテナによって実行される低レベル命令（例えば、実行可能コマンド）として、プログラム開発者によって作成されるものなど、高レベル命令を実施することの容易さに少なくとも一部起因する。例えば、本発明の実装形態は、改良（精製）された宣言的モデル命令が変換されるように、宣言的モデルを書き込むための機構、宣言的モデルに対する変更を検出するための機構、および適切なモデル精製（ｒｅｆｉｎｅｍｅｎｔ）プロセスをスケジュールするための機構を提供する。
【００１９】
さらなる実装形態は、改良（精製）されたモデルを最終的に実行される命令／コマンドに変換するための機構を提供する。したがって、これらの特徴およびその他の特徴は、潜在的にいくつかの異なるプラットフォーム上で１つまたは複数の異なる分散型アプリケーションプログラムを管理している分散型アプリケーションプログラムサーバの管理をかなり容易にし、かつ標準化できることが理解されよう。特に、サーバ管理者は、所与のランタイム環境の構成の特色、および／または所与の分散型アプリケーションプログラムの特定の実装プラットフォームのすべてを必ずしも理解する必要なしに、幅広い分散型アプリケーション動作を容易に構成することが可能である。
【００２０】
次に図面を参照すると、図１Ａは、進行中の、自動ベースで、１つまたは複数の異なる分散型アプリケーションプログラム１０７内の高レベル命令を実施するために、分散型のコンピュータ化された環境／システム１００において分散型アプリケーションサーバが使用される、本発明の少なくとも１つの実装形態の概略図を例示する。特に、図１Ａは、実施手段１０５および解析手段１１０を備えたシステム分散型システム１００を示す。通常、実施手段１０５および解析手段１１０は、１つまたは複数の分散型アプリケーションプログラムサーバ内で使用できる一般化されたコンピュータ実行可能コンポーネントの１つまたは複数のセットを備える。これらの一般化されたコンピュータ実行可能コンポーネントは、次に、１つまたは複数のアプリケーションコンテナ１３５内の１つまたは複数の異なる分散型アプリケーションプログラム１０７を管理するように構成される。
【００２１】
例えば、図１Ａは、少なくとも１つの実装形態において、実施手段１０５は、ツールコンポーネント１２５を備えることを示す。通常、ツールコンポーネント１２５は、１つまたは複数の宣言的モデル１５３を作成するために、プログラム開発者またはサーバ管理者によって使用できるコンピュータ実行可能プログラムの１つまたは複数のセットを備える。例えば、ユーザ（例えば、分散型アプリケーションプログラム開発者）は、宣言的モデル１５３を作成するために、１つまたは複数の開発者のツール（例えば、１２５）を使用することができる。予備的事項として、本明細書における、任意のプラットフォーム（もしくは、そうでない場合、オペレーティングシステム）固有のコンポーネントまたはモジュール／プログラムの任意の参照は、単に説明の都合上のために行われることを理解されよう。詳細には、本明細書における、任意のコンポーネント、モジュールまたはアプリケーション固有の特徴の任意の参照は、幅広い動作環境、システム、および／またはプラットフォームにおいて適用されていることが可能であると理解されることになる。
【００２２】
いずれの場合も、先に述べたように、宣言的モデル１５３は、特定の分散型アプリケーションプログラム１０７の動作に関する高レベル命令の１つまたは複数のセットを含む。これらの高レベル命令は、通常、分散型アプリケーションプログラム内の１つまたは複数のモジュールの動作／行動に関する特定の意図を説明するが、その特定の動作／行動を実施するために要求されるステップを説明するとは限らない。例えば、宣言的モデル１５３は、何のコンピュータシステム上で特定のモジュールを実行すべきかについての情報、ならびに、特定のモジュールを実行するために可能にされるべきコンピュータシステムの特性（例えば、処理速度、記憶容量など）などを含めることができる。
【００２３】
宣言的モデル１５３は、特定のエンドポイントのＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）アドレスなどの固有情報を最終的に含めることができるが、任意の宣言的モデル（例えば、１５３）の初期の作成は、通常、結果として、一般化された情報を含む可能性が高いであろう文書をもたらすことになる。かかる一般化された情報は、モジュールが実行されるドメイン名、当該モジュールの実行に関連することができる異なる許可セット、あるコンポーネントが少しでも接続すべきか否かなどを含めることができる。例えば、宣言的モデル１５３は、別のウェブサービスにあるウェブサービスを接続させる意図を記述することが可能である。
【００２４】
最終的に解釈および／または変換されるとき、これらの一般化された意図命令は、結果として、プラットフォームまたは動作環境に応じて、非常に固有の命令／コマンドをもたらすることができる。例えば、宣言的モデル１５３は、解釈されたときに、１つの他のウェブサービスが近くにある場合、１つのデータセンター内に配備されたウェブサービスがＴＣＰトランスポートを使用するように構成することができるように命令を含めることができる。当該命令は、その他のウェブサービスがファイヤウォールの外側にある（すなわち、近くにない）場合、代わりにインターネット中継接続を使用するように、その配備されたウェブサービスに伝える命令も含めることができる。
【００２５】
ある種の接続に対する選択を表示するが、 宣言的モデル（例えば、「宣言的アプリケーションモデル」）（１５３）は、通常、接続プロトコルの選択をモデルインタプリタ（ｉｎｔｅｒｐｒｅｆｅｒ）に任せることになる。特に、宣言的モデルクリエイタ（ｃｒｅａｔｏｒ）（例えば、ツールコンポーネント１２５）は、概して、宣言的モデル１５３内の接続の選択を示す可能性があり、一方、宣言的モデルインタプリタ（例えば、実行コンポーネント１１５および／またはプラットフォーム固有ドライバ１３０）は、特定のモジュールがどこに配備されているかに応じて、異なる通信トランスポートを選択するように構成することができる。例えば、モデルインタプリタ（例えば、実行コンポーネント１１５および／またはプラットフォーム固有ドライバ１３０）は、同じマシン上にある場合、クラスタをなしている場合、またはインターネット上で接続された場合、モジュール同士の間の接続を区別するためにより固有の命令を作成することが可能である。
【００２６】
同様に、別の宣言的モデル（例えば、「宣言的ポリシーモデル」）（１５３）は、最終消費ポリシーにより基づいて、動作特徴を記述することが可能である。例えば、分散型金融アプリケーションプログラムと共に使用される宣言的ポリシーモデルは、一秒間に１００個以上の取引要求が接続上で仲買企業に送られることはできないことを指図することが可能である。しかし、ポリシーモデルインタプリタ（例えば、実行コンポーネント１１５および／またはプラットフォーム固有ドライバ１３０）は、記述された意図を実施するための過度の要求を待ち行列に入れるなど、適切な戦略を選択するように構成することができる。
【００２７】
いずれの場合も、図１Ａは、特定の宣言的モデル１５３の作成時に、ツールコンポーネント１２５は、次いで、宣言的モデル１５３をリポジトリ１２０内に渡す（例えば、書き込む）ことを示す。少なくとも１つの実装形態において、リポジトリ１２０が宣言的モデル１５３に対する任意の種類の修正（例えば、新しい書込み、または解析手段１１０からの修正）を受信するときはいつでも、実行コンポーネント１１５はこれを検出することになる。例えば、リポジトリ１２０は、１つもしくは複数の更新または警告を実行コンポーネント１１５に送ることが可能である。しかし、追加の実装形態または代替の実装形態では、実行コンポーネント１１５は、いくつかの特定のスケジュールベースで、または連続ベースですら、リポジトリ１２０と同期することによって、任意のかかる修正、作成、または変更を識別するように構成することができる。
【００２８】
いずれの場合も、実行コンポーネント１１５は、リポジトリ１２０内の宣言的モデル１５３（および／またはそれらに対する変更）がプラットフォーム固有ドライバ１３０によって変換されるように、当該宣言的モデル１５３（および／またはそれらに対する変更）を最終的に識別、受信および改良する。通常、宣言的モデル１５３を「改良すること」は、宣言的モデル命令がプラットフォーム固有ドライバ１３０による変換のために十分完全であるように、宣言的モデル内に含まれた情報のうちのいずれかを追加または修正することを含む。宣言的モデル１５３は、人間のユーザによって比較的大雑把に書き込まれることが可能である（すなわち、一般化された意図命令または意図要求を含む）ため、実行コンポーネントが宣言的モデルを修正または補完する必要があろう異なる程度もしくは範囲が存在することができる。
【００２９】
これらの方針に沿って、図１Ｂは、実施手段１０５を介して実行されるような改良および変換プロセスに関する追加の詳細を例示する。特に、図１Ｂは、最終的に低レベル命令として、様々な宣言的モデル１５３を実施することに従って発生することがあるいくつかの追加のプロセスを例示する。このために、図１Ｂは、実行コンポーネント１１５が、段階的な詳細化（ｐｒｏｇｒｅｓｓｉｖｅ  ｅｌａｂｏｒａｔｉｏｎ）技法を使用して、宣言的モデル１５３を改良するために使用できる１つまたは複数の異なるコンポーネントを備えることを示す。
【００３０】
例えば、図１Ａは、実行コンポーネント１１５は、スケジュール処理コンポーネント１１７および精製コンポーネント１１９を備えることを示す。通常、スケジュール処理コンポーネント１１７は、実行コンポーネント１１５が、任意の宣言的モデルに対する、リポジトリ内の変更を識別することを可能にするものである。例えば、スケジュール処理コンポーネント１１７は、リポジトリ１２０に内蔵された対応するインターフェースから通信を受信するための１つまたは複数のインターフェースを備える。加えて、またはその代わりに、スケジュール処理コンポーネント１１７は、リポジトリ内の宣言的モデル１５３のデータを同期させるための実行可能命令の１つまたは複数のセットを備える。
【００３１】
（新しい宣言的モデルであろうと、それらに対する更新であろうと）任意の変更を検出すると、実行コンポーネント１１５は、次いで、任意のかかる識別された宣言的モデル（または修正）に関して段階的な詳細化のプロセスを開始する。通常、段階的な詳細化は、あいまいさがなくなるまで、かつ詳細が、プラットフォーム固有デバイス１３０が当該詳細を消費／変換するのに十分になるまで、特定の宣言的モデル１５３を改良すること（すなわち、データを追加することまたは修正すること）を必要とする。実行コンポーネント１１５は、少なくとも部分的に、宣言的モデル１５３のデータを「改良（精製）する」精製コンポーネント１１９を使用して、段階的な詳細化を実行する。
【００３２】
少なくとも１つの実装形態において、実行コンポーネント１１５は、特定のライブラリ（図示せず）からの活動のセットを使用するワークフローとしてこの段階的な詳細化プロセスまたは「改良」プロセスを実施する。一実装形態において、実行コンポーネント１１５は、事前に、かつ詳細には、宣言的モデルに取り組むために、当該ライブラリも提供する。この特定のワークフローにおいて使用できるいくつかの例示的な活動は、「モデルデータの読取り」、「モデルデータの書込み」、「ドライバの検出」、「ドライバの呼出」などを含めることができる。これらのタイプまたはその他のタイプの呼出に関連する活動は、実行コンポーネント１１５の精製コンポーネント１１９部分によって実施されるとして、以下でより完全に説明される。
【００３３】
詳細には、少なくとも１つの実装形態において、精製コンポーネント１１９は、宣言的モデル１５３（または、それらに関する更新）を改良（精製）する。精製コンポーネント１１９は、通常、宣言的モデル１５３（例えば、別のウェブサービスに接続されたあるウェブサービス）内の要素同士の間の依存（および、対応する意味）の知識に基づいて情報を追加することによって、宣言的モデル１５３を改良する。精製コンポーネント１１９は、分散型アプリケーションプログラム１０７を配備するためのアプリケーションコンテナ１３５の利用可能な在庫に関する情報を追加することによってなど、いくつかの形態のコンテキスト上の認識を加えることによって、宣言的モデル１５３を改良することも可能である。加えて、精製コンポーネント１１９は、コンピュータシステムの割当てに関する不足データを充填するように構成することができる。
【００３４】
例えば、精製コンポーネント１１９は、２つのモジュールが、特定のコンピュータシステムアドレスに関する要件または動作要件を有さない場合、宣言的モデル１５３を実施するために使用されることになるいくつかの異なるモジュールを識別することが可能である。したがって、精製コンポーネント１１９は、適切な分散型アプリケーションプログラムコンテナ１３５によって構成された利用可能なコンピュータシステムに分散型アプリケーションプログラム１０７モジュールを割り当て、それに対応して、そのマシン情報を改良（精製）された宣言的モデル１５３ａ（またはその区分）内に記録することが可能である。これらの方針に沿って、精製コンポーネント１１９は、改良（精製）された宣言的モデル１５３内のデータを充填するための最適な様式について推論することができる。例えば、前述のように、実行コンポーネント１１５内の精製コンポーネント１１９は、接続の接近性に基づいて、エンドポイントに関してどのトランスポートを使用すべきかを決定および判断することが可能であるか、または、予測される需要の急増（ｓｐｉｋｅｓ）を処理するのに適した要因に基づいて、分散型アプリケーションプログラムモジュールをどのように割り当てるかを決定および判断することが可能である。
【００３５】
追加の実装形態または代替の実装形態において、精製コンポーネント１１９は、宣言的モデル１５３内の依存データを演算することが可能である。例えば、精製コンポーネント１１９は、マシンに対する分散型アプリケーションプログラムモジュールの割当てに基づいて、依存データを演算することが可能である。これらの方針に沿って、精製コンポーネント１１９は、エンドポイントに関するＵＲＩアドレスを計算して、対応するＵＲＩアドレスをプロバイダエンドポイントから消費者エンドポイントに伝搬することも可能である。加えて、精製コンポーネント１１９は、宣言的モデル１５３内の制約を評価することが可能である。例えば、精製コンポーネント１１９は、２つの分散型アプリケーションプログラムモジュールが実際に同じマシンに割り当てられることが可能であるかどうかを確かめるために確認するように構成されることが可能である。そうでない場合、精製コンポーネント１１９は、宣言的モデル１５３ａを補正するために、宣言的モデル１５３ａを改良することが可能である。
【００３６】
（モデル１５３ａを作成するために）所与の宣言的モデル１５３にすべての適切なデータを追加した（または、そうでない場合、所与の宣言的モデル１５３を修正／改良した）後で、精製コンポーネント１１９は、改良（精製）された宣言的モデル１５３ａがプラットフォーム固有デバイス１３０によって変換されるように、改良（精製）された宣言的モデル１５３ａを仕上げることができる。改良（精製）された宣言的モデル１５３ａを仕上げるためまたは完成するために、精製コンポーネント１１９は、例えば、宣言的モデル１５３を任意の１つまたは複数のプラットフォーム固有ドライバ１３０によって目標とされる区分に区分化することが可能である。このために、精製コンポーネント１１９は、その目標ドライバ（例えば、プラットフォーム固有デバイス１３０のアドレス）を用いて、それぞれの宣言的モデル１５３ａ（またはその区分）にタグをつけることができる。さらに、精製コンポーネント１１９は、宣言的モデル１５３ａが実際にプラットフォーム固有ドライバ１３０によって変換されることを検証して、そうである場合、改良（精製）された宣言的モデル１５３ａ（またはその区分）を変換のために特定のプラットフォーム固有ドライバ１３０に渡すことが可能である。
【００３７】
いずれの場合も、図１Ｂは、プラットフォーム固有ドライバ１３０は、変換コンポーネント１３１を介して、これらの命令を変換することを示す。通常、変換コンポーネントは、改良（精製）された宣言的モデル１５３ａ（および／またはそれらの区分）を１つまたは複数のプラットフォーム固有命令／コマンドのセット１３３に変換する。例えば、図１Ｂは、プラットフォーム固有ドライバ１３０は、特定のオペレーティングシステムまたは動作環境において実行されることが可能であり、かつ／または特定のアプリケーションコンテナ１３５によって理解されることになる必須の命令／コマンドのセット１３３を作成することが可能であることを示す。一実装形態において、改良（精製）された宣言的モデル１５３ａの変換は、結果として、ファイルの作成、仮想ディレクトリの追加、構成ファイル内への設定の書込みなどをもたらすることができる。
【００３８】
変換コンポーネント１３１によって実行される活動は何でも、特定のプラットフォームまたは特定の動作環境に合わせて調整されることになる。特に、プラットフォーム固有ドライバは（例えば、変換コンポーネント１３１を介して）、１つまたは複数のアプリケーションコンテナ１３５に対応する所与のプラットフォーム／動作環境の徹底的な、プラットフォーム固有構成知識（例えば、その下でそれらの改良（精製）された宣言的モデルが実行するオペレーティングシステムのバージョン）およびコンテナ実装技術に従って、改良（精製）された宣言的モデルを変換することが可能である。ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（登録商標）の動作環境に関して、例えば、いくつかのコンテナ実装形態技術は、「ＩＩＳ」−インターネット情報サービス、または「ＷＣＦ」−ＷＩＮＤＯＷＳ（登録商標）コミュニケーションファンデーション−サービスモジュール）をホストするために使用されるＷＩＮＤＯＷＳ（登録商標）  ＡＣＴＩＶＡＴＩＯＮ  ＳＥＲＶＩＣＥを含めることができる。（しかし、先に述べたように、ＷＩＮＤＯＷＳ（登録商標）またはＭＩＣＲＯＳＯＦＴの任意のコンポーネント、モジュール、プラットフォーム、またはプログラムの任意の特定の参照は、単に例としてである。）
【００３９】
結果として、ツールコンポーネント１２５および／または精製コンポーネント１１９によって宣言的モデル内に配置された一般化された命令または補完された命令は、最終的に、１つまたは複数のアプリケーションコンテナ１３５内の１つまたは複数の分散型アプリケーションプログラム１０７のオペレーショナルリアリティ（ｏｐｅｒａｔｉｏｎａｌ  ｒｅａｌｉｔｙ）に指令する。特に、１つまたは複数の分散型アプリケーションコンテナ１３５は、プラットフォーム固有ドライバ１３０から受信された命令／コマンド１３３を実行することによって、宣言的モデル１５３を実行する。このために、分散型アプリケーションコンテナ１３５は、交換もしくは改訂されている任意の先のモジュールを、新しい宣言的モデル１５３と交換することまたは更新することができる。加えて、分散型アプリケーションコンテナ１３５は、新しい命令／コマンド１３３内で説明されるものを含めて、かつ任意の数の異なるコンピュータシステム上で、通常実行されるような、モジュールおよび／またはコンポーネントの最近のバージョンを実行する。
【００４０】
前述の説明に加えて、分散型アプリケーションプログラム１０７は、実施手段１０５を介して、実行およびパフォーマンスに関する様々な動作情報を提供し戻すことが可能である。例えば、本発明の実装形態は、プラットフォーム固有ドライバ１０３を介して、様々な実行指示子またはパフォーマンス指示子に関する１つまたは複数のイベントストリーム１３７を送り返すために、分散型アプリケーションプログラム１０７を提供する。一実装形態において、分散型アプリケーションプログラム１０７は、連続する、進行中ベースで、イベントストリーム１３７を送り出すことが可能である。一方、その他の実装形態において、分散型アプリケーションプログラム１０７は、スケジュールベースで（例えば、ドライバ１３０からのスケジュールされた要求に基づいて）イベントストリームを送る。プラットフォーム固有ドライバ１３０は、次に、解析、調整、および／またはその他の適切な修正のために、１つまたは複数のイベントストリーム１３７を解析手段１１０に渡す。
【００４１】
特に、かつ本明細書でより完全に理解されるように、解析手段１１０は、様々な分散型アプリケーションプログラム１０７の関心のある傾向および行動を識別するために、関連するデータを集約し、相関し、その他の形でフィルタリングする。解析手段１１０は、識別された傾向に関して、必要に応じて、対応する宣言的モデル１５３を修正することも可能である。例えば、解析手段１１０は、イベントストリーム１３７において識別された問題を克服するためになど、意図における変更を反映する、新しい宣言的モデル１５３ｂまたは、そうでない場合、修正された宣言的モデル１５３ｂを作成するために、宣言的モデル１５３を修正することが可能である。特に、修正された宣言的モデル１５３ｂは、現在割り当てられているマシンがあまりにも頻繁に再ブートしている場合、分散型アプリケーションプログラムの所与のモジュールが別のマシン上に再配備されることが可能なように構成することができる。
【００４２】
次いで、修正された宣言的モデル１５３ｂは、再びリポジトリ１２０内に渡される。先に述べたように、実行コンポーネント１１５は、新しい宣言的モデル１５３ｂ（または、先の宣言的モデル１５３に対する修正）を識別して、対応する改良プロセスを開始することになる。詳細には、実行コンポーネントは、先に説明されたような、改良（精製）され、修正された宣言的モデルを作成する目的で、修正された宣言的モデル１５３ｂに任意の必要なデータを追加するために、精製コンポーネント１１９を使用することになる。次いで、修正されてはいるが新たに改良（精製）された宣言的モデル１５３ｂは、プラットフォーム固有ドライバ１３０に渡され、そこで、当該宣言的モデル１５３ｂは、処理のために、変換されて、適切なアプリケーションコンテナ１３５に渡される。
【００４３】
したがって、図１Ａ〜１Ｂ（および対応するテキスト）は、分散型アプリケーションプログラム内の高レベル命令を自動的に実施するためのいくつかの異なる図式、コンポーネント、および機構を提供する。先に説明されたように、これはすべて、サーバ管理者による分散型アプリケーションプログラムおよびそれらのコンテナの詳細な知識を必ずしも要求せずに行われる。
【００４４】
前述の説明に加えて、本発明の実装形態は、特定の結果を達成するための一連の活動および／またはステップを有する方法の１つまたは複数の流れ図を用いて説明することも可能である。例えば、図２および３は、サーバの観点から、分散型アプリケーションプログラム内の高レベル命令の１つまたは複数のセットを自動的に実施するための追加の方法または代替の方法を例示する。図２および３の動作および／またはステップは、図１Ａおよび１Ｂのコンポーネント、図式、および対応するテキストに関して、以下でより完全に説明される。
【００４５】
例えば、図２は、サーバの観点から、実行の間、分散型アプリケーションプログラム内の高レベル命令の１つまたは複数のセットを自動的に実施する方法は、１つまたは複数の宣言的モデルを識別する動作２００を備えることを示す。動作２００は、リポジトリ内の対応する１つまたは複数の宣言的モデルに対する１つまたは複数の修正を識別することを含み、この１つまたは複数の宣言的モデルは、分散型アプリケーションプログラムの１つまたは複数の動作に関する高レベル命令を含む。例えば、図１Ａおよび１Ｂに示すように、ツールコンポーネント１２５は、宣言的モデル１５３を作成しおよび／またはリポジトリ１２０に渡すために使用できる。実行コンポーネント１１５は（例えば、スケジュール処理コンポーネント１１７を介して）宣言的モデル１５３（または、それらに対する対応する更新）を受信して、処理を開始する。
【００４６】
図２は、サーバの観点から、方法は、コンテキスト上の情報を用いて宣言的モデルを改良する動作２１０を備えることも示す。動作２１０は、分散型アプリケーションプログラムのオペレーションに関するコンテキスト上の情報を含めるために、識別された１つまたは複数の宣言的モデルを改良することを含む。例えば、実行コンポーネント１１５は、宣言的モデル内の不足データを充填すること、モジュール同士の間の接続においてどのトランスポートを使用するかを判断すること、宣言的モデル内の依存データを演算すること、宣言的モデル内の制約を評価することなど、任意の数の動作を実行することができる。
【００４７】
加えて、図２は、サーバの観点から、この方法は、改良（精製）された宣言的モデルを変換する動作２２０を備えることを示す。動作２２０は、１つまたは複数の改良（精製）された宣言的モデルを分散型アプリケーションプログラムによって実施されることになる１つまたは複数のコマンドに変換することを含む。例えば、図１Ａおよび１Ｂにおける実施手段１０５は、改良（精製）された宣言的モデル１５３ａに対応する命令を受信して、１つまたは複数のアプリケーションコンテナ１３５に命令／コマンドのセット１３３を送るために、変換コンポーネント１３１を介して、その改良（精製）された宣言的モデル１５３ａを変換するプラットフォーム固有ドライバコンポーネント１３０を含む。
【００４８】
さらに、図２は、サーバの観点から、この方法は、変換されたコマンドをアプリケーションコンテナに送る動作２３０を備えることを示す。動作２３０は、変換されたコマンドをこれらの変換されたコマンドが受信および実施される１つまたは複数のアプリケーションコンテナに送ることを含む。例えば、図１Ａおよび１Ｂに示すように、プラットフォーム固有の命令／コマンド１３３を作成するために当該命令を変換すると、プラットフォーム固有ドライバ１３０は、（例えば、変換コンポーネント１３１を介して）これらのコマンドを作成して、１つまたは複数のアプリケーションコンテナ１３５に送り、そこで、これらのコマンドは、分散型アプリケーションプログラムを構成および管理するために実施される。
【００４９】
前述の説明に加えて、図３は、サーバの観点から、高レベル命令の１つまたは複数のセットを自動的に実施する追加の方法または代替の方法は、この新しい宣言的モデルのセットを受信する動作３００を備えることを示す。動作３００は、リポジトリから新しい１つまたは複数の宣言的モデルのセットを受信することを含み、この新しい１つまたは複数の宣言的モデルは、分散型アプリケーションプログラムのオペレーションに関する高レベル命令を含む。例えば、実行コンポーネント１１５は、リポジトリ１２０を介して宣言的モデル１１３を受信する。これらの宣言的モデル１１３が新しい場合、これらの宣言的モデル１１３は、ツールコンポーネント１２５から生じる可能性があり、または、これらの宣言的モデル１１３がイベントストリーム１３７内の情報に応答して修正される場合など、これらの宣言的モデル１１３は、解析手段１１０を介して生じる可能性がある。
【００５０】
図３は、この方法は、サーバの観点から、アプリケーションコンテナを介して新しい宣言的モデルを実施する動作３１０を備えることも示す。動作３１０は、１つまたは複数のアプリケーションコンテナ内の実施手段を介して、新しい１つまたは複数の宣言的モデルを実施することを含み、実施されることになる低レベルコマンドの第１のセットが作成されて、１つまたは複数のアプリケーションコンテナに送られる。例えば、図１Ａおよび１Ｂは、実行コンポーネント１１５は、スケジュール処理コンポーネント１１７、および精製コンポーネント１１９を介してなど、改良（精製）された宣言的モデル１５３ａ情報のセットを作成することを示す。次いで、プラットフォーム固有ドライバ１３０は、この情報を命令／コマンドの特定のセット１３３に変換する。次いで、これらの命令／コマンドの特定のセット１３３は、それぞれのアプリケーションコンテナ１３５内の実行によって（１つまたは複数の）分散型アプリケーションプログラム１０７の動作を構成および制御する。
【００５１】
加えて、図３は、サーバの観点から、この方法は、宣言的モデル内の変更を識別する動作３２０を備えることを示す。動作３２０は、１つまたは複数の解析手段を介して、新しい１つまたは複数の宣言的モデル内の変更を識別することを含み、この変更は１つまたは複数のアプリケーションコンテナから受信された分散型アプリケーションプログラムに関するパフォーマンス情報を反映する。例えば、図１Ｂは、アプリケーションコンテナ１３５は、実施手段１０５のプラットフォーム固有ドライバ１３０を介して、パフォーマンス情報１４０を送り返すことを示す。次いで、この情報は、解析手段１１０に渡され、解析手段１１０は、適切な場合、任意のパフォーマンス課題に対処するために宣言的モデル１１３を変更または更新することが可能である。先に議論されたように、イベントストリームは、サーバ（または、サーバ上のモジュール）があまりにも頻繁に再ブートしていることを識別することが可能であり、したがって、解析手段は、別のサーバ上に当該モジュールを再配備する意図を識別する宣言的モデル（すなわち、１５３ｂ）に対する修正を作成することができる。
【００５２】
さらに、図３は、サーバの観点から、方法は、アプリケーションコンテナを介して、宣言的モデルの更新されたバージョンを実施する動作３３０を備えることを示す。動作３３０は、実施手段および１つまたは複数のアプリケーションコンテナを介して、１つまたは複数の宣言的モデルの更新されたバージョンを実施することを含み、１つまたは複数の新しい宣言的モデルに対する変更に基づいて実行されることになる低レベルコマンドの第２のセットが作成されて、１つまたは複数のアプリケーションコンテナに送られる。例えば、図１Ｂは、実施手段１０５は、修正された宣言的モデル１５３ｂを受信することができることを示す。モデル１５３と同様、宣言的モデル１５３ｂは、次いで、変換のために、改良（精製）され、修正された宣言的モデル１５３ｂ命令をプラットフォーム固有ドライバ１３０に渡す実行コンポーネント１１５を介して、検出および改良される。前述の通り、（１つまたは複数の）分散型アプリケーションコンテナ１３５は、次いで、それらのそれぞれのアプリケーションコンテナ内で分散型アプリケーションプログラムを再構成するために、改良（精製）され、修正された宣言的モデル１５３ｂに対して新しい対応する命令／コマンドを実行する。
【００５３】
したがって、図１Ａから３は、アプリケーションコンテナを介して、低レベル命令として最終的に実施される、サーバレベルでの高レベル命令を自動的に実施するためのいくつかの図式、コンポーネント、および機構を提供する。本明細書で説明されたように、これらの利点およびその他の利点は、特定の分散型アプリケーションプログラムのプラットフォームの要件および規則の詳細な知識を必ずしも必要とせずに、サーバ管理者が分散型アプリケーションプログラム動作を連続的にかつ自動的に調整することを可能にすることができる。したがって、本発明の実装形態は、分散型システムを通して非常にスケーラブルであり、かつ管理が比較的簡単である。
【００５４】
本発明の実施形態は、以下でさらに詳細に議論されるように、様々なコンピュータハードウェアを含む専用コンピュータまたは汎用コンピュータを備えることができる。本発明の範囲内の実施形態は、コンピュータ実行可能命令もしくはデータ構造を伝送するコンピュータ可読媒体またはその上に格納されたコンピュータ実行可能命令もしくはデータ構造を有するコンピュータ可読媒体も含む。かかるコンピュータ可読媒体は、汎用コンピュータまたは専用コンピュータによってアクセスされる任意の利用可能な媒体であってよい。
【００５５】
限定ではなく、例として、かかるコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、またはその他の光ディスク記憶装置、磁気ディスク記憶装置もしくはその他の磁気記憶デバイス、あるいはコンピュータ実行可能命令またはデータ構造の形で所望されるプログラムコード手段を運ぶためまたは記憶するために使用されることが可能であり、かつ汎用コンピュータまたは専用コンピュータによってアクセスされる任意のその他の媒体を備える。情報がネットワーク上または（有線、無線、もしくは有線および無線の組合せの）別の通信接続上でコンピュータに転送あるいは提供される場合、当該コンピュータは、当該接続をコンピュータ可読媒体と適切にみなす。したがって、任意のかかる接続は、コンピュータ可読媒体と適切に呼ばれる。上述の説明の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
【００５６】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理デバイスにある種の機能もしくは機能のグループを実行させる命令およびデータを備える。この主題は構造的な特徴および／または方法論的な動作に特定の専門用語で説明されているが、添付の特許請求の範囲において定義されるこの主題は、上で説明された特定の特徴または動作に限定されるとは限らない点を理解されたい。むしろ、上で説明された特定の特徴および動作は、特許請求の範囲の例示的な実施形態として開示される。
【００５７】
本発明は、その趣旨または必須の特徴から逸脱せずに、その他の特定の形態で実施されることが可能である。説明された実施形態は、すべての点で、限定ではなく、単に例示として考慮されるべきである。したがって、本発明の範囲は、前述の記述によってではなく、添付の特許請求の範囲によって示される。特許請求の範囲の均等の意味内および均等の範囲内のすべての変更はその範囲内に包括されるべきである。
【図１Ａ】
2010532532.tif 000003
【図１Ｂ】
2010532532.tif 000004
【図２】
2010532532.tif 000005
【図３】
2010532532.tif 000006
【国際調査報告】
2010532532.tif 000007
2010532532.tif 000008