(57)【要約】ホストする環境において実行されるアプリケーションのロール・インスタンスに対して、個々のロール・インスタンスの到達可能性と、負荷分散化とを同時に提供する。インスタンス・エンドポイントを、各ロール・インスタンスへ割り当てることができる。各インスタンス・エンドポイントは、ＩＰアドレスとトランスポート・プロトコルと一意のポート番号との組み合わせを含み得る。更に、負荷分散化エンドポイントを、ロール・インスタンスのグループへ割り当てることができる。負荷分散化エンドポイントは、ＩＰアドレスとトランスポート・プロトコルと前記一意のポート番号とは別の一意のポート番号との組み合わせを含み得る。アプリケーション・メッセージがデータ・センターへ発行されるとき、メッセージは、メッセージにより用いられるエンドポイントに従って送られる。インスタンス・エンドポイントに関して、メッセージは、負荷分散化無しで、インスタンス・エンドポイントに対応するロール・インスタンスへ送られる。負荷分散化エンドポイントに関して、メッセージは、負荷分散化を用いてロール・インスタンスのうちの何れかのものへ送られる。
2015503158.tif 000002
【特許請求の範囲】
【請求項１】
コンピューター使用可能命令を格納する１以上のコンピューター・ストレージ媒体であって、前記コンピューター使用可能命令は、１以上の計算デバイスにより使用されたときに、前記１以上の計算デバイスに方法を行わせ、前記方法は、
ホストする環境において複数のロール・インスタンスを提供するステップであって、各ロール・インスタンスは、前記ホストする環境において実行される顧客アプリケーションに対するコードを含む、ステップと、
前記複数のロール・インスタンスに対しての複数のインスタンス・エンドポイントを割り当てるステップであって、各インスタンス・エンドポイントは、第１ＩＰアドレスと、第１トランスポート・プロトコルと、一意のポート番号との組み合わせを含み、前記ロール・インスタンスのうちの１つへマップする、ステップと、
前記インスタンス・エンドポイントをアプリケーションへ公開して、前記アプリケーションが、特定のロール・インスタンスへマップする１つのインスタンス・エンドポイントを用いて前記特定のロール・インスタンスへアクセスすることを可能とするステップと
を含む、
コンピューター・ストレージ媒体。
【請求項２】
請求項１に記載の１以上のコンピューター・ストレージ媒体であって、前記方法は、
前記複数のロール・インスタンスに対しての負荷分散化エンドポイントを割り当てるステップであって、前記負荷分散化エンドポイントは、第２ＩＰアドレスと、第２トランスポート・プロトコルと、前記一意のポート番号とは別の一意のポート番号との組み合わせを含む、ステップと、
前記負荷分散化エンドポイントを前記アプリケーションへ公開して、前記アプリケーションが、負荷分散化を介して前記ロール・インスタンスのうちの何れかのものへアクセスするために前記負荷分散化エンドポイントを用いることを可能にするステップと
を更に含む、コンピューター・ストレージ媒体。
【請求項３】
請求項２に記載の１以上のコンピューター・ストレージ媒体であって、前記第１ＩＰアドレスと前記第２ＩＰアドレスとは同じである、コンピューター・ストレージ媒体。
【請求項４】
請求項２に記載の１以上のコンピューター・ストレージ媒体であって、前記方法は、前記インスタンス・エンドポイントおよび前記負荷分散化エンドポイントを用いて負荷バランサーをプログラムするステップを更に含む、コンピューター・ストレージ媒体。
【請求項５】
請求項１に記載の１以上のコンピューター・ストレージ媒体であって、前記方法は、
前記顧客アプリケーションに対するサービス定義を受け取るステップと、
前記サービス定義を検証するステップと、
前記サービス定義に従って、ホストする環境のリソースを割り当てるステップと
を更に含む、コンピューター・ストレージ媒体。
【請求項６】
請求項５に記載の１以上のコンピューター・ストレージ媒体であって、前記サービス定義は、ポート番号を前記ロール・インスタンスへ割り当てるために前記ホストする環境により用いられるポート割り当てスキームを指定する、コンピューター・ストレージ媒体。
【請求項７】
請求項５に記載の１以上のコンピューター・ストレージ媒体であって、前記サービス定義は、ポート番号を前記ロール・インスタンスへ割り当てるためにポート範囲を指定する、コンピューター・ストレージ媒体。
【請求項８】
請求項１に記載の１以上のコンピューター・ストレージ媒体であって、前記インスタンス・エンドは、ＡＰＩにより前記アプリケーションへ公開され、前記ＡＰＩは、ロール・インスタンスをインスタンス・エンドポイントへマップするマッピング情報を提供する、コンピューター・ストレージ媒体。
【請求項９】
ホストする環境において負荷分散化メッセージおよびインスタンス・メッセージをロール・インスタンスへ送るための、負荷バランサーのための方法であって、
前記ホストする環境において実行されるサービス・アプリケーションのロールに対する複数のロール・インスタンスについてのエンドポイント情報を受け取るステップであって、前記エンドポイント情報は、前記複数のロール・インスタンスに対する複数のインスタンス・エンドポイントを識別し、各インスタンス・エンドポイントは、第１ＩＰアドレスと、第１トランスポート・プロトコルと、一意のポート番号との組み合わせを含み、前記ロール・インスタンスのうちの１つへマップするものであり、前記エンドポイント情報はまた、前記複数のロール・インスタンスに対する負荷分散化エンドポイントを識別し、前記負荷分散化エンドポイントは、第２ＩＰアドレスと、第２トランスポート・プロトコルと、前記一意のポート番号とは別の一意のポート番号との組み合わせを含む、ステップと、
前記複数のインスタンス・エンドポイントからの第１インスタンス・エンドポイントを含む第１メッセージをアプリケーションから受け取るとき、前記第１メッセージを、前記第１インスタンス・エンドポイントに対応する第１ロール・インスタンスへ送るステップと、
前記負荷分散化エンドポイントを含む第２リクエストを前記アプリケーションから受け取るとき、前記第２リクエストを、負荷分散化アルゴリズムに基づいて前記ロール・インスタンスのうちの１つへ送るステップと、
を含む方法。
【請求項１０】
クラウド計算プラットフォームのためのシステムであって、
顧客アプリケーションに対するコードを提供する複数のロール・インスタンスを実行する複数の仮想マシンをホストする１以上の物理マシンと、
各ロール・インスタンスに対してのインスタンス・エンドポイントを生成するために各ロール・インスタンスへ一意のポート番号を割り当てるテナント・マネージャーであって、各インスタンス・エンドポイントは、ＩＰアドレスと、トランスポート・プロトコルと、前記一意のポート番号のうちの１つとの組み合わせを含む、テナント・マネージャーと、
負荷分散化エンドポイントおよび前記インスタンス・エンドポイントを用いてプログラムされる負荷バランサーであって、インスタンス・エンドポイントを用いるアプリケーション・メッセージを、対応するロール・インスタンスへ直接に送るように、および前記負荷分散化エンドポイントを用いるアプリケーション・メッセージを、負荷分散化アルゴリズムに基づいてロール・インスタンスへ送るように構成される負荷バランサーと
を含むシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  大規模なネットワーク化されたシステムは、ビジネスおよび演算の機能のためにアプリケーションを実行するためやデータを維持するための様々な設定で用いられる一般的なプラットフォームである。例えば、データ・センター（例えば、物理的クラウド計算インフラストラクチャー）などのようなホストを行う環境は、同時に複数の顧客に対して様々なサービス（例えば、ウェブ・アプリケーション、Ｅメール・サービス、サーチ・エンジン・サービスなど）を提供することができる。それらの大規模なネットワーク化されたシステムは、典型的に、データ・センターの全体にわたって分散された多数のリソースを含み、各リソースは、物理マシン、または物理ホストで実行される仮想マシンのように見える。データ・センターが複数のテナント（例えば、顧客アプリケーション）をホストするとき、それらのリソースは、同じデータ・センターから様々なテナントへ最適に割り当てられる。
【０００２】
[0002]  顧客のアプリケーションがデータ・センターにおいてインプリメントされるとき、そのアプリケーションは、そのアプリケーションのコードの複数の部分を含む１以上のロール（role）により提供され得る。各ロールは、典型的には、複数のロール・インスタンスを有することができ、メッセージをアプリケーション（例えば、外部アプリケーション）から様々なインスタンスへ配布するために、負荷分散化（load-balancing）が用いられる。そのようなインフラストラクチャー内では、顧客が、顧客のサービスへ割り当てられる物理マシン、仮想マシン、および／またはロール・インスタンスを増加または減少させることにより、顧客のサービスを透明にスケール・アウトすることを可能にすることが、望ましい。更に、顧客がインターネットなどのようなネットワークを介して特定のロール・インスタンスをアドレスすることを望み得る、という多くのシナリオがある。例は、リモート・デスクトップのデバッグ、インスタンス監視、タスク管理（例えば、特定のアプリケーションに対してのスティッキー・セッション（sticky session）の提供）、および異なるアプリケーション間でのテナント間通信を含む。
【０００３】
[0003]  負荷分散化（load-balanced）設定において共有アドレスを介してインスタンス到達可能性（instance reachability）を提供するための１つのアプローチは、負荷分散化アドレスを介してアプリケーション・メッセージを送り、次に、アプリケーション固有接続フォワーダー（application-specific connection forwarder）を書いてそのメッセージを適切なインスタンスへ送ることであろう。しかし、このアプローチは、非効率的であり、各アプリケーションのプロトコルに対して、カスタムのプロトコルのフォワーダーを書く必要がある。インスタンス到達可能性を提供するための別のアプローチは、各ロール・インスタンスに対して排他的ＩＰアドレスを割り当てることであろう。しかし、その解決法は、大きいブロックのＩＰアドレスを必要とするので、良好なスケールを行えないであろう。更には、インスタンスの数が増加または減少するとアドレスが動的に変化するので、ファイアーウォールなどのようなインフラストラクチャーの設定を困難にする。
【発明の概要】
【０００４】
[0004]  この概要は、以下の詳細な説明で更に説明する概念のうちの選択したものを、簡素化した形で紹介するために提供される。この概要は、特許請求の範囲に記載の主題事項の鍵となる特徴や本質的な特徴を特定することを意図しておらず、また、特許請求の範囲に記載の主題事項の範囲を決定する際の支援として用いることを意図していない。
【０００５】
[0005]  本発明の実施形態は、データ・センターにおけるロール・インスタンス到達可能性を、ロール・インスタンスへ一意のポート番号を割り当てることにより提供することに関連する。実施例に従うと、インスタンス・エンドポイントを、データ・センターにおいて実行されるアプリケーション内のロールに対するロール・インスタンスへ割り当てることができる。各インスタンス・エンドポイントは、ＩＰアドレスと、トランスポート・プロトコルと、一意のポート番号との組み合わせを含むことができる。更に、同じ共有アドレス上の負荷分散化エンドポイントは、ロール・インスタンスのグループへ割り当てることができる。負荷分散化エンドポイントは、ＩＰアドレスと、トランスポート・プロトコルと、前記一意のポート番号とは別の一意のポート番号との組み合わせを含む。負荷バランサーは、インスタンス・エンドポイントおよび負荷分散化エンドポイントを用いてプログラムすることができる。更に、インスタンス・エンドポイントおよび負荷分散化エンドポイントは、データ・センターにおいて実行されるサービス・アプリケーションへアクセスするアプリケーションに対して、公開することができる。従って、外部アプリケーションが、インスタンス・エンドポイントおよび負荷分散化エンドポイントを用いてデータ・センターに対するメッセージを発行するとき、負荷バランサーは、そのメッセージをロール・インスタンスへ適切に送ることができる。特に、メッセージがインスタンス・エンドポイントを含む場合、負荷分散化が行われずに、メッセージは、そのインスタンス・エンドポイントに対応するロール・インスタンスへ直接に送られ得る。メッセージが負荷分散化エンドポイントを含む場合、メッセージは、負荷分散化アルゴリズムに従って、ロール・インスタンスのうちの何れかのものへ送られ得る。
【０００６】
[0006]  本発明は、以下で添付の図面を参照して詳細に説明される。
【図面の簡単な説明】
【０００７】
【図１】図１は、本発明の実施形態を実装する際の使用に適した例示の計算環境のブロック図である。
【図２】図２は、本発明の実施形態を実装する際の使用に適した例示のクラウド計算プラットフォームを示すブロック図である。
【図３】図３は、本発明の実施形態に従った分散型計算環境を示すブロック図であり、この分散型計算環境において、アプリケーションは、負荷分散化又はまたは直接の何れかでデータ・センターにおけるロール・インスタンスへアクセスできる。
【図４】図４は、本発明の実施形態に従った、負荷分散化エンドポイントおよびインスタンス・エンドポイントを割り当て、メッセージをロール・インスタンスへ送るデータ・センターを示すブロック図である。
【図５】図５は、本発明の実施形態に従った、ロール・インスタンスへの直接的トラフィックおよび負荷分散化トラフィックを容易にするために、インスタンス・エンドポイントおよび負荷分散化エンドポイントが割り当てられたロール・インスタンスを用いるデータ・センターを構成する方法を示すフロー図である。
【図６】図６は、本発明の実施形態に従った、インスタンス・エンドポイントおよび負荷分散化エンドポイントを用いて負荷バランサーをブログラミングし、メッセージをロール・インスタンスへ送る方法を示すフロー図である。
【発明を実施するための形態】
【０００８】
[0013]  ここで、本発明の主題事項は、法定的な要求に適合するように特定的に説明される。しかし、説明自体は、本特許の範囲を限定することを意図していない。むしろ、発明者は、別の現存する技術や将来の技術と関連して、この書類に記載のステップと似た別のステップやステップの組み合わせを含むように、特許請求の範囲に記載の主題事項が別の方法で実施でき得ることを企図している。
【０００９】
更に、ここでは「ステップ」や「ブロック」という用語を用いて、方法で用いられる様々なエレメントを暗示し得るが、これらの用語は、個々のステップの順序が明確に説明されていない限り、即ち、明確に説明されている場合を除いて、ここで開示される様々なステップ中やステップ間での何れかの特定の順序を意味するものと、解釈すべきではない。
【００１０】
[0014]  本発明の実施形態は、１つのＩＰアドレスを複数のエンドポイントに分けることにより、直接ロール・インスタンス到達可能性を提供することに関する。一般に、実施形態は、一意のポート番号をロール・インスタンスへ割り当てること、および各ロール・インスタンスを、特定のトランスポート・プロトコル（例えば、ＴＣＰやＵＤＰ）に対してのＩＰアドレスと一意のポート番号との組み合わせとしての一意のパブリック・エンドポイント（即ち、インスタンス・エンドポイント）として公開することに、関する。それらのインスタンス・エンドポイントは、同じセットのロール・インスタンスに対して、負荷分散化エンドポイントと同時に存在することができる。従って、実施形態は、一般的であり且つアプリケーション・プロトコル不明の様式で、ロール・インスタンス到達可能性シナリオを扱うことができる。このアプローチは、共有アドレスを介して、負荷分散化とインスタンスの到達可能性の相互の共存を可能にする。従って、実施形態は、データ・センターにおけるビジネスおよびエンジニアリングのスケーラビリティを維持する。
【００１１】
[0015]  本発明の実施形態に従うと、顧客は、サービス・モデルにおいてデータ・センターにより提供されるサービスのアスペクトを指定することができ、これは、公開され個々に到達可能なロール・インスタンスを含む。サービス・モデルにおいて顧客の仕様に基づいて、データ・センターは、顧客のビジネス・アプリケーションを実行するためにリソース（例えば、物理マシンや仮想マシン）を割り当て、また、ビジネス・アプリケーションの特定のロールに対してのロール・インスタンスのグループをリソースへ割り当てる。幾つかの実施形態では、データ・センターは、負荷分散化エンドポイントをロール・インスタンスのグループへ割り当てることができ、ロール・インスタンスにわたってのアプリケーション・メッセージの負荷分散化を可能にする。負荷分散化エンドポイントは、公開エンドポイントとすることができ、公開ＩＰアドレスと、トランスポート・プロトコルと、ポート番号との組み合わせを含む。負荷分散化エンドポイントをロール・インスタンスのグループへ割り当てることに加えて、データ・センターはまた、インスタンス・エンドポイントを各ロール・インスタンスへ割り当てる。特に、データ・センターは、一意のポート番号を各ロール・インスタンスへ割り当てることができ、各ロール・インスタンスに対するインスタンス・エンドポイントが、公開ＩＰアドレスと、トランスポート・プロトコルと、一意のポート番号との組み合わせを含むことができるようにする。負荷分散化エンドポイントとロール・インスタンスとが同じ公開ＩＰアドレスを共有する場合、ロール・インスタンスに対する各ポート番号は、他のロール・インスタンスへ割り当てられた他のポート番号に対して独特であり、また、負荷分散化エンドポイントに対して割り当てられたポート番号に対して独特である。
【００１２】
[0016]  データ・センターの負荷バランサーは、ロール・インスタンスのグループに対してのインスタンス・エンドポイントおよび負荷分散化エンドポイントを用いてプログラムされる。更に、負荷分散化エンドポイントおよびインスタンス・エンドポイントは、アプリケーション（例えば、外部アプリケーション、ホストされているアプリケーション、および／または他のアプリケーション）に対して公開される。従って、アプリケーションは、負荷分散化エンドポイントまたはインスタンス・エンドポイントを用いてデータ・センターへの接続を開始することができる。負荷バランサーが負荷分散化エンドポイントを介してメッセージを受け取ると、負荷バランサーは、負荷分散化アルゴリズムに従って、そのメッセージをロール・インスタンスの何れかのものへ送る。負荷バランサーがインスタンス・エンドポイントのうちの１つのものを介してメッセージを受け取ると、負荷バランサーは、そのメッセージを、そのインスタンス・エンドポイントに対応する特定のロール・インスタンスへ送る。
【００１３】
[0017]  従って、１つの構成では、本発明の実施形態は、コンピューター使用可能命令を格納する１以上のストレージ媒体に関し、コンピューター使用可能命令は、１以上の計算デバイスにより使用されたときに、１以上の計算デバイスに方法を行わせる。方法は、ホストする環境において複数のロール・インスタンスを提供することを含む。各ロール・インスタンスは、ホストする環境において実行される顧客アプリケーションに対してのコードを含む。方法は、複数のロール・インスタンスに対して複数のインスタンス・エンドポイントを割り当てることを含む。各インスタンス・エンドポイントは、第１ＩＰアドレスと、第１トランスポート・プロトコルと、一意のポート番号との組み合わせを含み、ロール・インスタンスのうちの１つのものへマップする。方法は、アプリケーションに対してインスタンス・エンドポイントを公開することを更に含み、そのアプリケーションが、特定のロール・インスタンスへマップするインスタンス・エンドポイントを用いて、その特定のロール・インスタンスへアクセスすることを、可能にする。
【００１４】
[0018]  別の実施形態では、本発明の構成は、ホストする環境において、負荷バランサーが負荷分散化メッセージおよびインスタンス・メッセージをロール・インスタンスへ送る方法に関する。方法は、ホストする環境において実行されるサービス・アプリケーションのロールに対する複数のロール・インスタンスに対してのエンドポイント情報を受け取ることを含む。エンドポイント情報は、複数のロール・インスタンスに対しての複数のインスタンス・エンドポイントを識別する。各インスタンス・エンドポイントは、第１ＩＰアドレスと、第１トランスポート・プロトコルと、一意のポート番号との組み合わせを含み、ロール・インスタンスのうちの１つのものへマップする。エンドポイント情報はまた、複数のロール・インスタンスに対しての負荷分散化エンドポイントを識別する。負荷分散化エンドポイントは、第２ＩＰアドレスと、第２トランスポート・プロトコルと、前記一意のポート番号とは別の一意のポート番号との組み合わせを含む。方法はまた、アプリケーションから、複数のインスタンス・エンドポイントからの第１インスタンス・エンドポイントを含む第１メッセージを受け取ったときに、第１メッセージを、第１インスタンス・エンドポイントに対応する第１ロール・インスタンスへ送ることを含む。方法は更に、アプリケーションから、負荷分散化エンドポイントを含む第２リクエストを受け取ったときに、第２リクエストを、負荷分散化アルゴリズムに基づいて、ロール・インスタンスのうちの１つのものへ送ることを含む。
【００１５】
[0019]  本発明の更なる実施形態は、クラウド計算プラットフォームのためのシステムに関する。システムは、顧客アプリケーションのためのコードを提供する複数のロール・インスタンスを実行する複数の仮想マシンをホストする１以上の物理マシンを含む。システムはまた、テナント・マネージャーを含み、テナント・マネージャーは、一意のポート番号を各ロール・インスタンスへ割り当て、各ロール・インスタンスに対するインスタンス・エンドポイントを生成する。各インスタンス・エンドポイントは、ＩＰアドレスと、トランスポート・プロトコルと、一意のポート番号のうちの１つのものとの組み合わせを含む。システムは更に、負荷分散化エンドポイントおよびインスタンス・エンドポイントを用いてプログラムされる負荷バランサーを含む。負荷バランサーは、アプリケーション・メッセージを、インスタンス・エンドポイントを用いて直接に対応するロール・インスタンスへ送るように、および負荷分散化アルゴリズムに基づいて、アプリケーション・メッセージを、負荷分散化エンドポイントを用いてロール・インスタンスへ送るように、構成される。
【００１６】
[0020]  本発明の実施形態の概観を説明したが、本発明の実施形態をインプリメントできる例示の動作環境は、下記で、本発明の様々な構成に対する一般的コンテキストを提供するために説明される。特に、最初に図１を参照すると、本発明の実施形態をインプリメントするための例示の動作環境が示されており、これは全体として計算デバイス１００として示されている。計算デバイス１００は、適切な計算環境の単なる一例であり、本発明の使用や機能の範囲に関しての限定を提案することを意図していない。計算デバイス１００は、示したコンポーネントのうちの何れかやコンポーネントの組み合わせと関連する依存性や要求を有するものと、解釈すべきではない。
【００１７】
[0021]  本発明は、コンピューター・コードや機械使用可能命令の一般的なコンテキストで説明することができ、それらのコンピューター・コードや機械使用可能命令は、プログラム・モジュールなどのようなコンピューター実行可能命令を含み、それらはパーソナル・データ・アシスタントや他の手持ち型デバイスなどのようなコンピューターや他のデバイスで実行される。一般に、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むプログラム・モジュールは、特定のタスクを行ったり特定の抽象データ型をインプリメントするコードを指す。本発明は、手持ち型デバイス、家電製品、汎用コンピューター、より専門的な計算デバイスなどを含む様々なシステム構成へ適用することができる。本発明はまた、分散型計算環境において実施することができ、分散型計算環境では、タスクは、通信ネットワークを通じてリンクされるリモート処理デバイスにより行われる。
【００１８】
[0022]  図１を参照すると、計算デバイス１００はバス１１０を含み、バス１１０は、メモリ１１２、１以上のプロセッサー１１４、１以上のプレゼンテーション・コンポーネント１１６、入力／出力（Ｉ／Ｏ）ポート１１８、入力／出力コンポーネント１２０、および例示の電源１２２といったデバイスを直接的または間接的に結合する。バス１１０は、１以上のバス（アドレス・バス、データ・バス、またはそれらの組み合わせなど）を表し得る。図１の様々なブロックは、明瞭化を目的として線で示されているが、実際には、様々なコンポーネントの輪郭はそれほど明確ではなく、例えれば、線は、より正確には灰色で曖昧である。例えば、或る者は、ディスプレイなどのようなプレゼンテーション・コンポーネントをＩ／Ｏコンポーネントと考えるであろう。また、プロセッサーはメモリを有する。発明者は、そのようなことは技術の特質であると認識しており、繰り返しになるが、図１の図は、単に、本発明の１以上の実施形態と関連して使用できる例示の計算デバイスを示すものである。「ワークステーション」、「サーバー」、「ラップトップ」、「手持ち型デバイス」などのカテゴリの間での区別は行われていない。なぜなら、これらの全ては図１の範囲内にあると考えられ、「計算デバイス」と関連する。
【００１９】
[0023]  計算デバイス１００は、典型的には、様々なコンピューター読取可能媒体を含む。コンピューター読取可能媒体は、計算デバイス１００によりアクセスできる任意の使用可能な媒体とすることができ、揮発性および不揮発性の媒体と取り外し可能および取り外し不可能な媒体との双方を含む。限定ではなく例として、コンピューター読取可能媒体は、コンピューター・ストレージ媒体および通信媒体を含むことができる。コンピューター・ストレージ媒体は、揮発性および不揮発性、および取り外し可能および取り外し不可能の双方の媒体を含み、その媒体は、コンピューター読取可能命令、データ構造、プログラム・モジュール、または他のデータなどのような情報を記憶するための任意の方法および技術で実現される。コンピューター・ストレージ媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリ、または他のメモリ技術、ＣＤ−ＲＯＭ、デジタル・バーサタイル・ディスク（「ＤＶＤ」）、または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置、または望まれる情報を記憶するために使用でき且つ計算デバイス１００によりアクセスできる他の媒体を含むが、これらには限定されない。通信媒体は、典型的には、搬送波や他の転送機構などのような変調されたデータ信号において、コンピューター読取可能命令、データ構造、プログラム・モジュール、または他のデータを実現するものであり、任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、信号内において情報をエンコードするように、その信号の特性のうちの１以上の特性が設定または変更された信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークや直接有線接続などのような有線媒体と、音響、ＲＦ、赤外線、および他のワイヤレス媒体などのようなワイヤレス媒体とを含む。上記のものの任意の組み合わせも、コンピューター読取可能媒体の範囲内に含まれるべきである。
【００２０】
[0024]  メモリ１１２は、揮発性および／または不揮発性のメモリの形態のコンピューター・ストレージ媒体を含む。メモリは、取り外し可能、取り外し不可能、またはそれらの組み合わせとすることができる。例示のハードウェア・デバイスは、ソリッドステート・メモリ、ハード・ドライブ、光ディスク・デバイスなどを含む。計算デバイス１００は、メモリ１１２やＩ／Ｏコンポーネント１２０などのような様々なエンティティからデータを読み出す１以上のプロセッサーを含む。プレゼンテーション・コンポーネント（１以上）１１６は、データのインジケーションをユーザーまたは他のデバイスへ呈示する。例示のプレゼンテーション・コンポーネントは、ディスプレイ・デバイス、スピーカー、プリント・コンポーネント、振動コンポーネントなどを含む。
【００２１】
[0025]  Ｉ／Ｏポート１１８は、Ｉ／Ｏコンポーネント１２０を含む他のデバイスと計算デバイス１００が論理的に結合されることを可能にするが、デバイスの幾つかはビルト・インであり得る。例示のコンポーネントは、マイクロフォン、ジョイスティック、ゲーム・パッド、サテライト・ディッシュ、スキャナー、プリンター、ワイヤレス・デバイスなどを含む。
【００２２】
[0026]  本発明の幾つかの実施形態は、テナント／サービス・モデルを用いてプラットフォーム・アズ・ア・サービス（ＰＡＡＳ）として動作するデータ・センター内でインプリメントすることができ、その場合において、顧客のアプリケーションはクラウド・サービス・インフラストラクチャーにおいて実行され、これは、顧客のアプリケーションを発展させるため及び実行するためのプラットフォームを提供する。データ・センターは多数の物理マシンを含むことができ、それらの物理マシン上で、仮想マシンを割り当てることができ、顧客アプリケーションが実行される。
【００２３】
[0027]  図２を参照すると、本発明の実施形態に従った例示のクラウド計算プラットフォーム２００を示すブロック図が提供されている。図２に示すクラウド計算プラットフォーム２００が単なる１つの適切な計算システム環境の例であり、本発明の実施形態の使用や機能の範囲に関する限定を提案することを意図しないことが、理解および認識されるであろう。例えば、クラウド計算プラットフォーム２００は、公開クラウド、プライベート・クラウド、または専用クラウドとすることや、単に、個別の計算デバイスの集合とすることができる。クラウド計算プラットフォーム２００は、ここで示す１つの何れかのコンポーネートや、コンポーネントの組み合わせと関連する依存性や必要性を有すると、解釈すべきではない。更に、図２の様々なブロックは、明瞭化を目的として線で示されているが、実際には、様々なコンポーネントの輪郭はそれほど明確ではなく、例えれば、線は、より正確には灰色で曖昧である。更に、任意の数の物理マシン、仮想マシン、データ・センター、ロール・インスタンス、またはそれらの組み合わせを用いて、本発明の実施形態の範囲内で望まれる機能を達成することができる。
【００２４】
[0028]  クラウド計算プラットフォーム２００は、特定のサービス・アプリケーションのロール・インスタンス２１４および２１６の動作をホストおよびサポートするように構成されるデータ・センター２０２を含む。ここで用いる「サービス・アプリケーション」というフレーズは、データ・センター２０２の上部で実行される、および／またはデータ・センター２０２内のストレージ場所へアクセスする、任意のソフトウェアまたはソフトウェアの一部を広く言及する。実施形態では、サービス・アプリケーションは、サービス・アプリケーションの論理部分を含む１以上のロールとしてインプリメントされる。各ロールは、コードの特定のセットを含むことができる。各ロールの複数のインスタンス（例えば、ロール・インスタンス２１４および２１６）は、データ・センター２０２で実行することができ、負荷分散化を用いて、ロール・インスタンスにわたってメッセージを分配することができる。所与のロールに対するロール・インスタンスは、同じコードを実行することができ、ロール・インスタンスは、互いによく似ており、交換可能である。
【００２５】
[0029]  一般に、仮想マシン２１０および２１２は、サービス・アプリケーションへ置かれる要求（例えば、処理負荷の量）および／または顧客のサービス・モデルにおいて顧客により指定されるサービス定義に基づいて、サービス・アプリケーションのロール・インスタンス２１４および２１６へ割り当てられる。ここで用いる「仮想マシン」というフレーズは、限定することを意図しておらず、処理ユニットにより実行されてロール・インスタンス２１４および２１６の機能の基礎となる任意のソフトウェア、アプリケーション、オペレーティング・システム、またはプログラムを言及し得る。更に、仮想マシン２１０および２１２は、処理能力、ストレージ場所、およびデータ・センター２０２内の他の資産を含むことができ、ロール・インスタンス２１４および２１６を適切にサポートする。
【００２６】
[0030]  動作において、仮想マシン２１０および２１２は、データ・センター２０２の物理リソース（例えば、第１計算デバイス２０４および第２計算デバイス２０６）内で動的に割り当てられ、ロール・インスタンス（例えば、ロール・インスタンス２１４および２１６）は、現在の処理負荷を満足させるように、割り当てられた仮想マシン２１０および２１２へ動的に配される。１つのインスタンスでは、ファブリック・コントローラー２０８は、仮想マシン２１０および２１２を自動的に割り当てることと、データ・センター２０２内でロール・インスタンス２１４および２１６を配することとの責務を負う。例として、ファブリック・コントローラー２０８は、どのように及びいつ、仮想マシン２１０および２１２を割り当てるか、およびそれらの上にロール・インスタンス２１４および２１６を配するか、についてのガイダンスを、サービス定義（例えば、サービス・アプリケーションを所有する顧客により指定される）に頼って提供することができる。
【００２７】
[0031]  上述のように、仮想マシン２１０および２１２は、第１計算デバイス２０４および第２計算デバイス２０６の中で動的に割り当てられることができる。本発明の実施形態に従うと、計算デバイス２０４および２０６は、任意の形態の計算デバイス、例えば、図１の計算デバイス１００などを表し得る。計算デバイス２０４および２０６は、別の顧客により所有される他のサービス・アプリケーションのロール・インスタンスをサポートすることを含めての、データ・センター２０２の他のテナントをサポートするために作り出された他の仮想マシンを同時にホストしつつ、仮想マシン２１０および２１２の動作をホストおよびサポートすることができる。
【００２８】
[0032]  １つの構成では、ロール・インスタンス２１４および２１６は、クラウド計算プラットフォーム２００のコンテキスト内で動作し、従って、仮想マシン２１０と２１２との間に動的に作られる通信を通じて内部で通信することができ、また、リモート・ネットワークのリソースへの物理ネットワーク・トポロジーを通じて外部と通信することができる。内部接続は、データ・センター２０２の物理リソースにわたって分散されている仮想マシン２１０と２１２とを、ネットワーク・クラウド（示さず）を介して相互接続することを含み得る。ネットワーク・クラウドは、それらのリソースを相互接続して、ロール・インスタンスが他のロール・インスタンスの場所を認識し得るようにして、それらの間での通信を確立する。更に、ネットワーク・クラウドは、この通信を、サービス・アプリケーションのロール・インスタンス２１４と２１６を接続するチャンネルを介して、確立することができる。
【００２９】
[0033]  ここで図３へ進むと、アプリケーション３０２などのようなリモート・アプリケーションは、データ・センター３０４で実行されるサービス・アプリケーションにより提供されるサービスへ、ネットワーク３０６を介してアクセスすることができ、限定ではないが、ネットワーク３０６は、１以上のローカル・エリア・ネットワーク（ＬＡＮ）および／またはワイド・エリア・ネットワーク（ＷＡＮ）を含むことができる。そのようなネットワーク化環境は、オフィス、エンタープライズ−ワイド・コンピューター・ネットワーク、イントラネット、およびインターネットにおいて一般的である。図３に示すように、複数のロール・インスタンス（ロール・インスタンス３１０、ロール・インスタンス３１２、ロール・インスタンス３１４、およびロール・インスタンス３１６）は、データ・センター３０４で実行されるサービス・アプリケーションの特定のロールに対するコードを提供する。本発明の実施形態に従うと、アプリケーション３０２などのようなアプリケーションは、アプリケーションからのメッセージをロール・インスタンス３１０、３１２、３１４、３１６にわたって分配する負荷分散化を介してロール・インスタンス３１０、３１２、３１４、３１６へアクセスするか、またはロール・インスタンス３１０、３１２、３１４、３１６のうちの１つへ直接にアクセスする。
【００３０】
[0034]  ロール・インスタンス３１０、３１２、３１４、３１６に対しての負荷分散化および直接ロール・インスタンス・アクセスの双方を提供するために、本発明の実施形態は、ロール・インスタンス３１０、３１２、３１４、３１６に対しての負荷分散化エンドポイントと、ロール・インスタンス３１０、３１２、３１４、３１６のそれぞれに対してのインスタンス・エンドポイントとの双方を用いる。特に、公開ＩＰアドレスと、トランスポート・プロトコルと、一意のポート番号との組み合わせが、負荷分散化エンドポイントとしてロール・インスタンス３１０、３１２、３１４、３１６へ割り当てられる。従って、アプリケーション３０２などのようなアプリケーションからの、負荷分散化エンドポイントをターゲットとするメッセージは、様々なインスタンス・エンドポイントに対して、データ・センター３０４の負荷バランサー３０８により多重化される。例えば、ｈｔｔｐ／／ｃｕｓｔｏｍｅｒ．ｄｏｍａｉｎ．ｎａｍｅ：８０が、ロール・インスタンス３１０、３１２、３１４、３１６により提供されるロールに対する負荷分散化エンドポイントである場合、このＵＲＬへのメッセージは、負荷バランサー３０８により、使用可能なロール・インスタンス３１０、３１２、３１４、３１６の中で分配される。様々なロール・インスタンス３１０、３１２、３１４、３１６へのトラフィックを分散させるために、負荷バランサー３０８により任意の負荷分散化アルゴリズムを用いることができることを、理解すべきである。
【００３１】
[0035]  負荷分散化エンドポイントをロール・インスタンス３１０、３１２、３１４、３１６へ割り当てることに加えて、インスタンス・エンドポイントがロール・インスタンス３１０、３１２、３１４、３１６のそれぞれへ割り当てられる。各インスタンス・エンドポイントは、ロール・インスタンス３１０、３１２、３１４、３１６のうちの１つへマップされる公開ＩＰアドレスと、トランスポート・プロトコルと、一意のポート番号との組み合わせを含む。例えば、ＩＰ：Ｐｏｒｔ１を、ロール・インスタンス３１０に対するインスタンス・エンドポイントとして割り当てることができ、ＩＰ：Ｐｏｒｔ２を、ロール・インスタンス３１２に対するインスタンス・エンドポイントとして割り当てることができ、ＩＰ：Ｐｏｒｔ３を、ロール・インスタンス３１４に対するインスタンス・エンドポイントとして割り当てることができ、ＩＰ：Ｐｏｒｔ４を、ロール・インスタンス３１６に対するインスタンス・エンドポイントとして割り当てることができる。負荷分散化エンドポイントに対して使用される同じ公開ＩＰアドレスを、インスタンス・エンドポイントに対する公開ＩＰアドレスとして用いることができる。例えば、幾つかの実施形態では、ＩＰｖ４アドレスを用いることができる。インスタンス・エンドポイントを含むアプリケーション３０２からのメッセージは、負荷分散化せずに、そのインスタンス・エンドポイントに対応するロール・インスタンスへ送られる。例えば、アプリケーション３０２からのメッセージがＩＰ：Ｐｏｒｔ１を含む場合、そのメッセージは、ロール・インスタンス１へ直接に送られる。
【００３２】
[0036]  幾つかの実施形態では、同じロール・インスタンスは複数のインスタンス・エンドポイントを有し得る。そのような実施形態では、サービス・モデルは、各ロール・インスタンスに対して提供されるインスタンス・エンドポイントの数を指定することができる。次に、データ・センターは、アドレス、トランスポート・プロトコル、およびポートの組み合わせを、各ロールに対してのそれぞれの要求されたインスタンス・エンドポイントに対して割り当てる。
【００３３】
[0037]  負荷バランサー３０８は、ソフトウェア、ハードウェア、またはそれらの任意の組み合わせでインプリメントすることができる。実施形態では、負荷バランサー３０８は、負荷分散化エンドポイントとインスタンス・エンドポイントとの双方によりプログラムされる。これは、負荷分散化エンドポイントをロール・インスタンス３１０、３１２、３１４、３１６のグループへマッピングする情報と、各インスタンス・エンドポイントを対応するロール・インスタンスへマッピングする情報とを含み得る。従って、負荷バランサー３０８は、インスタンス・エンドポイントを用いて、直接ポートを介して、対応するロール・インスタンスへトラフィックを向けるため、および負荷分散化アルゴリズムに基づいてロール・インスタンス３１０、３１２、３１４、３１６のうちの１つへの負荷分散化エンドポイントを介してトラフィックを負荷分散するための、十分な情報を有する。
【００３４】
[0038]  ここで図４を参照すると、本発明の実施形態に従った全体的システム４００を示すブロック図が提供されており、これは、負荷分散化エンドポイントおよびインスタンス・エンドポイントを割り当て、メッセージをロール・インスタンスへ送るデータ・センター４０２を含む。最初に、顧客は、インスタンス・エンドポイントを、顧客が直接接続を有することを望む各ロールに対してのサービス定義の一部として定めることができる。サービス定義が検証され、サービス定義を含む対応するサービス・パッケージ４０４が生成され得る。
【００３５】
[0039]  サービス定義は、本発明の様々な実施形態に従って多数の異なる様式で、インスタンス・エンドポイントおよびポートの割り当ての使用を指定することができる。例えば、幾つかの実施形態では、サービス定義は、単に顧客がロールに対してのインスタンス・エンドポイントを使用することを望むことを明示することができ、データ・センター４０２は、ロール・インスタンスへポートを割り当てることができる。幾つかの実施形態では、データ・センター４０２は、異なるポート割り当てスキーム（例えば、ランダム・ポート割り当て）を準備することができ、顧客は、サービス定義においてポート割り当てスキームを指定することを選ぶ場合または選ばない場合がある。更なる実施形態では、顧客は、インスタンス・エンドポイントに対してのポート番号の割り当てに使用するために、サービス定義においてポート範囲を指定することができる。例えば、サービス定義は、５０００〜５０９９のポート範囲を指定することができ、ポート５０００を一番目のロール・インスタンスへ割り当てることができ、ポート５０９９を百番目のロール・インスタンスへ割り当てることができる。
【００３６】
[0040]  サービス定義を確立し、サービス・パッケージ４０４を生成した後、データ・センター４０２において、サービス・パッケージ４０４は、開発者ポータル４０６を介して又はＳＤＫ４０８を用いての何れかで、顧客のサブスクリプションに対して配置することができる。フロント・エンド４１０は、サービス定義を検証し、それを、配置するためにデータ・センターのファブリック４１２へ渡すことができる。
【００３７】
[0041]  ファブリック４１２はテナント・マネージャー４１４を含み、それは、サービス定義に従って必要なリソースを割り当て、サービス定義に基づいてリポジトリー４１６に対しての目標状態を持続する。テナント・マネージャー４１４はまた、サービス定義に従ってポート割り当てを行って、ロール・インスタンスに対するインスタンス・エンドポイントを提供し、リポジトリー４１６に対しての目標状態を持続する。
【００３８】
[0042]  データ・センター・マネージャー４１８は、負荷バランサー４２０をプログラムするために、インスタンス・エンドポイントを含む目標状態を用いる。更に、ファブリック４１２のワークフローを駆動するノード目標状態は、目標状態に対する駆動リソースを調整する（例えば、ＯＳ配置、ブートストラップするロールなど）。
【００３９】
[0043]  ロール・インスタンス４２２がレディ状態になると、顧客アプリケーション４２４は、負荷バランサー４２０を介して個々のロール・インスタンスのそれぞれへ接続することができる。幾つかのインスタンスでは、アプリケーション４２２は、負荷分散化エンドポイントを用いるメッセージを発行することができる。そのようなインスタンスでは、負荷バランサー４２０は、負荷分散化アルゴリズムを用いて、メッセージをロール・インスタンス４２２のうちの１つへ送る。代替的に、アプリケーション４２４は、特定のロール・インスタンスへアクセスするために、特定のインスタンス・エンドポイント（即ち、特定のロール・インスタンスへマップされるＩＰ：ｐｏｒｔの組み合わせ）を用いるメッセージを発行することができる。
【００４０】
[0044]  幾つかの実施形態では、アプリケーション４２４は、ＳＤＫを介してフロント・エンド４１０を呼び出し、アクセスされる特定のロール・インスタンスに対してのインスタンス・エンドポイントを決定することができる。フロント・エンド４１０は、テナント・マネージャー４１４を呼び出してこの情報を取り出し、それをアプリケーション４２４へ戻すことができる。負荷バランサー４２０が特定のインスタンス・エンドポイントを有するメッセージを受け取ると、負荷バランサー４２０は、負荷バランサー４２０内にプログラムされたインスタンス・エンドポイント情報に基づいて、メッセージを送られる正しいロール・インスタンスをロール・インスタンス４２２から識別することができる。例えば、実施形態において、負荷バランサー４２０は、公開インスタンス・エンドポイントを、データ・センター４０２内で、ロール・インスタンスに対してマッピングする直接ＩＰへマップするマッピング情報を含むことができる。
【００４１】
[0045]  ここで図５へ進むと、本発明の実施形態に従った、ロール・インスタンスへの直接トラフィックおよび負荷分散化トラフィックを容易にするためにインスタンス・エンドポイントおよび負荷分散化エンドポイントを割り当てられたロール・インスタンスを持つデータ・センターを構成するための方法５００を示すフロー図が提供されている。最初に、ブロック５０２で示すように、サービス定義がデータ・センターにおいて顧客から受け取られる。サービス定義は、顧客のサービス・アプリケーションに関する様々な情報、例えば、必要とされるリソースおよびインスタンスを作成するためのロール・インスタンスなどを、明示し得る。更に、サービス定義は、データ・センターがサービス・アプリケーションのロールに対するロール・インスタンスへインスタンス・エンドポイントを割り当てることを、明示することができる。
【００４２】
[0046]  ブロック５０４で示すように、データ・センターは、サービス定義に従ってデータ・センターのリソースを割り当てる。これは、データ・センター内の物理マシンに仮想マシンを割り当てること、およびロール・インスタンスを仮想マシンへ割り当てることを含み得る。更に、データ・センターは、ブロック５０６で示すように、サービス定義に従って、インスタンス・エンドポイントをロール・インスタンスへ割り当てる。これは、公開ＩＰアドレスとトランスポート・プロトコルと一意のポート番号との組み合わせとしてインスタンス・エンドポイントを生成するために、一意のポート番号をロール・インスタンスへ割り当てることを含み得る。様々なポート割り当てスキームのうちの任意のものをデータ・センターで用いることができる。幾つかの実施形態では、顧客は、サービス定義において、データ・センターにより使用されるポート割り当てスキームを指定することができ、別の実施形態では、ポート割り当てスキームは、サービス定義において指定されないようにでき、データ・センターは、用いるスキームを選択することができる。
【００４３】
[0047]  インスタンス・エンドポイントを各ロール・インスタンスへ割り当てることに加えて、データ・センターは、ブロック５０８で示すように、負荷分散化エンドポイントをロール・インスタンスのグループへ割り当てることができる。インスタンス・エンドポイントは、負荷分散化せずに外部アプリケーションが個々のロール・インスタンスへ直接にアクセスすることを可能にするが、負荷分散化エンドポイントは、ロール・インスタンスのグループにわたってのアプリケーション・メッセージの負荷分散化の分配を可能にする。
【００４４】
[0048]  データ・センターの負荷バランサーは、ブロック５１０で示されるように、インスタンス・エンドポイントおよび負荷分散化エンドポイントに関する情報内でプログラムされる。更に、ブロック５１２で示すように、インスタンス・エンドポイントおよび負荷分散化エンドポイントは、アプリケーションに対して公開される。インスタンス・エンドポイントおよび負荷分散化エンドポイントは、多数の異なる様式でアプリケーションに対して公開することができる。幾つかの実施形態では、インスタンス・エンドポイントおよび負荷分散化エンドポイントは、ＡＰＩを介して公開することができる。ＡＰＩは、ロール・インスタンスをインスタンス・エンドポイントへマッピングするマッピング情報を提供することができる。従って、アプリケーションは、ロール・インスタンスへ直接にアクセスするため（インスタンス・エンドポイントを用いる）または負荷分散化を介して何れかのロール・インスタンスへアクセスするため（負荷分散化エンドポイントを用いる）に、インスタンス・エンドポイントまたは負荷分散化エンドポイントを用いて、メッセージを発行することができる。
【００４５】
[0049]  図６へ進むと、本発明の実施形態に従った、インスタンス・エンドポイントおよび負荷分散化エンドポイントを用いて負荷バランサーをプログラムするため、およびロール・インスタンスへメッセージを送るための方法６００を示すフロー図が提供されている。最初に、ブロック６０２で示されるように、負荷バランサーをプログラムするために、顧客のサービス・アプリケーションの特定のロールに対応するロール・インスタンスのグループに対するエンドポイント情報が、負荷バランサーで受け取られる。エンドポイント情報は、ロール・インスタンスに対するインスタンス・エンドポイントを識別する。実施形態では、各インスタンス・エンドポイントは、ＩＰアドレスとトランスポート・プロトコルと一意のポート番号との組み合わせを含むことができる。エンドポイント情報はまた、ロール・インスタンスにわたっての負荷分散化のための負荷分散化エンドポイントを含む。実施形態では、負荷分散化エンドポイントは、ＩＰアドレスとトランスポート・プロトコルと前記一意のポート番号とは別の一意のポート番号との組み合わせを含むことができる。
【００４６】
[0050]  ブロック６０４で示すように、負荷バランサーは、アプリケーションから、第１のインスタンス・エンドポイントを含む第１のメッセージを受け取る。負荷バランサーをプログラムするために用いられたエンドポイント情報に基づいて、負荷バランサーは、ブロック６０６で示すように、第１のインスタンス・エンドポイントに対応する第１のロール・インスタンスを識別する。更に、ブロック６０８で示すように、負荷バランサーは、第１のメッセージを第１のインスタンス・エンドポイントへ直接に送る。
【００４７】
[0051]  負荷バランサーはまた、ブロック６１０で示すように、アプリケーションから、負荷分散化エンドポイントを含む第２のメッセージを受け取る。負荷バランサーをプログラムするために用いられるエンドポイント情報に基づいて、負荷バランサーは、ブロック６１２で示すように、負荷分散化エンドポイントを認識し、特定のロール・インスタンスを選択するために負荷分散化アルゴリズムを用いる。次に、負荷バランサーは、ブロック６１４で示すように、第２のメッセージを、選択されたロール・インスタンスへ送る。
【００４８】
[0052]  理解され得るように、本発明の実施形態は、ロール・インスタンスへ一意のポート番号を割り当てることにより、負荷分散化と直接ロール・インスタンス・アクセスとの双方を用いて、データ・センターにおけるロール・インスタンス到達可能性を提供することを、提供する。本発明は、特定の実施形態と関連して説明したが、実施形態は、全ての点で、限定ではなく例示を意図している。代替の実施形態は、その範囲から離れずに、本発明と関連する当業者には明らかになるであろう。
【００４９】
[0053]  上記から、本発明が、明白であり且つシステムおよび方法に内在する他の利点と共に、上記の全ての目的および目標を達成するために、良好に適合するものであることが、分かるであろう。特定のフィーチャーおよびサブコンビネーションは実用性があり、他のフィーチャーおよびサブコンビネーションを参照せずに用いることができることが、理解されるであろう。これは、特許請求の範囲により考慮されており且つその範囲内にある。
【図１】
2015503158.tif 000003
【図２】
2015503158.tif 000004
【図３】
2015503158.tif 000005
【図４】
2015503158.tif 000006
【図５】
2015503158.tif 000007
【図６】
2015503158.tif 000008
【国際調査報告】
2015503158.tif 000009
2015503158.tif 000010