(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-03-05
(54)【発明の名称】データセンター構築時のリソース検出技術
(51)【国際特許分類】
G06F 9/50 20060101AFI20250226BHJP
【FI】
G06F9/50 150B
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024547109
(86)(22)【出願日】2022-12-19
(85)【翻訳文提出日】2024-09-05
(86)【国際出願番号】 US2022053399
(87)【国際公開番号】W WO2023154112
(87)【国際公開日】2023-08-17
(32)【優先日】2022-02-08
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-02-22
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-02-28
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ミラー,エリック・ジョセフ
(72)【発明者】
【氏名】ドックター,ケイレブ
(57)【要約】
クラウドコンピューティング環境のリージョン内の、リージョン構築時に利用可能なリソースを特定するための技術が記載される。マルチフロックオーケストレータ(MFO)を、リージョン構築プロセス中にリージョン内でブートストラップされるサービスに対応する構成ファイルを取得するように構成することができる。MFOは、サービスがブートストラップされる順序を判定することができ、その順序に従って第1の要求を送信する。立案データ(たとえば新たなリソースを作成する意図を示す)を受信することができる。MFOは、(たとえばリソース特定サービスを介して)以前に作成されたリソースに対応する識別子を取得することができる。MFOは、その識別子で立案データを修正することができ、修正された立案データを含む第2の要求を送信する。第2の要求の送信は、フロック構成ファイルに対応するリソースを、識別子に対応するリソースを使用してリージョン内でブートストラップさせることができる。
【特許請求の範囲】
【請求項1】
コンピュータが実行する方法であって、
クラウドコンピューティング環境のオーケストレーションサービスが、リージョン内のデータセンターにブートストラップされる複数のサービスに対応する複数の構成ファイルを取得することと、
前記オーケストレーションサービスが、前記複数の構成ファイルに少なくとも部分的に基づいて、前記複数のサービスが前記データセンターにブートストラップされる順序を判定することと、
前記オーケストレーションサービスが、前記複数のサービスのうちのサービスのブートストラップに関する第1の要求を送信することと、
前記オーケストレーションサービスが、前記サービスをブートストラップするために作成されるべきリソースを最初に示す立案データを受信することと、
前記オーケストレーションサービスが、リソース特定サービスから、前記クラウドコンピューティング環境の以前に作成されたリソースに対応する識別子を取得することと、
前記オーケストレーションサービスが、前記クラウドコンピューティング環境の以前に作成された前記リソースに対応する前記識別子を含むように前記立案データを修正することと、
前記オーケストレーションサービスが、前記サービスのブートストラップに関する第2の要求を送信することとを含み、前記第2の要求は、以前に作成された前記リソースに対応する前記識別子を含む前記立案データを含み、前記第2の要求は前記識別子を含み、前記第2の要求の送信は、以前に作成された前記リソースを使用して前記サービスを前記リージョン内でブートストラップさせる、コンピュータが実行する方法。
【請求項2】
前記第2の要求は、前記クラウドコンピューティング環境のプロビジョニングおよびデプロイメントサービスに送信される、請求項1に記載のコンピュータが実行する方法。
【請求項3】
前記識別子を含むように修正された前記立案データを有効性検証することをさらに含む、請求項1に記載のコンピュータが実行する方法。
【請求項4】
前記立案データを有効性検証することは、
前記識別子を含むように修正された前記立案データを含む第3の要求を送信することと、
前記第3の要求に応答して、更新された立案データを受信することと、
更新された前記立案データを前記識別子を含むように修正された前記立案データと比較することとを含み、前記立案データの有効性検証は、更新された前記立案データを修正された前記立案データと比較することに少なくとも部分的に基づいて判定される、請求項1に記載のコンピュータが実行する方法。
【請求項5】
前記リソース特定サービスから前記クラウドコンピューティング環境の以前に作成された前記リソースに対応する前記識別子を取得することは、前記オーケストレーションサービスが、前記リソース特定サービスに前記複数の構成ファイルのうちの構成ファイルを送信することをさらに含み、前記構成ファイルは、前記複数のサービスのうちの前記サービスに関連付けられ、前記リソース特定サービスは、前記構成ファイルに含まれるデータに少なくとも部分的に基づいて、以前に作成された前記リソースを特定する、請求項1に記載のコンピュータが実行する方法。
【請求項6】
複数の状態間の遷移を管理するための状態マシンを実装することをさらに含み、前記複数のサービスが前記データセンターにブートストラップされる順序を判定すること、前記第1の要求を送信すること、以前に作成された前記リソースに対応する前記識別子を取得すること、前記立案データを修正すること、または前記第2の要求を送信することのうちの少なくとも1つが、前記状態マシンが前記複数の状態のうちの特定の状態であることを特定することに少なくとも部分的に基づいて行われる、請求項1に記載のコンピュータが実行する方法。
【請求項7】
前記オーケストレーションサービスが、ケイパビリティサービスまたは前記リソース特定サービスから受信した1つまたは複数のメッセージに少なくとも部分的に基づいて、前記状態マシンを前記複数の状態のうちの第1の状態から第2の状態に遷移させることをさらに含む、請求項6に記載のコンピュータが実行する方法。
【請求項8】
1つまたは複数のプロセッサと、
コンピュータ実行可能命令を記憶する1つまたは複数のメモリとを含むクラウドコンピューティングシステムであって、
前記命令は、前記1つまたは複数のプロセッサによって実行されると、前記クラウドコンピューティングシステムのオーケストレーションサービスに、
リージョン内のデータセンターにブートストラップされる複数のサービスに対応する複数の構成ファイルを取得することと、
前記複数の構成ファイルに少なくとも部分的に基づいて、前記複数のサービスが前記データセンターにブートストラップされる順序を判定することと、
前記複数のサービスのうちのサービスのブートストラップに関する第1の要求を送信することと、
前記サービスのブートストラップのために作成されるリソースを最初に示す立案データを受信することと、
リソース特定サービスから、前記クラウドコンピューティング環境の以前に作成されたリソースに対応する識別子を取得することと、
前記クラウドコンピューティング環境の以前に作成された前記リソースに対応する前記識別子を含むように前記立案データを修正することと、
前記サービスのブートストラップに関する第2の要求を送信することとを行わせ、前記第2の要求は、以前に作成された前記リソースに対応する前記識別子を含む前記立案データを含み、前記第2の要求は前記識別子を含み、前記第2の要求の送信は、以前に作成された前記リソースを使用して前記サービスを前記リージョン内でブートストラップさせる、クラウドコンピューティングシステム。
【請求項9】
前記第2の要求は、前記クラウドコンピューティング環境のプロビジョニングおよびデプロイメントサービスに送信される、請求項8に記載のクラウドコンピューティングシステム。
【請求項10】
前記命令の実行は、前記オーケストレーションサービスにさらに、前記識別子を含むように修正された前記立案データを有効性検証させる、請求項8に記載のクラウドコンピューティングシステム。
【請求項11】
前記立案データを有効性検証する前記命令の実行は、前記オーケストレーションサービスにさらに、
前記識別子を含むように修正された前記立案データを含む第3の要求を送信することと、
前記第3の要求に応答して、更新された立案データを受信することと、
更新された前記立案データを前記識別子を含むように修正された前記立案データと比較することとを行わせ、前記立案データの有効性検証は、更新された前記立案データを修正された前記立案データと比較することに少なくとも部分的に基づいて判定される、請求項8に記載のクラウドコンピューティングシステム。
【請求項12】
前記リソース特定サービスから前記クラウドコンピューティング環境の以前に作成された前記リソースに対応する前記識別子を取得する前記命令の実行は、前記オーケストレーションサービスにさらに、前記複数の構成ファイルのうちの構成ファイルを前記リソース特定サービスに送信させ、前記構成ファイルは、前記複数のサービスのうちの前記サービスに関連付けられ、前記リソース特定サービスは、前記構成ファイルに含まれるデータに少なくとも部分的に基づいて、以前に作成された前記リソースを特定する、請求項8に記載のクラウドコンピューティングシステム。
【請求項13】
前記命令の実行は、前記オーケストレーションサービスにさらに、複数の状態間の遷移を管理するための状態マシンを実装させ、前記複数のサービスが前記データセンターにブートストラップされる順序を判定すること、前記第1の要求を送信すること、以前に作成された前記リソースに対応する前記識別子を取得すること、前記立案データを修正すること、または前記第2の要求を送信することのうちの少なくとも1つが、前記状態マシンが前記複数の状態のうちの特定の状態であることを特定することに少なくとも部分的に基づいて行われる、請求項8に記載のクラウドコンピューティングシステム。
【請求項14】
前記命令の実行は、前記オーケストレーションサービスにさらに、ケイパビリティサービスまたは前記リソース特定サービスから受信した1つまたは複数のメッセージに少なくとも部分的に基づいて、前記状態マシンを前記複数の状態のうちの第1の状態から第2の状態に遷移させることを行わせる、請求項13に記載のクラウドコンピューティングシステム。
【請求項15】
コンピュータ実行可能命令を記憶した非一時的なコンピュータ可読記憶媒体であって、
前記命令は、1つまたは複数のプロセッサによって実行されると、クラウドコンピューティングシステムのオーケストレーションサービスに、
リージョン内のデータセンターにブートストラップされる複数のサービスに対応する複数の構成ファイルを取得することと、
前記複数の構成ファイルに少なくとも部分的に基づいて、前記複数のサービスが前記データセンターにブートストラップされる順序を判定することと、
前記複数のサービスのうちのサービスのブートストラップに関する第1の要求を送信することと、
前記サービスのブートストラップのために作成されるべきリソースを最初に示す立案データを受信することと、
リソース特定サービスから、前記クラウドコンピューティング環境の以前に作成されたリソースに対応する識別子を取得することと、
前記クラウドコンピューティング環境の以前に作成された前記リソースに対応する前記識別子を含むように前記立案データを修正することと、
前記サービスのブートストラップに関する第2の要求を送信することとを行わせ、前記第2の要求は、以前に作成された前記リソースに対応する前記識別子を含む前記立案データを含み、前記第2の要求は前記識別子を含み、前記第2の要求の送信は、以前に作成された前記リソースを使用して前記サービスを前記リージョン内でブートストラップさせる、非一時的なコンピュータ可読記憶媒体。
【請求項16】
前記第2の要求は、前記クラウドコンピューティング環境のプロビジョニングおよびデプロイメントサービスに送信される、請求項15に記載の非一時的なコンピュータ可読記憶媒体。
【請求項17】
前記命令の実行は、前記オーケストレーションサービスにさらに、前記識別子を含むように修正された前記立案データを有効性検証させる、請求項15に記載の非一時的なコンピュータ可読記憶媒体。
【請求項18】
前記立案データを有効性検証する前記命令の実行は、前記オーケストレーションサービスにさらに、
前記識別子を含むように修正された前記立案データを含む第3の要求を送信することと、
前記第3の要求に応答して、更新された立案データを受信することと、
更新された前記立案データを前記識別子を含むように修正された前記立案データと比較することとを行わせ、前記立案データの有効性検証は、更新された前記立案データを修正された前記立案データと比較することに少なくとも部分的に基づいて判定される、請求項15に記載の非一時的なコンピュータ可読記憶媒体。
【請求項19】
前記リソース特定サービスから前記クラウドコンピューティング環境の以前に作成された前記リソースに対応する前記識別子を取得する前記命令の実行は、前記オーケストレーションサービスにさらに、前記複数の構成ファイルのうちの構成ファイルを前記リソース特定サービスに送信させ、前記構成ファイルは、前記複数のサービスのうちの前記サービスに関連付けられ、前記リソース特定サービスは、前記構成ファイルに含まれるデータに少なくとも部分的に基づいて、以前に作成された前記リソースを特定する、請求項15に記載の非一時的なコンピュータ可読記憶媒体。
【請求項20】
前記命令の実行は、前記オーケストレーションサービスにさらに、複数の状態間の遷移を管理するための状態マシンを実装させ、前記複数のサービスが前記データセンターにブートストラップされる順序を判定すること、前記第1の要求を送信すること、以前に作成された前記リソースに対応する前記識別子を取得すること、前記立案データを修正すること、または前記第2の要求を送信することのうちの少なくとも1つが、前記状態マシンが前記複数の状態のうちの特定の状態であることを特定することに少なくとも部分的に基づいて行われる、請求項15に記載の非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【0001】
関連出願の相互参照
本出願は、2022年2月8日に出願された「Techniques for Bootstrapping a Region Build」という名称の米国仮特許出願第63/308,003号、2022年2月22日に出願された「Techniques for Implementing Virtual Data Centers」という名称の米国仮特許出願第63/312,814号、および2022年2月28日に出願された「Techniques for Resource Discovery while Building Data Centers」という名称の米国仮特許出願第63/315,053号の優先権を主張し、参照によりその開示の全体があらゆる目的のために本明細書に組み込まれる。
【0002】
背景
現在、クラウドインフラストラクチャサービスは、データセンターを構築するために(たとえば、特定の地理的リージョンのデータセンターにおける様々なリソースをブートストラップするために)多くの個別サービスを使用する。ある例では、リージョンは、1つまたは複数のデータセンターが位置する(または位置することになる)局在的な地理的領域に対応する論理抽象化である。データセンターの構築は、インフラストラクチャリソースのプロビジョニングと構成と、(たとえば様々なサービスのための)それらのリソースへのコードのデプロイメントとを含み得る。データセンターを構築するための動作をまとめて「リージョン構築」を行うと言う場合がある。リージョンには任意の適切な数のデータセンターを含めることができ、したがってリージョン構築は、複数のデータセンターを構築するための動作を含み得る。リージョンを構築するための従来の手段は、かなりの手動労力を必要とする。さらに、1つのサービスのためのブートストラップ動作が、まだ利用可能ではない場合があるリージョンの他の機能および/またはサービスに依存することがある。サービスチームとリージョンの数が増えるにつれて、プロビジョニングとデプロイメントをオーケストレーションするために行われるタスクが大幅に増える。サービスのブートストラップおよび/またはリージョンの構築のために手動労力に大きく依存するのは、時間集約的であり、リスクを招き、十分にスケーリングできない場合がある。
【発明の概要】
【0003】
簡単な概要
本開示の実施形態は、新たなリソースを作成する代わりに、リージョンにおいてサービスをブートストラップするために使用可能な既存のリソース(たとえばインフラストラクチャコンポーネント、アーティファクト、データなど)を特定するように構成された、リソース特定サービス(たとえば「リソースハンター」)に関する。リージョンにおいて多くのサービスをブートストラップするために、リージョン構築プロセスをオーケストレーションすることができるオーケストレーションサービス(たとえば「マルチフロックオーケストレータ」が開示される。リージョン構築プロセスの一部として、マルチフロックオーケストレータは、新たなリソースを作成する代わりに特定されたリソースがブートストラップ動作のために使用されるように既存のリソースを特定し、ブートストラップ動作をオーケストレーションするために、リソース特定サービスを使用することができる。
【0004】
少なくとも1つの実施形態は、コンピュータが実行する方法を対象とする。方法は、クラウドコンピューティング環境のリソース特定サービスが、サービスに関連付けられたリソース検出データを含むフロック構成ファイルを取得することを含み得る。ある実施形態では、リソース検出データは、それを使用してクラウドコンピューティング環境の既存のリソースが特定されるパラメータのセットを示す。方法は、リソース検出サービスが、既存のリソースを特定する動作を実行することをさらに含むことができる。ある実施形態では、既存のリソースは、既存のリソースの各々に関連付けられた属性を、リソース検出データのパラメータのセットと照合することに少なくとも部分的に基づいて特定することができる。方法は、リソース特定サービスが、フロック構成ファイルから、特定された既存のリソースに対応する識別子を記憶するために行うインポート動作のセットを特定することをさらに含むことができる。方法は、インポート動作のセットの実行に少なくとも部分的に基づいて、特定された既存のリソースに対応する識別子を送信することをさらに含むことができる。
【0005】
少なくとも1つの実施形態において、パラメータのセットは、既存のリソースを検索する場所、または既存のリソースの属性に対応する値のうちの少なくとも一方を含む。
【0006】
少なくとも1つの実施形態において、既存のリソースに対応する識別子は、クラウドコンピューティング環境のオーケストレーションサービスに送信される。ある実施形態では、クラウドコンピューティング環境のオーケストレーションサービスへの識別子の送信は、データセンターにおいて新たなリソースを生成する代わりに既存のリソースを使用させる。
【0007】
少なくとも1つの実施形態において、既存のリソースは、インフラストラクチャコンポーネント、データまたはアプリケーションのうちの少なくとも1つを含む。
【0008】
少なくとも1つの実施形態において、インポート動作のセットは、構成ファイルから特定される。
【0009】
少なくとも1つの実施形態において、方法は、i)リソース特定サービスが、リソース検出データから、それを使用してクラウドコンピューティング環境の第2の既存のリソースが特定されるパラメータの第2のセットを取得することと、ii)リソース特定サービスが、第2の既存のリソースに関連付けられた属性をリソース検出データのパラメータの第2のセットと照合することに少なくとも部分的に基づいて特定される第2の既存のリソースを特定するために追加の動作を実行することと、iii)リソース特定サービスが、第2の既存のリソースに対応する第2の識別子を取得するために行うインポート動作の第2のセットを特定することと、iv)インポート動作の第2のセットの実行に少なくとも部分的に基づいて特定された第2の既存のリソースに対応する第2の識別子を、コンピューティングコンポーネントに提供することとをさらに含む。
【0010】
少なくとも1つの実施形態において、方法は、インポート動作のセットを実行することをさらに含み、インポート動作のセットの実行は、リソース特定サービスに、既存のリソースの場所に対応するアドレスまたは既存のリソースの識別子を特定させる。
【0011】
別の実施形態は、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると、リソース特定サービスに本明細書で開示されている方法の任意の適切な組合せを行わせる命令とを含む、クラウドコンピューティングシステムを対象とする。
【0012】
さらに別の実施形態は、クラウドコンピューティングシステムの1つまたは複数のプロセッサによって実行されると、リソース特定サービスに、本明細書で開示されている方法の任意の適切な組合せを行わせるコンピュータ実行可能命令を記憶する、非一時的なコンピュータ可読媒体を対象とする。
【0013】
少なくとも1つの実施形態は、コンピュータが実行する方法を対象とする。方法は、クラウドコンピューティング環境のマルチフロックオーケストレータが、リージョン構築プロセス時にリージョン内でブートストラップされる複数のサービスに対応する複数のフロック構成ファイルを取得することを含み得る。方法は、マルチフロックオーケストレータが、複数のフロック構成ファイルに少なくとも部分的に基づいて、リージョン内で複数のサービスがブートストラップされる順序を判定することをさらに含むことができる。方法は、マルチフロックオーケストレータが、複数のサービスのうちのサービスをブートストラップする第1の要求を送信することをさらに含むことができる。方法は、マルチフロックオーケストレータが、第1の要求の送信に少なくとも部分的に基づいて、サービスをブートストラップするために作成されるリソースを示す立案データを受信することをさらに含むことができる。方法は、マルチフロックオーケストレータが、リソース特定サービスから、クラウドコンピューティング環境の以前に作成されたリソースに対応する識別子を取得することをさらに含むことができる。方法は、マルチフロックオーケストレータが、クラウドコンピューティング環境の以前に作成されたリソースに対応する識別子を含むように立案データを修正することをさらに含むことができる。方法は、マルチフロックオーケストレータが、サービスをブートストラップする第2の要求を送信することをさらに含むことができ、第2の要求は、以前に作成されたリソースに対応する識別子を含む立案データを含み、プロビジョニングおよびデプロイメントマネージャが、以前に作成されたリソースを使用してリージョン内でサービスがブートストラップされるようにするために、以前に作成されたリソースに対応する識別子を使用する。
【0014】
ある実施形態では、第2の要求は、クラウドコンピューティング環境のプロビジョニングおよびデプロイメントサービスに送信される。
【0015】
ある実施形態では、方法は、識別子を含むように修正された立案データを有効性検証することをさらに含む。
【0016】
ある実施形態では、立案データの有効性検証は、i)識別子を含むように修正された立案データを含む第3の要求を送信することと、ii)第3の要求に応答して、更新された立案データを受信することと、iii)更新された立案データを、識別子を含むように修正された立案データと比較することとを含み、立案データの有効性検証は、更新された立案データを修正された立案データと比較することに少なくとも部分的に基づいて判定される。
【0017】
ある実施形態では、リソース特定サービスからクラウドコンピューティング環境の以前に作成されたリソースに対応する識別子を取得することは、オーケストレーションサービスがリソース特定サービスに、複数の構成ファイルのうちの構成ファイルを送信することをさらに含み、構成ファイルは複数のサービスのうちのサービスに関連付けられ、リソース特定サービスは、構成ファイルに含まれるデータに少なくとも部分的に基づいて、以前に作成されたリソースを特定する。
【0018】
ある実施形態では、方法は、複数の状態間の遷移を管理するための状態マシンを実装することをさらに含み、複数のサービスがデータセンターにブートストラップされる順序を判定すること、第1の要求を送信すること、以前に作成されたリソースに対応する識別子を取得すること、立案データを修正すること、または第2の要求を送信することのうちの少なくとも1つが、状態マシンが複数の状態のうちの特定の状態であることを特定することに少なくとも部分的に基づいて行われる。
【0019】
ある実施形態では、方法は、オーケストレーションサービスが、ケイパビリティサービスまたはリソース特定サービスから受け取った1つまたは複数のメッセージに少なくとも部分的に基づいて、状態マシンを複数の状態のうちの第1の状態から第2の状態に遷移させることをさらに含む。
【0020】
別の実施形態は、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると、オーケストレーションサービスに本明細書で開示されている方法の任意の適切な組合せを行わせる命令とを含む、クラウドコンピューティングシステムを対象とする。
【0021】
さらに別の実施形態は、クラウドコンピューティングシステムの1つまたは複数のプロセッサによって実行されると、オーケストレーションサービスに本明細書で開示されている方法の任意の適切な組合せを行わせるコンピュータ実行可能命令を記憶する、非一時的なコンピュータ可読媒体を対象とする。
【0022】
任意の特定の要素または行為の説明を識別しやすくするために、参照番号の1つまたは複数の最上位桁は、その要素が最初に示されている図番を指す。
【図面の簡単な説明】
【0023】
【
図1】少なくとも1つの実施形態による、クラウドインフラストラクチャオーケストレーションサービス(CIOS:Cloud Infrastructure Orchestration Service)がリージョンにおいてブートストラップサービスを動的に提供するために動作することができる環境を示すブロック図である。
【
図2】少なくとも1つの実施形態による、仮想ブートストラップ環境(ViBE:virtual bootstrap environment)を構築するための環境および方法を示すブロック図である。
【
図3】少なくとも1つの実施形態による、ViBEを使用してターゲットリージョンにサービスをブートストラップするための環境および方法を示すブロック図である。
【
図4】少なくとも1つの実施形態による、クラウドインフラストラクチャオーケストレーションサービス(CIOS)がリージョン構築時にリソースを検出するためにリソースハンターを使用することができる環境を示すブロック図である。
【
図5】少なくとも1つの実施形態による、リソース検出に関する1つまたは複数のコードセグメントを含む例示のフロック構成ファイルを示す図である。
【
図6】少なくとも1つの実施形態による、リージョン構築に対応するリソースを特定するための例示の流れを示すブロック図である。
【
図7】少なくとも1つの実施形態による、ブートストラップ動作および/またはリソース検出動作の実行がオーケストレーションされるいくつかの状態を示す例示の流れを示す図である。
【
図8】少なくとも1つの実施形態による、状態データの例示のインスタンスを示すブロック図である。
【
図9】少なくとも1つの実施形態による、既存のリソースを検出する例示の方法を示す図である。
【
図10】少なくとも1つの実施形態による、リージョン構築を実行するために既存のリソースを使用する例示の方法を示す図である。
【
図11】少なくとも1つの実施形態による、クラウドインフラストラクチャアズアサービスシステムを実装するための一パターンを示すブロック図である。
【
図12】少なくとも1つの実施形態による、クラウドインフラストラクチャアズアサービスシステムを実装するための別のパターンを示すブロック図である。
【
図13】少なくとも1つの実施形態による、クラウドインフラストラクチャアズアサービスシステムを実装するための別のパターンを示すブロック図である。
【
図14】少なくとも1つの実施形態による、クラウドインフラストラクチャアズアサービスシステムを実装するための別のパターンを示すブロック図である。
【
図15】少なくとも1つの実施形態による、例示のコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【0024】
詳細な説明
以下の説明では、説明を目的として、ある実施形態を十分に理解することができるように具体的な詳細が記載されている。しかし、これらの具体的な詳細がなくても様々な実施形態を実施可能であることはわかるであろう。図および説明は、限定的であることは意図されていない。本明細書では「例示の」という用語は、「例、事例または例示となる」という意味で使用されている。本明細書において「例示の」として説明されているいずれの実施形態または設計も、必ずしも他の実施形態または設計より好ましいかまたは有利であるものと解釈されるべきではない。
【0025】
例示の自動データセンター構築(リージョン構築)インフラストラクチャ
最近、クラウドサービスの採用が急激に増大している。現在、様々なクラウドサービスプロバイダ(CSP:cloud service provider)によって様々な種類のクラウドサービスが提供されている。クラウドサービスという用語は、CSPによって提供されるシステムおよびインフラストラクチャ(クラウドインフラストラクチャ)を使用してCSPによってユーザまたは顧客にオンデマンドで(たとえば加入モデルを介して)提供されるサービスまたは機能を指すために一般的に使用される。典型的には、CSPのインフラストラクチャを構成し、クラウドサービスを顧客に提供するために使用されるサーバおよびシステムは、顧客自体のオンプレミスサービスおよびシステムから分離されている。したがって顧客は、サービスのための別個のハードウェアおよびソフトウェアリソースを購入する必要なしに、CSPによって提供されるクラウドサービスを利用することができる。クラウドサービスは、加入顧客に、サービスまたは機能を提供するために使用されるインフラストラクチャの調達に顧客が投資する必要なしに、アプリケーションおよびコンピューティングリソースへの容易でスケーラブルなオンデマンドアクセスを与えるように設計される。ソフトウェアアズアサービス(SaaS:Software-as-a-Service)、プラットフォームアズアサービス(PaaS:Platform-as-a-Service)、インフラストラクチャアズアサービス(IaaS:Infrastructure-as-a-Service)など、クラウドサービスの様々な異なる種類またはモデルが提供される場合がある。顧客は、CSPによって提供される1つまたは複数のクラウドサービスに加入することができる。顧客は、個人、組織、企業など、任意のエンティティであり得る。
【0026】
上記のように、CSPは、加入顧客にクラウドサービスを提供するために使用されるインフラストラクチャとリソースを提供する責任を担う。CSPによって提供されるリソースは、ハードウェアリソースとソフトウェアリソースの両方を含むことができる。これらのリソースには、たとえば、計算リソース(たとえば、仮想マシン、コンテナ、アプリケーション、プロセッサ)、メモリリソース(たとえば、データベース、データストア)、ネットワーキングリソース(たとえば、ルーター、ホストマシン、負荷バランサ)、識別情報およびその他のリソースが含まれ得る。ある実装形態では、クラウドサービスCSPのセットを提供するためにCSPによって提供されるリソースは、データセンターとして編成される。データセンターは、クラウドサービスの特定のセットを提供するように構成可能である。CSPは、データセンターに、クラウドサービスのその特定のセットを提供するために使用されるインフラストラクチャとリソースを装備する責任を担う。CSPは、1つまたは複数のデータセンターを構築することができる。
【0027】
CSPによって提供されるデータセンターは、異なるリージョンにおいてホスト可能である。リージョンは、局在的な地理的領域であり、リージョン名によって識別可能である。リージョンは一般に互いに独立しており、複数の国、またはさらには大陸にわたるなど、きわめて遠い距離によって隔てられることがある。リージョンは、レルムにグループ化される。CSPのリージョンの例には、米国西部、米国東部、オーストラリア東部、オーストラリア南東部などが含まれ得る。
【0028】
リージョンは、1つまたは複数のデータセンターを含むことができ、データセンターは、そのリージョンに対応するある地理的領域内に位置し得る。一例として、リージョンにおけるデータセンターは、そのリージョン内の一都市に位置してもよい。たとえば、特定のCSPについて、米国西部リージョンにおけるデータセンターがカリフォルニア州サンノゼに位置してもよく、米国東部リージョンにおけるデータセンターがバージニア州アッシュバーンに位置してもよく、オーストラリア東部リージョンにおけるデータセンターがオーストラリアのシドニーに位置してもよく、オーストラリア南東部リージョンにおけるデータセンターがオーストラリアのメルボルンに位置してもよい、などである。
【0029】
リージョン内のデータセンターは、高い可用性と災害復旧の目的のために使用される、1つまたは複数の可用性ドメインに編成することができる。可用性ドメインは、リージョン内に1つまたは複数のデータセンターを含むことができる。リージョン内の可用性ドメインは互いに分離され、フォールトトレラントであり、複数の可用性ドメインにおけるデータセンターが同時に機能しなくなる可能性がきわめて低いような方式で設計される。たとえば、リージョン内の可用性ドメインは、リージョン内の1つの可用性ドメインにおける障害が同じリージョン内の他の可用性ドメインにおけるデータセンターの可用性に影響を与える可能性が低いような方式で構築することができる。
【0030】
顧客または加入者が、CSPによって提供される1つまたは複数のサービスに加入またはサインアップすると、CSPはその顧客のためにテナンシを作成する。テナンシは、顧客のために作成されるアカウントのようなものである。ある実装形態では、顧客のテナンシは単一のレルムに存在し、そのレルムに属するすべてのリージョンにアクセスすることができる。その場合、顧客のユーザは、このテナンシの下で顧客が加入しているサービスにアクセスすることができる。
【0031】
上記のように、CSPはそのCSPの顧客にクラウドサービスを提供するためにデータセンターを構築またはデプロイする。CSPの顧客ベースが大きくなるにつれて、CSPは典型的には、顧客の増大する需要に対応するためと、顧客により良いサービス提供をするために、新たなリージョンにおいて新たなデータセンターを構築するか、または既存のデータセンターの容量を大きくする。好ましくは、データセンターは、そのデータセンターによってサービス提供される顧客の所在地に地理的に近接して構築される。データセンターとそのデータセンターによってサービス提供される顧客との地理的近接性は、リソースのより効率的な使用と、顧客へのより高速で信頼性の高いサービスの提供とを容易にする。したがって、CSPは典型的には、データセンターによってサービス提供される顧客に地理的に近接する地理的領域において新たなリージョンに新たなデータセンターを構築する。たとえば、ドイツにおける拡大する顧客ベースのために、CSPはドイツにおける新たなリージョンに1つまたは複数のデータセンターを構築することができる。
【0032】
リージョンにおいてデータセンター(または複数のデータセンター)を構築することを、リージョンを構築するとも言う場合がある。「リージョン構築」という用語は、リージョンにおいて1つまたは複数のデータセンターを構築することを指すために使用される。リージョンにおけるデータセンターの構築は、データセンターが提供するように構成されるサービスのセットを提供するために必要であるかまたは使用される、新たなリソースのセットをプロビジョニングまたは作成することを伴う。リージョン構築プロセスの最終結果は、リージョンにおけるデータセンターの作成であり、データセンターはそのデータセンターを対象とするサービスのセットを提供することが可能であり、サービスのセットを提供するために使用されるリソースのセットを含む。
【0033】
リージョンにおける新たなデータセンターの構築は、様々なチーム間のコーディネートを必要とするきわめて複雑な作業である。大まかに言うと、これは、データセンターによって提供されることになるサービスのセットを特定すること、サービスのセットを提供するために必要な様々なリソースを特定すること、特定されたリソースを作成、プロビジョニングおよびデプロイすること、リソースを意図された方式で使用することができるようにリソースを適正に接続することなど、様々なタスクの実行とコーディネートを必要とする。これらのタスクの各々がさらに、コーディネートを必要とするサブタスクを有し、それによってさらに複雑さが増す。この複雑さに起因して、現在、リージョンにおけるデータセンターの構築は、慎重な手動コーディネートを要するいくつかの手動開始または手動制御タスクを伴う。その結果、新たなリージョンを構築する(すなわちリージョンにおける1つまたは複数のデータセンターを構築する)タスクは、きわめて時間がかかる。データセンターを構築するのに時間が、たとえば数ヶ月かかることがある。さらに、このプロセスは誤りをきわめて生じやすく、データセンターの所望の構成が実現されるまでに数回のやり直しを要する場合があり、それによってデータセンターの構築に要する時間がさらに増す。これらの限界および問題は、増大する顧客ニーズに応じた時宜に適った方式で拡大することができるCSPの能力を大幅に制限する。
【0034】
本開示は、リージョンにおいて1つまたは複数のデータセンターを構築するために必要な時間と手動労力とを減らすための技術について記載する。これは、リージョンの構築に関与するタスクのいくつかを自動化することによって可能とされる。自動化は、リージョンにおけるデータセンターの構築に要する時間を大幅に短縮し、必要な手動コーディネートを削減する。本明細書に記載の技術を使用して、従来のリージョンにおけるデータセンターの構築に要する数週間および数ヶ月ではなく、相対的にはるかに短時間でリージョンにおいて新たなデータセンターを構築することができる。
【0035】
本明細書では、データセンターに対する所与の変更を実施するためのリソース(たとえば、デプロイされるインフラストラクチャコンポーネントおよびソフトウェア)を特定する事前定義済み構成ファイルに基づいて、新たなデータセンターにサービスをブートストラップ(たとえばプロビジョニングおよびデプロイ)するように構成された、クラウドインフラストラクチャオーケストレーションサービス(CIOS)が開示される。CIOSは、これらの構成ファイルの静的解析を使用して、ブートストラップタスク間の依存関係を特定することができる。CIOSは、新たなデータセンターに様々な変更が加えられる順序(たとえば、リージョンにおいてサービスがブートストラップされる順序)をコーディネートするためにこれらの依存関係を使用することができる。CIOSは、リージョンの様々なケイパビリティが利用可能になるとそれらのケイパビリティを検出することができ、それによってシステムはリージョンに対して現在加えることができる追加の変更を特定し、実施することが可能になる。本明細書で開示されている技術を使用すると、CIOSは、タスクが依存する機能がリージョンにおいて利用可能になるまでそれらのタスクが開始されないように保証しながら、新たなデータセンターに対する変更を実行するように、並列処理を最適化することができる。このようにして、CIOSは、リージョン構築が実質的に自動化されたプロセスとして行われることを可能にし、それによって従来のシステムにおける誤りのリスクと所要時間とを大幅に低減する。
【0036】
リージョン構築中、または任意の適切な時点で、以前のリージョン構築(たとえば、同一または異なるリージョンの1つまたは複数のデータセンターの構築)時に、または少なくとも現在のリージョン構築の前に作成されている可能性のある、任意の適切な数のリソース(たとえば、負荷バランサ、データベースなど)がある場合がある。CIOSは、以前に作成されたリソース(たとえば、別のリージョンからのリソース)を、構築中の現在のリージョンのブートストラップのために利用し、使用することができるように保証する。リソース特定サービス(「リソースハンター」とも呼ぶ)を、任意の適切な時点でリソースの検出を試行するように構成することができる。ある実施形態では、リソースハンターによって提供される機能は、以前に作成されたリソース(たとえば、以前に構築されたリージョンまたはデータセンターのリソース)を構築中のリージョンにインポートし、使用することができるように、マルチフロックオーケストレータによってトリガすることができる。リソースはリージョン構築とともにアウトオブバンドで作成されてもよいが、重複リソースが作成されるのを回避するために、これらの以前に作成されたリソースは自動的にインポートすることができ、リージョン構築に使用することができる。これらの以前に作成されたリソースの利用により、本明細書における技術は、不要なリソースの作成に処理リソースが無駄に使われないように保証する。これはさらに、リージョン構築が、すべてのリソースが新たに作成される場合に考えられるよりも高速に行われることを可能にする。
【0037】
一定の定義
「リージョン」は、地理的場所に対応する論理抽象化である。リージョンは、任意の適切な数の1つまたは複数の実行ターゲットを含むことができる。ある実施形態では、実行ターゲットはデータセンターに対応し得る。
【0038】
「実行ターゲット」とは、リリースを実行するための変更の単位を指す。「リリース」とは、サービスに対する特定の変更(たとえば、バージョン8をデプロイする、「内部DNSレコードを追加する」など)をオーケストレーションする意図の表現を指す。ほとんどのサービスでは、実行ターゲットはサービスの「インスタンス」を表す(「インスタンス」である)。1つまたは複数の実行ターゲットの各々に対して単一のサービスをブートストラップすることができる。実行ターゲットは、1組のデバイス(たとえばデータセンター)に関連付けることができる。
【0039】
「ブートストラップ」は、単一のサービスに対応する任意の適切な数のリソース(たとえば、インフラストラクチャコンポーネント、アーティファクトなど)のプロビジョニングとデプロイメントとに関連付けられた集合的タスクを指すことが意図されている。
【0040】
「サービス」とは、リソースのセットによって提供される機能を指す。サービスのためのリソースのセットは、サービスの機能を提供するように構成可能な、クラウドプロバイダによってホストされるインフラストラクチャ、プラットフォーム、またはソフトウェア(たとえばアプリケーション)の任意の適切な組合せを含む。サービスはインターネットを介してユーザに提供することができる。
【0041】
「アーティファクト」とは、インフラストラクチャコンポーネントまたはKubernetesエンジンクラスタにデプロイされるコードを指し、これには、ソフトウェア(たとえばアプリケーション)、インフラストラクチャコンポーネントの構成情報(たとえば構成ファイル)などが含まれ得る。
【0042】
「フロックコンフィグ」とは、単一のサービスに関連付けられたすべてのリソースのセット(たとえばインフラストラクチャコンポーネントとアーティファクト)を記述する構成ファイル(または構成ファイルのセット)を指す。フロックコンフィグは、サービスのリソースの所望の状態に対応する1つまたは複数の態様を指定する宣言文を含むことができる。
【0043】
「サービス状態」とは、サービスに関連付けられたあらゆるリソース(たとえば、インフラストラクチャリソース、アーティファクトなど)のある時点のスナップショットを指す。サービス状態は、サービスリソースに関連付けられたプロビジョニングタスクおよび/またはデプロイメントタスクに対応する状況を示す。
【0044】
IaaSプロビジョニング(または「プロビジョニング」)とは、使用のためにコンピュータまたは仮想ホストを取得すること、さらにそれらの上に必要なライブラリまたはサービスをインストールすることを指す。「デバイスをプロビジョニングする」という語句は、デバイスを、特定の使用のためにエンドユーザによって使用可能な状態にすることを指す。プロビジョニングプロセスを受けたデバイスを、「プロビジョニング済みデバイス」と呼ぶ場合がある。プロビジョン済みデバイスを準備する(ライブラリおよびデーモンをインストールする)ことは、プロビジョニングの一部であり得る。この準備は、準備されたデバイスに新たなアプリケーションまたはアプリケーションの新バージョンをデプロイすることとは異なる。ほとんどの場合、デプロイメントはプロビジョニングを含まず、まず、プロビジョニングを行う必要がある場合がある。準備が済んだ後は、デバイスを「インフラストラクチャコンポーネント」と呼ぶ場合がある。
【0045】
IaaSデプロイメント(または「デプロイメント」)は、アプリケーションまたはアプリケーションの新バージョンをプロビジョニングされたインフラストラクチャコンポーネントに提供および/またはインストールするプロセスを指す。インフラストラクチャコンポーネントがプロビジョニングされた(たとえば、取得、割り当て、準備などされた)後は、追加のソフトウェアをデプロイする(たとえばインフラストラクチャコンポーネント上に供給し、インストールする)ことができる。インフラストラクチャコンポーネントは、プロビジョニングとデプロイメントが完了した後、「リソース」と呼ぶことができる。リソースの例には、仮想マシン、データベース、オブジェクトストレージ、ブロックストレージ、負荷バランサなどが含まれ得るが、これらには限定されない。
【0046】
「ケイパビリティ」は、サービスに関連付けられた機能の単位を特定する。単位は、サービスによって提供される機能の一部または全部とすることができる。たとえば、リソースが許可/認証処理のために利用可能であること(たとえば、リソースによって提供される機能のサブセット)を示すケイパビリティを公開することができる。別の例として、サービスの全機能が利用可能であることを示すケイパビリティを公開することができる。ケイパビリティは、リソースまたはサービスが依存する機能、および/または、使用のために入手可能なリソースまたはサービスの機能を特定するために使用することができる。
【0047】
「仮想ブートストラップ環境」(ViBE:virtual bootstrap environment)とは、既存のリージョンのオーバーレイ(たとえば「ホストリージョン」)においてプロビジョニングされる仮想クラウドネットワークを指す。プロビジョニングされた後は、ViBEは通信チャネル(たとえばIPSecトンネルVPN)を使用して新たなリージョンに接続される。デプロイメントオーケストレータ、公開鍵インフラストラクチャ(PKI:public key infrastructure)サービスなどのような、ある重要なコアサービス(または「シード」サービス)をViBEにおいてプロビジョニングすることができる。これらのサービスは、ハードウェアをオンラインにするため、新たなリージョンに対する信頼の連鎖を確立するため、および新たなリージョンにおいて残りのサービスをデプロイするために必要なケイパビリティを提供することができる。仮想ブートストラップ環境の使用は、ホストリージョンのリソースを使用することによりブートストラップリソース間の循環依存関係を防止することができる。物理リージョン(たとえばターゲットリージョン)が利用可能になる前に、ViBEにおいてサービスをステージングおよびテキスト化することができる。
【0048】
「クラウドインフラストラクチャオーケストレーションサービス」(CIOS)は、任意の適切な数のサービスのプロビジョニング動作およびデプロイメント動作をリージョン構築の一部として管理するように構成されたシステムを指し得る。
【0049】
マルチフロックオーケストレータ(MFO:Multi-Flock Orchestrator)は、ターゲットリージョン(たとえば新たなリージョン)に自動的にサービスをプロビジョニングし、デプロイするために、CIOSのコンポーネント間でイベントをコーディネートするように構成されたコンピューティングコンポーネント(たとえばサービス)とすることができる。MFOは、リージョン構築の各サービスのための関連イベントを追跡し、それらのイベントに応答して処置を行う。
【0050】
「ホストリージョン」は、仮想ブートストラップ環境(ViBE)をホストするリージョンを指す。ホストリージョンは、ViBEをブートストラップするために使用することができる。
【0051】
「ターゲットリージョン」は、構築中のリージョンを指す。
「ケイパビリティを公開する」とは、「公開者-加入者」コンピューティング設計において使用されるような「公開」、またはその他により特定のケイパビリティが利用可能である(または利用不能である)という表示を提供することを指す。ケイパビリティは、リソース/サービスの機能が利用可能であるという表示を提供するために「公開」される(たとえばケイパビリティサービスによって収集される、ケイパビリティサービスに提供される、プッシュされる、プルされるなど)。ある実施形態では、ケイパビリティは、イベント、通知、データ送信、関数呼び出し、API呼び出しなどを介して公開/送信可能である。特定のケイパビリティの可用性を示すイベント(またはその他の通知/データ送信など)を、ケイパビリティサービスにブロードキャストする/宛てて送る(たとえば公開する)ことができる。
【0052】
「ケイパビリティサービス」は、異なるフロック間の依存関係をモデル化するように構成されたフロックとすることができる。ケイパビリティサービスは、クラウドインフラストラクチャオーケストレーションサービス内で提供することができ、リージョンにおいてどのようなケイパビリティ、サービス、機構が利用可能にされたかを定義することができる。
【0053】
「リアルタイムリージョナルデータディストリビュータディストリビュータ」(RRDD:Real-time Regional Data Distributor)は、リージョンデータを管理するように構成されたサービスまたはシステムとすることができる。このリージョンデータは、新たなリージョンのために実行ターゲットを動的に作成するようにフロックコンフィグに投入することができる。
【0054】
本明細書では、ある例において、クラウドインフラストラクチャオーケストレーションサービス(CIOS)を実装するための技術について説明する。そのような技術は、上記で簡単に説明したように、クラウド環境(たとえばリージョン)内のインフラストラクチャコンポーネントのブートストラップ(たとえば、インフラストラクチャコンポーネントへのソフトウェアのプロビジョニングおよびデプロイメント)を管理するように構成可能である。場合によっては、CIOSは、リージョン構築(たとえば複数のサービスに対応するブートストラップ動作)を開始/管理するように構成された所与のサービスおよびマルチフロックオーケストレータ(以下でも詳述する)のためにブートストラップタスク(プロビジョニングとデプロイメント)を管理するように構成可能な、コンピューティングコンポーネント(たとえば、CIOSセントラルおよびCIOSリージョナル。この両者については以下で詳述する)を含むことができる。
【0055】
CIOSは、サービスチームの最小限の手動実行時労力での(たとえば、場合によってはハードウェアの初期承認および/または物理移送を越える)リージョン構築と世界規模のインフラストラクチャプロビジョニングおよびコードデプロイメントを可能にする。CIOSの高レベルの役割には、人間の介入が最小限の自動化された方式でのリージョン構築のコーディネート、(たとえば、リージョンの、複数のリージョンにわたる、世界規模などの)CIOSによって管理されるリソースの現在の状態のビューをユーザに与えること、およびリージョン内のリソースのブートストラップのためにブートストラップ動作を管理することが含まれるが、これらには限定されない。
【0056】
CIOSは、リソースの所望の状態(たとえば所望の構成)のビューをリソースの現在の/実際の状態(たとえば現在の構成)と合致させることができる、ビューリコンシリエーションを提供することができる。場合によっては、ビューリコンシリエーションは、どのようなリソースが実際に稼働中であるか、およびリソースの現在の構成および/または状態を特定するために、状態データを取得することを含み得る。リコンシリエーションは、サービスレベルなど様々な細分度で行うことができる。
【0057】
CIOSは、リソースの所望の状態と現在の状態との相違が特定される、計画生成を行うことができる。計画生成の一部は、リソースを現在の状態から所望の状態にするために実行する必要が生じる動作を特定することを含み得る。ユーザが計画に満足すると、計画は次に、承認または拒絶されたものとしてマークすることができる。したがって、計画がマシンによって生成されるため、ユーザは計画について判断するのに費やす時間を少なくすることができ、計画はより正確になる。計画は人間が使用するには詳細過ぎるが、CIOSはこのデータを高度なユーザインターフェース(UI)を介して提供することができる。
【0058】
ある例では、CIOSは承認された計画を自動的に実行することによって変更管理の実行を処理することができる。実行計画が作成され、承認された後は、CIOSがロールバックを開始しない限り、エンジニアが変更管理に関与する必要がなくなり得る。CIOSは、(たとえば、CIOSが実行中にサービス健康状態悪化を検出した場合)サービスを前の(たとえばリリース前の)状態に戻す計画を自動的に生成することによって、前のサービスバージョンへのロールバックを処理することができる。
【0059】
CIOSは、アラームを監視し、結合テストを実行することによって、サービス健康状態を測定することができる。CIOSは、サービス劣化が生じた場合に、チームがロールバック動作を迅速に定義するのを支援することができ、CIOSはそれを自動的に実行することができる。CIOSは、計画を自動的に生成し、表示することができ、承認を追跡することができる。CIOSは、プロビジョニングとデプロイメントの機能を、これらのタスクをリージョン構築全体にわたってコーディネートする単一のシステムとして結合することができる。CIOSは、フロック(たとえば、任意の適切な数のサービスに対応するフロックコンフィグなどのサービスリソース)、アーティファクト、リソースおよび依存関係の自動検出もサポートする。CIOSは、1つまたは複数の構成ファイルの(たとえば内容の構文解析および処理を含む)静的解析によって、あらゆるレベル(たとえば、リソースレベル、実行ターゲットレベル、フェーズレベル、サービスレベルなど)の実行タスク間の依存関係を検出することができる。これらの依存関係を使用して、CIOSはこれらの依存関係からタスク実行(たとえばインフラストラクチャリソースのプロビジョニングおよびリージョン全体にわたるアーティファクトのデプロイメントに関するタスク)を駆動するために使用することができる様々なデータ構造を生成することができる。
【0060】
図1は、少なくとも1つの実施形態による、クラウドインフラストラクチャオーケストレーション(CIOS)102が、リージョンにおいてブートストラップサービスを動的に提供するために動作することができる環境100のブロック図である。CIOS102は、これらには限定されないが以下のコンポーネントを含むことができる。すなわち、リアルタイムリージョナルデータディストリビュータ(RRDD)104、マルチフロックオーケストレータ(MFO)106、CIOSセントラル108、CIOSリージョナル110、およびケイパビリティサービス112である。CIOSセントラル108およびCIOSリージョナル110の具体的な機能は、その全体があらゆる目的のために組み込まれる「Techniques for Deploying Infrastructure Resources with a Declarative Provisioning Tool」という名称の米国特許出願第17/016,754号でより詳細に示されている。ある実施形態では、CIOS102のコンポーネントの任意の適切な組合せをサービスとして提供することができる。ある実施形態では、CIOS102の一部をリージョン(たとえば、ホストリージョン103によって表されるデータセンター)にデプロイすることができる。ある実施形態では、CIOS102は、米国特許出願第17/016,754号と以下の
図2および
図3に関して詳述されている、任意の適切な数のクラウドサービス(
図1には図示せず)を含むことができる。
【0061】
リアルタイムリージョナルデータディストリビュータ(RRDD)104は、レルム、リージョン、実行ターゲット、および可用性ドメインを特定するリージョンデータを維持し、提供するように構成可能である。場合によっては、リージョンデータは任意の適切な形態(たとえば、JSON形式、データオブジェクト/コンテナ、XMLなど)とすることができる。RRDD104によって維持されるリージョンデータは、対応する識別子によって個別に参照可能なデータの任意の適切な数のサブセットを含むことができる。たとえば、「all_regions」という識別子を、すべての定義済みリージョンのメタデータを含むデータ構造(たとえば、リスト、構造体、オブジェクトなど)に関連付けることができる。別の例として、「realms」などの識別子を、いくつかのレルムと、各レルムに対応するリージョンのセットのメタデータを識別するデータ構造に関連付けることができる。一般に、リージョンデータは、1つまたは複数のレルム、リージョン、可用性ドメイン(AD)、実行ターゲット(ET)などの、識別子、DNSサフィックス、状態(たとえばリージョンの状態)などの任意の適切な属性を維持することができる。RRDD104は、リージョンデータの一部としてリージョン状態を管理するように構成可能である。リージョン状態は、リージョン内のブートストラップの状態を示す任意の適切な情報を含むことができる。たとえば、ある例示のリージョン状態は、「初期」、「構築中」、「実働」、「中断」または「廃止予定」を含むことができる。「初期」状態は、まだブートストラップされていないリージョンを示すことができる。「構築中」状態は、リージョン内の1つまたは複数のフロックのブートストラップが開始したことを示すことができる。「実働」状態は、ブートストラップが完了し、リージョンの有効性検証の準備ができていることを示すことができる。「中断」状態は、CIOSセントラル108またはCIOSリージョナル110が、おそらくは運用上の問題に起因して、リージョナルスタックとの中断された内部インタラクションを有することを示すことができる。「廃止予定」状態は、リージョンが廃止予定となり、利用不能である可能性が高い、および/または、今後再び接触されないリージョンを示すことができる。
【0062】
CIOSセントラル108は、ユーザ(たとえばユーザ109)がそれを使用してCIOS102と対話することができる、任意の適切な数のユーザインターフェースを提供するように構成される。たとえば、ユーザは、CIOSセントラル108によって提供されるユーザインターフェースを介してリージョンデータに変更を加えることができる。CIOSセントラル108は、さらに、ユーザが、フロックコンフィグおよび/またはアーティファクトに加えられた変更を見ること、計画を生成し、見ること、計画を承認/拒絶すること、(たとえば、インフラストラクチャプロビジョニング、デプロイメント、リージョン構築を伴うタスクおよび/またはCIOS102によって管理される任意の適切な数のリソースの所望の状態に対応する)計画実行の状況を見ることを可能にする、様々なインターフェースを提供することができる。CIOSセントラル108は、任意の適切な数のCIOSリージョナル110インスタンスを管理するように構成することができる制御プレーンを実装することができる。CIOSセントラル108は、リージョンデータを提示するための1つまたは複数のインターフェースを提供することができ、それによってユーザ109がリージョンデータを見ることおよび/または変更することを可能にする。CIOSセントラル108は、任意の適切な数のインターフェースを介してRRDD104の機能を呼び出すように構成することができる。一般に、CIOSセントラル108は、直接または(たとえばRRDD104を介して)間接的に、リージョンデータを管理するように構成可能である。CIOSセントラル108は、リージョンデータをフロックコンフィグ内の変数として投入するためにフロックコンフィグを編集するように構成可能である。
【0063】
CIOSリージョナル110の各インスタンスは、リージョンの単一のサービスに関連付けられたブートストラップタスクを実行するように構成されたモジュールに対応し得る。CIOSリージョナル110は、CIOSセントラル108から所望の状態データを受信することができる。ある実施形態では、所望の状態データは、サービスに関連付けられたリソースの所望の状態を(たとえば宣言文によって)宣言するフロックコンフィグを含むことができる。CIOSセントラル108は、サービスに関連付けられたリソースの現在の状態の任意の適切な態様を示す現在の状態データを維持することができる。ある実施形態では、CIOSリージョナル110は、所望の状態データと現在の状態データとの比較によって、1つまたは複数のリソースに変更を加える必要があると特定することができる。たとえば、CIOSリージョナル110は、サービスのリソースの状態を所望の状態に一致させるために、1つまたは複数のインフラストラクチャコンポーネントをプロビジョニングする必要があること、1つまたは複数のアーティファクトをデプロイする必要があること、またはそれらのリソースに任意の適切な変更を加える必要があることを判定することができる。CIOSリージョナル110はブートストラップ動作を行うとき、ケイパビリティが利用可能になるにつれてリソースの様々なケイパビリティを示すデータを公開することができる。「ケイパビリティ」は、サービスに関連付けられた機能の単位を特定する。単位は、サービスによって提供される機能の一部または全部とすることができる。たとえば、ケイパビリティは、リソースが許可/認証処理に利用可能であること(たとえば、リソースによって提供される機能のサブセット)を示すように公開することができる。別の例として、ケイパビリティは、サービスの全機能が利用可能であることを示すように公開することができる。ケイパビリティは、リソースまたはサービスが依存する機能、および/または、使用のために入手可能なリソースまたはサービスの機能を特定するために使用することができる。
【0064】
ケイパビリティサービス112は、1)様々なサービスのどのようなケイパビリティが現在利用可能であるか、2)いずれかのリソース/サービスが特定のケイパビリティを待っているか否か、3)どのような特定のリソースおよび/またはサービスが所与のケイパビリティを待っているか、または上記の任意の適切な組合せを示す、ケイパビリティデータを維持するように構成される。ケイパビリティサービス112は、それを使用してケイパビリティデータを要求することができるインターフェースを提供することができる。ケイパビリティサービス112は、ケイパビリティサービス112がMFO106および/またはCIOSリージョナル110(たとえばCIOSリージョナル110の各インスタンス)にケイパビリティデータを送信することを可能にする、1つまたは複数のインターフェース(たとえばアプリケーションプログラミングインターフェース)を提供することができる。ある実施形態では、MFO106および/または、CIOSリージョナル110の任意の適切なコンポーネントまたはモジュールを、ケイパビリティサービス112にケイパビリティデータを要求するように構成することができる。
【0065】
ある実施形態では、マルチフロックオーケストレータ(MFO)106を、リージョン構築作業を駆動するように構成することができる。ある実施形態では、MFO106は、リージョン内の所与のサービスをブートストラップするために(またはターゲットリージョンに対して変更の単位を加えるために)どのようなフロック/フロックコンフィグバージョンおよび/またはアーティファクトバージョンを使用するかを記述する情報を管理することができる。ある実施形態では、MFO106は、リアルタイムリージョナルデータディストリビュータ104によって管理されるリージョンデータに対する変更を監視する(またはその他により通知される)ように構成可能である。ある実施形態では、リージョンデータが変更されたことを示す表示を受信することによって、MFO106によってリージョン構築がトリガされるようにしてもよい。ある実施形態では、MFO106が、リージョン構築に使用される様々なフロックコンフィグおよびアーティファクトを収集してもよい。フロックコンフィグの一部または全部を、リージョンを問わないように構成することができる。すなわち、フロックコンフィグは、どのようなリージョンにどのフロックがブートストラップされるかを明示的に特定しなくてもよい。ある実施形態では、MFO106は、収集されたフロックコンフィグがそれにより(たとえばCIOSセントラル108によって)再編集されるデータ投入プロセスをトリガすることができる。再編集時、リアルタイムリージョナルデータディストリビュータ104によって維持されているリージョンデータが構成ファイルに投入されるようにする動作が(たとえばCIOSセントラル108によって)実行されてもよい。フロックコンフィグは、リージョンデータのハードコードされた識別情報を必要とせずに、変数/パラメータによってリージョンデータを参照することができる。フロックコンフィグは、リージョンデータをハードコードさせずに、したがって変更をより困難にせずに、このデータ投入を使用して実行時に動的に修正することができる。
【0066】
マルチフロックオーケストレータ106は、リソース、実行ターゲット、フェーズおよびフロック間の依存関係を特定するため、具体的には除去する必要がある循環依存関係を特定するためにフロックコンフィグが構文解析される、静的フロック解析を行うことができる。ある実施形態では、MFO106は、特定された依存関係に基づいて任意の適切な数のデータ構造を生成することができる。これらのデータ構造(たとえば有向非巡回グラフ、リンクされたリストなど)は、リージョン構築を行うための動作を駆動するためにクラウドインフラストラクチャオーケストレーションサービス102によって使用されてもよい。たとえば、これらのデータ構造は、リージョン内でサービスがブートストラップされる順序をまとめて定義することができる。そのようなデータ構造の例については、
図3の構築依存関係グラフ338に関連して以下で詳述する。循環依存関係(たとえばサービスAがサービスBを必要とし、その逆も必要とする)が存在し、静的フロック解析および/またはグラフにより特定された場合、MFOは、任意の適切なサービスチームに、これらの循環依存関係を修正するために対応するフロックコンフィグに変更を加える必要があることを通知するように構成可能である。MFO106は、サービスがリージョンにブートストラップされる順序を管理するために、1つまたは複数のデータ構造を走査するように構成可能である。MFO106は、任意の時点で所与のリージョン内で利用可能なケイパビリティを(たとえばケイパビリティサービス112から取得されたデータを使用して)特定することができる。MFO106は、MFO106がサービスをブートストラップすることができる時点、ブートストラップがブロックされる時点、および/または前にブロックされたサービスに関連付けられたブートストラップ動作が再開可能な時点を特定するために、このデータを使用することができる。この走査に基づいて、MFO106は、任意の適切な数のフロックコンフィグに対応するブートストラップ動作を行うように、MFO106によってCIOSセントラル108に命令が送信される様々なリリースを行うことができる。ある例では、MFO106は、グラフ内で見つかった循環依存関係に起因して1つまたは複数のフロックコンフィグが複数のリリースを必要とする可能性があることを特定するように構成することができる。その結果、MFO106は、グラフにおいて特定された循環依存関係を断つために、所与のフロックコンフィグについて複数の命令セットをCIOSセントラル108に送信することができる。
【0067】
ある実施形態では、ユーザが、新たなリージョン(たとえばターゲットリージョン114)が構築されるように要求することができる。これは、様々なサービスに対応するリソースをブートストラップすることを伴い得る。ある実施形態では、リージョン構築要求が発せられる時点でターゲットリージョン114が通信により利用可能でない(および/またはセキュアでない)場合がある。ターゲットリージョン114が利用可能になり、ブートストラップ動作を行うように構成される時点までブートストラップを遅らせるのではなく、CIOS102は仮想ブートストラップ環境116を使用してリージョン構築を開始することができる。仮想ブートストラップ環境(ViBE)116は、ホストリージョン103(以前にサービスのコアセットにより構成済みであり、通信により利用可能でセキュアな既存リージョン)によってホストされているオーバーレイネットワークとすることができる。MFO106は、ViBE116にリソースをブートストラップする(一般に「ViBEを構築する」と言う)ためにホストリージョン103のリソースを利用することができる。たとえば、MFO106は、ホストリージョン(たとえばホストリージョン103)内のCIOSリージョナル110のインスタンスにViBE116内のCIOSリージョナルの別のインスタンスをブートストラップさせる命令を、CIOSセントラル108を介して与えることができる。ViBE内のCIOSリージョナルが処理のために利用可能になった後、ViBE116内でターゲットリージョン114のためのサービスのブートストラップが継続可能である。ブートストラップ動作を行うためにターゲットリージョン114が利用可能なときに、前にViBE116内でブートストラップされたサービスをターゲットリージョン114に移行させることができる。これらの技術を使用して、CIOS102は、手動入力および/または構成が与えられる必要を大幅に低減することによって、リージョンが構築される速度を大幅に向上させることができる。
【0068】
図2は、少なくとも1つの実施形態による、仮想ブートストラップ環境(ViBE)202(
図1のViBE116の一例)を構築するための環境200および方法を例示するブロック図である。ViBE202は、既存のリージョン(たとえば、
図1のホストリージョン103の一例であり、一実施形態ではホストリージョンサービスエンクレーブであるホストリージョン204)のオーバーレイにプロビジョニングされる仮想クラウドネットワークを表す。ViBE202は、ターゲットリージョン(たとえば
図1のターゲットリージョン114などの構築中のリージョン)が利用可能になる前に、そのターゲットリージョンのためにサービスをステージングすることができる環境を表す。
【0069】
新たなリージョン(たとえば
図1のターゲットリージョン114)をブートストラップするために、サービスのコアセットをブートストラップすることができる。サービスのこれらのコアセットは、ホストリージョン204には存在するが、ViBEには(ターゲットリージョンにも)まだ存在しない。これらの基本コアサービスは、デバイスのプロビジョニング、新たなリージョンに対する信頼の連鎖の確立、およびリージョンへの残りのサービス(たとえばフロック)のデプロイメントに必要な機能を提供する。ViBE202は、ホストリージョン204においてデプロイされるテナンシであってもよい。これは仮想リージョンと考えることができる。
【0070】
ブートストラップ動作を提供するためにターゲットリージョンが利用可能なとき、ViBEにおけるサービスがターゲットリージョンのサービスおよび/またはインフラストラクチャコンポーネントとインタラクトすることができるように、ViBE202をターゲットリージョンに接続することができる。これは、以前のシステムのように自己完結型シードサービスの代わりに、実働レベルのサービスのデプロイメントを可能にし、ターゲットリージョンへのインターネットを介した接続性を必要とすることになる。従来、シードサービスは、コンテナ収集の一部としてデプロイされ、リージョンを構築するために必要な依存関係をブートストラップするために使用されていた。既存のリージョンのインフラストラクチャ/ツーリングを使用して、ターゲットリージョンが自足し、直接通信可能になるまで、ViBE202にリソースをブートストラップ(たとえばプロビジョンおよびデプロイメント)することができ、ハードウェアをプロビジョニングし、サービスをデプロイするためにリージョン(たとえばホストリージョン204)のサービスエンクレーブに接続することができる。ViBE202の使用は、コアサービスの循環依存関係を断つためにホストリージョンのリソースを利用しながら、インフラストラクチャをプロビジョニング/準備し、ソフトウェアをデプロイすることができるために必要な依存関係とサービスの維持を可能にする。
【0071】
マルチフロックオーケストレータ(MFO)206を、ViBE202を構築(たとえば構成)するための動作を行うように構成することができる。MFO206は、新たなリージョン(この場合はViBE領域、ViBE202)にブートストラップされる様々なリソースに対応する適切なフロックコンフィグを取得することができる。たとえば、MFO206は、ケイパビリティサービス208とワーカー210のブートストラップの態様を特定するフロックコンフィグ(たとえば「ViBEフロックコンフィグ」)を取得することができる。別の例として、MFO206は、ViBE202へのドメイン名サービス(DNS)212のブートストラップに対応する別のフロックコンフィグを取得することができる。
【0072】
ステップ1において、MFO206は、CIOSセントラル214(たとえば、それぞれ
図1および
図2のCIOSセントラル108およびCIOSセントラル214の一例)に指示することができる。たとえば、MFO206は、この時点ではまだViBE202に存在しないケイパビリティサービス208とワーカー210のブートストラップを要求するための要求(たとえばViBEフロックコンフィグを含む)を送信することができる。ある実施形態では、CIOSセントラル214はすべてのフロックコンフィグにアクセスすることができる。したがって、ある例では、MFO206はファイル自体ではなくViBEフロックコンフィグの識別子を送信することができ、CIOSセントラル214はそれをストレージから(たとえば、
図3のDB308またはフロックDB312から)から独立して取得することができる。
【0073】
ステップ2において、CIOSセントラル214が対応する要求を介してViBEフロックコンフィグをCIOSリージョナル216に提供することができる。CIOSリージョナル216は、ステップ3における特定のインフラストラクチャプロビジョニング動作とデプロイメント動作を特定し、実行するために、ViBEフロックコンフィグを構文解析することができる。
【0074】
ある実施形態では、CIOSリージョナル216は、プロビジョニングとデプロイメントのために追加の対応するサービスを使用することができる。たとえば、ステップ4において、CIOSリージョナル216は、デプロイメントオーケストレータ218(たとえば、ホストリージョン204のコアサービスまたはその他の作成、構築およびデプロイメントアプリケーションソフトウェアの一例)に、ケイパビリティサービス208とワーカー210をViBE202内でブートストラップさせる命令を実行するように指示することができる。
【0075】
ステップ5において、(CIOSリージョナル216、デプロイメントオーケストレータ218からワーカー210を介するかまたはその他により)ケイパビリティサービス208に、ViBEフロックに対応するリソースが利用可能であることを示すケイパビリティを送信することができる。ケイパビリティサービス208はこのデータを維持することができる。ある実施形態では、ケイパビリティサービス208はこの情報を、ケイパビリティサービス208がViBEとともに維持している利用可能なケイパビリティのリストに追加する。たとえば、ステップ5においてケイパビリティサービス208に提供されるケイパビリティは、ケイパビリティサービス208とワーカー210が処理のために利用可能であることを示すことができる。
【0076】
ステップ6において、MFO206は、ケイパビリティサービス208からデータ(ケイパビリティに対応する識別子)を受信することまたは取得することに基づいて、ケイパビリティサービス208とワーカー210が利用可能であることを特定することができる。
【0077】
ステップ7において、ステップ6におけるデータの受信/取得の結果として、MFO206はCIOSセントラル214に、DNSサービス(たとえばDNS212)をViBE202にブートストラップするように指示することができる。これらの指示は、DNSサービスに対応する特定のフロックコンフィグを特定するかまたは含むことができる。
【0078】
ステップ8において、CIOSセントラル214がCIOSリージョナル216に、DNS212をViBe202にデプロイするように指示することができる。ある実施形態では、DNS212のためのDNSフロックコンフィグがCIOSセントラル214によって提供される。
【0079】
ステップ9において、ワーカー210がViBE202にデプロイされているため、CIOSリージョナル216によってワーカー210を、DNS212をデプロイするタスクに割り当てることができる。ワーカーは、(たとえばフロックコンフィグ(所望の状態)をフロックに関連付けられたリソースの現在の状態(現在は存在しない)と比較することにより)DNS212をデプロイするために実行する必要がある動作のセットを特定するために、
図3に関連して上述した方式で宣言インフラストラクチャプロビジョナーを実行することができる。
【0080】
ステップ10において、デプロイメントオーケストレータ218がワーカー210に、ステップ9において特定された動作に従ってDNS212をデプロイするように指示する。図示されているように、ワーカー210はステップ11においてViBE202にDNS212をデプロイするための動作の実行に移る。ステップ12において、ワーカー210はケイパビリティサービス208に、ViBE202においてDNS212が利用可能であることを通知する。その後、MFO206が、ViBEフロックコンフィグとDNSフロックコンフィグとに関連付けられたリソースが利用可能であることを特定し、それに続いて任意の適切な数の追加のリソースをViBEにブートストラップすることができる。
【0081】
ステップ1~ステップ12が完了した後、ViBE202を構築するためのプロセスは完了したとみなすことができ、ViBE202は構築されたとみなすことができる。
【0082】
図3は、少なくとも1つの実施形態による、ViBEを使用してターゲットリージョンにサービスをブートストラップするための環境300および方法を示すブロック図である。
【0083】
ステップ1において、ユーザ302が、リージョンデータを修正するためにCIOSセントラル304(たとえば、それぞれ
図1および
図2のCIOSセントラル108およびCIOSセントラル214の一例)によって提供される任意の適切なユーザインターフェースを使用することができる。たとえば、ユーザ302は、いくつかのサービスがブートストラップされる新たなリージョンを作成することができる。
【0084】
ステップ2において、CIOSセントラル304が、RRDD306(たとえば
図1のRRDD104の一例)に変更を送信する動作を実行することができる。ステップ3において、RRDD306は受信したリージョンデータを、リージョン、AD、レルム、ETなどの任意の適切な識別子、属性、状態などを含むリージョンデータを記憶するように構成されたデータストアであるデータベース308に記憶することができる。ある実施形態では、アップデーター307を使用して、データベース308または(サービスチームが)そこからその更新にアクセス可能とすることができる任意の適切なデータストアにリージョンデータを記憶することができる。ある実施形態では、アップデーター307は、(たとえば任意の適切な電子通知により)データベース308に加えられた更新を通知するように構成することができる。
【0085】
ステップ4において、MFO310(たとえば、それぞれ
図1および
図2のMFO106およびMFO206の一例)が、リージョンデータの変更を検出することができる。ある実施形態では、MFO310は、リージョンデータに変更がないかRRDD306にポーリングするように構成することができる。ある実施形態では、RRDD306が、リージョン変更を公開するかまたはその他によりMFO310に通知するように構成されてもよい。
【0086】
ステップ5において、リージョンデータの変更の検出が、新たなリージョンにブートストラップされる各フロック(たとえばサービス)の特定のバージョンと、そのフロックに対応する各アーティファクトの特定のバージョンとを特定する、バージョンセット(たとえば、「ゴールデンバージョンセット」識別子などの特定の識別子に関連付けられたバージョンセット)を取得するようにMFO310をトリガすることができる。バージョンセットは、DB312から取得することができる。フロックが進化し、変化するにつれて、リージョン構築に使用される対応するコンフィグおよびアーティファクトのバージョンが変化する可能性がある。これらの変化は、MFO310が、フロックコンフィグとアーティファクトのどのバージョンをリージョン(たとえば、ViBEリージョン、ターゲットリージョン/非ViBEリージョンなど)の構築のために使用するかを特定することができるように、フロックDB312において維持することができる。フロックコンフィグ(たとえばフロックコンフィグのすべてのバージョン)および/またはアーティファクト(たとえばアーティファクトのすべてのバージョン)をDB308、DB312、または、CIOSセントラル304および/またはMFO310がアクセス可能な任意の適切なデータストアに記憶することができる。
【0087】
ステップ6において、MFO310がCIOSセントラル304に、バージョンセットに関連付けられたフロックコンフィグの各々を現在のリージョンデータによって再編集するように要求することができる。ある実施形態では、要求は、それらのフロックコンフィグに対応する各フロックコンフィグおよび/またはアーティファクトのバージョンを示すことができる。
【0088】
ステップ7において、CIOSセントラル304が、DB308から(たとえば、直接、またはリアルタイムリージョナルデータディストリビュータ306を介して)現在のリージョンデータを取得し、MFO310によって要求されたバージョンに従って任意の適切なフロックコンフィグとアーティファクトを取り出すことができる。
【0089】
ステップ8において、CIOSセントラル304は、フロックコンフィグに現在のリージョンデータを投入するために、ステップ7において取得されたリージョンデータによってフロックコンフィグを再編集することができる。CIOSセントラル304は、編集されたフロックコンフィグをMFO310に返すことができる。ある実施形態では、CIOSセントラル304は、単に編集が完了していることを示してもよく、MFO310が再編集されたフロックコンフィグにRRDD306を介してアクセスしてもよい。
【0090】
ステップ9において、MFO310が、再編集されたフロックコンフィグの静的解析を行うことができる。静的解析の一部として、MFO310はフロック間の依存関係を特定するためにフロックコンフィグを(たとえば宣言インフラストラクチャプロビジョナー(たとえばテラフォーム(Terraform)など)に関連付けられたライブラリを使用して)構文解析することができる。MFO310は、この解析および特定された依存関係から、構築依存関係グラフ338を生成することができる。構築依存関係グラフ338は、新たなリージョンにフロックがブートストラップされる(および/またはフロックコンフィグにおいて示されている変更が適用される)順序を特定する非巡回有向グラフであってもよい。グラフの各ノードは、特定のフロックの任意の適切な部分のブートストラップに対応し得る。依存関係に少なくとも部分的に基づいて、特定のブートストラップ順序を特定することができる。ある実施形態では、依存関係はノードの属性として表されてもよく、および/または、ノードを接続するグラフのエッジによって示されてもよい。MFO310は、リージョン構築の動作を駆動するためにグラフを(たとえば始点ノードから開始して)走査することができる。
【0091】
ある実施形態では、MFO310は、循環(たとえば、サービスAがサービスBに依存し、その逆にも依存する)の存在を検出するために循環検出アルゴリズムを使用することができる。MFO310は、孤児ケイパビリティ依存関係を特定することができる。たとえば、MFO310は、どの他のノードにも接続しない構築依存関係グラフ338の孤児ノードを特定することができる。MFO310は、(たとえば、ケイパビリティが時期尚早に公開され、対応する機能が実際にはまだ利用可能ではない場合)誤って公開されたケイパビリティを特定することができる。MFO310は、グラフから、同じケイパビリティの公開の1つまたは複数のインスタンスが存在することを検出することができる。ある実施形態では、任意の適切な数のこのような誤りを検出することができ、MFO310(またはCIOSセントラル304などの別の適切なコンポーネント)が、この情報を(たとえば、電子通知、ユーザインターフェースなどを介して)ユーザに通知またはその他により提示するように構成されてもよい。ある実施形態では、MFO310は、循環依存関係を断つためにリソースを強制削除/再作成するように構成されてもよく、それらのリソースおよび/または対応するフロックコンフィグのためにブートストラップ動作を行うようにCIOSセントラル304に再度指示を与えてもよい。
【0092】
始点ノードはViBEフロックのブートストラップに対応してもよく、第2のノードはDNSのブートストラップに対応してもよい。ステップ10~ステップ15は(
図2のデプロイメントオーケストレータ218の一例であるデプロイメントオーケストレータ317による)ViBEフロックのViBE316(たとえば、それぞれ
図1および
図2のViBE116およびViBE202の一例)へのデプロイメントに対応する。すなわち、
図3のステップ10~ステップ15は概ね
図2のステップ1~ステップ6に対応する。デプロイされるViBEフロックに対応する(たとえば、
図2のケイパビリティサービス208およびワーカー210に対応するケイパビリティサービス318およびワーカー320が利用可能であることを示す)ケイパビリティが存在することが通知された後、MFO310は、実行する次の動作を特定するために構築依存関係グラフ338の走査を再開する。
【0093】
たとえば、MFO310は、構築依存関係グラフ338の走査を続けてDNSフロックがデプロイされるべきであることを特定することができる。DNS322(
図2のDNS212の一例)をデプロイするためにステップ16~ステップ21を実行することができる。これらの動作は、
図2のステップ7~ステップ12に概ね対応し得る。
【0094】
ステップ21において、DNS322が利用可能であることを示すケイパビリティを記憶することができる。このケイパビリティを検出すると、MFO310は構築依存関係グラフ338の走査を再開することができる。この走査時、MFO310は、CIOSリージョナル(たとえばCIOSリージョナル314の一例)のインスタンスのいずれかの適切な部分がViBE316にデプロイされるべきであることを特定することができる。ある実施形態では、ステップ16~ステップ21を、ViBE316へのCIOSリージョナル(ViBE)326(CIOSリージョナル314、
図1のCIOSリージョナル110のインスタンス)およびワーカー328のデプロイメントに関して実質的に繰り返すことができる。CIOSリージョナル(ViBE)326が利用可能であるというケイパビリティをケイパビリティサービス318に送信することができる。
【0095】
CIOSリージョナル(ViBE)326が利用可能であることを検出すると、MFO310は構築依存関係グラフ338の走査を再開することができる。この走査時、MFO310は、デプロイメントオーケストレータ(たとえば、デプロイメントオーケストレータ317の一例であるデプロイメントオーケストレータ330)がViBE316にデプロイされることを特定することができる。ある実施形態では、ステップ16~ステップ21をデプロイメントオーケストレータ330のデプロイメントに関して実質的に繰り返すことができる。デプロイメントオーケストレータ330が利用可能であることを示すケイパビリティを特定する情報をケイパビリティサービス318に送信することができる。
【0096】
デプロイメントオーケストレータ330がデプロイされた後、ViBE316は以降の要求を処理するために利用可能であるとみなすことができる。デプロイメントオーケストレータ330が利用可能であることを検出すると、MFO310は、以降のブートストラップ要求がホストリージョンコンポーネント(ホストリージョン332のコンポーネント)を使用せずにViBEコンポーネントにルーティングされるように指示することができる。したがって、MFO310は、構築依存関係グラフ338の走査を続けることができ、各ノードにおいてCIOSセントラル304を介したViBE316へのフロックデプロイメントを指示する。CIOSセントラル304は、CIOSリージョナル(ViBE)326に、フロックコンフィグに従ってリソースをデプロイするように要求することができる。
【0097】
このプロセス中のある時点において、ターゲットリージョン334が利用可能となり得る。ターゲットリージョンが利用可能であるという表示は、ユーザ302によって(たとえばリージョンデータの更新として)提供されるターゲットリージョン334のためのリージョンデータから特定可能とすることができる。ターゲットリージョン334の可用性は、ターゲットリージョン334と外部ネットワーク(たとえばインターネット)とのネットワーク接続の確立に依存し得る。ネットワーク接続は、パブリックネットワーク(たとえばインターネット)を介してサポート可能であるが、ViBE316からターゲットリージョン334への1つまたは複数の暗号化トンネル(たとえばトンネル336などのIPSecトンネル)を設けるためにソフトウェアセキュリティ手段(たとえばIPSec)を使用することができる。本明細書で使用される「IPSec」とは、インターネットプロトコル(IP)を使用するネットワークを介したネットワークトラフィックの認証と暗号化のためのプロトコルスイートを指し、プロトコルスイートの1つまたは複数の利用可能な実装形態(たとえばOpenswan、Libreswan、strongSwanなど)を含み得る。ネットワークは、ViBE316をターゲットリージョン334のサービスエンクレーブに接続することができる。
【0098】
IPSecトンネルを確立する前に、ターゲットリージョン334における資産(たとえばベアメタル資産)上にIPSecゲートウェイをデプロイすることができるまで、ターゲットリージョン334への初期ネットワーク接続はネットワーキングサービスのブートストラップを可能にするのに十分な接続(たとえばアウトオブバンドVPNトンネル)上にあってもよい。ターゲットリージョン334のネットワークリソースをブートストラップするために、デプロイメントオーケストレータ330が、ターゲットリージョン334内の資産にIPSecゲートウェイをデプロイすることができる。デプロイメントオーケストレータ330は次に、ViBE316からのIPSecトンネルを終端するように構成されたVPNホストをターゲットリージョン334にデプロイすることができる。ViBE316におけるサービス(たとえばデプロイメントオーケストレータ330、サービスAなど)が、ターゲットリージョン334におけるVPNホストとのIPsec接続を確立することができた後は、ViBE316からターゲットリージョン334へのブートストラップ動作が開始することができる。
【0099】
ある実施形態では、ブートストラップ動作は、ViBE316からデプロイされるときにコアサービスのホスティングインスタンスをサポートするために、ターゲットリージョン334においてリソースをプロビジョニングするViBE316におけるサービスから開始することができる。たとえば、ホストプロビジョニングサービスが、VMにコンピューティングリソースを割り当てるために、ターゲットリージョン334におけるインフラストラクチャ(たとえばベアメタルホスト)上にハイパーバイザをプロビジョニングすることができる。ホストプロビジョニングサービスがターゲットリージョン334における物理リソースの割り当てを完了すると、ホストプロビジョニングサービスは、ターゲットリージョン334において物理リソースが割り当てられたことを示すケイパビリティを示す情報を公開することができる。ケイパビリティは、CIOSリージョナル(ViBE)326を介して(たとえばワーカー328によって)ケイパビリティサービス318に公開されてもよい。
【0100】
ターゲットリージョン334のハードウェア割り当てが確立され、ケイパビリティサービス318に通知された状態で、CIOSリージョナル(ViBE)326は、ViBE316からターゲットリージョン334へのコアサービスのインスタンスのデプロイメントをオーケストレーションすることができる。このデプロイメントは、ViBE316を構築するための上述のプロセスと類似し得るが、ホストリージョン332サービスエンクレーブのコンポーネントの代わりに、ViBEのコンポーネント(たとえば、CIOSリージョナル(ViBE)326、ワーカー328、デプロイメントオーケストレータ330)を使用する。デプロイメント動作は、上述のステップ16~ステップ21に概ね対応し得る。
【0101】
ViBE316からターゲットリージョン334にサービスがデプロイされるとき、そのサービスに関連付けられたDNSレコードが、ViBE316におけるサービスのインスタンスに対応し得る。サービスに関連付けられたDNSレコードは、ターゲットリージョン334へのサービスのデプロイメントを完了するために後で更新可能である。言い換えると、ViBE316におけるサービスのインスタンスは、DNSレコードが更新されるまでサービスへのトラフィック(たとえば要求)を受信し続けることができる。サービスは、ターゲットリージョン334に部分的にデプロイすることができ、サービスが部分的にデプロイされているというケイパビリティを示す情報を(たとえばケイパビリティサービス318に)公開することができる。たとえば、ViBE316において稼働するサービスは、対応する計算インスタンス、負荷バランサ、および関連するアプリケーションおよびその他のソフトウェアとともにターゲットリージョン334にデプロイすることができるが、完全にデプロイされる前に、データベースデータがターゲットリージョン334に移行するのを待つ必要がある場合がある。(たとえばDNS322によって管理される)DNSレコードは、ViBE316におけるサービスに依然として関連付けられ得る。サービスのためのデータ移行が完了すると、DNSレコードはターゲットリージョン334にデプロイされた稼働可能サービスを指すように更新可能である。ターゲットリージョン334におけるデプロイされたサービスは次に、そのサービスのトラフィック(たとえば要求)を受信することができ、一方、ViBE316におけるサービスのインスタンスはそのサービスのトラフィックを受信することができなくなる。
【0102】
リソース検出
図4は、少なくとも1つの実施形態による、クラウドインフラストラクチャオーケストレーションサービス(CIOS)が(たとえばオンデマンドで、リージョン構築時に、など)リソースを検出するためにリソースハンター(たとえばリソースハンター420)を使用することができる環境400のブロック図である。環境400は、
図1の環境100の一例とすることができる。クラウドインフラストラクチャオーケストレーションサービス(CIOS)402は、
図1のCIOS102の一例とすることができる。リアルタイムリージョナルデータディストリビュータ(RRDD)404は、それぞれ
図1および
図3のリアルタイムリージョナルデータディストリビュータ104および/または306の一例とすることができる。マルチフロックオーケストレータ(MFO)406は、それぞれ
図1~
図3のマルチフロックオーケストレータ104、206および/または310の一例とすることができる。CIOSセントラル408(「プロビジョニングおよびデプロイメントサービス」とも呼ぶ)は、それぞれ
図1~
図3のCIOSセントラル108、214および/または304の一例とすることができる。CIOSリージョナル410は、それぞれ
図1~
図3のCIOSリージョナル110、216および/または314の一例とすることができる。ケイパビリティサービス412は、それぞれ
図1~
図3のケイパビリティサービス112、208および/または318の一例とすることができる。ターゲットリージョン414は、それぞれ
図1および
図3のターゲットリージョン114および/または334の一例とすることができる。仮想ブートストラップ環境416は、それぞれ
図1~
図3の仮想ブートストラップ環境114、202および/または316の一例とすることができる。RRDD404、MFO406、CIOSセントラル508、CIOSリージョナル410、およびケイパビリティサービス412を含むCIOS402のコンポーネントは、各々、
図1~
図3の対応するコンポーネントに関連して
図1~
図3において上述したそれぞれの機能を実行することができる。
【0103】
環境500は、リソースハンター(RH)420(「リソース特定サービス」とも呼ぶ)を含むことができる。RH420は、任意の適切な時点でリソースの検出を試行するように構成可能である。たとえば、任意の適切なリージョンにおいて任意の適切な数のリソースが、そのリージョンまたは別のリージョンのリージョン構築の前に存在し得る。たとえば、リソース422は、ホストリージョン403(それぞれ
図1~
図3のホストリージョン103、204および/または332の一例)に存在する任意の適切な数のリソース(たとえば、インフラストラクチャリソース、アーティファクト、構成ファイルなど)を含み得る。リソース424がViBE416に存在してもよく、および/またはリソース426がターゲットリージョンに存在してもよい。ViBE416および/またはターゲットリージョン414内で任意の適切な数のサービスをブートストラップするために、リージョン構築プロセスの前、構築プロセス中または構築プロセス実行後の任意の適切な時点に、リソース422~426の任意の適切な組合せを作成することができる。
【0104】
RH420は、MFO406(および/または、CIOS402の任意の適切なコンポーネント、および/またはホストリージョン403、ViBE416および/またはターゲットリージョン414内にブートストラップされた任意のサービス)からフロックコンフィグ情報を受信するように構成可能である。ある実施形態では、MFO406は、フロックの識別子を提供することができ、RH420はそのフロックに関連付けられた対応するフロック構成ファイルにアクセスするように構成可能である。あるいは、MFO406がRH420にフロックコンフィグを提供してもよい。フロックコンフィグの一例については、以下で
図5に関連して詳述する。
【0105】
RH420は、フロックコンフィグ内のリソース検出データを特定することができる。「リソース検出データ」とは、それを使用して既存のリソース(たとえばリソース422~426のうちの1つまたは複数のリソース)を特定することができる任意の適切なデータ(パラメータのセット)を指す。RH420は、リソース検出データのパラメータのセットを使用して、任意の適切な数のリソース422~426を特定する動作を実行することができる。たとえば、RH420は、リソース検出データにおいて提供されるパラメータのセットと一致する属性に関連付けられた特定のリソースを(リソース検出データによって指定された領域内で、および/または大域的に)検索することができる。1つまたは複数の一致するリソースが見つかった場合、RH420はその一致するリソースの識別子をMFO406に直接提供することができ、および/またはRH420はその識別子をMFO406がアクセス可能なレコードに記憶することができる。
【0106】
MFO406は、状態マネージャ428を含むことができる。状態マネージャ428は、パスを駆動するために状態間で遷移する状態マシンを実装するように構成可能である。たとえば、単一のフロックが複数のリリース(たとえば、CIOSセントラル408への命令の複数の送信、単一のサービスに関連付けられた1つまたは複数のフロックコンフィグに対応する複数のリリースなど)を必要とする場合がある。状態マネージャ428は、単一のリリースのために行われる動作をコーディネートするように構成可能である。これには、CIOSセントラル408および/またはリソースハンター420からのメッセージの監視が含まれてもよい。ある実施形態では、状態マネージャ428は、ケイパビリティサービス412によって送信された1つまたは複数のケイパビリティがないか監視するように構成可能である。状態マネージャ428によって行われる動作については、
図6および
図7に関連して詳述することができる。
【0107】
図5に、少なくとも1つの実施形態による、リソース検出に関する1つまたは複数のコードセグメント(たとえば、コードセグメント502およびコードセグメント504)を含む例示のフロック構成ファイル500を示す。フロック構成ファイル500(または、同じサービスに対応する他のフロック構成ファイル)は、サービスのリソース(たとえば、インフラストラクチャコンポーネント、アーティファクト、データなど)、各フェーズに対応する実行ターゲットのそれぞれのセットにわたるサービスのブートストラップに対応するいくつかのフェーズ、サービスのインスタンスがブートストラップされるいくつかの実行ターゲットなどについて記述する追加のコードセグメントをさらに含み得ることを理解されたい。ある実施形態では、フロック構成ファイル500(または同じサービスに対応する他のフロック構成ファイル)は、サービスが依存する1つまたは複数のケイパビリティをそこから特定可能な情報を含むことができる。ある実施形態では、フロック構成ファイル500(または、同じサービスに対応する他のフロック構成ファイル)は、そのフロックコンフィグのリソースのブートストラップ時にポストされる1つまたは複数のケイパビリティを示すことができる。非限定的な一例として、フロック構成ファイル500は、同じフロックに対応する構成ファイルのセットのうちの1つであってもよい。フロックに対応する1つのフロックコンフィグは、宣言文によって1つまたは複数のインフラストラクチャリソースの所望の状態を記述することができる。そのフロックに対応する別のフロックコンフィグが、宣言文によって1つまたは複数のアーティファクト(たとえばソフトウェアアプリケーション)の所望の状態を記述することができる。別のフロックコンフィグ(たとえばフロックコンフィグ500)は、リソース検出データを特定することができる。フロックが適用されるフェーズおよび/または実行ターゲットは、上述のいずれかの適切なフロックコンフィグにおいて特定可能である。
図5に示す例において、フロックコンフィグ500と言う場合、フロックのリソースを記述するためにフロックコンフィグのセットが使用される場合にフロックコンフィグのセットのうちのいずれか適切なフロックコンフィグを指すものと解釈することができる。
【0108】
ある実施形態では、コードセグメント502が、1つまたは複数の既存のリソースを特定するために使用可能なリソース検出データを含み得る。たとえば、行506は、タイプ「dataType」および名前「Resource_Name」のリソースに対応するデータが検索されることを示すことができる。タイプ「dataType」および名前「Resource_Name」は、コードセグメント502によって定義されるリソース検出データのパラメータとみなすことができる。行507~508は、各々、検索を行うために使用する追加のパラメータを含むことができる。たとえば、行507は、パラメータ「ad」を含み、図のように(たとえば、局所的にアクセス可能な配列またはリストを介して)リージョンの各可用性ドメインの名前を入れることができる。行508は、パラメータ「compartment_id」を含んでもよく、図のようにリージョンのすべてのコンパートメントに対応する識別子が入れられる。行509は、フロックコンフィグ500内で局所的に使用可能な文字列値(たとえば「EXAMPLE_RESOURCE」)を定義することができる。行509において定義される文字列値のユーザについては、以下で詳述する。
【0109】
行507および行508が局所的パラメータ(たとえば、それぞれ「local」の使用により示される)を使用しているため、ある実施形態では、所与のリージョンのすべての可用性ドメインの名前と、リージョン内のすべてのコンパートメント識別子に対応するリージョンデータ値を、それぞれパラメータ「ad」および「compartment_id」内に投入することができる。リージョンデータ値が局所的パラメータ内に投入されるプロセスについては、2022年2月28日に出願された「DATA MANAGEMENT TECHNIQUES FOR CLOUD REGIONS」という名称の米国仮特許出願第63/315,024号(代理人整理番号第088325-1282326号(306000US))に関連してより詳細に説明されており、その内容の全体があらゆる目的のために本明細書に組み込まれる。
図5に示す例において、パラメータのセットは、タイプ「dataType」、名前「Resource_Name」、リージョンの可用性ドメイン名、およびリージョンのすべてのコンパートメントのコンパートメント識別子を含むことができる。
【0110】
コードセグメント502に少なくとも部分的に基づいて、RH420がデータタイプ「dataType」、名前「Resource_Name」に関連付けられたリソースのその可用性ドメインのすべてのコンパートメントにおけるすべての可用性ドメインを検索することができる。パラメータ「data」は、見つかった場合、特定されたリソースにアクセスするために使用することができる。
【0111】
コードセグメント504は、図のように、コードセグメント502のパラメータを使用して特定されているリソースを使用して実行されるインポート動作を提供する。RH420は、行510で示されているような宣言(たとえば出力「default imports」)によって定義されている任意の適切な動作を実行するように構成可能である。コードセグメント504において示されている例では、行512において、RH420は、コードセグメント502において提供されているパラメータのセットと一致するものとして特定された各リソースの値を取得することができる。文字列「EXAMPLE_RESOURCE」を、行510の一部(たとえば「example_resource」)を行511において示されているように「EXAMPLE_RESOURCE」に置き換えるための文字列として使用することができる。このようにして、コードセグメント502においてグローバル変数(たとえば文字列、整数など)を定義することができ、次に、511、513および515に示すように、フロックコンフィグ500の任意の適切な部分(たとえばコードセグメント504)により使用することできる。
【0112】
各リソースについて、行512における値パラメータをデータEXAMPLE_RESOURCE.インスタンスに対応する値に設定することができる。1つのリソースの値を使用して、行514および行516の動作を実行することができる。行514は、実行されると、リソースのアドレス(たとえばIPアドレス)を取得することができる。行516は、実行されると、リソースの識別子を取得することができる。特定されている各リソースについて行514および行516を実行した後、RH420は、コードセグメント502のパラメータのセットと一致した属性を有することが判明したすべてのリソースのアドレスおよび/または識別子のリストを有することができる。RH420は、これらのアドレス/識別子を
図1~
図4のMFOがアクセス可能なレコードに記憶することができ、またはRH420はMFOにこのデータを直接提供することができる。インポート動作により取得されたいずれの適切なデータも同様にして記憶および/またはMFOに提供することができる。アドレスおよび識別子のこの例は、本開示を限定することを意図していない。
【0113】
図6は、少なくとも1つの実施形態による、リージョン構築に対応するリソースを特定する例示の方法600を示すブロック図である。MFO602は、それぞれ
図1~
図4のマルチフロックオーケストレータ104、206、310および/または404の一例とすることができる。CIOSセントラル604は、それぞれ
図1~
図4のCIOSセントラル108、214、304および/または404の一例とすることができる。リソースハンター606は、
図4のリソースハンター420の一例とすることができる。MFO602によって行われる動作の少なくとも一部が、
図4の状態マネージャ428によって行われてもよい。
【0114】
方法600の実行の前に、フロックコンフィグを選択し、それらのコンフィグにリアルタイムリージョンデータを投入し、静的フロック解析を行い、構築依存関係グラフ(たとえば、
図3の構築依存関係グラフ338)を生成する動作がすでに行われていてもよい。
図3を参照すると、ステップ1~ステップ4において、ユーザ302が、CIOSセントラル604によってホストされている任意の適切なインターフェースを使用して、リージョンデータを更新することができる(たとえば、
図3のViBE316に関連付けられたデータを追加するために新たなリージョンを示すため、ViBE316のためのリージョンデータはViBE316がViBEリージョンであることを示すことができる)。
図3のステップ1~ステップ4に関連して説明した動作によって、MFO602はリージョンデータの変更を通知され、および/または検出することができる。
図3のステップ5に関連して説明したように、MFO602はフロックコンフィグのセット(たとえば、各サービスの1つまたは複数のフロックコンフィグのセット)を取得することができる。フロックコンフィグのセットは、MFO602によって維持されているゴールデンバージョンセットデータに少なくとも部分的に基づいて選択することができる。
図3のステップ6~ステップ8に関連して説明したように、MFO602は、CIOSセントラル604が選択されたフロックを再編集するように要求することができる。この再編集時、現在のリージョンデータがリアルタイムリージョナルデータディストリビュータ306から取得され、フロックコンフィグのパラメータに投入されてもよい。MFO602は次に、
図3のステップ9に関連して説明したように構築依存関係グラフ338を生成するためにフロックコンフィグの再編集の静的解析を行うことができる。
【0115】
方法600は610から開始し、MFO602(たとえば、
図4の状態マネージャ428)が構築依存関係グラフ338の存在を検出することができ、構築依存関係グラフ338の1回のパスについて状態管理を開始することができる。
【0116】
図7に、少なくとも1つの実施形態による、ブートストラップ動作および/またはリソース検出動作がオーケストレーションされるいくつかの状態(たとえばまとめて状態702と呼ぶ)を示す例示の流れ700を示す。状態702は、任意の適切な数の状態(たとえば、未開始状態704、リリース待ち状態706、計画待ち状態708、検出待ち状態710、インポート待ち状態712、状態編集待ち状態714、状態検証待ち716、承認待ち718、完了待ち720、成功状態722、破棄状態724、失敗状態726、およびキャンセル状態728)を含むことができる。
図7に示す特定の状態は本開示の範囲を限定することは意図していない。より多いもしくはより少ない、および/または異なる状態も使用可能であり、必ずしも
図7に示されている具体的な状態には限らない。これらの具体的な状態について、
図6の例に沿って説明する。
【0117】
図6に戻り、610において、MFO602(たとえば状態マネージャ428)が、NOT_STARTED状態(たとえば
図7の未開始状態704に対応する)に遷移することができる。NOT_STARTED状態である間に、MFO602は、いくつかの事前定義済み条件が満たされていると判定する動作を行うことができる。それらの事前定義済み条件が満たされている場合、MFO602(たとえば状態マネージャ428)は、612においてAWAITING_RELEASE状態に遷移することができる。AWAITING_RELEASE状態は、
図7のリリース待ち状態706に対応し得る。
【0118】
614において、AWAITING_RELEASE状態である間に、MFO602を、構築依存関係グラフ(たとえば
図3の構築依存関係グラフ338)の走査を開始するように構成することができる。構築依存関係グラフの始点ノードに対応する第1のフロックコンフィグを選択することができる。第1のフロックコンフィグは、構築においてリージョンに加えられる変更の単位(データセンター内の変更の単位)に対応し得る。たとえば、構築中のリージョンがViBEリージョン(たとえばViBEリージョン316)であると考えると、第1のフロックコンフィグは、構築されるViBEリージョン内の
図3(同様に
図2に記載)のケイパビリティサービス318およびワーカー320のブートストラップに関連付けることができる。始点ノードは、対応するフロックコンフィグに利用可能なViBEリージョンの他のケイパビリティへの依存関係がないために始点ノードであり得る。
【0119】
616において、MFO602は第1のフロックコンフィグのリリースに対応する命令のセットを送信することができる。ある実施形態では、MFO602は、前述のように投入されたリージョンデータを含む第1のフロックコンフィグとともに、CIOSセントラル604に第1の要求を送信することができる。送信した後、MFO620(たとえば状態マネージャ428)は621において状態AWAITING_PLAN(
図7のプラン待ち状態708に対応する)に遷移することができる。
【0120】
618において、CIOSセントラル604が、フロックコンフィグを受信することができ、リリースを計画するための動作を行うことができる。たとえば、CIOSセントラル604は、ViBEリージョン316内の第1のフロックコンフィグにおけるリソースの状態の確認を試行することができる。CIOSセントラル604は、CIOSリージョナルのインスタンスとデプロイメントオーケストレータが、第1のフロックコンフィグにおいて特定されているリソース(たとえばケイパビリティサービス318およびワーカー320)をブートストラップするために必要であることを特定することができる。ViBEリージョン316は新規であるため、CIOSセントラル604はフロックに必要なリソースのいずれも存在しないことを特定し得る。これに応答して、CIOSセントラル604は立案データ620を生成することができる。
【0121】
図8は、少なくとも1つの実施形態による、状態データ800のインスタンスの一例を示すブロック図である。状態データ800は、
図6の立案データ620の一部として含めることができる。
図8に示すように、状態データ800は、作成される任意の適切な数のリソースに対応する任意の適切なデータを含み得る。
図6の進行中の例において、状態データ800は、CIOSリージョナルのインスタンス、デプロイメントオーケストレータのインスタンス、ケイパビリティサービス、およびワーカーがデプロイされることを示すことができる。これらのコンポーネントの各々は、それぞれ状態データ800のリソース1、リソース2、リソース3およびリソース4に対応し得る。任意の適切な対応するリソースデータ(たとえば、リソースデータ802、804、806および808が最初に状態データ800に含まれてもよい)。
図6に戻って、622において立案データ620がMFO602に送信されてもよい。
【0122】
624において、MFO602が、立案データ620を受信すると、リソースハンター606(たとえば、
図4のリソースハンター420の一例)にこのリリースを行うために利用可能な可能性のある既存リソースを特定するように求める要求を送信する。626において、MFO602(たとえば状態マネージャ428)は、状態AWAITING_DISCOVERY(たとえば
図7の検出待ち状態710に対応する)に遷移することができる。
図5に関連して上述したように、第1のフロックコンフィグは、リソースと照合されるパラメータのセットを定義するコードセグメント502を含むことができる。
【0123】
628において、リソースハンター606が、第1のフロックコンフィグにおいて提供されるリソース検出データ(たとえばコードセグメント502)からパラメータを抽出することができる。ある実施形態では、リソースハンター606は、(たとえばコードセグメント502、各AD、各コンパートメントなどにおいて定義された)リソース検出データによって、および/または提供されるパラメータの任意の適切な組合せ(たとえば、コードセグメント502において提供される「dataType」、「Resource_Name」)を使用して指定されている場所において問い合わせをするために、任意の適切な動作を行うことができる。
【0124】
630において、リソースハンター606はMFO602に、リソース検出データと一致すると特定された任意の適切な数のリソースを示す任意の適切なデータを送信することができる。MFO602は、リソースハンター606がインポート動作を行うことを要求するために632において別の要求を送信することができる。
【0125】
630においてデータを受信すると、634において、MFO602(たとえば状態マネージャ428)は、
図7のインポート待ち状態714に対応する状態AWAITING_IMPORTに遷移することができる。
【0126】
636において、リソースハンター606は、行われるべきインポート動作のセットを特定するように構成することができる。たとえば、リソースハンター606は、提供されたリソース検出データ内の第1のフロックコンフィグからインポート動作を特定することができる。たとえば、リソースハンター606は、
図5のコードセグメント504を特定し、特定されたインポート動作を実行することができる。進行中の例では、これにより、各リソースのアドレスおよびリソース識別子など、一致するリソースに関する任意の適切なデータを取得することができる。ある実施形態では、ViBE316を構築するための第1のフロックコンフィグは、そのリソース検出データ内に、
図3のホストリージョン332内のCIOSリージョナル314およびデプロイメントオーケストレータ317を特定するための場所およびパラメータを含むことができる。
図8を再度参照すると、リソースXおよびリソースYが、それぞれCIOSリージョナル314およびデプロイメントオーケストレータ317に対応し得る。リソースデータXはリソースXの任意の適切な属性(たとえば、アドレスおよびリソース識別子など)を含むことができ、リソースデータYはリソースYの任意の適切な属性(たとえばアドレスおよびリソース識別子など)を含むことができる。
【0127】
図6に戻り、638において、リソースハンター606は、取得したリソースデータ(たとえば、ホストリージョン332のCIOSリージョナル314およびデプロイメントオーケストレータ317のアドレスおよびリソース識別子)をMFO602に送信することができる。
【0128】
638においてデータを受信すると、640において、MFO602(たとえば状態マネージャ428)は
図7の状態編集待ち状態716に対応する状態AWAITING_STATE_EDITに遷移することができる。
【0129】
642において、MFO602は立案データ620の状態データを更新するための動作を行うことができる。再び
図8を参照すると、MFO602は、リソースデータ802の少なくとも一部を(この例ではCIOSリージョナル314に対応する)リソースデータXの任意の適切な部分によって修正することができる。進行中の例において、MFO602は、リソースデータ802をホストリージョン332内のCIOSリージョナル314の取得されたアドレスおよびリソース識別子を含むように修正することができる。同様に、MFO602は、リソースデータ804をホストリージョン332内のデプロイメントオーケストレータ317の取得されたアドレスおよびリソース識別子を含むように修正することができる。状態データ810は、これらの動作が行われた後の状態データ800の修正版を示すことを意図したものである。
【0130】
図6に戻り、644において、MFO602(たとえば状態マネージャ428)は、
図7の状態検証待ち状態718に対応する状態AWAITING_STATE_VALIDATIONに遷移することができる。
【0131】
646において、MFO602は
図8の状態データ810を含む修正された立案データをCIOSセントラル604に送信することができる。
【0132】
648において、CIOSセントラル604は、立案データを更新することができ、MFO602によって提供された更新された立案データを使用してリリースを再立案するための動作を行うことができる。それらの動作の一部として立案データ650を生成することができる。立案データ650は、作成されるべきリソースを特定することができる。進行中の実施形態では、CIOSリージョナル314およびデプロイメントオーケストレータ317は、立案データ650に含まれなくてもよく、または含まれる場合には、立案データ650は、新たなリソースを作成する代わりにそれらが使用されることを示すことができる。
【0133】
652において、MFO602は、立案データ650を受信することができ、立案データ650が要求された状態データと合致しているか否かを判定するために、立案データ650をMFO602が646において送信した状態データと比較することができる。たとえば、MFO602は、立案データ650から、CIOSセントラル604がCIOSリージョナルの新たなインスタンスを生成することを計画せず、ホストリージョン332のCIOSリージョナル314を使用することを意図していることを確認することができる。同様に、MFOは、立案データ650から、CIOSセントラル604がデプロイメントオーケストレータ317の新たなインスタンスを生成することを計画せず、ホストリージョン332のデプロイメントオーケストレータ317を使用することを意図していることを確認することができる。
【0134】
654において、立案データ650が646で送信された状態データと合致する場合、MFO602(たとえば状態マネージャ428)は、
図7の承認待ち状態720に対応する状態AWAITING_APPROVALに遷移することができる。この状態の間、ユーザに(たとえば
図3のユーザ302にCIOSセントラル604によってホストされている任意の適切なユーザインターフェースを介して)立案データ650の任意の適切な部分を提示するための任意の適切な動作を行うことができる。ある実施形態では、ユーザが承認する場合に、654において表示を受信することができる。あるいは、フロックコンフィグ内で提供される表示に応じて、MFO604が自動的に立案データを承認してもよい。(たとえば自動的に、またはユーザ入力により)立案データ650が承認されることを示す表示を受信すると、658において、MFO602(たとえば状態マネージャ428)は、
図7の完了待ち状態720に対応する状態AWAITING_COMPLETIONに遷移することができる。立案データ650が承認されたという表示が660において送信されてもよい。
【0135】
662において、CIOSセントラル604が、構築中のリージョン(たとえば
図3のViBE316)内の第1のフロックコンフィグのリソースをブートストラップするための任意の適切な動作を行うことができる。たとえば、CIOSセントラル604は、(立案データ650に照らして)CIOSリージョナル314に
図3のケイパビリティサービス318と
図3のワーカー320とをブートストラップするように指示することができる。ケイパビリティサービス318が動作可能なとき、ケイパビリティサービス318を、それを示すケイパビリティを公開するように構成することができる。
【0136】
664において、MFO602は、ケイパビリティサービス318に対応するケイパビリティが公開されたことを示す表示を受信(またはその他により取得)することができる。公開されたケイパビリティがフロックコンフィグにおいて特定されていることを特定することに応答して、MFO602(たとえば状態マネージャ428)は、667において
図7の完了待ち状態720に対応する状態SUCCESSFULに遷移することができる。
【0137】
これにより、リージョン(たとえばViBE316)に対するフロックコンフィグの1回のパス(「リリース」とも呼ぶ)を完了することができる。成功状態に達した後、MFO602は次のリリース/パスを特定するために構築依存関係グラフ338の走査を再開するように構成可能である。このプロセスは任意の適切な回数だけ行うことができ、特定のフロックコンフィグが、(たとえばそのリージョンにおけるCIOSリージョナルによって)そのリージョン(または別のリージョン)のリソースをそれを使用してインポートし、使用することができる任意の適切な検出データを含むことができる。
【0138】
ターゲットリージョンにおいてケイパビリティサービスのインスタンス、デプロイメントオーケストレータ、CIOSリージョナル、およびワーカーをデプロイするために同様のプロセスを行うことができる。ユーザがターゲットリージョン(たとえばターゲットリージョン334)に対応するリージョンデータを追加した後は、MFOによってフロックコンフィグの異なるセットが特定されることになる。これらのフロックコンフィグの任意の適切な部分が、随時、MFO602にCIOSセントラルに対して、ViBEのリソースがターゲットリージョンのために行われるブートストラップ動作のために使用されるように指示させることができるリソース検出データを含むことができる。
【0139】
少し
図7に戻って、状態マネージャ428は状態724~728のいずれかに遷移する時点を特定するために様々な条件(たとえば、ユーザ入力、タイムアウト、エラーコードなど)がないか監視することができることを理解されたい。ある実施形態では、状態マネージャ428は、事前定義済み条件(たとえば、MFOが待っているデータが事前定義済みの期間に受信されなかった)の検出に少なくとも部分的に基づく任意の適切な時点で、状態704~720のいずれかから状態724~728のいずれかに遷移することができる。
【0140】
図9に、少なくとも1つの実施形態による、既存のリソースを検出する例示の方法900を示す。方法900は、クラウドコンピューティング環境の1つまたは複数のコンポーネント(たとえば、
図4のクラウドインフラストラクチャオーケストレーションサービス402)によって行うことができる。たとえば、方法900は、少なくとも一部がリソース特定サービス(たとえば
図4および/または
図6のリソースハンター)によって行われてもよい。コンピュータ可読記憶媒体が、コンピューティングデバイスの1つまたは複数のプロセッサによる実行時にコンピューティングデバイスに方法900を行わせるコンピュータ可読命令を含む。方法900は、任意の適切な順序で、または並行して行われてもよい。方法900は、
図9に示されているよりも多いかまたは少ない数のステップを含み得ることを理解されたい。
【0141】
方法900は902から開始することができ、サービスに関連付けられたリソース検出データを含むフロック構成ファイル(たとえばフロック構成ファイル500)を、(たとえば
図4のリソースハンター420および/または
図6のリソースハンター606などのリソース特定サービスによって)取得することができる。ある実施形態では、リソース検出データは、クラウドコンピューティング環境の既存のリソースがそれを使用して特定されるパラメータのセットを示すことができる。たとえば、
図5は、
図5に関連して上述したようなパラメータを含むことができるコードセグメント502を含む。
【0142】
904において、既存のリソースを特定する動作を行うことができる。ある実施形態では、既存のリソースに関連付けられた属性をリソース検出データのパラメータのセットと照合することに少なくとも部分的に基づいて、既存のリソース(たとえば、
図6の例において説明したCIOSリージョナル314)を特定することができる。
【0143】
906において、既存のリソースに対応する識別子を取得するために行うインポート動作のセットを特定することができる。たとえば、
図5は、
図5に関連して上述したような例示のインポート動作を含むことができるコードセグメント504を含む。
【0144】
908において、インポート動作のセットの実行に少なくとも部分的に基づいて、特定された既存のリソースに対応する識別子を(たとえば
図6のMFO602に)送信することができる。
【0145】
図10に、少なくとも1つの実施形態による、リージョン構築を実行するために既存のリソースを使用する例示の方法1000を示す。方法1000は、
図1のクラウドインフラストラクチャオーケストレーションサービス102(たとえば、
図1~
図4および/または
図6のマルチフロックオーケストレータなどのオーケストレーションサービス)の1つまたは複数のコンポーネントによって行うことができる。コンピュータ可読記憶媒体が、コンピューティングデバイスの1つまたは複数のプロセッサによって実行されると、コンピューティングデバイスに方法1000を行わせるコンピュータ可読命令を含む。方法1000は、任意の適切な順序で行うことができる。方法1000は、
図10に示されているよりもより多いかまたはより少ない数のステップを含み得ることを理解されたい。
【0146】
方法1000は1002から開始することができ、複数のサービスに対応する複数のフロック構成ファイルを取得することができる。ある実施形態では、複数のサービスは、リージョン構築プロセス時にリージョン内でブートストラップされるサービスである。
【0147】
1004において、複数のフロック構成ファイルに少なくとも部分的に基づいて、複数のサービスがリージョン内でブートストラップされる順序を判定することができる。たとえば、リージョン内で複数のサービスをブートストラップするためにフロックコンフィグがリリースされる順序を特定する構築依存関係グラフ338を生成するために、複数のフロック構成ファイルの静的解析を行うことができる。
【0148】
1006において、複数のサービスのうちのサービスのブートストラップに関する第1の要求を送信することができる。第1の要求は、第1のフロックコンフィグに対応するフロック構成ファイルを含むことができる。これらの動作は、
図6のステップ616に対応し得る。
【0149】
1008において、サービスをブートストラップするために作成されるリソースを最初に示す立案データ(たとえば
図6の立案データ620)を(たとえば
図6のCIOSセントラル604から)受信することができる。
【0150】
1010において、クラウドコンピューティング環境の、以前に作成されたリソースに対応する識別子を(たとえば
図6のリソース検出サービス606から)取得することができる。たとえば、
図6のステップ638に記載のように、CIOSリージョナル314のアドレスとリソース識別子を受信することができる。
【0151】
ステップ1012において、クラウドコンピューティング環境の以前に作成されたリソースに対応する識別子を含むように立案データを修正することができる。修正された立案データの一例は、
図8の状態データ810を含むことができる。
【0152】
1014において、サービスのブートストラップに関する第2の要求を(たとえばCIOSセントラル604)に送信することができる。ある実施形態では、第2の要求は、以前に作成されたリソースに対応する識別子を含む立案データを含む。識別子を含む第2の要求の送信により、
図6に関連して説明した方式で、以前に作成されたリソースを使用してリージョン内でサービスをブートストラップさせることができる。
【0153】
クラウドサービスインフラストラクチャアーキテクチャの例
上述のように、インフラストラクチャアズアサービス(IaaS)は、1つの特定の種類のクラウドコンピューティングである。IaaSは、パブリックネットワーク(たとえばインターネット)を介して仮想化コンピューティングリソースを提供するように構成可能である。IaaSモデルにおいて、クラウドコンピューティングプロバイダがインフラストラクチャコンポーネント(たとえば、サーバ、ストレージデバイス、ネットワークノード(たとえばハードウェア)、デプロイメントソフトウェア、プラットフォーム仮想化(たとえばハイパーバイザ層)など)をホストすることができる。場合によっては、IaaSプロバイダが、それらのインフラストラクチャコンポーネントに付随する様々なサービス(たとえば、対価請求、モニタリング、ロギング、負荷バランシングおよびクラスタ化など))も提供することができる。したがって、これらのサービスはポリシー主導型とすることができるため、IaaSユーザは、アプリケーションの可用性およびパフォーマンスを維持するように負荷バランシングを駆動するために、ポリシーを実施することができるようにし得る。
【0154】
場合によっては、IaaS顧客は、インターネットなどのワイドエリアネットワーク(WAN)を介してリソースおよびサービスにアクセスすることができ、アプリケーションスタックの残りの要素をインストールするためにクラウドプロバイダのサービスを使用することができる。たとえば、ユーザは、仮想マシン(VM)の作成、各VMへのオペレーティングシステム(OS)のインストール、データベースなどのミドルウェアのデプロイメント、タスク負荷およびバックアップのためのストレージバケットの作成、さらにそのVMへの企業ソフトウェアのインストールのために、IaaSプラットフォームにログインすることができる。顧客は次に、ネットワークトラフィックのバランシング、アプリケーションの問題のトラブルシューティング、パフォーマンスの監視、障害復旧の管理などを含む、様々な機能を実行するために、プロバイダのサービスを使用することができる。
【0155】
ほとんどの場合、クラウドコンピューティングモデルはクラウドプロバイダの関与を必要とすることになる。クラウドプロバイダは、IaaSの提供(たとえばオファリング、レンタル、販売)を専門に扱うサードパーティサービスとすることができるが、必ずしもこれには限らない。エンティティは、プライベートクラウドをデプロイすることを選択してもよく、それによってインフラストラクチャサービスの自己プロバイダとなってもよい。
【0156】
ある例では、IaaSデプロイメントは、準備されたアプリケーションサーバなどに新たなアプリケーションまたはアプリケーションの新たなバージョンを配置するプロセスである。これは、サーバを準備する(たとえばライブラリ、デーモンなどをインストールする)プロセスも含み得る。これは、ハイパーバイザ層より下(たとえばサーバ、ストレージ、ネットワークハードウェア、および仮想化)でクラウドプロバイダによって管理されることが多い。したがって、顧客は、ハンドリング(OS)、ミドルウェアおよび/またはアプリケーションのデプロイメント(たとえばセルフサービス仮想マシン(たとえばオンデマンドでスピンアップすることができる)など)を担うことができる。
【0157】
ある例では、IaaSプロビジョニングは、使用のためにコンピュータまたは仮想ホストを取得することと、さらにその上に必要なライブラリまたはサービスをインストールすることを指す。多くの場合、デプロイメントはプロビジョニングを含まず、先にプロビジョニングが行われる必要がある場合がある。
【0158】
場合によっては、IaaSプロビジョニングには2つの異なる課題がある。第1に、いかなるものでもそれを稼働させる前に命令の初期セットをプロビジョニングするという初期課題がある。第2に、すべてがプロビジョニングされた後で、既存のインフラストラクチャを進化させる(たとえば新しいサービスを追加する、サービスを変更する、サービスを削除するなど)という課題がある。場合によっては、これら2つの課題には、インフラストラクチャの構成を宣言的に定義することを可能にすることによって対処することができる。言い換えると、1つまたは複数の構成ファイルによって、インフラストラクチャ(たとえばどのようなコンポーネントが必要であり、それらがどのようにインタラクトするか)を定義することができる。したがって、インフラストラクチャの全体的トポロジ(たとえば、どのようなリソースがどのリソースに依存しているか、およびそれらの各々がどのように協働するか)を、宣言的に定義することができる。場合によっては、トポロジが定義された後、構成ファイルで記述されている異なるコンポーネントを作成および/または管理するワークフローを生成することができる。
【0159】
ある例では、インフラストラクチャが多くの相互接続された要素を有することができる。たとえば、コアネットワークとも呼ばれる、1つまたは複数の仮想プライベートクラウド(VPC)(たとえば、構成可能および/または共用コンピューティングリソースの潜在的オンデマンドのプール)があってもよい。ある例では、ネットワークのインバウンド/アウトバウンドトラフィックがどのように設定されるか、および1つまたは複数の仮想マシン(VM)を定義するためにプロビジョニングされる、1つまたは複数のインバウンド/アウトバウンドトラフィックグループ規則もあってもよい。負荷バランサ、データベースなど、他のインフラストラクチャ要素もプロビジョニング可能である。ますます多くのインフラストラクチャ要素が求められ、および/または追加されるにつれて、インフラストラクチャは徐々に進化することができる。
【0160】
場合によっては、様々な仮想コンピューティング環境にわたるインフラストラクチャコードのデプロイメントを可能にするために、連続デプロイメント技術を採用することができる。さらに、記載の技術は、これらの環境内でのインフラストラクチャ管理を可能にすることができる。ある例では、サービスチームが、1つまたは複数の、大抵は多くの異なる(たとえば様々な異なる地理的場所にわたる、時には世界中に広がる)実働環境にデプロイされることが求められるコードを書くことができる。しかし、例によっては、コードがデプロイされるインフラストラクチャがまず先に設定される必要がある。場合によっては、プロビジョニングを手動で行うことができ、リソースをプロビジョニングするためにプロビジョニングツールを使用することができ、および/または、インフラストラクチャがプロビジョニングされた後はコードをデプロイするためにデプロイメントツールを使用することができる。
【0161】
図11は、少なくとも1つの実施形態による、IaaSアーキテクチャの例示のプラットフォームを示すブロック
図1100である。サービス運用者1102が、仮想クラウドネットワーク(VCN)1106とセキュアホストサブネット1108とを含むことができるセキュアホストテナンシ1104に通信可能に結合可能である。ある例では、サービス運用者1102は、Microsoft Windows Mobile(登録商標)などのソフトウェア、および/または、iOS、Windows Phone、Android、BlackBerry 8、Palm OSなどの様々なモバイルオペレーティングシステムを稼働させ、インターネット、eメール、ショートメッセージサービス(SMS)、Blackberry(登録商標)またはその他の通信プロトコル対応の、携帯型ハンドヘルドデバイス(たとえば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、パーソナルデジタルアシスタント(PDA))またはウェアラブルデバイス(たとえば、Google Glass(登録商標)ヘッドマウントディスプレイ)であってもよい、1つまたは複数の顧客コンピューティングデバイスを使用することができる。あるいは、顧客コンピューティングデバイスは、たとえば、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinux(登録商標)オペレーティングシステムの様々なバージョンを稼働させる、パーソナルコンピュータおよび/またはラップトップコンピュータを含む、汎用パーソナルコンピュータであってもよい。顧客コンピューティングデバイスは、たとえばGoogle(登録商標) Chrome(登録商標) OSなどの様々なGNU/Linuxオペレーティングシステムを含むがこれらには限定されない様々な市販のUNIX(登録商標)またはUNIXのようなオペレーティングシステムのいずれかを稼働させる、ワークステーションコンピュータとすることができる。上記に代えて、または上記に加えて、顧客コンピューティングデバイスは、シンクライアントコンピュータ、インターネット対応ゲームシステム(たとえば、Kinect(登録商標)ジェスチャー入力デバイスありまたはなしのMicrosoft Xboxゲームコンソール)など、および/または、VCN1106および/またはインターネットにアクセス可能なネットワークを介して通信することができるパーソナルメッセージングデバイスなど、任意のその他の電子デバイスであってもよい。
【0162】
VCN1106は、セキュアシェル(SSH:secure shell)VCN1112に含まれるLPG1110を介してSSH VCN1112に通信可能に結合可能な、ローカルピアリングゲートウェイ(LPG:local peering gateway)1110を含むことができる。SSH VCN1112は、SSHサブネット1114を含むことができ、SSH VCN1112は制御プレーンVCN1116に含まれるLPG1110を介して制御プレーンVCN1116に通信可能に結合することができる。また、SSH VCN1112は、LPG1110を介してデータプレーンVCN1118に通信可能に結合することができる。制御プレーンVCN1116とデータプレーンVCN1118は、IaaSプロバイダによって所有および/または運用可能なサービステナンシ1119に含まれ得る。
【0163】
制御プレーンVCN1116は、境界ネットワーク(たとえば、企業イントラネットと外部ネットワークとの間の企業ネットワークの部分)として機能する、制御プレーン非武装地帯(DMZ:demilitarized zone)層1120を含むことができる。DMZベースのサーバは、制限された任務を有し、侵害をくい止めるのに役立ち得る。さらに、DMZ層1120は、1つまたは複数の負荷バランサ(LB:load balancer)サブネット1122、アプリケーションサブネット1126を含み得る制御プレーンアプリケーション層1124、データベース(DB)サブネット1130(たとえばフロントエンドDBサブネットおよび/またはバックエンドDBサブネット)を含み得る制御プレーンデータ層1128を含むことができる。制御プレーンDMZ層1120に含まれるLBサブネット1122は、制御プレーンアプリケーション層1124に含まれるアプリケーションサブネット1126と制御プレーンVCN1116に含まれ得るインターネットゲートウェイ1134とに通信可能に結合することができ、アプリケーションサブネット1126は、制御プレーンデータ層1128に含まれるDBサブネット1130とサービスゲートウェイ1136およびネットワークアドレス変換(NAT:network address translation)ゲートウェイ1138とに通信可能に結合することができる。制御プレーンVCN1116は、サービスゲートウェイ1136とNATゲートウェイ1138とを含むことができる。
【0164】
制御プレーンVCN1116は、アプリケーションサブネット1126を含み得るデータプレーンミラーアプリケーション層1140を含むことができる。データプレーンミラーアプリケーション層1140に含まれるアプリケーションサブネット1126は、計算インスタンス1144を実行可能な仮想ネットワークインターフェースコントローラ(VNIC:virtual network interface controller)1142を含むことができる。計算インスタンス1144は、データプレーンミラーアプリケーション層1140のアプリケーションサブネット1126を、データプレーンアプリケーション層1146に含まれ得るアプリケーションサブネット1126に通信可能に結合することができる。
【0165】
データプレーンVCN1118は、データプレーンアプリケーション層1146とデータプレーンDMZ層1148とデータプレーンデータ層1150とを含むことができる。データプレーンDMZ層1148は、データプレーンアプリケーション層1146のアプリケーションサブネット1126とデータプレーンVCN1118のインターネットゲートウェイ1134とに通信可能に結合することができるLBサブネット1122を含むことができる。アプリケーションサブネット1126は、データプレーンVCN1118のサービスゲートウェイ1136とデータプレーンVCN1118のNATゲートウェイ1138とに通信可能に結合することができる。データプレーンデータ層1150は、データプレーンアプリケーション層1146のアプリケーションサブネット1126に通信可能に結合可能なDBサブネット1130も含むことができる。
【0166】
制御プレーンVCN1116とデータプレーンVCN1118のインターネットゲートウェイ1134は、パブリックインターネット1154に通信可能に結合可能なメタデータ管理サービス1152に通信可能に結合することができる。パブリックインターネット1154は、制御プレーンVCN1116の、およびデータプレーンVCN1118のNATゲートウェイ1138に通信可能に結合することができる。制御プレーンVCN1116の、およびデータプレーンVCN1118のサービスゲートウェイ1136は、クラウドサービス1156に通信可能に結合することができる。
【0167】
ある例では、制御プレーンVCN1116の、またはデータプレーンVCN1118のサービスゲートウェイ1136は、パブリックインターネット1154を通ることなくクラウドサービス1156にアプリケーションプログラミングインターフェース(API:application programming interface)呼び出しを行うことができる。サービスゲートウェイ1136からクラウドサービス1156へのAPI呼び出しは、一方向とすることができる。すなわち、サービスゲートウェイ1136はクラウドサービス1156にAPI呼び出しを行うことができ、クラウドサービス1156はサービスゲートウェイ1136に要求されたデータを送信することができる。しかし、クラウドサービス1156はサービスゲートウェイ1136に対してAPI呼び出しを発信することができない。
【0168】
ある例では、セキュアホストテナンシ1104が、他の場合には分離可能なサービステナンシ1119に、直接接続することができる。セキュアホストサブネット1108は、他の場合には分離されているシステムを介して双方向通信を可能にすることができる、LPG1110を介してSSHサブネット1114と通信することができる。セキュアホストサブネット1108をSSHサブネット1114に接続することにより、セキュアホストサブネット1108にサービステナンシ1119内の他のエンティティへのアクセスを与えることができる。
【0169】
制御プレーンVCN1116は、サービステナンシ1119のユーザが所望のリソースを設定またはその他によりプロビジョニングすることを可能にすることができる。制御プレーンVCN1116においてプロビジョニングされた所望のリソースは、データプレーンVCN1118においてデプロイまたはその他により使用することができる。ある例では、制御プレーンVCN1116はデータプレーンVCN1118から分離可能であり、制御プレーンVCN1116のデータプレーンミラーアプリケーション層1140は、データプレーンミラーアプリケーション層1140およびデータプレーンアプリケーション層1146に含まれ得るVNIC1142を介してデータプレーンVCN1118のデータプレーンアプリケーション層1146と通信することができる。
【0170】
ある例では、システムのユーザまたは顧客が、メタデータ管理サービス1152に要求を伝達することができるパブリックインターネット1154を介して、たとえば作成、読み出し、更新または削除(CRUD:create, read, update or delete)動作の要求を行うことができる。メタデータ管理サービス1152は、要求をインターネットゲートウェイ1134を介して制御プレーンVCN1116に伝達することができる。要求は、制御プレーンDMZ層1120に含まれるLBサブネット1122によって受信可能である。LBサブネット1122は、要求が有効であると判定することができ、この判定に応答して、LBサブネット1122は要求を制御プレーンアプリケーション層1124に含まれるアプリケーションサブネット1126に送信することができる。要求の有効性が検証され、パブリックインターネット1154への呼び出しが必要な場合、パブリックインターネット1154への呼び出しは、パブリックインターネット1154への呼び出しを行うことができるNATゲートウェイ1138に送信可能である。要求によって記憶されることが望まれる場合があるメモリを、DBサブネット1130に格納することができる。
【0171】
ある例では、データプレーンミラーアプリケーション層1140が、制御プレーンVCN1116とデータプレーンVCN1118との間の直接通信を容易にすることができる。たとえば、構成に対する変更、更新またはその他の適切な修正が、データプレーンVCN1118に含まれるリソースに適用されることが望まれる場合がある。VNIC1142によって、制御プレーンVCN1116はデータプレーンVCN1118に含まれるリソースと直接通信することができ、それによってそれらのリソースに対する構成の変更、更新またはその他の適切な修正を実行することができる。
【0172】
ある実施形態では、制御プレーンVCN1116とデータプレーンVCN1118は、サービステナンシ1119に含まれ得る。この場合、システムのユーザまたは顧客は、制御プレーンVCN1116またはデータプレーンVCN1118を所有することも運用することもできない。その代わりに、IaaSプロバイダが制御プレーンVCN1116およびデータプレーンVCN1118を所有または運用することができ、これらの両方がサービステナンシ1119に含まれ得る。この実施形態は、ユーザまたは顧客が他のユーザまたは他の顧客のリソースと対話することを防止することができる、ネットワークの分離を可能にし得る。また、この実施形態は、システムのユーザまたは顧客が、記憶のために望ましい脅威防止レベルを有していない可能性があるパブリックインターネット1154に依存する必要なしに、データベースをプライベートで記憶することを可能にすることができる。
【0173】
他の実施形態では、制御プレーンVCN1116に含まれるLBサブネット1122を、サービスゲートウェイ1136から信号を受信するように構成することができる。この実施形態では、制御プレーンVCN1116とデータプレーンVCN1118を、パブリックインターネット1154を呼び出さずにIaaSプロバイダの顧客によって呼び出されるように構成することができる。顧客が使用するデータベースがIaaSプロバイダによって制御可能であり、パブリックインターネット1154から分離可能なサービステナンシ1119上に記憶することができるため、IaaSプロバイダの顧客はこの実施形態を望む可能性がある。
【0174】
図12は、少なくとも1つの実施形態による、IaaSアーキテクチャの別の例示のパターンを示すブロック
図1200である。サービス運用者1202(たとえば
図11のサービス運用者1102)を、仮想クラウドネットワーク(VCN)1206(たとえば
図11のVCN1106)とセキュアホストサブネット1208(たとえば
図11のセキュアホストサブネット1108)とを含むことができるセキュアホストテナンシ1204(たとえば
図11のセキュアホストテナンシ1104)に通信可能に結合することができる。VCN1206は、セキュアシェル(SSH)VCN1212に含まれるローカルピアリングゲートウェイ(LPG)1110を介してSSH VCN1212(たとえば
図11のSSH VCH1112)に通信可能に結合することができるLPG1210(たとえば
図11のLPG1110)を含むことができる。SSH VCN1212は、SSHサブネット1214(たとえば
図11のSSHサブネット1114)を含むことができ、SSH VCN1212は制御プレーンVCN1216に含まれるLPG1210を介して制御プレーンVCN1216(たとえば
図11の制御プレーンVCN1116)に通信可能に結合することができる。制御プレーンVCN1216はサービステナンシ1219(たとえば
図11のサービステナンシ1119)に含めることができ、データプレーンVCN1218(たとえば
図11のデータプレーンVCN1118)は、システムのユーザまたは顧客によって所有または運用可能な顧客テナンシ1221に含めることができる。
【0175】
制御プレーンVCN1216は、LBサブネット1222(たとえば
図11のLBサブネット1122)を含むことができる制御プレーンDMZ層1220(たとえば
図11の制御プレーンDMZ層1120)と、アプリケーションサブネット1226(たとえば
図11のアプリケーションサブネット1126)を含むことができる制御プレーン層1224(たとえば
図11の制御プレーンアプリケーション層1124)と、データベース(DB)サブネット1230(たとえば
図11のDBサブネット1130と類似したもの)を含むことができる制御プレーンデータ層1228(たとえば
図11の制御プレーンデータ層1128)とを含むことができる。制御プレーンDMZ層1220に含まれるLBサブネット1222を、制御プレーンアプリケーション層1224に含まれるアプリケーションサブネット1226と、制御プレーンVCN1216に含まれ得るインターネットゲートウェイ1234(たとえば
図11のインターネットゲートウェイ1134)とに通信可能に結合することができ、アプリケーションサブネット1226を制御プレーンデータ層1228に含まれるDBサブネット1230と、サービスゲートウェイ1236(たとえば
図11のサービスゲートウェイ1136)およびネットワークアドレス変換(NAT)ゲートウェイ1238(たとえば
図11のNATゲートウェイ1138)に通信可能に結合することができる。制御プレーンVCN1216は、サービスゲートウェイ1236とNATゲートウェイ1238を含むことができる。
【0176】
制御プレーンVCN1216は、アプリケーションサブネット1226を含むことができるデータプレーンミラーアプリケーション層1240(たとえば
図11のデータプレーンミラーアプリケーション層1140)を含むことができる。データプレーンミラーアプリケーション層1240に含まれるアプリケーションサブネット1226は、計算インスタンス1244(たとえば
図11の計算インスタンス1144に類似したもの)を実行することができる仮想ネットワークインターフェースコントローラ(VNIC)1242(たとえば1142のVNIC)を含むことができる。計算インスタンス1244は、データプレーンミラーアプリケーション層1240のアプリケーションサブネット1226とデータプレーンアプリケーション層1246(たとえば
図11のデータプレーンアプリケーション層1146)に含まれ得るアプリケーションサブネット1226との間の、データプレーンミラーアプリケーション層1240に含まれるVNIC1242とデータプレーンアプリケーション層1246に含まれるVNIC1242とを介した通信を容易にすることができる。
【0177】
制御プレーンVCN1216に含まれるインターネットゲートウェイ1234は、パブリックインターネット1254(たとえば
図11のパブリックインターネット1154)に通信可能に結合することができるメタデータ管理サービス1252(たとえば
図11のメタデータ管理サービス1152)に通信可能に結合することができる。パブリックインターネット1254は、制御プレーンVCN1216に含まれるNATゲートウェイ1238に通信可能に結合することができる。制御プレーンVCN1216に含まれるサービスゲートウェイ1236を、クラウドサービス1256(たとえば
図11のクラウドサービス1156)に通信可能に結合することができる。
【0178】
ある例では、データプレーンVCN1218は顧客テナンシ1221に含まれ得る。この場合、IaaSプロバイダは、各顧客に制御プレーンVCN1216を提供することができ、IaaSプロバイダは各顧客のためにサービステナンシ1219に含まれる固有計算インスタンス1244を設定することができる。各計算インスタンス1244は、サービステナンシ1219に含まれる制御プレーンVCN1216と顧客テナンシ1221に含まれるデータプレーンVCN1218との間の通信を可能にすることができる。計算インスタンス1244は、サービステナンシ1219に含まれる制御プレーンVCN1216においてプロビジョニングされているリソースを、顧客テナンシ1221に含まれるデータプレーンVCN1218においてデプロイまたはその他により使用することを可能にすることができる。
【0179】
他の例では、IaaSプロバイダの顧客は顧客テナンシ1221内にあるデータベースを有することができる。この例では、制御プレーンVCN1216は、アプリケーションサブネット1226を含むことができるデータプレーンミラーアプリケーション層1240を含むことができる。データプレーンミラーアプリケーション層1240は、データプレーンVCN1218に存在することができるが、データプレーンミラーアプリケーション層1240はデータプレーンVCN1218に存在し得ない。すなわち、データプレーンミラーアプリケーション層1240は、顧客テナンシ1221にアクセスすることができるが、データプレーンミラーアプリケーション層1240はデータプレーンVCN1218に存在することができず、または、IaaSプロバイダの顧客によって所有されることも運用されることもできない。データプレーンミラーアプリケーション層1240は、データプレーンVCN1218への呼び出しを行うように構成することができるが、制御プレーンVCN1216に含まれるいずれのエンティティにも呼び出しを行うように構成することができない。顧客は、制御プレーンVCN1216においてプロビジョニングされているデータプレーンVCN1218におけるリソースをデプロイまたはその他により使用することを希望することができ、データプレーンミラーアプリケーション層1240は顧客のリソースの希望するデプロイメントまたはその他の使用を容易にすることができる。
【0180】
ある実施形態では、IaaSプロバイダの顧客はデータプレーンVCN1218にフィルタをかけることができる。この実施形態では、顧客はデータプレーンVCN1218が何にアクセス可能であるかを判定することができ、顧客はデータプレーンVCN1218からのパブリックインターネット1254へのアクセスを制限することができる。IaaSプロバイダが外部ネットワークまたはデータベースへのデータプレーンVCN1218のアクセスにフィルタをかけるかまたはその他により制御することは不可能とすることができる。顧客テナンシ1221に含まれるデータプレーンVCN1218への顧客によるフィルタおよび制御の適用は、データプレーンVCN1218を他の顧客からとパブリックインターネット1254から分離しやすくすることができる。
【0181】
ある実施形態では、パブリックインターネット1254上、制御プレーンVCN1216上またはデータプレーンVCN1218上には存在しない場合があるサービスにアクセスするために、クラウドサービス1256をサービスゲートウェイ1236によって呼び出すことができる。クラウドサービス1256と制御プレーンVCN1216またはデータプレーンVCN1218との間の接続は、ライブまたは連続とすることはできない。クラウドサービス1256は、IaaSプロバイダによって所有または運用されている異なるネットワーク上に存在することができる。クラウドサービス1256は、サービスゲートウェイ1236から呼び出しを受信するように構成可能であり、パブリックインターネット1254から呼び出しを受信しないように構成可能である。一部のクラウドサービス1256は、他のクラウドサービス1256から分離することができ、制御プレーンVCN1216を、制御プレーンVCN1216と同じリージョンにない場合があるクラウドサービス1256から分離することができる。たとえば、制御プレーンVCN1216が「リージョン1」に位置してもよく、クラウドサービス「デプロイメント11」がリージョン1と「リージョン2」とに位置してもよい。リージョン1内に位置する制御プレーンVCN1216に含まれるサービスゲートウェイ1236によってデプロイメント11への呼び出しが行われた場合、その呼び出しをリージョン1内のデプロイメント11に送信することができる。この例では、制御プレーンVCN1216、またはリージョン1内のデプロイメント11は、リージョン2内のデプロイメント11と通信可能に結合またはその他により通信することができない。
【0182】
図13は、少なくとも1つの実施形態による、IaaSアーキテクチャの別の例示のパターンを示すブロック
図1300である。サービス運用者1302(たとえば
図11のサービス運用者1102)を、仮想クラウドネットワーク(VCN)1306(たとえば
図11のVCN1106)を含むことができるセキュアホストテナンシ1304(たとえば
図11のセキュアホストテナンシ1104)および第2のセキュアホストサブネット1308(たとえば
図11のセキュアホストサブネット1108)に通信可能に接続することができる。VCN1306は、SSH VCN1312に含まれるLPG1310を介してSSH VCN1312(たとえば
図11のSSH VCN1112)に通信可能に接続することができるLPG1310(たとえば
図11のLPG1110)を含むことができる。SSH VCN1312は、SSHサブネット1314(たとえば
図11のSSHサブネット1114)を含むことができ、SSH VCN1312は、制御プレーンVCN1316に含まれるLPG1310を介して制御プレーンVCN1316(たとえば
図11の制御プレーンVCN1116)と、データプレーンVCN1318に含まれるLPG1310を介してデータプレーンVCN1318(たとえば
図11のデータプレーン1118)とに通信可能に接続することができる。制御プレーンVCN1316とデータプレーンVCN1318は、サービステナンシ1319(たとえば
図11のサービステナンシ1119)に含まれ得る。
【0183】
制御プレーンVCN1316は、負荷バランサ(LB)サブネット1322(たとえば
図11のLBサブネット1122)を含むことができる制御プレーンDMZ層1320(たとえば
図11の制御プレーンDMZ層1120)と、アプリケーションサブネット1326(たとえば
図11のアプリケーションサブネット1126と類似したもの)を含むことができる制御プレーンアプリケーション層1324(たとえば
図11の制御プレーンアプリケーション層1124)と、DBサブネット1330を含むことができる制御プレーンデータ層1328(たとえば
図11の制御プレーンデータ層1128)とを含むことができる。制御プレーンDMZ層1320に含まれるLBサブネット1322は、制御プレーンアプリケーション層1324に含まれるアプリケーションサブネット1326と、制御プレーンVCN1316に含まれ得るインターネットゲートウェイ1334(たとえば
図11のインターネットゲートウェイ1134)とに通信可能に結合することができ、アプリケーションサブネット1326は、制御プレーンデータ層1328に含まれるDBサブネット1330と、サービスゲートウェイ1336(たとえば
図11のサービスゲートウェイ1136)およびネットワークアドレス変換(NAT)ゲートウェイ1338(たとえば
図11のNATゲートウェイ1138)とに通信可能に結合することができる。制御プレーンVCN1316は、サービスゲートウェイ1336とNATゲートウェイ1338とを含むことができる。
【0184】
データプレーンVCN1318は、データプレーンアプリケーション層1346(たとえば
図11のデータプレーンアプリケーション層1146)と、データプレーンDMZ層1348(たとえば
図11のデータプレーンDMZ層1148)と、データプレーンデータ層1350(たとえば
図11のデータプレーンデータ層1150)とを含むことができる。データプレーンDMZ層1348は、データプレーンアプリケーション層1346の信頼できるアプリケーションサブネット1360と信頼できないアプリケーションサブネット1362と、データプレーンVCN1318に含まれるインターネットゲートウェイ1334とに通信可能に結合可能なLBサブネット1322を含むことができる。信頼できるアプリケーションサブネット1360は、データプレーンVCN1318に含まれるサービスゲートウェイ1336と、データプレーンVCN1318に含まれるNATゲートウェイ1338と、データプレーンデータ層1350に含まれるDBサブネット1330とに通信可能に結合することができる。信頼できないアプリケーションサブネット1362は、データプレーンVCN1318に含まれるサービスゲートウェイ1336と、データプレーンデータ層1350に含まれるDBサブネット1330とに通信可能に結合することができる。データプレーンデータ層1350は、データプレーンVCN1318に含まれるサービスゲートウェイ1336に通信可能に結合可能なDBサブネット1330を含むことができる。
【0185】
信頼できないアプリケーションサブネット1362は、テナント仮想マシン(VM)1366(1)~(N)に通信可能に結合可能な1つまたは複数の一次VNIC1364(1)~(N)を含むことができる。各テナントVM1366(1)~(N)は、それぞれの顧客テナンシ1370(1)~(N)に含まれ得るそれぞれのコンテナエグレスVCN1368(1)~(N)に含まれ得るそれぞれのアプリケーションサブネット1367(1)~(N)に通信可能に結合することができる。それぞれの二次VNIC1372(1)~(N)が、データプレーンVCN1318に含まれる信頼できないアプリケーションサブネット1362とコンテナエグレスVCN1368(1)~(N)に含まれるアプリケーションサブネットとの間の通信を容易にすることができる。各コンテナエグレスVCN1368(1)~(N)は、パブリックインターネット1354(たとえば
図11のパブリックインターネット1154)に通信可能に結合可能なNATゲートウェイ1338を含むことができる。
【0186】
制御プレーンVCN1316に含まれ、データプレーンVCN1318に含まれるインターネットゲートウェイ1334を、パブリックインターネット1354に通信可能に結合可能なメタデータ管理サービス1352(たとえば
図11のメタデータ管理システム1152)に通信可能に結合することができる。パブリックインターネット1354を、制御プレーンVCN1316に含まれ、データプレーンVCN1318に含まれる、NATゲートウェイ1338に通信可能に結合することができる。制御プレーンVCN1316に含まれ、データプレーンVCN1318に含まれる、サービスゲートウェイ1336をクラウドサービス1356に通信可能に結合することができる。
【0187】
ある実施形態では、データプレーンVCN1318は、顧客テナンシ1370と一体化することができる。この一体化は、コードを実行するときにサポートが望まれる場合など、場合によってはIaaSプロバイダの顧客にとって有用または望ましい可能性がある。顧客は、破壊的である可能性があるか、他の顧客リソースと通信する可能性があるか、またはその他により望ましくない影響を生じさせる可能性があるコードを実行のために提供する可能性がある。これに応答して、IaaSプロバイダは、顧客によってIaaSプロバイダに与えられたコードを実行するか否かを判定することができる。
【0188】
ある例では、IaaSプロバイダの顧客は、IaaSプロバイダへの一時的なネットワークアクセスを認めることができ、データプレーンアプリケーション層1346に機能を付加することを要求することができる。その機能を実行するコードはVM1366(1)~(N)において実行可能であり、このコードはデータプレーンVCN1318上の他の場所で実行するように構成することができない。各VM1366(1)~(N)は、1つの顧客テナンシ1370に接続することができる。VM1366(1)~(N)に含まれるそれぞれのコンテナ1371(1)~(N)を、このコードを実行するように構成することができる。この場合、二重分離(たとえば、コンテナ1371(1)~(N)がコードを実行し、コンテナ1371(1)~1(N)は、信頼できないアプリケーションサブネット1362に含まれるVM1366(1)~(N)に少なくとも含まれ得る)が存在することができ、これは、不適正またはその他により望ましくないコードがIaaSプロバイダのネットワークに損傷を与えること、または異なる顧客のネットワークに損傷を与えることを防止するのに役立ち得る。コンテナ1371(1)~(N)は、顧客テナンシ1370に通信可能に結合することができ、顧客テナンシ1370との間でそれぞれのデータを送信または受信するように構成することができる。コンテナ1371(1)~(N)は、データプレーンVCN1318におけるいずれの他のエンティティとの間でもデータを送信または受信するように構成することができない。コードの実行の完了時、IaaSプロバイダはコンテナ1371(1)~(N)を無効化またはその他により廃棄することができる。
【0189】
ある実施形態では、信頼できるアプリケーションサブネット1360が、IaaSプロバイダによって所有または運用可能なコードを実行することができる。この実施形態では、信頼できるアプリケーションサブネット1360はDBサブネット1330に通信可能に結合され、DBサブネット1330においてCRUD動作を実行するように構成可能である。信頼できないアプリケーションサブネット1362は、DBサブネット1330に通信可能に接続することができるが、この実施形態では、信頼できないアプリケーションサブネットをDBサブネット1330において読み出し動作を実行するように構成可能である。各顧客のVM1366(1)~(N)に含めることができ、顧客からのコードを実行することができるコンテナ1371(1)~(N)は、DBサブネット1330に通信可能に結合することができない。
【0190】
他の実施形態では、制御プレーンVCN1316とデータプレーンVCN1318を、直接通信可能に結合することができない。この実施形態では、制御プレーンVCN1316とデータプレーン1318との間には直接通信が存在し得ない。しかし、少なくとも1つの方法によって通信を間接的に行うことができる。制御プレーンVCN1316とデータプレーンVCN1318との間の通信を容易にすることができるLPG1310を、IaaSプロバイダが設定することができる。別の例では、制御プレーンVCN1316またはデータプレーンVCN1318が、サービスゲートウェイ1336を介してクラウドサービス1356に呼び出しを行うことができる。たとえば、制御プレーンVCN1316からクラウドサービス1356への呼び出しは、データプレーンVCN1318と通信することができるサービスの要求を含み得る。
【0191】
図14は、少なくとも1つの実施形態による、IaaSアーキテクチャの別の例示のパターンを示すブロック図である。サービス運用者1402(たとえば
図11のサービス運用者1102)を、仮想クラウドネットワーク(VCN)1406(たとえば
図11のVCN1106)とセキュアホストサブネット1408(たとえば
図11のセキュアホストサブネット1108)とを含むことができるセキュアホストテナンシ1404(たとえば
図11のセキュアホストテナンシ1104)に通信可能に接続することができる。VCN1406は、SSH VCN1412(たとえば
図11のSSH VCN1112)にSSH VCN1412に含まれるLPG1410を介して通信可能に結合することができるLPG1410(たとえば
図11のLPG1110)を含むことができる。SSH VCN1412は、SSHサブネット1414(たとえば
図11のSSHサブネット1114)を含むことができ、SSH VCN1412は制御プレーンVCN1416に含まれるLPG1410を介して制御プレーンVCN1416(たとえば
図11の制御プレーンVCN1116)と、データプレーンVCN1418に含まれるLPG1410を介してデータプレーンVCN1418(たとえば
図11のデータプレーン1118)とに通信可能に結合することができる。制御プレーンVCN1416とデータプレーンVCN1418は、サービステナンシ1419(たとえば
図11のサービステナンシ1119)に含まれ得る。
【0192】
制御プレーンVCN1416は、LBサブネット1422(たとえば
図11のLBサブネット1122)を含むことができる制御プレーンDMZ層1420(たとえば
図11の制御プレーンDMZ層1120)と、アプリケーションサブネット1426(たとえば
図11のアプリケーションサブネット1126)を含むことができる制御プレーンアプリケーション層1424(たとえば
図11の制御プレーンアプリケーション層1124)と、DBサブネット1430(たとえば
図13のDBサブネット1330)を含むことができる制御プレーンデータ層1428(たとえば
図11の制御プレーンデータ層1128)とを含むことができる。制御プレーンDMZ層1420に含まれるLBサブネット1422は、制御プレーンアプリケーション層1424に含まれるアプリケーションサブネット1426と、制御プレーンVCN1416に含まれ得るインターネットゲートウェイ1434(たとえば
図11のインターネットゲートウェイ1134)とに通信可能に結合することができ、アプリケーションサブネット1426は、制御プレーンデータ層1428に含まれるDBサブネット1430と、サービスゲートウェイ1436(たとえば
図11のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ1438(たとえば
図11のNATゲートウェイ1138)とに通信可能に結合することができる。制御プレーンVCN1416は、サービスゲートウェイ1436とNATゲートウェイ1438を含むことができる。
【0193】
データプレーンVCN1418は、データプレーンアプリケーション層1446(たとえば
図11のデータプレーンアプリケーション層1146)と、データプレーンDMZ層1448(たとえば
図11のデータプレーンDMZ層1148)と、データプレーンデータ層1450(たとえば
図11のデータプレーンデータ層1150)とを含むことができる。データプレーンDMZ層1448は、信頼できるアプリケーションサブネット1460(たとえば
図13の信頼できるアプリケーションサブネット1360)とデータプレーンアプリケーション層1446の信頼できないアプリケーションサブネット1462(たとえば
図13の信頼できないアプリケーション層1362)とデータプレーンVCN1418に含まれるインターネットゲートウェイ1434とに通信可能に結合することができるLBサブネット1422を含むことができる。信頼できるアプリケーションサブネット1460は、データプレーンVCN1418に含まれるサービスゲートウェイ1436と、データプレーンVCN1418に含まれるNATゲートウェイ1438と、データプレーンデータ層1450に含まれるDBサブネット1430とに通信可能に結合することができる。信頼できないアプリケーションサブネット1462は、データプレーンVCN1418に含まれるサービスゲートウェイ1436と、データプレーンデータ層1450に含まれるDBサブネット1430とに通信可能に結合することができる。データプレーンデータ層1450は、データプレーンVCN1418に含まれるサービスゲートウェイ1436に通信可能に結合することができるDBサブネット1430を含むことができる。
【0194】
信頼できないアプリケーションサブネット1462は、信頼できないアプリケーションサブネット1462内にあるテナント仮想マシン(VM)1466(1)~(N)に通信可能に結合可能な一次VNIC1464(1)~(N)を含むことができる。各テナントVM1466(1)~(N)は、それぞれのコンテナ1467(1)~(N)内のコードを実行することができ、コンテナエグレスVCN1468に含まれ得るデータプレーンアプリケーション層1446に含まれ得るアプリケーションサブネット1426に通信可能に結合することができる。それぞれの二次VNIC1472(1)~(N)が、データプレーンVCN1418に含まれる信頼できないアプリケーションサブネット1462とコンテナエグレスVCN1468に含まれるアプリケーションサブネットとの間の通信を容易にすることができる。コンテナエグレスVCNは、パブリックインターネット1454(たとえば
図11のパブリックインターネット1154)に通信可能に結合することができるNATゲートウェイ1438を含むことができる。
【0195】
制御プレーンVCN1416に含まれ、データプレーンVCN1418に含まれるインターネットゲートウェイ1434は、パブリックインターネット1454に通信可能に結合することができるメタデータ管理サービス1452(たとえば
図11のメタデータ管理システム1152)に通信可能に結合することができる。パブリックインターネット1454は、制御プレーンVCN1416に含まれ、データプレーンVCN1418に含まれるNATゲートウェイ1438に通信可能に結合することができる。制御プレーンVCN1416に含まれ、データプレーンVCN1418に含まれるサービスゲートウェイ1436をクラウドサービス1456に通信可能に結合することができる。
【0196】
ある例では、
図14のブロック
図1400のアーキテクチャによって示されるパターンは、
図13のブロック
図1300のアーキテクチャによって示されるパターンの例外とみなすことができ、IaaSプロバイダの顧客にとって、IaaSプロバイダが顧客と直接通信することができない(たとえば切断されたリージョン)場合に望ましい場合がある。各顧客のためのVM1466(1)~(N)に含まれるそれぞれのコンテナ1467(1)~(N)は、その顧客によってリアルタイムでアクセス可能である。コンテナ1467(1)~(N)は、コンテナエグレスVCN1468に含まれ得るデータプレーンアプリケーション層1446のアプリケーションサブネット1426に含まれるそれぞれの二次VNIC1472(1)~(N)に呼び出しを行うように構成することができる。二次VNIC1472(1)~(N)は、パブリックインターネット1454に呼び出しを送信することができるNATゲートウェイ1438に呼び出しを送信することができる。この例では、顧客がリアルタイムでアクセス可能なコンテナ1467(1)~(N)は、制御プレーンVCN1416から分離可能であり、データプレーンVCN1418内に含まれる他のエンティティから分離可能である。コンテナ1467(1)~(N)は他の顧客からのリソースからも分離可能である。
【0197】
他の例では、顧客はクラウドサービス1456を呼び出すためにコンテナ1467(1)~(N)を使用することができる。この例では、顧客は、クラウドサービス1456にサービスを要求するコンテナ1467(1)~(N)内のコードを実行することができる。コンテナ1467(1)~(N)はこの要求を、要求をパブリックインターネット1454に送信することができるNATゲートウェイに要求を送信することができる二次VNIC1472(1)~(N)に送信することができる。パブリックインターネット1454は、要求をインターネットゲートウェイ1434を介して制御プレーンVCN1416に含まれるLBサブネット1422に送信することができる。要求が有効であるとの判定に応答して、LBサブネットは、要求をサービスゲートウェイ1436を介してクラウドサービス1456に送信することができるアプリケーションサブネット1426に、要求を送信することができる。
【0198】
図に示されているIaaSアーキテクチャ1100、1200、1300、1400は、図示されている以外のコンポーネントを有することができることを理解されたい。また、図に示されている実施形態は、本開示の実施形態を組み込むことができるクラウドインフラストラクチャシステムのいくつかの例に過ぎない。一部の他の実施形態では、IaaSシステムは、図に示されているよりも多いかまたは少ないコンポーネントを有してもよく、2つ以上のコンポーネントを組み合わせてもよく、またはコンポーネントの異なる構成または配置を有してもよい。
【0199】
ある実施形態では、本明細書に記載のIaaSシステムは、顧客にセルフサービスの、加入式で、柔軟に拡張可能で信頼性があり、可用性の高いセキュアな方式で配布される、1組のアプリケーション、ミドルウェアおよびデータベースサービス提供品を含むことができる。このようなIaaSシステムの一例は、本出願の譲渡人によって提供されるOracle Cloud Infrastructure(OCI)である。
【0200】
図15に、様々な実施形態を実装可能な例示のコンピュータシステム1500を示す。システム1500は、上述のコンピュータシステムのいずれかを実装するために使用することができる。図に示すように、コンピュータシステム1500は、バスサブシステム1502を介していくつかの周辺サブシステムと通信する処理ユニット1504を含む。これらの周辺サブシステムは、処理アクセラレーションユニット1506とI/Oサブシステム1508とストレージサブシステム1518と通信サブシステム1524とを含むことができる。ストレージサブシステム1518は、有形のコンピュータ可読記憶媒体1522とシステムメモリ1510を含む。
【0201】
バスサブシステム1502は、コンピュータシステム1500の様々なコンポーネントおよびサブシステムを目的通りに互いに通信させるための機構を提供する。バスサブシステム1502は単一のバスとして概略的に示されているが、バスサブシステムの別の実施形態は複数のバスを使用してもよい。バスサブシステム1502は、様々なバスアーキテクチャのいずれかを使用した、メモリバスまたはメモリコントローラ、ペリフェラルバスおよびローカルバスを含む、数種類のバス構造のうちのいずれでもよい。たとえば、そのようなアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオエレクトロニクススタンダードアソシエーション(VESA)ローカルバス、およびIEEE P1386.1標準に従って製造されたメザニンバスとして実装可能なペリフェラルコンポーネントインターコネクト(PCI)バスが含まれ得る。
【0202】
1つまたは複数の集積回路(たとえば従来のマイクロプロセッサまたはマイクロコントローラ)として実装可能な処理ユニット1504が、コンピュータシステム1500の動作を制御する。処理ユニット1504には1つまたは複数のプロセッサが含まれ得る。これらのプロセッサには、シングルコアまたはマルチコアプロセッサが含まれ得る。ある実施形態では、処理ユニット1504は、各処理ユニットにシングルコアプロセッサまたはマルチコアプロセッサが含まれた、1つまたは複数の独立した処理ユニット1532および/または1534として実装可能である。他の実施形態では、処理ユニット1504は、2つのデュアルコアプロセッサを単一のチップに集積することによって形成されたクワッドコア処理ユニットとして実装することもできる。
【0203】
様々な実施形態において、処理ユニット1504は、プログラムコードに応答して様々なプログラムを実行することができ、複数の並列実行プログラムまたはプロセスを維持することができる。任意の時点で、実行されるプログラムコードの一部または全部がプロセッサ1504内および/またはストレージサブシステム1518内に存在することができる。適切なプログラミングにより、プロセッサ1504は上述の様々な機能を提供することができる。コンピュータシステム1500は、デジタルシグナルプロセッサ(DSP)、特殊目的プロセッサおよび/または同様のものなどを含み得る処理アクセラレーションユニット1506をさらに含むことができる。
【0204】
I/Oサブシステム1508は、ユーザインターフェース入力デバイスとユーザインターフェース出力デバイスを含むことができる。ユーザインターフェース入力デバイスは、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを有する音声入力デバイス、マイクロフォン、およびその他の種類の入力デバイスを含み得る。ユーザインターフェース入力デバイスは、たとえば、ユーザが、ジェスチャーと発話コマンドを使用してナチュラルユーザインターフェースを介してMicrosoft Xbox(登録商標)360ゲームコントローラなどの入力デバイスを制御し、対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサーなどの、モーションセンシングおよび/またはジェスチャー認識デバイスを含み得る。ユーザインターフェース入力デバイスには、ユーザからの眼球活動(たとえば写真撮影および/またはメニュー選択時の「まばたき」)を検出し、眼球ジェスチャーを入力デバイス(たとえばGoogle Glass(登録商標))への入力として変換する、Google Glass(登録商標)瞬き検出器などの眼球ジェスチャー認識デバイスも含まれ得る。さらに、ユーザインターフェース入力デバイスには、ユーザが音声コマンドにより音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスが含まれ得る。
【0205】
ユーザインターフェース入力デバイスには、これらには限定されないが3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドならびにグラフィックタブレット、および、スピーカ、デジタルカメラ、デジタルカムコーダ、携帯型メディアプレイヤー、ウェブカメラ、画像スキャナ、指紋スキャナ、バーコードリーダー3Dスキャナ、3Dプリンタ、レーザ距離測定器および視線追跡システムなどの音声/視覚デバイスも含まれ得る。さらに、ユーザインターフェース入力デバイスには、たとえば、コンピュータ断層撮影、磁気共鳴撮影、陽電子放出断層撮影、医療超音波検査デバイスなどの医療用撮像入力デバイスが含まれ得る。ユーザインターフェース入力デバイスには、たとえば、MIDIキーボード、デジタル楽器などの音声入力デバイスも含まれ得る。
【0206】
ユーザインターフェース出力デバイスには、ディスプレイサブシステム、表示灯または音声出力デバイスなどの非視覚ディスプレイが含まれ得る。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するものなどのフラットパネルデバイス、プロジェクションデバイス、タッチスクリーンなどであってもよい。一般に、「出力デバイス」という用語の使用は、コンピュータシステム1500からユーザまたは他のコンピュータに情報を出力するための可能なあらゆる種類のデバイスおよび機構を含むことが意図されている。たとえば、ユーザインターフェース出力デバイスは、これらには限定されないが、モニター、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなど、テキスト、グラフィックスおよび音声/ビデオ情報を視覚的に伝達する様々なディスプレイデバイスを含み得る。
【0207】
コンピュータシステム1500は、本開示に記載されている実施形態の機能を提供するソフトウェアおよびデータ構造を記憶するための有形の非一時的なコンピュータ可読記憶媒体を提供するストレージサブシステム1518を含むことができる。ソフトウェアは、処理ユニット1504の1つまたは複数のコアまたはプロセッサによって実行されると、上述の機能を提供する、プログラム、コードモジュール、命令、スクリプトなどを含み得る。ストレージサブシステム1518は、本開示に従って使用されるデータを記憶するためのリポジトリも提供することができる。
【0208】
図15に示すように、ストレージサブシステム1518は、システムメモリ1510とコンピュータ可読記憶媒体1522とコンピュータ可読記憶媒体リーダー1520とを含む、様々なコンポーネントを含むことができる。システムメモリ1510は、処理ユニット1504によってロード可能であり、実行可能であるプログラム命令を記憶することができる。システムメモリ1510は、命令の実行時に使用されるデータ、および/または、プログラム命令の実行時に生成されるデータも記憶することができる。クライアントアプリケーション、ウェブブラウザ、中層アプリケーション、リレーショナルデータベース管理システム(RDBMS)、仮想マシン、コンテナなどを含むがこれらには限定されない、様々な異なる種類のプログラムをシステムメモリ1510にロードすることができる。
【0209】
システムメモリ1510は、オペレーティングシステム1516も記憶することができる。オペレーティングシステム1516の例には、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinuxオペレーティングシステム、様々な市販のUNIX(登録商標)またはUNIXのようなオペレーティングシステム(GNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがこれらには限定されない)および/または、iOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)OS、およびPalm(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムが含まれ得る。コンピュータシステム1500が1つまたは複数の仮想マシンを実行するある実装形態では、仮想マシンは仮想マシンのゲストオペレーティングシステム(GOS)とともに、システムメモリ1510にロードすることができ、処理ユニット1504の1つまたは複数のプロセッサまたはコアによって実行可能である。
【0210】
システムメモリ1510は、コンピュータシステム1500の種類に応じて異なる構成で提供されることがある。たとえば、システムメモリ1510は、揮発性メモリ(ランダムアクセスメモリ(RAM)など)および/または不揮発性メモリ(読み出し専用メモリ(ROM)、フラッシュメモリなど)であってもよい。スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)などを含む、異なる種類のRAM構成を設けることができる。実施形態によっては、システムメモリ1510は、スタートアップ時などにコンピュータシステム1500内の要素間で情報を転送するのを助ける基本ルーチンを含む、基本入出力システム(BIOS)を含み得る。
【0211】
コンピュータ可読記憶媒体1522は、リモート、ローカル、固定および/または取り外し型ストレージデバイスと、コンピュータシステム1500の処理ユニット1504によって実行可能な命令を含むコンピュータシステム1500による使用のためのコンピュータ可読情報を、一時的におよび/またはより永続的に収容し、記憶するための記憶媒体とを表し得る。
【0212】
コンピュータ可読記憶媒体1522は、情報の記憶および/または伝送のための任意の方法または技術で実装された、揮発性および不揮発性、取り外し型および非取り外し型媒体などであるがこれらには限定されない記憶媒体および通信媒体を含む、当技術分野で知られているかまたは使用されている任意の適切な媒体を含み得る。これには、RAM、ROM、電気的消去可能なプログラマブルROM(EEPROM)、フラッシュメモリもしくはその他のメモリ技術、CD-ROM、デジタルバーサタイルディスク(DVD)もしくはその他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくはその他の磁気ストレージデバイス、またはその他の有形のコンピュータ可読媒体などの、有形のコンピュータ可読記憶媒体が含まれ得る。
【0213】
たとえば、コンピュータ可読記憶媒体1522は、非取り外し型不揮発性磁気媒体の読み出しまたは書き込みを行うハードディスクドライブ、取り外し型不揮発性磁気ディスクの読み出しまたは書き込みを行う磁気ディスクドライブ、およびCD ROM、DVDおよびBlu-Ray(登録商標)ディスクまたはその他の光媒体などの取り外し型不揮発性光ディスクの読み出しまたは書き込みを行う光ディスクドライブを含み得る。コンピュータ可読記憶媒体1522は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含み得るが、これらには限定されない。コンピュータ可読記憶媒体1522は、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなど、不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗型RAM(MRAM)SSDなどの揮発性メモリに基づくSSD、およびDRAMとフラッシュメモリベースのSSDの組合せを使用するハイブリッドSSDも含み得る。ディスクドライブとそれに関連付けられたコンピュータ可読媒体は、コンピュータシステム1500にコンピュータ可読命令、データ構造、プログラムモジュールおよびその他のデータの不揮発性記憶を提供することができる。
【0214】
処理ユニット1504の1つまたは複数のプロセッサまたはコアによって実行可能な機械可読命令を、非一時的なコンピュータ可読記憶媒体に記憶することができる。非一時的なコンピュータ可読記憶媒体は、揮発性メモリストレージデバイスおよび/または不揮発性ストレージデバイスを含む、物理的に有形のメモリまたはストレージデバイスを含み得る。非一時的なコンピュータ可読記憶媒体の例には、磁気記憶媒体(たとえばディスクまたはテープ)、光記憶媒体(たとえばDVD、CD)、様々な種類のRAM、ROMまたはフラッシュメモリ、ハードドライブ、フロッピィドライブ、取り外し可能メモリドライブ(たとえばUSBドライブ)、またはその他の種類のストレージデバイスが含まれる。
【0215】
通信サブシステム1524は、他のコンピュータシステムおよびネットワークへのインターフェースを提供する。通信サブシステム1524は、コンピュータシステム1500以外のシステムとの間でデータを受信し、送信するためのインターフェースとして機能する。たとえば、通信サブシステム1524は、コンピュータシステム1500がインターネットを介して1つまたは複数のデバイスに接続することを可能にすることができる。実施形態によっては、通信サブシステム1524は、(たとえば、携帯電話技術、3G、4GまたはEDGE(グローバルエボリューション向け進化型高速データレート)などの高度なデータネットワーク技術、WiFi(IEEE802.11ファミリー標準、またはその他のモバイル通信技術あるいはこれらの任意の組合せ)を使用した)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)送受信器コンポーネント、グローバルポジショニングシステム(GPS)受信器コンポーネントおよび/またはその他のコンポーネントを含むことができる。実施形態によっては、通信サブシステム1524は、無線インターフェースに加えてまたはその代わりに、有線ネットワーク接続(たとえばEthernet(登録商標))を提供することができる。
【0216】
実施形態によっては、通信サブシステム1524は、コンピュータシステム1500を使用可能な1人または複数のユーザに代わって、構造化および/または非構造化データフィード1526、イベントストリーム1528、イベント更新1530などの形態の入力通信も受信することができる。
【0217】
たとえば、通信サブシステム1524は、Twitter(登録商標)フィード、Facebook(登録商標)更新、リッチサイトサマリー(RSS:Rich Site Summary)フィード、および/または1つまたは複数のサードパーティ情報源からのリアルタイム更新などの、ウェブフィードなどのソーシャルネットワークおよび/またはその他の通信サービスのユーザから、リアルタイムでデータフィード1526を受信するように構成可能である。
【0218】
さらに、通信サブシステム1524は、明確な終わりのない連続的または際限のない性質の場合があるリアルタイムイベントのイベントストリーム1528および/またはイベント更新1530を含み得る、連続データストリームの形態のデータを受信するように構成することも可能である。連続データを生成するアプリケーションの例には、たとえば、センサーデータアプリケーション、金融ティッカー、ネットワークパフォーマンス測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通量モニタリングなどが含まれ得る。
【0219】
通信サブシステム1524は、コンピュータシステム1500に結合された1つまたは複数のストリーミングデータソースコンピュータと通信可能な1つまたは複数のデータベースに、構造化および/または非構造化データフィード1526、イベントストリーム1528、イベント更新1530などを出力するように構成することも可能である。
【0220】
コンピュータシステム1500は、ハンドヘルド携帯型デバイス(たとえば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえば、Google Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または任意のその他のデータ処理システムを含む、様々な種類のうちの1つとすることができる。
【0221】
コンピュータとネットワークの絶えず変化する性質のため、図に示されているコンピュータシステム1500の説明は具体例として意図されているに過ぎない。図に示されているシステムより多いかまたはより少ないコンポーネントを有する多くの他の構成も可能である。たとえば、カスタマイズされたハードウェアも使用されてもよく、および/または特定の要素がハードウェア、ファームウェア、ソフトウェア(アプレットを含む)またはこれらの組合せで実装されてもよい。また、ネットワーク入力および/または出力デバイスなど、他のコンピューティングデバイスへの接続を採用することができる。本開示および本明細書で示されている教示に基づいて、当業者には様々な実施形態を実装する他の方式および/または方法もわかるであろう。
【0222】
特定の実施形態について説明したが、様々な修正、変更、代替構造および均等物も本開示の範囲内に包含される。実施形態は、ある特定のデータ処理環境内での動作には限定されず、複数のデータ処理環境内で自由に動作することができる。さらに、実施形態について特定の一連のトランザクションおよびステップを使用して説明したが、本開示の範囲は記載されている一連のトランザクションおよびステップには限定されないことが当業者には明らかであろう。上述の実施形態の様々な特徴および態様は、個別にまたは組み合わせて使用することができる。
【0223】
また、実施形態についてハードウェアとソフトウェアの特定の組合せを使用して説明したが、ハードウェアとソフトウェアの他の組合せも本開示の範囲内に含まれるものと理解されたい。実施形態は、ハードウェアでのみ、またはソフトウェアでのみ、あるいはこれらの組合せを使用して実装可能である。本明細書に記載の様々なプロセスは、同じプロセッサ上または任意の組合せの異なるプロセッサ上で実施可能である。したがって、コンポーネントまたはモジュールについてある動作を行うように構成されているものとして説明されている場合、そのような構成は、たとえば、その動作を行うように電子回路を設計することによって、または、その動作を行うようにプログラマブル電子回路(マイクロプロセッサなど)をプログラムすることによって、あるいはこれらの組合せによって実現可能である。プロセスは、プロセス間通信のための従来の技術を含むがこれらには限らない様々な技術を使用して通信することができ、プロセスの異なる対が異なる技術を使用してもよく、またはプロセスの同じ対が異なる時点で異なる技術を使用してもよい。
【0224】
したがって、本明細書および図面は、限定的な意味ではなく例示的な意味で捉えられるべきである。しかし、特許請求の範囲に記載されているより広い思想および範囲から逸脱することなくこれらに対する追加、置換、削除およびその他の修正および変更を加えることができることは明らかであろう。したがって、特定の開示の実施形態について説明したが、これらは限定的であることは意図されていない。様々な修正および均等物も添付の特許請求の範囲に含まれる。
【0225】
本開示の実施形態の説明の文脈(特に添付の特許請求の範囲の文脈)における「a」、「an」、「the」という用語および類似の指示物の使用は、本明細書で別に示されているかまたは文脈によって明確に否定されない限り、単数と複数の両方を対象として含むものと解釈されるべきである。「含む(comprising)」、「有する」、「含む(including)」および「含む(containing)」という用語は、別に明記されていない限りオープンエンド用語(すなわち「含むが、それには限定されない」ことを意味する)と解釈されるべきである。「接続される」という用語は、介在するものがある場合でも、一部または全体が中に含まれるか、取り付けられるかまたは互いに接合されていると解釈されるべきである。本明細書における値の範囲の記載は、本明細書において別に示されていない限り、単にその範囲に入る各々別個の値を個別に指す省略された方法の役割を果たすように意図されているに過ぎず、各々別個の値は本明細書において個別に記載されているかのように本明細書に組み込まれる。本明細書に記載のすべての方法は、本明細書で別に示されているかまたは文脈によって明確に否定されない限り、任意の適切な順序で実行可能である。あらゆる例の使用および本明細書に記載されている例示の表現(たとえば「など」)は、別に要求されていない限り、単に実施形態をよりよく理解することができるようにすることが意図されているに過ぎず、本開示の範囲を限定しない。本明細書における表現は、いかなる非特許請求要素も、本開示の実施にとって不可欠なものとして示すものと解釈されるべきではない。
【0226】
「X、YまたはZのうちの少なくとも1つ」という語句などの離接表現は、具体的に別に明記されていない限り、文脈内で項目、用語などがX、YまたはZあるいはこれらの任意の組合せのいずれか(たとえば、X、Yおよび/またはZ)であり得ることを示すために一般的に使用されているものと解釈されることが意図されている。したがって、このような離接表現は、ある実施形態がXの少なくとも1つ、Yの少なくとも1つ、またはZの少なくとも1つが、各々存在することを必要としていることを含意することが一般に意図されておらず、含意しないものとする。
【0227】
本明細書では、本開示を実施するための知られている最良の形態を含む、本開示の好ましい実施形態について説明している。以上の説明を読めば、当業者にはそれらの好ましい実施形態の変形が明らかになるであろう。当業者は、そのような変形を適宜に採用することができるはずであり、本開示は本明細書に具体的に記載されているものとは異なる方式で実施されてもよい。したがって、本開示は、本明細書に添付されている特許請求の範囲に記載されている主題のすべての修正および均等物を、適用法により認められているものとして含む。また、本明細書で別に示されていない限り、上述の要素の任意の組合せがその可能なすべての変形において本開示に包含される。
【0228】
本明細書で引用されている公開文献、特許出願および特許を含むすべての参照文献は、参照により各々の参照文献が個別に具体的に組み込まれ、その全体が本明細書に記載されているかのように、同程度まで参照により本明細書に組み込まれる。
【0229】
以上の本明細書では、本開示の態様についてその特定の実施形態を参照しながら説明しているが、当業者は本開示がそれらには限定されないことがわかるであろう。上記の開示の様々な特徴および態様は、個別にまたは組み合わせて使用可能である。また、実施形態は、本明細書のより広い思想および範囲から逸脱することなく本明細書に記載されているもの以外の任意の数の環境および用途において使用可能である。したがって、本明細書および図面は限定的なものではなく例示であるものとみなされるべきである。
【国際調査報告】