(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-03-05
(54)【発明の名称】リエントリサービスデプロイメント
(51)【国際特許分類】
G06F 9/50 20060101AFI20250226BHJP
【FI】
G06F9/50 150Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024547129
(86)(22)【出願日】2023-02-02
(85)【翻訳文提出日】2024-09-24
(86)【国際出願番号】 US2023061857
(87)【国際公開番号】W WO2023154655
(87)【国際公開日】2023-08-17
(32)【優先日】2022-02-08
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-02-22
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-02-28
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2023-01-18
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ドックター,ケイレブ
(72)【発明者】
【氏名】ミラー,エリック・ジョセフ
(57)【要約】
サービスの複数のリリースをスケジューリングおよび実行するための技術が記載される。データセンタにおいて新たなケイパビリティが発行されたものと判定する技術が記載される。第1のリリースが過去にスケジューリングおよび実行されているサービス用のフロックについて、第2のリリースは、新たに発行されたケイパビリティがサービス用のフロックの任意選択のケイパビリティ依存関係であるものと識別することに応答してフロックに対してスケジューリングされ得る。フロックは、サービスを提供するための一組の1つまたは複数のリソースを含む。フロックの第2のリリースが実行される。第2のリリースの実行の結果として、付加的な拡張されたケイパビリティがサービスに追加され得る。
【特許請求の範囲】
【請求項1】
方法であって、
データセンタにおいて新たなケイパビリティが発行されたものと判定することと、
前記新たに発行されたケイパビリティがサービス用のフロックの任意選択のケイパビリティ依存関係であるものと識別することと
を含み、
前記フロックの第1のリリースは、過去にスケジューリングおよび実行されており、前記フロックは、前記サービスを提供するための一組の1つまたは複数のリソースを含み、
前記方法は、
前記識別することに応答して、前記フロックの第2のリリースをスケジューリングすることと、
前記フロックの前記第2のリリースを実行することと
をさらに含む、方法。
【請求項2】
前記第1のリリースは、前記フロックの必要なケイパビリティ依存関係がすべて発行された場合にスケジューリングおよび実行される、請求項1に記載の方法。
【請求項3】
前記フロックの前記必要なケイパビリティ依存関係は、前記フロックの前記第1のリリースがスケジューリングおよび実行される前に前記データセンタにおいて発行されたケイパビリティとして識別される、請求項2に記載の方法。
【請求項4】
前記フロックの前記任意選択のケイパビリティ依存関係は、前記フロックの前記第1のリリースがスケジューリングおよび実行される前に前記データセンタにおいて発行される必要のないケイパビリティとして識別される、請求項1~請求項3のいずれかに記載の方法。
【請求項5】
前記一組の1つまたは複数のリソースは、前記サービスと関連付けられているインフラコンポーネントおよびアーチファクトを含む、請求項1~請求項4のいずれかに記載の方法。
【請求項6】
前記サービス用の前記フロックを識別する情報が前記サービスのフロック設定において宣言されており、前記サービスの前記フロック設定は、前記サービスと関連付けられている前記一組の1つまたは複数のリソースを識別する、請求項1~請求項5のいずれかに記載の方法。
【請求項7】
前記新たに発行されたケイパビリティは、前記サービスの前記フロックと関連付けられている機能単位を識別し、前記サービスと関連付けられている前記一組の1つまたは複数のリソースを識別する、請求項1~請求項6のいずれかに記載の方法。
【請求項8】
前記方法は、
依存関係グラフを取得することと、
前記依存関係グラフを使用して、前記新たに発行されたケイパビリティが前記サービス用の前記フロックの任意選択のケイパビリティ依存関係であるものと識別することと
をさらに含み、
前記依存関係グラフは、非巡回依存関係グラフである、請求項1に記載の方法。
【請求項9】
前記第2のリリースを実行することは、
計画を生成することを含み、
前記計画は前記第2のリリースの前記実行と関連付けられている前記データセンタの現在の設定および前記データセンタのターゲット設定を識別し、
前記計画を実行すること
をさらに含む、請求項1に記載の方法。
【請求項10】
前記計画を実行することは、前記データセンタにおいて新たなケイパビリティが追加で発行される結果となる、請求項9に記載の方法。
【請求項11】
前記計画を実行することに応答して、前記サービス用の前記フロックのフロック設定と関連付けられているメタデータを更新することをさらに含む、請求項9に記載の方法。
【請求項12】
クラウドインフラ編成システムであって、
メモリと、
処理を実行するように構成されている1つまたは複数のプロセッサと
を備え、前記処理は、
データセンタにおいて新たなケイパビリティが発行されたものと判定することと、
前記新たに発行されたケイパビリティがサービス用のフロックの任意選択のケイパビリティ依存関係であるものと識別することと
を含み、前記フロックの第1のリリースは、過去にスケジューリングおよび実行されており、
前記識別することに応答して、前記フロックの第2のリリースをスケジューリングすることと、
前記フロックの前記第2のリリースをキューに追加することと、
前記フロックの1つまたは複数の未実行リリースが前記キューに存在するものと判定することと、
をさらに含み、前記フロックの前記1つまたは複数の未実行リリースにおける少なくとも1つの未実行リリースが前記フロックの前記第2のリリースを含み、
前記判定することに応答して、前記キュー中の前記フロックの前記1つまたは複数の未実行リリースを統合して、前記フロックの統合リリースを生成すること
をさらに含む、クラウドインフラ編成システム。
【請求項13】
前記フロックの前記統合リリースを実行することをさらに含む、請求項12に記載のシステム。
【請求項14】
前記フロックは、前記サービスを提供するための一組の1つまたは複数のリソースを含み、前記一組の1つまたは複数のリソースは、前記サービスと関連付けられているインフラコンポーネントおよびアーチファクトを含む、請求項12に記載のシステム。
【請求項15】
前記キューは、前記データセンタが提供する複数のサービスにより共有される汎用スケジューリングキューである、請求項12~請求項14のいずれかに記載のシステム。
【請求項16】
前記キューは、前記サービス用の前記フロックのフロック固有キューである、請求項12~請求項14のいずれかに記載のシステム。
【請求項17】
前記第1のリリースは、前記フロックの必要なケイパビリティ依存関係がすべて満たされた場合にスケジューリングまたは実行される、請求項12~請求項14のいずれかに記載のシステム。
【請求項18】
コンピュータシステムにより実行可能であり、前記コンピュータシステムの1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに動作を実行させる命令を格納する非一時的コンピュータ可読媒体であって、前記動作は、
データセンタにおいて新たなケイパビリティが発行されたものと判定することと、
前記新たに発行されたケイパビリティがサービス用のフロックの任意選択のケイパビリティ依存関係であるものと識別することと
を含み、
前記フロックの第1のリリースは、過去にスケジューリングおよび実行されており、前記フロックは、前記サービスを提供するための一組の1つまたは複数のリソースを含み、
前記識別することに応答して、前記フロックの第2のリリースをスケジューリングすることと、
前記フロックの前記第2のリリースを実行することと
をさらに含む、非一時的コンピュータ可読媒体。
【請求項19】
前記第1のリリースは、前記フロックの必要なケイパビリティ依存関係がすべて発行された場合にスケジューリングおよび実行される、請求項18または請求項19に記載の非一時的コンピュータ可読媒体。
【請求項20】
前記一組の1つまたは複数のリソースは、前記サービスと関連付けられているインフラコンポーネントおよびアーチファクトを含む、請求項18または請求項19に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本非仮出願は、2022年2月8日に出願された米国仮特許出願第63/308,003号「Techniques for Bootstrapping a Region Build」、2022年2月22日に出願された米国仮特許出願第63/312,814号「Techniques for Implementing Virtual Data Centers」、2022年2月28日に出願された米国仮特許出願第63/314,927号「Reentrant Service Deployments」、および2023年1月18日に出願された米国特許出願第18/098,617号「Reentrant Service Deployments」に対する優先権を主張するものであり、これらのすべての開示内容を本明細書において援用する。
【0002】
発明の分野
本開示は、クラウドコンピューティング環境においてデータセンタを構築するための技術に関する。より詳細には、一組のサービスを提供するように構成されているデータセンタを構築するためのリソースおよびインフラの作成、プロビジョニング、およびデプロイメントのための技術が記載される。
【背景技術】
【0003】
背景
今日、クラウドインフラサービスは、多くの個々のサービスを利用してデータセンタを構築する(たとえば、特定の地理的領域のデータセンタにおいて、さまざまなリソースをブートストラップする)。いくつかの例において、リージョンは、1つまたは複数のデータセンタが配置されている(または、配置される)局所的な地理的エリアに対応する論理的抽象概念である。データセンタの構築には、インフラリソースのプロビジョニングおよび設定、ならびにこれらのリソースに対する(たとえば、多様なサービスのための)コードのデプロイメントを含み得る。データセンタを構築するための動作は、「リージョン構築」の実行と総称する場合もある。リージョンには任意好適な数のデータセンタが含まれ得るため、リージョン構築には、複数のデータセンタを構築するための動作を含み得る。データセンタを構築するための従来のツールでは、相当な手動労力を必要とする。また、あるサービスのブートストラップ動作は、利用可能となっていない可能性のあるリージョンの他の機能および/またはサービスに依存する場合もある。サービスチームおよびリージョンの数が増えるにつれて、プロビジョニングおよびデプロイメントを編成するために実行されるタスクが大幅に増加する。サービスのブートストラップおよび/またはデータセンタの構築を手動労力に大きく依拠すると時間がかかる上にリスクが招来され、十分にスケールできない可能性もある。
【発明の概要】
【0004】
概要
本開示は一般的に、データセンタの構築に関する。より詳細には、一組のサービスを提供するように構成されているデータセンタを構築するためのリソースおよびインフラの作成、プロビジョニング、およびデプロイメントのための技術が記載される。サービスの複数のリリースをスケジューリングおよび実行するための技術が提供される。リリースが過去に実行されているサービスについて、第2のリリースは、サービスの任意選択のケイパビリティ依存関係がデータセンタにおいて発行されている(利用可能である)ことに応答してサービスに対してスケジューリングされ得る。本明細書において、方法、システム、1つまたは複数のプロセッサが実行可能なプログラム、コード、または命令を格納する非一時的コンピュータ可読記憶媒体等を含む種々実施形態が記載される。
【0005】
ある実施形態において、サービス用のフロックの必要なケイパビリティ依存関係がすべて発行された旨の判定によって、フロックの第1のリリースがスケジューリングおよび実行される。第1のリリースを実行した後、データセンタにおいて新たなケイパビリティが発行された旨の判定および新たに発行されたケイパビリティがサービス用のフロックの任意選択のケイパビリティ依存関係である旨の識別によって、フロックの第2のリリースがスケジューリングされる。その後、第2のリリースが実行される。新たに発行されたケイパビリティは、サービスのフロックと関連付けられている機能単位を識別し、サービスと関連付けられている一組のリソースを識別する。
【0006】
サービス用のフロックの必要なケイパビリティ依存関係は、フロックの第1のリリースがスケジューリングおよび実行される前にデータセンタにおいて発行されたケイパビリティとして識別される。サービス用のフロックの任意選択のケイパビリティ依存関係は、フロックの第1のリリースがスケジューリングおよび実行される前にデータセンタにおいて発行される必要のないケイパビリティとして識別される。
【0007】
ある例において、サービス用のフロックは、サービスを提供するための一組の1つまたは複数のリソースを含む。一組のリソースは、サービスと関連付けられているインフラコンポーネントおよびアーチファクトを含む。ある例において、サービス用のフロックを識別する情報がサービスのフロック設定において宣言されている。サービスのフロック設定は、サービスと関連付けられている一組の1つまたは複数のリソースを識別する。
【0008】
ある例において、依存関係グラフが取得され、依存関係グラフの使用によって、新たに発行されたケイパビリティがサービス用のフロックの任意選択のケイパビリティ依存関係であるものと識別する。ある例において、依存関係グラフは、非巡回依存関係グラフである。
【0009】
ある例において、第2のリリースを実行することは、計画を生成することを含む。計画は、第2のリリースの実行と関連付けられているデータセンタの現在の設定およびデータセンタのターゲット設定を識別する。その後、計画が実行される。ある例において、計画を実行することは、データセンタにおいて新たなケイパビリティが追加で発行される結果となる。ある例において、計画を実行することに応答して、サービスのフロック設定と関連付けられているメタデータが更新される。
【0010】
ある例において、クラウドインフラ編成システムが開示される。このシステムは、データセンタにおいて新たなケイパビリティが発行されたものと判定し、新たに発行されたケイパビリティがサービス用のフロックの任意選択のケイパビリティ依存関係であるものと識別し、フロックの第1のリリースは、過去にスケジューリングおよび実行されている。そして、このシステムは、フロックの第2のリリースをスケジューリングする。ある例において、このシステムは、フロックの第2のリリースをキューに追加し、キューを走査して、フロックの1つまたは複数の未実行リリースがキューに存在するかを判定する。未実行リリースのうちの少なくとも1つがフロックの第2のリリースを含み得る。この判定することに応答して、このシステムはその後、キュー中のフロックの1つまたは複数の未実行リリースを統合して、フロックの統合リリースを生成する。そして、フロックの統合リリースが実行される。ある例において、キューは、データセンタが提供する複数のサービスにより共有される汎用スケジューリングキューである。他の例において、キューは、サービス用のフロックのフロック固有キューである。
【0011】
上記は、以下の本明細書、特許請求の範囲、および添付の図面を参照することにより、他の特徴および実施形態と併せてより明らかとなるであろう。
【0012】
任意特定の要素または動作の議論を容易に識別するため、参照番号の最上位の1つまたは複数の数字は、当該要素が最初に導入された図番号を表す。
【図面の簡単な説明】
【0013】
【
図1】少なくとも1つの実施形態に係る、リージョンにおいてブートストラップサービスを動的に提供するようにクラウドインフラ編成サービス(CIOS)が動作し得る環境のブロック図である。
【
図2】少なくとも1つの実施形態に係る、仮想ブートストラップ環境(ViBE)を構築するための環境および方法を示すブロック図である。
【
図3】少なくとも1つの実施形態に係る、ViBEを利用してサービスをターゲットリージョンにブートストラップするための環境および方法を示すブロック図である。
【
図4】ある実施形態に係る、リエントリリリースをスケジューリングするために実行される処理を示す簡易フローチャートである。
【
図5】ある実施形態に係る、
図1に示されるマルチフロックオーケストレータ(MFO)により実装されたスケジューリングキューの例示的な図である。
【
図6】ある実施形態に係る、
図1に示されるマルチフロックオーケストレータ(MFO)により実装されたスケジューリングキューにおける統合リリースの例示的な図である。
【
図7】ある実施形態に係る、統合リリースを生成して実行するために実行される処理を示す簡易フローチャートである。
【
図8】少なくとも1つの実施形態に係る、サービス型クラウドインフラシステムを実装するためのあるパターンを示すブロック図である。
【
図9】少なくとも1つの実施形態に係る、サービス型クラウドインフラシステムを実装するための別のパターンを示すブロック図である。
【
図10】少なくとも1つの実施形態に係る、サービス型クラウドインフラシステムを実装するための別のパターンを示すブロック図である。
【
図11】少なくとも1つの実施形態に係る、サービス型クラウドインフラシステムを実装するための別のパターンを示すブロック図である。
【
図12】少なくとも1つの実施形態に係る、例示的なコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【0014】
詳細な説明
以下の記述において、説明を目的として、ある実施形態の完全な理解を可能にするため、具体的詳細が記載される。ただし、これらの具体的詳細なく種々実施形態が実現され得ることが明らかとなるであろう。図面および本明細書には、何ら限定の意図はない。本明細書において、単語「例示的(exemplary)」の使用は、「一例、事例、または実例として機能する」ことを意味する。本明細書において「例示的(exemplary)」として記載の如何なる実施形態も設計も、他の実施形態または設計よりも好適または有利であるとは必ずしも解釈されない。
【0015】
近年、クラウドサービスの採用が急速に進んでいる。現在、さまざまな異なるクラウドサービスプロバイダ(CSP)によって、さまざまな種類のクラウドサービスが提供されている。クラウドサービス(cloud service)という用語は一般的に、CSPが提供するシステムおよびインフラ(クラウドインフラ)の使用により、CSPによって、ユーザまたは顧客がオンデマンドで(たとえば、サブスクリプションモデルによって)利用可能となるサービスまたは機能を表すのに用いられる。通常、CSPのインフラを構成するとともにクラウドサービスの顧客への提供に用いられるサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは別個である。このため、顧客は、サービス用の別個のハードウェアおよびソフトウェアリソースを購入する必要なく、CSPが提供するクラウドサービスを利用可能である。クラウドサービスは、サービスまたは機能の提供に使用されるインフラの調達に顧客が投資する必要なく、登録している顧客に対して、アプリケーションおよびコンピューティングリソースへの簡単、スケーラブル、かつオンデマンドのアクセスを提供するように設計されている。クラウドサービスとしては、サービス型ソフトウェア(SaaS)、サービス型プラットフォーム(PaaS)、サービス型インフラ(IaaS)等のさまざまな異なる種類またはモデルが提供され得る。顧客は、CSPが提供する1つまたは複数のクラウドサービスに登録することができる。顧客としては、個人、組織、企業等、如何なるエンティティも可能である。
【0016】
前述の通り、CSPは、登録している顧客へのクラウドサービスの提供に用いられるインフラおよびリソースの提供を担う。CSPが提供するリソースには、ハードウェアおよびソフトウェアの両リソースを含み得る。これらのリソースには、たとえばコンピュートリソース(たとえば、仮想マシン、コンテナ、アプリケーション、プロセッサ)、メモリリソース(たとえば、データベース、データストア)、ネットワーキングリソース(たとえば、ルータ、ホストマシン、負荷分散器)、アイデンティティ、および他のリソースを含み得る。ある実施態様において、一組のクラウドサービスCSP(cloud services CSP)を提供するためにCSPが提供するリソースは、データセンタとして編成される。データセンタは、特定の一組のクラウドサービスを提供するように構成され得る。CSPは、当該特定の一組のクラウドサービスの提供に用いられるインフラおよびリソースのデータセンタへの設置を担う。CSPは、1つまたは複数のデータセンタを構築し得る。
【0017】
CSPが提供するデータセンタは、異なるリージョンでホストされていてもよい。リージョンは、局所的な地理的エリアであって、リージョン名により識別され得る。リージョンは一般的に、互いに独立しており、たとえば国あるいは大陸を跨ぐ長い距離で分離され得る。リージョンは、レルムとしてグループ化されている。CSPのリージョンの例としては、US西部、US東部、オーストラリア東部、オーストラリア南東部等が挙げられる。
【0018】
リージョンは、1つまたは複数のデータセンタを含み得るが、これらのデータセンタは、当該リージョンに対応するある地理的エリア内に配置されている。一例として、リージョン中のデータセンタは、当該リージョン内の都市に配置されていてもよい。たとえば、特定のCSPの場合は、US西部リージョンのデータセンタがカリフォルニア州サンノゼに配置されていてもよく、US東部リージョンのデータセンタがバージニア州アッシュバーンに配置されていてもよく、オーストラリア東部リージョンのデータセンタがオーストラリアのシドニーに配置されていてもよく、オーストラリア南東部リージョンのデータセンタがオーストラリアのメルボルンに配置されていてもよい、等である。
【0019】
リージョン内のデータセンタは、高い可用性および障害回復のために用いられる1つまたは複数の可用性ドメインとして編成され得る。可用性ドメインは、リージョン内に1つまたは複数のデータセンタを含み得る。リージョン内の可用性ドメインは互いに隔離され、フォールトトレラントであり、複数の可用性ドメインにおけるデータセンタで同時に障害が発生する可能性が非常に低くなるように設計されている。たとえば、リージョン内の可用性ドメインは、リージョン内のある可用性ドメインにおける障害が同じリージョン内の他の可用性ドメインのデータセンタの可用性に影響を及ぼす可能性が低くなるように構造化されていてもよい。
【0020】
CSPが提供する1つまたは複数のサービスに顧客または加入者が登録またはサインアップした場合、CSPは、その顧客に対してテナンシを作成する。テナンシは、顧客に対して作成されるアカウントのようなものである。ある実施態様において、顧客に対するテナンシは、単一のレルムに存在し、当該レルムに属するすべてのリージョンにアクセス可能である。そして、顧客のユーザは、このテナンシの下で顧客が登録しているサービスにアクセス可能である。
【0021】
前述の通り、CSPは、データセンタの構築またはデプロイメントによって、クラウドサービスをその顧客に提供する。CSPの顧客ベースが拡大するにつれて、CSPは通常、顧客の増大する需要に対応してサービス提供し、顧客により良くサーブするため、新たなリージョンにおける新たなデータセンタの構築または既存のデータセンタの容量の増大を行う。データセンタは、当該データセンタがサービス提供する顧客の場所に地理的に近接して構築されるのが好ましい。データセンタと当該データセンタがサービス提供する顧客との間の地理的な近接性は、リソースのより効率的な使用および顧客に対するより迅速かつ確実なサービスの提供に役立つ。したがって、CSPは通常、データセンタがサービス提供する顧客に地理的に近接する地理的エリアにおいて、新たなデータセンタを新たなリージョンに構築する。たとえば、ドイツにおいて顧客ベースが拡大している場合、CSPは、ドイツの新たなリージョンにおいて、1つまたは複数のデータセンタを構築するようにしてもよい。
【0022】
リージョンに(1つまたは複数の)データセンタを構築することは、リージョンの構築と称する場合もある。用語「リージョン構築(region build)」は、リージョンに1つまたは複数のデータセンタを構築することを表すのに用いられる。リージョンにデータセンタを構築することには、データセンタが提供するように構成されている一組のサービスの提供に要求または使用される一組の新たなリソースのプロビジョニングまたは作成を伴う。リージョン構築プロセスの最終結果は、データセンタのために意図する一組のサービスを提供可能で、この一組のサービスの提供に用いられる一組のリソースを含むデータセンタをリージョンにおいて作成することである。
【0023】
リージョンに新たなデータセンタを構築することは、さまざまなブートストラップ作業間の広範な調整を必要とする非常に複雑な作業である。高いレベルでは、このことはデータセンタにより提供される一組のサービスの識別、一組のサービスの提供に要するさまざまなリソースの識別、識別されたリソースの作成、プロビジョニング、およびデプロイメント、意図する使用を可能にするリソースの適正な記述等のさまざまなタスクの実行および調整を伴う。これらのタスクはそれぞれ、調整を要するサブタスクをさらに有するため、複雑性がさらに高くなる。この複雑性のため、現在、リージョンにおけるデータセンタの構築には、慎重な手動調整を要する複数の手動開始または手動制御タスクを伴う。結果として、新たなリージョンを構築する(リージョンに1つまたは複数のデータセンタを構築する)タスクには、多大な時間を必要とする。データセンタの構築には、たとえば何カ月もの時間を要し得る。また、このプロセスは、非常にエラーが発生しやすく、データセンタの所望の構成が実現されるまでに複数回の反復が必要となる場合もあるため、データセンタの構築に要する時間はさらに長くなる。これらの制約および問題により、顧客ニーズの増大に応じて適時にコンピューティングリソースを拡張するCSPの能力が厳しく制限される。
【0024】
技術的効果
本開示は、リージョンにおける1つまたは複数のデータセンタの構築に要する時間および手動労力を抑えるための技術を記載する。開示の技術は、リージョンにおけるデータセンタの構築に要する時間を大幅に短縮し、必要な手動調整を抑制する。これまでは、リージョンにデータセンタを構築するのに数週間および数カ月を要していたが、本明細書に記載の技術の使用によって、相対的にはるかに短い時間でリージョンに新たなデータセンタを構築することができる。
【0025】
本明細書において、データセンタに所与の変更を実施するためのリソース(たとえば、デプロイされるインフラコンポーネントおよびソフトウェア)を識別する予め規定された設定ファイルに基づいてサービスを新たなデータセンタにブートストラップする(たとえば、プロビジョニングおよびデプロイメントを行う)ように構成されているクラウドインフラ編成サービス(CIOS)が開示される。CIOSは、設定ファイル(たとえば、フロック設定)の解析および分析によって、リソース、実行ターゲット、フェーズ、およびフロック間の依存関係を識別することができる。CIOSは、分析により特定のデータ構造を生成するようにしてもよく、また、これらのデータ構造を使用して、動作を推進するとともに、サービスがリージョンにブートストラップされる順序を管理するようにしてもよい。CIOSは、これらのデータ構造を利用して、サービスをブートストラップできるタイミング、ブートストラップがブロックされるタイミング、および/または過去にブロックされたサービスと関連付けられているブートストラップ動作を再開できるタイミングを識別するようにしてもよい。CIOSは、データ構造内の循環依存関係を識別するとともに、タスクの実行に先立って、これらの循環依存関係を排除/解消する動作を実行可能であるため都合が良い。これらの技術を使用することにより、CIOSは、タスクが依存するリソースが利用可能となる前に当該タスクを実行するリスクを大幅に抑制する。
【0026】
本明細書に開示の技術を利用することにより、CIOSは、タスクが依存する機能がリージョンにおいて利用可能となるまで当該タスクが開始されないようにしつつ、並列処理の最適化によって、データセンタの変更を実行するようにしてもよい。このように、CIOSは、リージョン構築のより効率的な実行を可能にして、データセンタの構築に必要な時間と、従来の手法で見られる無駄なコンピューティングリソースの使用と、を大幅に削減する。
【0027】
一定の定義
「リージョン(region)」は、地理的位置に対応する論理的抽象概念である。リージョンは、任意好適な数の1つまたは複数の実行ターゲットを含み得る。いくつかの実施形態において、実行ターゲットは、データセンタに対応することも可能である。
【0028】
「実行ターゲット(execution target)」は、リリースを実行するための最小の変更単位を表す。「リリース(release)」は、サービスの特定の変更(たとえば、バージョン8のデプロイメント、「内部DNSレコードの追加」等)を編成する意図の表明を表す。ほとんどのサービスに関して、実行ターゲットは、サービスの「インスタンス(instance)」を表す。1つまたは複数の実行ターゲット各々に対して、単一のサービスがブートストラップされ得る。実行ターゲットは、一組のデバイス(たとえば、データセンタ)と関連付けられていてもよい。
【0029】
「ブートストラップ(bootstrap)」は、単一のサービスに対応する任意好適な数のリソース(たとえば、インフラコンポーネント、アーチファクト等)のプロビジョニングおよびデプロイメントと関連付けられている集合的なタスクを表すことが意図される。
【0030】
「サービス(service)」は、一組のリソースが提供する機能を表す。サービスに関する一組のリソースは、サービスの機能を提供するように構成され得るクラウドプロバイダがホストするインフラ、プラットフォーム、またはソフトウェア(たとえば、アプリケーション)の任意好適な組合せを含む。サービスは、インターネットを通じてユーザに利用可能となり得る。
【0031】
「アーチファクト(artifact)」は、インフラコンポーネントまたはKubernetesエンジンクラスタにデプロイされているコードを表すが、これは、ソフトウェア(たとえば、アプリケーション)、インフラコンポーネントの設定情報(たとえば、設定ファイル)等を含み得る。
【0032】
「フロック設定(flock config)」は、単一のサービスと関連付けられている一組のすべてのリソース(たとえば、インフラコンポーネントおよびアーチファクト)を記述する設定ファイル(または、一組の設定ファイル)を表す。フロック設定は、サービスのリソースの所望の状態に対応する1つまたは複数の態様を指定する宣言文を含み得る。
【0033】
「サービス状態(service state)」は、サービスと関連付けられているすべてのリソース(たとえば、インフラリソース、アーチファクト等)のある時点のスナップショットを表す。サービス状態は、サービスリソースと関連付けられているプロビジョニングおよび/またはデプロイメントのタスクに対応するステータスを示す。
【0034】
IaaSプロビジョニング(または、「プロビジョニング」)は、使用するコンピュータまたは仮想ホストを取得することを表し、これらに必要なライブラリまたはサービスをインストールすることまでも表す。表現「デバイスのプロビジョニング(provisioning a device)」は、エンドユーザが特定の用途に利用できる状態へのデバイスの進化を表す。プロビジョニングプロセスを経たデバイスは、「プロビジョニング済みデバイス(provisioned device)」と称する場合もある。プロビジョニング済みデバイスを準備すること(ライブラリおよびデーモンをインストールすること)は、プロビジョニングの一部であり得るが、これは、準備されたデバイスに対して新たなアプリケーションまたはアプリケーションの新たなバージョンをデプロイするのとは異なる。ほとんどの場合、デプロイメントにはプロビジョニングを含まず、プロビジョニングは最初に実行することが必要となり得る。準備されたデバイスは、「インフラコンポーネント(infrastructure component)」と称する場合もある。
【0035】
IaaSデプロイメント(または、「デプロイメント」)は、プロビジョニングがなされたインフラコンポーネントに新たなアプリケーションまたはアプリケーションの新たなバージョンを提供および/またはインストールするプロセスを表す。インフラコンポーネントのプロビジョニング(たとえば、取得、割当て、準備等)がなされると、付加的なソフトウェアのデプロイメント(たとえば、インフラコンポーネントへの提供およびインストール)がなされ得る。インフラコンポーネントは、プロビジョニングおよびデプロイメントの完了後、「リソース」と称し得る。リソースの例としては、仮想マシン、データベース、オブジェクトストレージ、ブロックストレージ、負荷分散器等が挙げられるが、これらに限定されない。
【0036】
「ケイパビリティ(capability)」は、サービスと関連付けられている機能単位を識別する。この単位としては、サービスが提供する機能の一部または全部も可能である。一例として、リソースが許可/認証処理に利用可能であることを示すケイパビリティ(たとえば、リソースが提供する機能の部分集合)が発行され得る。別の例としては、サービスの全機能が利用可能であることを示すケイパビリティが発行され得る。ケイパビリティは、リソースもしくはサービスが依存する機能ならびに/または利用可能なリソースもしくはサービスの機能の識別に使用可能である。
【0037】
「仮想ブートストラップ環境(virtual bootstrap environment)」(ViBE)は、既存のリージョン(たとえば、「ホストリージョン」)のオーバーレイにおいてプロビジョニングがなされる仮想クラウドネットワークを表す。プロビジョニングがなされたViBEは、通信チャネル(たとえば、IPSec Tunnel VPN)を使用して新たなリージョンに接続される。ViBEにおいて、デプロイメントオーケストレータ、公開鍵インフラ(PKI)サービス等のある本質的なコアサービス(または、「シード」サービス)のプロビジョニングがなされ得る。これらのサービスは、ハードウェアのオンライン化、新たなリージョンへのトラストチェーンの確立、および新たなリージョンにおけるその他のサービスのデプロイメントに必要なケイパビリティを提供可能である。仮想ブートストラップ環境を利用することにより、ホストリージョンのリソースの利用によって、ブートストラップリソース間の循環依存関係を防止することができる。物理的リージョン(たとえば、ターゲットリージョン)が利用可能となる前に、ViBEにおいて、サービスのステージ分けおよびテストが可能である。
【0038】
「クラウドインフラ編成サービス(Cloud Infrastructure Orchestration Service)」(CIOS)は、リージョン構築の一部として、任意好適な数のサービスのプロビジョニングおよびデプロイメントの動作を管理するように構成されているシステムを表し得る。
【0039】
マルチフロックオーケストレータ(MFO)は、CIOSのコンポーネント間のイベントの調整によってターゲットリージョン(たとえば、新たなリージョン)へのサービスのプロビジョニングおよびデプロイメントを行うコンピューティングコンポーネント(たとえば、サービス)であってもよい。MFOは、リージョン構築の各サービスに関連するイベントを追跡し、当該イベントに応答して措置を講じる。
【0040】
「ホストリージョン(host region)」は、仮想ブートストラップ環境(ViBE)をホストするリージョンを表す。ホストリージョンは、ViBEのブートストラップに使用され得る。
【0041】
「ターゲットリージョン(target region)」は、構築中のリージョンを表す。
「ケイパビリティの発行(publishing a capability)」は、「発行者-加入者」コンピューティング設計において使用されるような「発行」あるいは特定のケイパビリティが利用可能である(または、利用不可能である)旨の指標の提供を表す。ケイパビリティは、「発行」(たとえば、ケイパビリティサービスによる収集、ケイパビリティサービスへの提供、プッシュ、プル等)によって、リソース/サービスの機能が利用可能である旨の指標を提供する。いくつかの実施形態において、ケイパビリティは、イベント、通知、データ伝送、機能呼び出し、API呼び出し等によって、発行/送信され得る。特定のケイパビリティの可用性を示すイベント(または、他の通知/データ伝送等)をケイパビリティサービスに対してブロードキャスト/アドレス指定(たとえば、発行)可能である。
【0042】
「ケイパビリティサービス(capabilities service)」は、異なるフロック間の依存関係をモデル化するように構成されているフロックであってもよい。ケイパビリティサービスは、クラウドインフラ編成サービス内で提供され得り、リージョンにおいて利用可能とされているケイパビリティ、サービス、特徴を規定し得る。
【0043】
「リアルタイムリージョナルデータディストリビュータ(Real-time Regional Data Distributor)」(RRDD)は、リージョンデータを管理するように構成されているサービスまたはシステムであってもよい。このリージョンデータは、フロック設定への注入によって、新たなリージョンの実行ターゲットを動的に作成することができる。
【0044】
いくつかの例において、本明細書において、クラウドインフラ編成サービス(CIOS)を実装するための技術が記載される。このような技術は、簡単に上述した通り、クラウド環境(たとえば、リージョン)内のインフラコンポーネントのブートストラップ(たとえば、ソフトウェアのプロビジョニングおよびデプロイメント)を管理するように構成可能である。場合により、CIOSは、所与のサービスに対するブートストラップタスク(プロビジョニングおよびデプロイメント)ならびにリージョン構築(たとえば、複数のサービスに対応するブートストラップ動作)を開始/管理するように構成されているマルチフロックオーケストレータ(以下においてもより詳しく説明する)を管理するように構成され得るコンピューティングコンポーネント(たとえば、CIOSセントラルおよびCIOSリージョナル(いずれも、以下により詳しく説明する))を具備し得る。
【0045】
CIOSは、(たとえば、場合により、ハードウェアの最初の承認および/または物理的な輸送を超える)サービスチームによる手動実行時の手間を最小限に抑えて、リージョン構築ならびに世界規模のインフラプロビジョニングおよびコードデプロイメントを可能にする。CIOSの高度な責任としては、リージョン構築の調整、CIOSが管理するリソース(たとえば、リージョン内、リージョン間、世界規模等)の現状のビューのユーザへの提供、およびリージョン内のリソースをブートストラップするためのブートストラップ動作の管理が挙げられるが、これらに限定されない。
【0046】
CIOSは、リソースの所望の状態(たとえば、所望の構成)のビューをリソースの現在/実際の状態(たとえば、現在の構成)と調停可能なビュー調停を提供するようにしてもよい。場合により、ビュー調停には、実際に動作しているリソースならびにそれぞれの現在の構成および/もしくは状態を識別する状態データの取得を含んでいてもよい。調停は、サービスレベル等の多様な粒度で実行され得る。
【0047】
CIOSは、リソースの所望および現在の両状態間の差異が識別される計画生成を実行可能である。計画生成の一部としては、リソースを現在の状態から所望の状態へ移行させるために実行が必要となる動作の識別を含み得る。いくつかの例において、CIOSは、生成された計画をユーザに提示して承認を求めるようにしてもよい。これらの例において、CIOSは、ユーザからのユーザ入力に基づいて、計画の承認または拒否を行わせることができる。これにより、ユーザは計画の推論に費やす時間を短縮可能となり、計画は機械生成されるため、より正確である。計画のほとんどは、人間が消費するには詳しすぎるが、CIOSは、高度なユーザインターフェース(UI)を介してこのデータを提供可能である。
【0048】
いくつかの例において、CIOSは、承認された計画の実行によって、変更管理の実行を取り扱うことができる。実行計画が作成されて承認されると、CIOSがロールバックを開始しない限りは、エンジニアが変更管理に参加する必要はなくなり得る。CIOSは、(たとえば、実行中にサービスヘルスの低下を検出した場合)サービスを過去(たとえば、リリース前)の状態に戻す計画を生成することによって、過去のサービスバージョンへのロールバックを取り扱うことができる。
【0049】
CIOSは、警告のモニタリングおよび統合テストの実行によって、サービスヘルスを測定することができる。CIOSは、チームがサービス低下の場合のロールバック挙動を迅速に規定し、後で実行できるようにするのに役立ち得る。CIOSは、計画を生成および表示するとともに、承認を追跡することができる。CIOSは、リージョン構築にわたってこれらのタスクを調整する単一のシステムにおけるプロビジョニングおよびデプロイメントの機能を組み合わせることができる。また、CIOSは、フロック(たとえば、任意好適な数のサービスに対応するフロック設定等のサービスリソース)、アーチファクト、リソース、および依存関係の発見をサポートする。CIOSは、1つまたは複数の設定ファイルの静的分析(たとえば、コンテンツの解析および処理を含む)により、あらゆるレベル(たとえば、リソースレベル、実行ターゲットレベル、フェーズレベル、サービスレベル等)において、実行タスク間の依存関係を発見することができる。これらの依存関係を使用することにより、CIOSは、タスク実行(たとえば、リージョンにわたるインフラリソースのプロビジョニングおよびアーチファクトのデプロイメントに関するタスク)の推進に使用し得るさまざまなデータ構造をこれらの依存関係から生成することができる。
【0050】
図1は、少なくとも1つの実施形態に係る、リージョンにおいてブートストラップサービスを動的に提供するようにクラウドインフラ編成サービス(CIOS)102が動作し得る環境100のブロック図である。CIOS102は、リアルタイムリージョナルデータディストリビュータ(RRDD)104、マルチフロックオーケストレータ(MFO)106、CIOSセントラル108、CIOSリージョナル110、およびケイパビリティサービス112といった構成要素を具備し得るが、これらに限定されない。CIOSセントラル108およびCIOSリージョナル110の具体的な機能については、米国特許出願第17/016,754号「Techniques for Deploying Infrastructure Resources with a Declarative Provisioning Tool」により詳しく与えられており、そのすべての内容を本明細書において援用する。いくつかの実施形態において、CIOS102の構成要素の任意好適な組合せがサービスとして提供され得る。いくつかの実施形態において、CIOS102の何らかの部分がリージョン(たとえば、ホストリージョン103により表されるデータセンタ)にデプロイされ得る。いくつかの実施形態において、CIOS102は、米国特許出願第17/016,754号ならびに
図2および
図3に関して以下により詳しく論じられる任意好適な数のクラウドサービス(
図1には示さず)を含んでいてもよい。
【0051】
リアルタイムリージョナルデータディストリビュータ(RRDD)104は、レルム、リージョン、実行ターゲット、および可用性ドメインを識別するリージョンデータを維持および提供するように構成されていてもよい。場合により、リージョンデータは、任意好適な形態(たとえば、JSONフォーマット、データオブジェクト/コンテナ、XML等)であってもよい。RRDD104により維持されるリージョンデータには、対応する識別子によって個別に参照可能となり得る任意好適な数のデータ部分集合を含み得る。一例として、識別子「all_regions」は、すべての規定リージョンのメタデータを含むデータ構造(たとえば、リスト、構造体、オブジェクト等)と関連付けられ得る。別の例として、「レルム」等の識別子は、多くのレルムおよび各レルムに対応する一組のリージョンのメタデータを識別するデータ構造と関連付けられ得る。一般的に、リージョンデータは、1つまたは複数のレルム、リージョン、可用性ドメイン(AD)、実行ターゲット(ET)等(識別子、DNSサフィックス、状態(たとえば、リージョンの状態)等)の任意好適な属性を維持し得る。RRDD104は、リージョンデータの一部としてリージョン状態を管理するように構成されていてもよい。リージョン状態には、リージョン内のブートストラップの状態を示す任意好適な情報を含み得る。一例として、いくつかの例示的なリージョン状態には、「初期」、「構築」、「生成」、「一時停止」、または「廃止」を含み得る。「初期」状態は、まだブートストラップされていないリージョンを示し得る。「構築」状態は、リージョン内の1つまたは複数のフロックのブートストラップが開始となったことを示し得る。「生成」状態は、ブートストラップが完了し、リージョンの検証の準備が整ったことを示し得る。「一時停止」状態は、CIOSセントラル108またはCIOSリージョナル110が可能性として運用上の問題によりリージョナルスタックとの内部相互作用を一時停止したことを示し得る。「廃止」状態は、リージョンが廃止され、利用できない可能性および/または再接続できない可能性を示し得る。
【0052】
CIOSセントラル108は、ユーザ(たとえば、ユーザ109)がCIOS102と相互作用し得る任意好適な数のユーザインターフェースを提供するように構成されている。一例として、ユーザは、CIOSセントラル108が提供するユーザインターフェースを介して、リージョンデータを変更することができる。CIOSセントラル108は、フロック設定および/またはアーチファクトに加えられた変更の確認、計画の生成および確認、計画の承認/拒否、(たとえば、インフラプロビジョニング、デプロイメント、リージョン構築を伴うタスク、および/またはCIOS102により管理される任意好適な数のリソースの所望の状態に対応する)計画実行に関するステータスの確認をユーザが行えるようにする多様なインターフェースを追加で提供するようにしてもよい。CIOSセントラル108は、任意好適な数のCIOSリージョナル110インスタンスを管理するように構成されている制御プレーンを実装していてもよい。CIOSセントラル108は、リージョンデータの提示によってユーザ109がリージョンデータを確認および/または変更できるようにする1つまたは複数のユーザインターフェースを提供することができる。CIOSセントラル108は、任意好適な数のインターフェースを介してRRDD104の機能を呼び出すように構成可能である。一般的に、CIOSセントラル108は、リージョンデータを直接または間接的に(たとえば、RRDD104を介して)管理するように構成されていてもよい。CIOSセントラル108は、フロック設定のコンパイルにより、リージョンデータを変数としてフロック設定に注入するように構成されていてもよい。
【0053】
CIOSリージョナル110の各インスタンスは、リージョンの単一のサービスと関連付けられているブートストラップタスクを実行するように構成されているモジュールに対応していてもよい。CIOSリージョナル110は、CIOSセントラル108から所望の状態データを受信し得る。いくつかの実施形態において、所望の状態データには、サービスと関連付けられているリソースの所望の状態を(たとえば、宣言文によって)宣言するフロック設定を含み得る。CIOSセントラル108は、サービスと関連付けられているリソースの現在の状態の任意好適な態様を示す現在の状態データを維持することができる。いくつかの実施形態において、CIOSリージョナル110は、所望の状態データおよび現在の状態データの比較によって、1つまたは複数のリソースに変更が必要であるものと識別することができる。たとえば、CIOSリージョナル110は、1つもしくは複数のインフラコンポーネントのプロビジョニング、1つもしくは複数のアーチファクトのデプロイメント、またはサービスのリソースの任意好適な変更により当該リソースの状態を所望の状態と合致させることが必要であるものと判定することができる。CIOSリージョナル110は、ブートストラップ動作を実行する場合に、利用可能となったリソースのさまざまなケイパビリティを示すデータを発行するようにしてもよい。「ケイパビリティ(capability)」は、サービスと関連付けられている機能単位を識別する。この単位としては、サービスが提供する機能の一部または全部も可能である。一例として、リソースが許可/認証処理に利用可能であることを示すケイパビリティ(たとえば、リソースが提供する機能の部分集合)が発行され得る。別の例としては、サービスの全機能が利用可能であることを示すケイパビリティが発行され得る。ケイパビリティは、リソースもしくはサービスが依存する機能ならびに/または利用可能なリソースもしくはサービスの機能の識別に使用可能である。
【0054】
ケイパビリティサービス112は、1)現在利用可能となっているさまざまなサービスのケイパビリティ、2)任意のリソース/サービスが特定のケイパビリティを待機しているか、3)所与のケイパビリティを待機している特定のリソースおよび/もしくはサービス、またはこれらの任意好適な組合せを示すケイパビリティデータを維持するように構成されている。ケイパビリティサービス112は、ケイパビリティデータを要求し得るインターフェースを提供するようにしてもよい。ケイパビリティサービス112は、MFO106および/またはCIOSリージョナル110(たとえば、CIOSリージョナル110の各インスタンス)へのケイパビリティデータを送信することを可能にする1つまたは複数のインターフェース(たとえば、アプリケーションプログラミングインターフェース)を提供するようにしてもよい。いくつかの実施形態において、MFO106ならびに/またはCIOSリージョナル110の任意好適なコンポーネントもしくはモジュールは、ケイパビリティサービス112にケイパビリティデータを要求するように構成されていてもよい。
【0055】
いくつかの実施形態において、マルチフロックオーケストレータ(MFO)106は、リージョン構築の試みを推進するように構成されていてもよい。いくつかの実施形態において、MFO106は、リージョン内の所与のサービスのブートストラップ(または、ターゲットリージョンの変更単位の構成)に利用されるフロック/フロック設定バージョンおよび/またはアーチファクトバージョンを表す情報を管理することができる。いくつかの実施形態において、MFO106は、リアルタイムリージョナルデータディストリビュータ104が管理するリージョンデータの変更をモニタリングするように(あるいは、変更が通知されるように)構成されていてもよい。いくつかの実施形態において、リージョンデータが変更された旨の指標の受信によって、リージョン構築がMFO106により始動され得る。いくつかの実施形態において、MFO106は、リージョン構築に用いられるさまざまなフロック設定およびアーチファクトを収集するようにしてもよい。フロック設定の一部または全部がリージョンに依存しないように構成されていてもよい。すなわち、フロック設定は、フロックがブートストラップされるリージョンを明示的に識別しないようにしてもよい。いくつかの実施形態において、MFO106は、収集されたフロック設定が(たとえば、CIOSセントラル108により)再コンパイルされるデータ注入プロセスを始動させるようにしてもよい。再コンパイルの間は、(たとえば、CIOSセントラル108による)動作の実行によって、リアルタイムリージョナルデータディストリビュータ104が維持するリージョンデータが設定ファイルに注入される。フロック設定は、リージョンデータのハードコード化識別を必要とすることなく、変数/パラメータを通じてリージョンデータを参照可能である。フロック設定は、リージョンデータのハードコード化によって変更がより困難になることなく、このデータ注入によって実行時に動的に修正され得る。
【0056】
マルチフロックオーケストレータ106は、フロック設定の解析によってリソース、実行ターゲット、フェーズ、およびフロック間の依存関係の識別、特に、排除の必要がある循環依存関係の識別を行う静的フロック分析を実行することができる。いくつかの実施形態において、MFO106は、識別された依存関係に基づいて、任意好適な数のデータ構造を生成することができる。これらのデータ構造(たとえば、有向非巡回グラフ、連結リスト等)は、リージョン構築を実行するための動作を推進するため、クラウドインフラ編成サービス102により利用されてもよい。一例として、これらのデータ構造は、リージョン内でサービスがブートストラップされる順序を集合的に規定していてもよい。このようなデータ構造の一例については、
図3の構築依存関係グラフ338に関して以下に別途論じられる。循環依存関係(たとえば、サービスAがサービスBを必要とし、逆もまた同様)が存在し、静的フロック分析および/またはグラフにより識別される場合、MFOは、これらの循環依存関係の補正に対応するフロック設定の変更が必要であることを任意好適なサービスチームに通知するように構成されていてもよい。MFO106は、1つまたは複数のデータ構造を通過することにより、サービスがリージョンにブートストラップされる順序を管理するように構成可能である。MFO106は、(たとえば、ケイパビリティサービス112から取得されたデータを使用して)任意所与の時間に所与のリージョン内で利用可能なケイパビリティを識別することができる。MFO106は、このデータを使用して、サービスをブートストラップできるタイミング、ブートストラップがブロックされるタイミング、および/または過去にブロックされたサービスと関連付けられているブートストラップ動作を再開できるタイミングを識別することができる。この通過に基づいて、MFO106は、多様なリリースを実行可能であるが、これらにおいて、MFO106による命令のCIOSセントラル108への送信によって、任意好適な数のフロック設定に対応するブートストラップ動作を実行する。いくつかの例において、MFO106は、グラフ内に循環依存関係が見られることから、1つまたは複数のフロック設定が複数のリリースを必要とする場合があるものと識別するように構成されていてもよい。結果として、MFO106は、所与のフロック設定に対して、複数の命令セットをCIOSセントラル108に送信することにより、グラフにおいて識別された循環依存関係を解消するようにしてもよい。
【0057】
いくつかの実施形態において、新たなリージョン(たとえば、ターゲットリージョン114)の構築をユーザが要求し得る。これには、多様なサービスに対応するリソースのブートストラップを含み得る。いくつかの実施形態において、ターゲットリージョン114は、リージョン構築リクエストが開始された時点で通信可能でなくてもよい(および/または、セキュアでなくてもよい)。ターゲットリージョン114が利用可能になり、ブートストラップ動作を実行するように構成される時点までブートストラップを遅らせるのではなく、CIOS102は、仮想ブートストラップ環境116を使用してリージョン構築を開始するようにしてもよい。仮想ブートストラップ環境(ViBE)116は、ホストリージョン103(コアとなる一組のサービスが過去に設定され、通信可能かつセキュアな既存のリージョン)がホストするオーバーレイネットワークであってもよい。MFO106は、ホストリージョン103のリソースを利用して、リソースをViBE116にブートストラップすることができる(一般的には、「ViBEの構築」と称する)。一例として、MFO106は、CIOSセントラル108を通じて、ホストリージョン(たとえば、ホストリージョン103)内のCIOSリージョナル110のインスタンスにViBE116内のCIOSリージョナルの別のインスタンスをブートストラップさせる命令を提供することができる。ViBE内のCIOSリージョナルが処理に利用可能となったら、ターゲットリージョン114に対するサービスのブートストラップがViBE116内で継続し得る。ブートストラップ動作の実行にターゲットリージョン114が利用可能な場合は、ViBE116内の過去にブートストラップされたサービスがターゲットリージョン114へと移動し得る。これらの技術を利用することにより、CIOS102は、任意の手動入力および/または設定の提供の必要性を大幅に抑えることによって、リージョンの構築速度を大きく向上させることができる。
【0058】
図2は、少なくとも1つの実施形態に係る、仮想ブートストラップ環境(ViBE)202(
図1のViBE116の一例)を構築するための環境200および方法を示すブロック図である。ViBE202は、既存のリージョン(たとえば、
図1のホストリージョン103の一例であり、一実施形態において、ホストリージョンサービスエンクレーブであるホストリージョン204)のオーバーレイにおいてプロビジョニングがなされる仮想クラウドネットワークを表す。ViBE202は、ターゲットリージョン(たとえば、
図1のターゲットリージョン114等、構築中のリージョン)が利用可能となる前に、ターゲットリージョンに対してサービスのステージ分けが行われ得る環境を表す。
【0059】
新たなリージョン(たとえば、
図1のターゲットリージョン114)のブートストラップのため、コアとなる一組のサービスがブートストラップされてもよい。これらのコアとなる一組のサービスは、ホストリージョン204に存在する一方で、ViBEには(ターゲットリージョンにも)存在していない。これらの本質的なコアサービスは、デバイスのプロビジョニング、新たなリージョンへのトラストチェーンの確立、およびリージョンへのその他のサービス(たとえば、フロック)のデプロイメントに必要な機能を提供する。ViBE202は、ホストリージョン204においてデプロイされるテナンシであってもよい。これは、仮想リージョンと考えられる。
【0060】
ブートストラップ動作の提供のターゲットリージョンを利用可能な場合、ViBE202は、当該ViBE中のサービスがターゲットリージョンのサービスおよび/またはインフラコンポーネントと相互作用し得るように、ターゲットリージョンに接続可能である。これによって、従来のシステムのような自己含有シードサービスの代わりに、生成レベルサービスのデプロイメントが可能になるとともに、インターネットを介したターゲットリージョンへの接続が必要となる。従来は、コンテナ集合の一部としてシードサービスがデプロイされ、リージョンの構築に必要な依存関係のブートストラップに使用されてきた。既存のリージョンのインフラ/ツールを使用することにより、リソースは、ViBE202へのブートストラップ(たとえば、プロビジョニングおよびデプロイメント)がなされ、ターゲットリージョンが自己充足して直接通信可能となるまで、ハードウェアのプロビジョニングおよびサービスのデプロイメントのために、リージョン(たとえば、ホストリージョン204)のサービスエンクレーブへ接続され得る。ViBE202の利用により、ホストリージョンのリソースの利用によってコアサービスの循環依存関係を解消しつつ、インフラのプロビジョニング/準備およびソフトウェアのデプロイメントを可能にするために必要な依存関係およびサービスの確立が可能となる。
【0061】
マルチフロックオーケストレータ(MFO)206は、ViBE202を構築(たとえば、構成)する動作を実行するように構成されていてもよい。MFO206は、新たなリージョン(この場合は、ViBE202のViBEリージョン)にブートストラップされるさまざまなリソースに対応する適用可能なフロック設定を取得することができる。一例として、MFO206は、ブートストラップケイパビリティサービス208およびワーカ210の態様を識別するフロック設定(たとえば、「ViBEフロック設定」)を取得するようにしてもよい。別の例として、MFO206は、ドメインネームサービス(DNS)212のViBE202へのブートストラップに対応する別のフロック設定を取得するようにしてもよい。
【0062】
ステップ1において、MFO206は、CIOSセントラル214(たとえば、
図1および
図2それぞれのCIOSセントラル108およびCIOSセントラル214の一例)に指示を出すようにしてもよい。たとえば、MFO206は、この時点でViBE202にまだ存在していないケイパビリティサービス208およびワーカ210のブートストラップを要求するリクエスト(たとえば、ViBEフロック設定を含む)を送信するようにしてもよい。いくつかの実施形態において、CIOSセントラル214は、すべてのフロック設定にアクセス可能であってもよい。したがって、いくつかの例において、MFO206は、ファイル自体ではなく、ViBEフロック設定に対する識別子を送信するようにしてもよく、CIOSセントラル214は、ストレージ(たとえば、
図3のDB308またはフロックDB312)からそれを独立して取得するようにしてもよい。
【0063】
ステップ2において、CIOSセントラル214は、対応するリクエストによって、ViBEフロック設定をCIOSリージョナル216に提供するようにしてもよい。ステップ3において、CIOSリージョナル216は、ViBEフロック設定を解析して、特定のインフラプロビジョニングおよびデプロイメント動作を識別および実行するようにしてもよい。
【0064】
いくつかの実施形態において、CIOSリージョナル216は、プロビジョニングおよびデプロイメントのための付加的な対応するサービスを利用するようにしてもよい。たとえば、ステップ4において、CIOSリージョナル216は、ViBE202においてケイパビリティサービス208およびワーカ210をブートストラップさせる命令を実行することをデプロイメントオーケストレータ218(たとえば、ホストリージョン204のコアサービスまたは他の記述、構築、およびデプロイメントアプリケーションソフトウェアの一例)に指示するようにしてもよい。
【0065】
ステップ5において、(CIOSリージョナル216、デプロイメントオーケストレータ218からワーカ210等を介して)ViBEフロックに対応するリソースが利用可能であることを示すケイパビリティがケイパビリティサービス208に送信されてもよい。ケイパビリティサービス208は、このデータを持続するようにしてもよい。いくつかの実施形態において、ケイパビリティサービス208は、ViBEで利用可能なケイパビリティを保持するリストに対して、この情報を追加する。一例として、ステップ5でケイパビリティサービス208に与えられたケイパビリティは、ケイパビリティサービス208およびワーカ210を処理に利用可能であることを示していてもよい。
【0066】
ステップ6において、MFO206は、ケイパビリティサービス208からのデータ(ケイパビリティに対応する識別子)の受信または取得に基づいて、ケイパビリティサービス208およびワーカ210が利用可能であることを当該ケイパビリティが示すものと識別するようにしてもよい。
【0067】
ステップ7において、ステップ6におけるデータの受信/取得の結果として、MFO206は、DNSサービス(たとえば、DNS212)をViBE202にブートストラップすることをCIOSセントラル214に指示するようにしてもよい。これらの命令は、DNSサービスに対応する特定のフロック設定を識別または包含していてもよい。
【0068】
ステップ8において、CIOSセントラル214は、DNS212をViBE202にデプロイすることをCIOSリージョナル216に指示するようにしてもよい。いくつかの実施形態において、CIOSセントラル214によって、DNS212のDNSフロック設定が提供される。
【0069】
ステップ9において、CIOSリージョナル216によって、ViBE202にデプロイされているワーカ210がDNS212をデプロイするタスクに割り当てられるようになっていてもよい。ワーカは、
図3との関連で上述したように宣言型インフラプロビジョナーを実行して、(たとえば、フロックと関連付けられている(現存しない)リソースの現在の状態に対してフロック設定(所望の状態)を比較することにより)DNS212のデプロイメントのために実行する必要がある一組の動作を識別するようにしてもよい。
【0070】
ステップ10において、デプロイメントオーケストレータ218は、ステップ9において識別された動作に従ってDNS212をデプロイすることをワーカ210に指示するようにしてもよい。図示のように、ワーカ210は、ステップ11において、DNS212をViBE202にデプロイする動作の実行に進む。ステップ12において、ワーカ210は、ViBE202においてDNS212を利用可能であることをケイパビリティサービス208に通知する。MFO206はその後、ViBEフロック設定およびDNSフロック設定と関連付けられているリソースが利用可能であるものと識別し、任意好適な数の付加的なリソースのViBEへのブートストラップに進むようにしてもよい。
【0071】
ステップ1~12の完了後は、ViBE202を構築するためのプロセスが完了し、ViBE202が構築されたものと考えられ得る。
【0072】
図3は、少なくとも1つの実施形態に係る、ViBEを利用してサービスをターゲットリージョンにブートストラップするための環境300および方法を示すブロック図である。
【0073】
ステップ1において、ユーザ302は、CIOSセントラル304(
図1および
図2それぞれのCIOSセントラル108およびCIOSセントラル214の一例)が提供する任意好適なユーザインターフェースを利用して、リージョンデータを修正するようにしてもよい。一例として、ユーザ302は、多くのサービスがブートストラップされる新たなリージョンを作成するようにしてもよい。
【0074】
ステップ2において、CIOSセントラル304は、変更をRRDD306(
図1のRRDD104の一例)に送る動作を実行するようにしてもよい。ステップ3において、RRDD306は、リージョン、AD、レルム、ET等の任意好適な識別子、属性、状態等を含むリージョンデータを格納するように構成されているデータストアであるデータベース308に受信したリージョンデータを格納するようにしてもよい。いくつかの実施形態において、アップデータ307の利用によって、データベース308または(たとえば、サービスチームが)このような更新情報にアクセス可能となり得る任意好適なデータストアにリージョンデータを格納するようにしてもよい。いくつかの実施形態において、アップデータ307は、(たとえば、任意好適な電子的通知によって)データベース308に対する更新情報を通知するように構成されていてもよい。
【0075】
ステップ4において、MFO310(
図1および
図2それぞれのMFO106および206の一例)は、リージョンデータの変化を検出するようにしてもよい。いくつかの実施形態において、MFO310は、リージョンデータの変化に関してRRDD306のポーリングを行うように構成されていてもよい。いくつかの実施形態において、RRDD306は、リージョンの変化をMFO310に発行あるいは通知するように構成されていてもよい。
【0076】
ステップ5において、リージョンデータの変化を検出することによって、新たなリージョンにブートストラップされる各フロック(たとえば、サービス)の特定のバージョンおよび当該フロックに対応する各アーチファクトの特定のバージョンを識別するバージョンセット(たとえば、「ゴールデンバージョンセット」識別子等の特定の識別子と関連付けられているバージョンセット)のMFO310による取得を始動させるようにしてもよい。バージョンセットは、DB312から取得されてもよい。フロックが進化して変化すると、リージョン構築に用いられるそれぞれの対応する設定およびアーチファクトのバージョンも変化する可能性がある。これらの変化は、リージョン(たとえば、ViBEリージョン、ターゲットリージョン/非ViBEリージョン等)の構築に使用すべきフロック設定およびアーチファクトのバージョンをMFO310が識別し得るように、フロックDB312において持続することができる。フロック設定(たとえば、フロック設定のすべてのバージョン)および/またはアーチファクト(たとえば、アーチファクトのすべてのバージョン)は、DB308、DB312、またはCIOSセントラル304および/もしくはMFO310がアクセスし得る任意好適なデータストアに格納されていてもよい。
【0077】
ステップ6において、MFO310は、現在のリージョンデータによって、バージョンセットと関連付けられているフロック設定の各々を再コンパイルすることをCIOSセントラル304に要求するようにしてもよい。いくつかの実施形態において、このリクエストは、各フロック設定および/またはこれらのフロック設定に対応するアーチファクトのバージョンを示していてもよい。
【0078】
ステップ7において、CIOSセントラル304は、DB308から(たとえば、直接またはリアルタイムリージョナルデータディストリビュータ306を介して)現在のリージョンデータを取得し、MFO310が要求するバージョンに従って任意好適なフロック設定およびアーチファクトを読み出すようにしてもよい。
【0079】
ステップ8において、CIOSセントラル304は、ステップ7において取得されたリージョンデータでフロック設定を再コンパイルすることにより、フロック設定に現在のリージョンデータを注入するようにしてもよい。CIOSセントラル304は、コンパイル済みフロック設定をMFO310に返すようにしてもよい。いくつかの実施形態において、CIOSセントラル304は、コンパイルがなされたことを示すのみであってもよく、MFO310は、RRDD306を介して、再コンパイルされたフロック設定にアクセスするようにしてもよい。
【0080】
ステップ9において、MFO310は、再コンパイルされたフロック設定の静的分析を実行するようにしてもよい。静的分析の一部として、MFO310は、(たとえば、宣言型インフラプロビジョナーと関連付けられているライブラリ(たとえば、Terraform等)を使用して)フロック設定を解析することにより、フロック間の依存関係を識別するようにしてもよい。この分析および識別された依存関係から、MFO310は、構築依存関係グラフ338を生成することができる。構築依存関係グラフ338は、フロックが新たなリージョンにブートストラップされる(および/または、フロック設定に示される変更が適用される)順序を識別する有向非巡回グラフであってもよい。グラフ中の各ノードは、特定のフロックの任意好適な部分のブートストラップに対応していてもよい。具体的なブートストラップ順序は、依存関係に少なくとも部分的に基づいて識別されてもよい。いくつかの実施形態において、依存関係は、ノードの属性としての表現および/またはノードを接続するグラフのエッジによる指定がなされていてもよい。MFO310は、(たとえば、開始ノードを始点として)グラフを通過することにより、リージョン構築の動作を推進するようにしてもよい。
【0081】
いくつかの実施形態において、MFO310は、サイクル検出アルゴリズムを利用して、サイクル(たとえば、サービスAがサービスBに依存し、逆もまた同様)の有無を検出するようにしてもよい。MFO310は、孤立ケイパビリティの依存関係を識別することができる。たとえば、MFO310は、他のノードにつながっていない構築依存関係グラフ338の孤立ノードを識別することができる。MFO310は、(たとえば、ケイパビリティの発行が時期尚早で、対応する機能が実際にはまだ利用可能となっていない場合に)不当に発行されたケイパビリティを識別するようにしてもよい。MFO310は、グラフから、同じケイパビリティを発行する1つまたは複数のインスタンスが存在することを検出し得る。いくつかの実施形態において、任意好適な数のこれらのエラーが検出されるようになっていてもよく、MFO310(または、CIOSセントラル304等、別の好適なコンポーネント)は、(たとえば、電子的通知、ユーザインターフェース等を介して)この情報をユーザに通知あるいは提示するように構成されていてもよい。いくつかの実施形態において、MFO310は、リソースの強制削除/再作成によって循環依存関係を解消するように構成されていてもよく、また、これらのリソースおよび/または対応するフロック設定のブートストラップ動作を実行することをCIOSセントラル304に再度指示するようにしてもよい。
【0082】
開始ノードがViBEフロックのブートストラップに対応し、第2のノードがDNSのブートストラップに対応していてもよい。ステップ10~15は、(
図2のデプロイメントオーケストレータ218の一例であるデプロイメントオーケストレータ317による)ViBEフロックのViBE316(たとえば、
図1および
図2それぞれのViBE116および202の一例)へのデプロイメントに対応する。すなわち、
図3のステップ10~15は大略、
図2のステップ1~6に対応する。ViBEフロックのデプロイメントに対応する(たとえば、
図2のケイパビリティサービス208およびワーカ210に対応するケイパビリティサービス318およびワーカ320が利用可能であることを示す)ケイパビリティが存在するものと通知されたら、MFO310は、構築依存関係グラフ338の通過を再開し、実行すべき次の動作を識別する。
【0083】
一例として、MFO310は、構築依存関係グラフ338の通過を継続して、DNSフロックがデプロイされるものと識別するようにしてもよい。ステップ16~21の実行によって、DNS322(
図2のDNS212の一例)をデプロイするようにしてもよい。これらの動作は大略、
図2のステップ7~12に対応していてもよい。
【0084】
ステップ21において、DNS322が利用可能であることを示すケイパビリティが格納されてもよい。このケイパビリティの検出に際して、MFO310は、構築依存関係グラフ338の通過を再開するようにしてもよい。この通過に際して、MFO310は、CIOSリージョナル(たとえば、CIOSリージョナル314の一例)のインスタンスの任意好適な部分がViBE316にデプロイされるものと識別するようにしてもよい。いくつかの実施形態において、ステップ16~21は、CIOSリージョナル(ViBE)326(CIOSリージョナル314、
図1のCIOSリージョナル110のインスタンス)およびワーカ328のViBE316へのデプロイメントに関して実質的に繰り返されてもよい。また、CIOSリージョナル(ViBE)326が利用可能である旨のケイパビリティがケイパビリティサービス318に送信されてもよい。
【0085】
CIOSリージョナル(ViBE)326が利用可能であることの検出に際して、MFO310は、構築依存関係グラフ338の通過を再開するようにしてもよい。この通過に際して、MFO310は、デプロイメントオーケストレータ(たとえば、デプロイメントオーケストレータ317の一例であるデプロイメントオーケストレータ330)がViBE316にデプロイされるものと識別するようにしてもよい。いくつかの実施形態において、ステップ16~21は、デプロイメントオーケストレータ330のデプロイメントに関して実質的に繰り返されてもよい。また、デプロイメントオーケストレータ330が利用可能であることを示すケイパビリティを識別する情報がケイパビリティサービス318に送信されてもよい。
【0086】
デプロイメントオーケストレータ330がデプロイされた後は、後続のリクエストの処理に対してViBE316が利用可能と考えられ得る。デプロイメントオーケストレータ330が利用可能であるとの検出に際して、MFO310は、ホストリージョンの構成要素(ホストリージョン332の構成要素)を利用するのではなく、ViBEの構成要素に対する後続のブートストラップリクエストのルーティングを指示するようにしてもよい。このため、MFO310は、CIOSセントラル304を介したViBE316へのフロックデプロイメントを指示する各ノードにおいて、構築依存関係グラフ338の通過を継続することができる。CIOSセントラル304は、フロック設定に従ってリソースをデプロイすることをCIOSリージョナル(ViBE)326に要求するようにしてもよい。
【0087】
このプロセスのある時点において、ターゲットリージョン334が利用可能となり得る。ターゲットリージョンが利用可能である旨の指標は、(たとえば、リージョンデータの更新情報として)ユーザ302により提供されているターゲットリージョン334のリージョンデータから識別可能となり得る。ターゲットリージョン334の可用性は、ターゲットリージョン334と外部ネットワーク(たとえば、インターネット)との間のネットワーク接続の確立に依存し得る。ネットワーク接続は、パブリックネットワーク(たとえば、インターネット)上でサポートされ得るが、ソフトウェアセキュリティツール(たとえば、IPSec)の使用によって、ViBE316からターゲットリージョン334への1つまたは複数の暗号化トンネル(たとえば、トンネル336等のIPSecトンネル)を提供するようにしてもよい。本明細書における使用の場合、「IPSec」は、インターネットプロトコル(IP)を使用するネットワーク上のネットワークトラフィックを認証および暗号化するためのプロトコル一式を表し、プロトコル一式の1つまたは複数の利用可能な実施態様(たとえば、Openswan、Libreswan、strongSwan等)を含み得る。ネットワークは、ViBE316をターゲットリージョン334のサービスエンクレーブに接続することができる。
【0088】
IPSecトンネルの確立に先立って、ターゲットリージョン334への最初のネットワーク接続は、IPSecゲートウェイがターゲットリージョン334内のアセット(たとえば、ベアメタルアセット)にデプロイされるまで、ネットワーキングサービスのブートストラップを可能にするのに十分な接続(たとえば、帯域外VPNトンネル)となり得る。ターゲットリージョン334のネットワークリソースをブートストラップするため、デプロイメントオーケストレータ330は、ターゲットリージョン334内のアセットにおいてIPSecゲートウェイをデプロイすることができる。そして、デプロイメントオーケストレータ330は、ViBE316からのIPSecトンネルを終端するように構成されているターゲットリージョン334において、VPNホストをデプロイするようにしてもよい。ViBE316中のサービス(たとえば、デプロイメントオーケストレータ330、サービスA等)がターゲットリージョン334中のVPNホストとのIPSec接続を確立可能となったら、ViBE316からターゲットリージョン334へのブートストラップ動作が開始となり得る。
【0089】
いくつかの実施形態において、ブートストラップ動作は、ターゲットリージョン334におけるリソースのプロビジョニングによって、ViBE316からデプロイされるコアサービスのインスタンスのホストをサポートするViBE316中のサービスで開始となり得る。たとえば、ホストプロビジョニングサービスは、ターゲットリージョン334におけるインフラ(たとえば、ベアメタルホスト)へのハイパーバイザのプロビジョニングによって、VM用のコンピューティングリソースを割り当てるようにしてもよい。ホストプロビジョニングサービスは、ターゲットリージョン334における物理的リソースの割当てを完了した場合、ターゲットリージョン334中の物理的リソースが割り当てられたことを示すケイパビリティを示す情報を発行するようにしてもよい。このケイパビリティは、(たとえば、ワーカ328により)CIOSリージョナル(ViBE)326を介してケイパビリティサービス318に発行されてもよい。
【0090】
ターゲットリージョン334のハードウェア割当てが確立され、ケイパビリティサービス318に対してポストされた状態で、CIOSリージョナル(ViBE)326は、ViBE316からターゲットリージョン334へのコアサービスのインスタンスのデプロイメントを編成することができる。このデプロイメントは、ViBE316の構築に関して上述したプロセスに類似し得るが、ホストリージョン332のサービスエンクレーブの構成要素の代わりに、ViBEの構成要素(たとえば、CIOSリージョナル(ViBE)326、ワーカ328、デプロイメントオーケストレータ330)を使用する。デプロイメント動作は大略、上述のステップ16~21に対応していてもよい。
【0091】
ViBE316からターゲットリージョン334にサービスがデプロイされた場合、当該サービスと関連付けられているDNSレコードは、ViBE316中のサービスのインスタンスに対応し得る。サービスと関連付けられているDNSレコードは、サービスのターゲットリージョン334へのデプロイメントを完了するため、後で更新されてもよい。言い換えると、ViBE316中のサービスのインスタンスは、DNSレコードが更新されるまで、サービスへのトラフィック(たとえば、リクエスト)の受信を継続するようにしてもよい。サービスがターゲットリージョン334に部分的にデプロイされていてもよく、また、サービスが部分的にデプロイされている旨のケイパビリティを示す情報を(たとえば、ケイパビリティサービス318に)発行するようにしてもよい。たとえば、ViBE316において動作するサービスが対応するコンピュートインスタンス、負荷分散器、および関連するアプリケーションならびに他のソフトウェアとともにターゲットリージョン334にデプロイされてもよいが、デプロイメントの完了前に、データベースのデータがターゲットリージョン334に移動するのを待機することが必要となり得る。(たとえば、DNS322が管理する)DNSレコードは、依然としてViBE316中のサービスと関連付けられていてもよい。サービスのデータ移動が完了したら、ターゲットリージョン334にデプロイされた運用サービスを指すように、DNSレコードが更新され得る。その後、ターゲットリージョン334においてデプロイされたサービスが当該サービスのトラフィック(たとえば、リクエスト)を受信する一方、ViBE316中のサービスのインスタンスは、当該サービスのトラフィックを受信しなくてもよい。
【0092】
リエントリサービスデプロイメント
本開示は一般的に、データセンタの構築に関する。より詳細には、一組のサービスを提供するように構成されているデータセンタを構築するためのリソースおよびインフラの作成、プロビジョニング、およびデプロイメントのための技術が記載される。また、サービスをリリースして複数のリリースを実行するための技術が提供される。リリースが過去にスケジューリングおよび実行されているサービスについて、サービスの任意選択のケイパビリティ依存関係がデータセンタにおいて発行されている(利用可能である)ことに応答して、第2のリリースがサービスに対してスケジューリングされ得る。
【0093】
ある実施態様において、構築されているデータセンタにおいて提供されるサービスが他のリソースおよびサービスに依存し得る。依存関係としては、必要な依存関係または任意選択の依存関係が可能である。サービスが使用するリソースは、サービスのリリースのスケジューリングおよび実行により、データセンタにおいてプロビジョニングおよびデプロイメントがなされる。サービスのリリースは、サービスの必要な依存関係がすべて満たされる場合(または、データセンタにおいて発行もしくは可用化される場合)、任意選択の依存関係が満たされていなくてもスケジューリングおよび実行され得る。リリースの実行の結果として、サービスが使用するリソースが作成およびデプロイされる。サービスの必要な依存関係がすべて満たされた結果としてリリースが既にスケジューリングおよび実行されているサービスの場合、サービスの任意選択の依存関係が後で満たされた場合は、当該サービスに対して第2のリリースがスケジューリングおよび実行され得る。この第2のリリースをリエントリデプロイメントまたはリエントリリリースと称する。第2のリリースは、サービスの付加的なリソースを作成可能である。サービスに対して1つまたは複数のリエントリリリースがスケジューリングおよび実行されるようになっていてもよく、各リエントリリリースおよびその実行がサービスの付加的なケイパビリティを潜在的に有効化する。
【0094】
ある実施態様において、ケイパビリティは、サービスと関連付けられている機能単位を識別し、サービスと関連付けられている一組のリソースを表し得る。ケイパビリティは、一組の1つまたは複数のリソースを表すことができ、リソースは、ソフトウェアまたはハードウェアリソース、機能、サービス等であってもよい。ケイパビリティは、ケイパビリティラベルによって識別され得る。ケイパビリティラベルの例としては、「Capability_A」、「Capability_B」、「Capability_C」等が挙げられる。たとえば、Capability_AというラベルのケイパビリティがリソースR1およびR2に対応し、Capability_A={R1,R2}と示され得る。同様に、Capability_B={R3}、Capability_C={R4,R5,R6}等がある。
【0095】
ケイパビリティは、当該ケイパビリティに対応するリソースがすべて、データセンタにおいて意図する目的で作成され、デプロイされ、使用可能である場合に、データセンタ等のコンピューティング環境において発行(または、有効化もしくは可用化)されるものと考えられる。上記例において、Capability_Aに対応するリソースR1およびR2がデータセンタにおいて作成およびデプロイされ、それらの意図する目的での使用の準備が整っている場合に、Capability_Aがデータセンタに関して発行されるものと考えられる。
【0096】
データセンタは、さまざまなサービスを提供し得る。あるサービスに関して、当該サービスの提供に使用または必要とされる一組の1つまたは複数のリソースは、当該サービス用のフロックと称する。フロックは、1つまたは複数のリソースを含み得る。フロックは、通常はサービスの提供を担う一組の管理されたリソースを表す。サービス用のフロック関連情報は、当該サービスのフロック設定の一部として宣言されている。サービスのフロック設定は通常、ファイルの形態で格納されているため、当該サービスのフロック設定ファイルとも称する。サービスのフロック設定は、当該サービスと関連付けられているフロック(たとえば、当該サービスと関連付けられているインフラコンポーネントおよびアーチファクトを含む一組のリソース)を記述する。サービスのフロック設定は、サービスと関連付けられているリソースの所望の状態に対応する1つまたは複数の態様を指定する宣言文を含み得る。フロック設定は、フロックリソースと関連するさまざまな設定および構成ならびにサービスと関連する他のパラメータを識別し得る。ある実施態様において、フロック設定がTerraformコードを含み、フロック設定ファイルがTerraformファイルである。
【0097】
複数のサービスを提供するように構成されている通常のデータセンタ環境において、サービスが他のサービスまたはリソースに依存関係を有し得る。たとえば、サービスBは、(潜在的に、サービスAを使用することから)当該サービスBがブートストラップ可能となる前にサービスAが存在していることを必要とし得る。サービスCは、データセンタにおいて当該サービスCがブートストラップ可能となる前にサービスBが存在していることを必要とし得る。このように、サービス間には、複数の依存関係が存在し得る。ある実施態様において、ケイパビリティの使用によって、これらの依存関係が明確に表現される。たとえば、サービスのフロック設定は、サービスが依存する如何なるケイパビリティをも識別可能である。サービスが依存するケイパビリティは、サービスのケイパビリティ依存関係と称する(サービスのフロック設定のケイパビリティ依存関係とも称する)。
【0098】
サービスと関連付けられているフロック(サービスフロックとも称する)は、当該サービスに指定されたフロック設定に記述されている。フロック設定は、フロック設定ファイルの形態であってもよい。サービスのケイパビリティ依存関係は、当該サービス用のフロックのケイパビリティ依存関係とも称する。サービスのケイパビリティ依存関係(たとえば、サービスフロックのケイパビリティ依存関係)は、必要なケイパビリティ依存関係であってもよいし、任意選択のケイパビリティ依存関係であってもよい。サービス(または、サービスフロック)の必要なケイパビリティ依存関係は、当該サービスまたはサービスフロックに関してリリースがスケジューリング可能となる前に、データセンタにおいてケイパビリティの発行または有効化が必要となるものである。サービスフロックの任意選択のケイパビリティ依存関係は、当該任意選択のケイパビリティ依存関係(任意選択のケイパビリティ)がデータセンタにおいて発行されていない場合に、当該フロックに対する任意必要なケイパビリティ依存関係が満たされている限りは、当該サービスフロックのリリースの実行が依然としてスケジューリングされ得るものである。したがって、任意選択のケイパビリティ依存関係は、サービスのリリースをブロックしない。任意選択のケイパビリティ依存関係が利用可能となった場合または発行された場合は、当該サービスフロックの別のリリースがスケジューリングされ、実行される。このように、サービス用のフロックは潜在的に、複数回リリースされて実行される可能性もある(サービスフロックのリリースのリエントリ性と称する場合もある)。一般的には、サービスの必要なケイパビリティ依存関係が発行されたものの、1つまたは複数の任意選択のケイパビリティ依存関係がまだ発行され得ない場合に、サービスのリリースがスケジューリングおよび実行される。サービスフロックの1つまたは複数の任意選択のケイパビリティ依存関係が発行されておらず、利用可能でもない場合のリリースおよびその後の実行は、ケイパビリティを全部ではなく一部しか有し得ないサービスのバージョンのインスタンス化となってしまう。必要とされるか任意選択であるかに関わらず、すべてのサービスフロックがケイパビリティ依存関係を有する必要があるわけではないことに留意する。
【0099】
サービスのケイパビリティ依存関係は、サービスのフロック設定において明示的に宣言されている場合もあるし、サービスのフロック設定から(後述のようなMFOにより)暗示的に判定される場合もある。ケイパビリティ依存関係がフロック設定において明示的に宣言されている場合、このフロック設定は、ケイパビリティ依存関係を明示的に宣言するコードまたはメタデータを含む。他の場合には、フロック設定中のコードから(たとえば、MFO106がフロック設定を読み出して解析する場合は、このMFO106により)ケイパビリティ依存関係が推測されるようになっていてもよい。サービスのフロック設定は、当該フロック設定により指定されたサービスフロックについて、0個以上の必須のケイパビリティを識別し得る。したがって、サービスは、ケイパビリティ依存関係を有する必要がない。
【0100】
サービス用のフロックのリリースおよび実行の結果として、1つまたは複数のケイパビリティがデータセンタにおいて発行される可能性がある(ただし、必ずしも発行されるわけではない)。サービスフロックのリリースの実行により発行された任意のケイパビリティを識別する情報についても、サービスのフロック設定において宣言されている。ある実施態様(
図1に示される実施形態等)において、MFO106がサービスフロックのリリースをスケジューリングする。そして、たとえば
図1のCIOSセントラル108およびCIOSリージョナル110によってリリースが実行され、リリースの実行に成功すると、0個以上のケイパビリティがデータセンタにおいて発行され得る。このように、サービスフロックのリリースおよび対応する実行によって、付加的なケイパビリティがデータセンタにおいて発行されることになる。
【0101】
ある実施態様(
図1に示される実施形態等)において、データセンタが特定の一組のサービスを提供することになるリージョンにおいてデータセンタを構築するプロセスの一部として、特定の一組のサービスのフロック設定がMFO106に与えられる。その後、MFO106は、これらのフロック設定ファイルを読み出して解析し、フロック設定により記述されているフロックごとに、フロックのケイパビリティ依存関係(存在する場合)と、フロックの1つまたは複数のリリースの実行に際して発行されたケイパビリティ(存在する場合)と、を識別する。その後、MFO106は、非巡回依存関係グラフを構築して、フロック設定と対応するフロックとの間のさまざまなケイパビリティ依存関係を表す。また、依存関係グラフは、複数のフロック設定により識別されたケイパビリティの依存関係順序を識別する。MFO106は、識別された依存関係に基づいて、任意好適な数のデータ構造を生成することができる。これらのデータ構造(たとえば、有向グラフ、有向非巡回グラフ、連結リスト等)は、リージョンにおいて1つまたは複数のデータセンタを構築するための動作(リージョン構築の実行とも称する)の推進のため、CIOS102(たとえば、MFO106、CISOセントラル108、CIOSリージョナル110)により利用され得る。フロック設定の解析および非巡回依存関係グラフの生成においてMFO106が実行する処理は、静的フロック分析と称する場合もある。
【0102】
異なるサービスに対応するフロック設定において指定された異なるフロック間のケイパビリティ依存関係は、以下の例により示すことができる。サービスAのフロック設定(FC_A)は、サービスA用のフロック(F_A)を指定する。FC_Aは、F_Aの如何なるケイパビリティ依存関係も識別しないが、フロックF_Aのリリースおよび実行の成功によってCapability_Aが発行されたことは識別する。フロック設定(FC_B)は、サービスB用のフロック(F_B)と関連する情報を指定することができ、Capability_Aが必要なケイパビリティ依存関係であることと、サービスB用のフロックF_Bの実行の成功によってCapability_Bが発行されたこととを示すことができる。フロック設定(FC_C)は、サービスC用のフロック(F_C)の情報を指定することができ、Capability_Bが必要なケイパビリティ依存関係であることと、サービスC用のフロックF_Cのリリースおよび実行の成功によりデータセンタに対してCapability_Cが発行されたこととを示すことができる。これらのフロック設定を所与として、MFO106により生成された依存関係グラフは、以下を識別する。
FC_A(F_A)→Capability_A→FC_B(F_B)→Capability_B→FC_C(F_C)→Capability_C
F_Aがケイパビリティ依存関係を有さない場合は、データセンタにおいて、F_Aのリリースおよび実行により、F_Bの必要なケイパビリティ依存関係であるCapability_Aが発行され、F_Bのリリースおよび実行により、F_Cの必要なケイパビリティ依存関係であるCapability_Bが発行され、F_Cのリリースおよび実行により、Capability_Cが発行される。ケイパビリティに関して、依存関係グラフは以下の通りである。すなわち、Capability_BがCapability_Aに依存し、Capability_CがCapability_Bに依存し、Capability_A→Capability_B→Capability_Cと表される。このように、データセンタについてMFO106により生成される依存関係グラフは、データセンタにおいてインスタンス化されるさまざまなサービスに対応するフロック設定における宣言またはフロック設定からの推測がなされる複数のケイパビリティ間の依存関係を識別する。
【0103】
(Capability_A→Capability_B→Capability_C)の依存関係例に関しては、Capability_BをCapability_Cの直接的依存関係と称する。同様に、Capability_AをCapability_Bの直接的依存関係と称する。また、Capability_AをCapability_Cの間接的依存関係と称する。Capability_Aが別のケイパビリティに依存するなら、この別のケイパビリティもCapability_Cと間接的依存関係になり、以下同様である。一般的に、階層的な依存関係グラフにおいて、グラフ中の特定のケイパビリティXに関して、ケイパビリティXのグラフにおける親ケイパビリティをケイパビリティXの直接的ケイパビリティ依存関係と称する。親ケイパビリティのグラフ中の先祖ケイパビリティはすべて、ケイパビリティXの間接的ケイパビリティ依存関係と称する。依存関係グラフ中のケイパビリティは、複数レベルの間接的ケイパビリティ依存関係を有し得る。
【0104】
そして、MFOは、データセンタにおいて発行されたケイパビリティの可用性に基づいて、個々のサービスフロックのリリースをスケジューリングする。上記例において、ケイパビリティ依存関係はすべて、必要なケイパビリティ依存関係であって、Capability_BがCapability_Aに依存し、Capability_CがCapability_Bに依存するものと仮定すると、MFOは最初に、サービスA用のフロックF_Aのリリースをスケジューリングすることになる。リリースの実行に成功すると、データセンタにおいてCapability_Aが発行される。そして、MFO106は、サービスB用のフロックF_Bの必要なケイパビリティ依存関係(すなわち、Capability_A)が満たされたものと判定した後、サービスB用のフロックF_Bのリリースをスケジューリングすることになる。サービスBのリリースの実行に成功すると、データセンタにおいてCapability_Bが発行される。そして、MFO106は、サービスC用のフロックF_Cの必要なケイパビリティ依存関係(すなわち、Capability_B)が満たされたものと判定した後、サービスC用のフロックF_Cのリリースをスケジューリングすることになるが、その結果として、Capability_Cが発行される。このように、スケジューリングおよび実行されるフロックのリリースの数が増えるほど、データセンタ環境において発行されるケイパビリティの数も増えるため、データセンタ環境において付加的なリリースがトリガされる。
【0105】
リエントリリリースおよびデプロイメントは、サービス用のフロックが少なくとも1つの任意選択のケイパビリティ依存関係を有する場合に発生する。任意選択のケイパビリティ依存関係は、サービスのフロック設定において明示的に宣言されている場合もあるし、サービスのフロック設定から推測される場合もある。ある場合に、任意選択の依存関係は通常、条件文(たとえば、COUNTが1より大きい場合はX、それ以外の場合はY)に結び付けられているものである。前述の通り、依存関係が必要とされるか任意選択であるかの識別は、静的フロック分析中にMFOにより実行される。
【0106】
上述の通り、必要なケイパビリティ依存関係がすべて発行された場合は、サービスフロックの1つまたはすべての任意選択のケイパビリティ依存関係が発行されていなくても、サービス用のフロックのリリースがスケジューリングおよび実行される。たとえば、上記例において、サービスB用のフロックF_Bの必要なケイパビリティ依存関係であるCapability_Aが発行された場合は、F_Bのリリースがスケジューリングおよび実行される。ここで、サービスBのフロック設定FC_Bは、フロックF_Bが付加的な任意選択のケイパビリティ依存関係「Capability_D」を有することをさらに指定するものと仮定する。Capability_Dは、Capability_Aが発行された後にF_Bのリリースが既にスケジューリングおよび実行された後、データセンタにおいて発行されるようになっていてもよい。その後、Capability_Dが発行された場合は、フロックF_Bに対して別のリリース(リエントリリリース)がスケジューリングおよび実行される。任意選択のケイパビリティ依存関係Capability_Dではなく、必要なケイパビリティ依存関係Capability_Aのみが発行された場合のF_Bの初期リリースおよび実行は、ケイパビリティを全部ではなく一部しか有し得ないサービスBのバージョンのインスタンス化となり得る。任意選択のケイパビリティ依存関係Capability_Dが満たされた場合、フロックF_Bのリエントリリリースおよび実行は、すべてのケイパビリティを有するサービスBのバージョンのインスタンス化となり得る。
【0107】
ある実施態様において、MFO106は、必要なケイパビリティ依存関係が発行された場合の初期リリースまたは任意選択のケイパビリティ依存関係が発行された場合のリエントリリリースについて、サービス用のフロックの「パス」を準備することにより、リリースをスケジューリングするようにしてもよい。リリース/パスは、特定の実行ターゲットを識別し得る。その後、MFO106は、準備されたリリース/パスをCIOSセントラル108に提供して実行する。その後、CIOSリージョナル110との協調によって、CIOSセントラル108がリリース/パスを実行する。ある実施態様において、リリース/パスの実行には、リリースに対する「計画」の準備およびその後の計画の実行を伴う。計画の準備の一部として、実行が起こるサービスに関してターゲットシステム(たとえば、ターゲットデータセンタ)の現在の状態が判定され、(リリースにおいて示されるような)ターゲットシステムの最終の所望状態が判定される。その後、現在の状態から最終状態へのターゲットシステムの遷移のための計画が生成される。そして、この計画は、(適用コマンドの使用により)適用されるか、または、実行される。実行が成功であるものと仮定すると、実行の結果として、0個以上のケイパビリティがデータセンタにおいて発行され得る。これらのケイパビリティは、他のいくつかのフロックの(必要なまたは任意選択の)依存関係を満たすことができる。
【0108】
以下は、必要なおよび任意選択のケイパビリティを宣言するフロック設定部分の例である。
【0109】
ad = module.service_availability_domain.availability_domain
pool = module.service_availability_domain.pool_name
}
resource "odo_deployment" deploy_tenancy_creator {
ad = module.service_availability_domain.availability_domain
alias = "${local.serviceName}${local.serviceSuffix}"
artifact {
url = local.artifact_versions["tenancy-creator"].uri
build_tag = local.artifact_versions["tenancy-creator"].version
type = local.artifact_versions["tenancy-creator"].type
}
node_ids = [ data.odo_nodes.deployment_node.nodes[0].resource_id ]
}
|resource "capability" "tenancy_creator_initial_tenancies_created" {
name = "tenancy_creator_initial_tenancies_created"
depends_on = [ odo_deployment.deploy_tenancy_creator ]
}
# ブートストラップに必要としない依存関係を有する場合は、これを実行する
# 注意:これは、データソースであって、リソースではない
data "capability" "get_alarm_available" {
# このフィールドは、依存する実際のケイパビリティの名称である
name = "telemetry_alarm"
}
// リソース例
resource "telemetry_alarm" heartbeatAlarm {
# ここで、「count=」パターンは、基礎となるサービスが利用可能になるまでリソースの構築を遅らせる
count = data.capability.get_alarm_available.available ? 1 : 0
compartment_id = var.compartment_id
display_name = "Missing Host Heartbeat in Fleet - ${var.fleet_name}"
query = "ServiceHostReporter.heartbeat[1m].groupBy(host).absent()"
pending_duration = var.pending_duration
project = var.project_name
fleet = var.fleet_name
severity = var.severity.normal
is_enabled = true
body = <<BODY
図4は、ある実施形態に係る、リエントリリリースをスケジューリングするために実行される処理を示す簡易フローチャート400である。
図4に示される処理は、それぞれのシステムの1つまたは複数の処理ユニット(たとえば、プロセッサ、コア)が実行するソフトウェア(たとえば、コード、命令、プログラム)にて実装されていてもよいし、ハードウェアを使用して実装されていてもよいし、これらの組合せにて実装されていてもよい。ソフトウェアは、非一時的記憶媒体(たとえば、メモリデバイス)に格納されていてもよい。
図4に提示される後述の方法は、例示であって、何ら限定の意図はない。
図4は、特定の順番または順序で発生するさまざまな処理ステップを示すが、何ら限定の意図はない。ある代替実施形態において、この処理は、何らかの異なる順序で実行されるようになっていてもよいし、いくつかのステップが並列に実行されるようになっていてもよい。ある実施形態(
図1に示される実施形態等)において、
図4に示される処理がCIOSセントラル108、CIOSリージョナル110、およびケイパビリティサービス112との協調によって、MFO106により実行されるようになっていてもよい。
【0110】
図1に示される実施形態において、データセンタにおいて新たなケイパビリティが発行された(たとえば、利用可能になった)ものとMFO106が判定した場合に処理がトリガされ得る。たとえば、
図1に示される実施形態において、ケイパビリティサービス112は、発行されたケイパビリティの追跡を担う。データセンタにおけるさまざまなサービス用のフロックのリリースの実行の成功等によって、新たなケイパビリティが発行されると、ケイパビリティサービス112は、発行されたケイパビリティを追跡して、他のシステムで情報を利用可能にする。たとえば、新たなケイパビリティが発行された場合、MFO106は、新たなケイパビリティが発行された旨の信号をケイパビリティサービス112から受信し、この信号は、新たなケイパビリティを識別する情報を含み得る。別の実施形態において、MFO106は、ケイパビリティサービス112への問い合わせを行うとともに、402において判定された新たな特定のケイパビリティを含む新たに発行されたケイパビリティ(または、発行されたすべてのケイパビリティのリスト)を識別する応答を受信するようにしてもよい。
【0111】
いくつかの他の実施態様において、他の技術の使用により、データセンタに関して発行されたケイパビリティを追跡するようにしてもよい。たとえば、発行されたケイパビリティを識別するレジストリまたはデータベースが維持されていてもよい。MFO106は、このレジストリまたはデータベースへの問い合わせによって、どの新たなケイパビリティが発行されたかを見出すようにしてもよい(または、新たなケイパビリティがこのデータベースまたはレジストリに追加された場合に信号を受信するようにしてもよい)。
【0112】
404において、MFO106は、402において識別した新たに発行されたケイパビリティが、特定のフロックのリリースが過去にスケジューリングされ、その実行に成功した特定のサービス用の特定のフロックの任意選択のケイパビリティ依存関係であるものと判定するようにしてもよい。過去のリリースのスケジューリングおよびその後の実行の結果として、特定のサービスは、データセンタにおいていくつかのケイパビリティで既に機能している。ある実施態様において、MFO106は、静的フロック分析の実行(たとえば、データセンタがサポートするサービスと関連付けられているフロック設定の解析および読み出し)により当該MFO106が生成した非巡回依存関係グラフを使用して、新たに発行されたケイパビリティが特定のサービスおよびその関連するフロックの任意選択のケイパビリティ依存関係であるものと判定する。
【0113】
406において、MFO106は、特定のフロックの新たな「リエントリ」リリースをスケジューリングする。ある実施態様において、406の処理の一部として、データセンタの構築の進行にリリースが必要であるものとMFO106が判定した場合、結果としての計画、承認、および適用は、パスと称するカプセル化モデルにて取り込まれる。その後、MFO106は、パスを使用してリリースを推進する。このような実施形態において、406の一部として、MFO106は、スケジューリングされているリリースのパスを作成する。
【0114】
408において、協調動作するCIOSセントラル110およびCIOSリージョナル110は、406においてMFO106によりスケジューリングされたリリースを実行する。
【0115】
408のリリースの実行が成功であるものと仮定すると、410において、MFO106によって、実行の成功を示すように、特定のフロックと関連付けられているメタデータを更新するようにしてもよい。ある実施態様において、特定のフロックのフロック設定と関連付けられているメタデータが更新されるようになっていてもよい。
【0116】
また、412において、実行に成功して新たなケイパビリティ(または、複数の新たなケイパビリティ)が発行された場合は、この情報が持続され、関心システムコンポーネントに提供されるようになっていてもよい。たとえば、ケイパビリティサービス112には、新たに発行されたケイパビリティに関する報知がなされ得る。データセンタに関して発行されたサービスの追跡にレジストリまたはデータベースが使用されている場合は、新たなケイパビリティの発行を示す情報によって、当該レジストリまたはデータベースが更新されるようになっていてもよい。
【0117】
リリースの実行の成功によって、0個以上の新たなケイパビリティがデータセンタに対して発行され得る。したがって、この特定のサービスは、1回または複数回の過去のリリース実行の成功により、データセンタにおいてあるケイパビリティで既に機能しているものであるが、ここでは、408におけるリエントリリリースの実行の成功により、付加的なケイパビリティが追加されている可能性がある。
【0118】
一例として、このサービスは、データセンタにおいて認証および許可機能を提供するように構成されているアイデンティティ管理サービスであってもよい。アイデンティティ管理サービスのフロック設定は、サービスの1つまたは複数の必要なおよび任意選択のケイパビリティ依存関係を識別し得る。MFO106は、サービスの必要な1つまたは複数のケイパビリティ依存関係がすべて満たされた(たとえば、データセンタにおいて発行された)ものと判定した場合、リリースのスケジューリングの時点でサービスの任意選択のケイパビリティ依存関係のうちの1つまたは複数が満たされていなくても(たとえば、データセンタにおいて、任意選択のケイパビリティ依存関係のうちの1つまたは複数が発行されていなくても)、当該サービスの初期リリースをスケジューリングし得る。CIOSセントラル108およびCIOSリージョナル110によるこのリリースの実行の成功により、アイデンティティ管理サービスがデータセンタに対してインスタンス化され、ある認証および許可機能を提供し得る。MFO106は、その後の時点で、アイデンティティ管理サービスの任意選択のケイパビリティ依存関係が新たに発行されたものと判定した場合、
図4に示される上述の処理ごとにサービスの新たなリエントリリリースをスケジューリングし得る。(たとえば、上記408の)新たなリリースの実行の成功によって、付加的なケイパビリティがアイデンティティ管理サービスに追加され得る。たとえば、アイデンティティ管理サービスは、新たなリエントリリリースの実行後、初期リリース後では不可能であった特定の技術(OAUTH2.0(Open Authorization)許可等)の使用により、許可を実行可能となり得る。
【0119】
上述のように、サービスに対して、複数のリリースがスケジューリングおよび実行され得る。最初のリリースは、サービスのフロック設定において示されるようなサービスの必要なケイパビリティ依存関係がすべて満たされ、可用化または発行された後、MFO106によってスケジューリングされ得る。この最初のリリースおよび実行によって、サービスにあるケイパビリティが追加され得る。サービスの任意選択のケイパビリティ依存関係がデータセンタにおいて利用可能となったら、サービスに対して、1つまたは複数の後続のリリースがスケジューリングおよび実行され得る。これら1つまたは複数の後続のリリースおよび実行の結果として、付加的な拡張されたケイパビリティがサービスに追加され得る。したがって、サービスの任意選択のケイパビリティ依存関係が発行されると、サービスに対応するフロック設定が再アクセスされ、サービス(すなわち、サービスに対応するフロック)に対して付加的なリリースがスケジューリングおよび実行される。これをサービスデプロイメントのリエントリ性と称するのは、同じサービス(または、同じサービスフロック)のプロビジョニングおよびデプロイメントが経時的に複数回なされるためである。
【0120】
上述の通り、408におけるリリースの実行の成功によって、0個以上の付加的なケイパビリティがデータセンタに対して発行され得る。場合により、408の実行の結果として発行される新たなケイパビリティは、同じサービス(すなわち、同じサービスフロック)の別の任意選択のケイパビリティ依存関係であってもよい。このような状況において、MFO106は、サービスの第2の任意選択のケイパビリティ依存関係が満たされたものと判定し、これに応答して、サービスフロックのさらに別のリエントリリリースをスケジューリングするようにしてもよく、当該第2のリエントリリリースの実行のために、
図4の処理に従ってもよい。
【0121】
リリース/パスの統合
いくつかの状況において、発行されたケイパビリティがサービス用のフロックの任意選択のケイパビリティ依存関係である小さな時間ウィンドウにおいて、複数のケイパビリティが発行され得る。このシナリオにおいて、MFO106は、任意選択のケイパビリティ依存関係が利用可能となった場合、同じサービスフロックに関して、経時的に複数のリリースをスケジューリングし、複数のリリースに対して複数のパスを作成するようにしてもよい。ある実施態様において、MFOは、データセンタにおけるサービスフロックに対して複数のリリースをスケジューリングするためのスケジューリングキューを実装するように構成されていてもよい。特定のサービス用の特定のフロックに対してリリースがスケジューリングされた場合、MFO106は、当該フロックに対するパスを作成し、このパスをスケジューリングキューに追加する。その後、CIOSセントラル108は、キューの先頭のリリースを起点として、実行に対してスケジューリングされたリリース(たとえば、リリースに対応するパス)をキューから選択し、CIOSリージョナル110と協調してリリースを実行する。
【0122】
MFOは、サービスフロックに対して複数のリリースをスケジューリングするためのさまざまな種類のスケジューリングキューを実装するように構成されていてもよい。
図5は、ある実施形態に係る、
図1に示されるMFOにより実装されたスケジューリングキューの例示的な図である。一実施態様において、MFOは、データセンタにおいて異なるサービスフロックにより共有される汎用スケジューリングキュー502を生成するように構成されていてもよい。たとえば、
図5に示される実施形態において、汎用スケジューリングキュー502は、データセンタにおいてサービスAおよびサービスBにより共有され、サービスA用のフロックの実行に対してスケジューリングされたリリース(SA,R1)504および(SA,R2)508と、サービスB用のフロックの実行に対してスケジューリングされたリリース(SB,R1)506および(SB,R2)510とを含む。
【0123】
ある実施態様において、MFOは、データセンタにおいて異なるサービスフロックのフロック固有キューを生成するように構成されていてもよい。たとえば、
図5に示されるように、スケジューリングキュー512は、サービスA用のフロックの実行に対してスケジューリングされたリリース(SA,R1)504および(SA,R2)508を含むサービスAのフロック固有キューである。スケジューリングキュー514は、サービスB用のフロックの実行に対してスケジューリングされたリリース(SB,R1)506および(SB,R2)510を含むサービスBのフロック固有キューである。
図5に示されるスケジューリングキュー502、512、および514は、例示を目的としているに過ぎず、何ら限定の意味はない。ある代替実施形態において、スケジューリングキューは、データセンタにおけるサービスフロックに対してスケジューリングされたリリースをより多く格納するように構成されていてもよいし、より少なく格納するように構成されていてもよい。
【0124】
上述のキュー構造(すなわち、スケジューリングキュー502、512、および514)において、特定のキューについて、MFO106によりリリースがキューに対してスケジューリングされる速度および実行のためにキューからリリースが選択される速度に応じて、特定のフロックに対して複数の未実行リリース(複数のパス)がキューに存在し得る。ある実施態様において、複数の未実行リリースがキュー(たとえば、フロック固有キューまたは汎用スケジューリングキュー)に存在する旨の判定により、MFO106は、可能な場合、キュー中のフロックに関する複数のリリース(パス)を単一の統合リリース/パスとして統合し、キュー中の2つ以上のリリース/パスをフロックの統合リリース/パスで置き換えるようにしてもよい。たとえば、
図5に示される実施形態において、サービスA用のフロックの実行に対してスケジューリングされた2つのリリース(SA,R1)504および(SA,R2)508がスケジューリングキュー502に存在する旨の判定により、MFO106は、可能な場合、キュー502中のフロックに関する2つのリリース(パス)を単一の統合リリース/パスとして統合し、キュー中の2つ以上のリリース/パスを統合リリース/パスで置き換えるようにしてもよい。場合によっては、統合リリース/パスをキュー中の別のリリース/パスと統合することも可能である。
【0125】
図6は、ある実施形態に係る、
図1に示されるMFOにより実装されたスケジューリングキュー中の統合リリースの例示的な図である。
図6に示されるように、実行に対してスケジューリングされた2つのリリース(SA,R1)504および(SA,R2)508がキュー(たとえば、汎用スケジューリングキュー502)に存在する旨の判定により、MFO106は、可能な場合、キュー中の2つのリリース(パス)を単一の統合リリース/パスとして統合し、キュー中の2つ以上のリリース/パスを統合リリース/パス604で置き換えるようにしてもよい。同様に、実行に対してスケジューリングされた2つのリリース(SB,R1)506および(SB,R2)510がサービスB用のフロックの汎用キュー502に存在する旨の判定により、MFO106は、可能な場合、キュー中の2つのリリース(パス)を単一の統合リリース/パスとして統合し、キュー中の2つ以上のリリース/パスを統合リリース/パス606で置き換えるようにしてもよい。
【0126】
統合は、効率性を目的として実行される。多くの場合、統合リリース/パスの実行に要する時間は、統合されたリリース/パスの個別の実行に要する合計時間よりも短い。また、多くの場合、統合リリース/パスの実行に使用されるコンピュート、メモリ、およびネットワーキングのリソースは、統合されたリリース/パスの個別の実行に要するリソースよりも少ない。これは主として、リリース/パスの実行に含まれる処理に起因する。ある実施態様において、リリースの実行には、現在の設定からリリースに表現されたターゲット設定までの計画を生成した後、この計画を実行することを伴う。計画の作成および実行にはコンピュートおよびメモリのリソースが集中し、時間がかかるため、複数の未実行パスを1つのパスとして統合した後、単一の計画を作成して適用するのがより効率的である。
たとえば、
時間T1に、ケイパビリティC1が発行される。
時間T2に、MFOは、C1が任意選択のケイパビリティ依存関係であるサービスA用のフロック(フロックAと称する)の第1のパス/リリース(P1)を作成し、これをフロックAに固有のキューまたは前述のような汎用キューに入れる。
時間T3(T1に近い)に、ケイパビリティC2が発行される。
時間T4に、MFOは、C2が別の任意選択のケイパビリティ依存関係であるフロックAの第2のパス/リリース(P2)を作成し、これをフロックAと同じキューに入れる。
その後、MFOは、2つの未実行パスP1およびP2がフロックAのキューに存在するものと判定する。その後、MFOは、P1およびP2を単一のパスP3として統合し、キュー中のP1およびP2を統合パスP3で置き換える。そして、計画の準備および実行のため、パスP3がCIOSに提供される。
【0127】
図7は、ある実施形態に係る、統合リリースを生成して実行するために実行される処理を示す簡易フローチャート700である。
図7に示される処理は、それぞれのシステムの1つまたは複数の処理ユニット(たとえば、プロセッサ、コア)が実行するソフトウェア(たとえば、コード、命令、プログラム)にて実装されていてもよいし、ハードウェアを使用して実装されていてもよいし、これらの組合せにて実装されていてもよい。ソフトウェアは、非一時的記憶媒体(たとえば、メモリデバイス)に格納されていてもよい。
図7に提示される後述の方法は、例示であって、何ら限定の意図はない。
図7は、特定の順番または順序で発生するさまざまな処理ステップを示すが、何ら限定の意図はない。ある代替実施形態において、この処理は、何らかの異なる順序で実行されるようになっていてもよいし、いくつかのステップが並列に実行されるようになっていてもよい。ある実施形態(
図1に示される実施形態等)において、
図7に示される処理がCIOSセントラル108、CIOSリージョナル110、およびケイパビリティサービス112との協調によって、MFO106により実行されるようになっていてもよい。
【0128】
図7に示される実施形態において、データセンタにおいて新たなケイパビリティが発行された(たとえば、利用可能になった)ものとMFO106が判定した場合に処理がトリガされ得る。たとえば、
図1に示される実施形態において、ケイパビリティサービス112は、発行されたケイパビリティの追跡を担う。
【0129】
704において、MFO106は、702において識別した新たに発行されたケイパビリティが、特定のフロックのリリースが過去にスケジューリングされ、その実行に成功した特定のサービス用の特定のフロックの任意選択のケイパビリティ依存関係であるものと判定するようにしてもよい。
【0130】
706において、MFO106は、任意選択のケイパビリティ依存関係が発行されたことに応答して特定のフロックの新たな「リエントリ」リリースをスケジューリングし、この新たなリリースをキューに追加する。前述の通り、MFOは、複数のサービスフロックにより共有される汎用スケジューリングキュー(たとえば、502)または特定のサービス用の特定のフロックに固有のキュー(たとえば、512もしくは514)に新たなリリースを追加するようにしてもよい。
【0131】
708において、MFO106は、キューを走査して、特定のフロックに対する未実行リリースがキューに存在するかを判定する。ある例において、未実行リリースのうちの少なくとも1つは、706においてMFOによりスケジューリングされたフロックの新たなリリースを含む。
【0132】
710において、MFO106は、フロックの未実行リリース(すなわち、未実行パス)を統合することにより、フロックの統合リリースを生成する。
【0133】
712において、MFOは、計画の準備および実行のため、統合リリースをCIOSに提供する。
【0134】
例示的なクラウドサービスインフラアーキテクチャ
上述の通り、サービス型インフラ(IaaS)は、ある特定の種類のクラウドコンピューティングである。IaaSは、パブリックネットワーク(たとえば、インターネット)を介して仮想化コンピューティングリソースを提供するように構成可能である。IaaSモデルにおいて、クラウドコンピューティングプロバイダがインフラコンポーネント(たとえば、サーバ、記憶装置、ネットワークノード(たとえば、ハードウェア)、デプロイメントソフトウェア、プラットフォーム仮想化(たとえば、ハイパーバイザレイヤ)等)をホスト可能である。また、場合により、IaaSプロバイダは、これらのインフラコンポーネントに付随する多様なサービス(たとえば、課金、モニタリング、ロギング、負荷分散、およびクラスタリング等)を供給するようにしてもよい。したがって、これらのサービスがポリシー駆動であり得ることから、IaaSユーザは、負荷分散を推進するポリシーの実装によって、アプリケーションの可用性および性能を維持可能となり得る。
【0135】
場合により、IaaSの顧客は、インターネット等のワイドエリアネットワーク(WAN)を通じてリソースおよびサービスにアクセスし、クラウドプロバイダのサービスを使用して、アプリケーションスタックのその他の要素をインストールすることができる。たとえば、ユーザは、IaaSプラットフォームにログインして、仮想マシン(VM)の作成、オペレーティングシステム(OS)の各VMへのインストール、データベース等のミドルウェアのデプロイメント、ワークロードおよびバックアップ用のストレージバケットの作成、さらには企業向けソフトウェアの当該VMへのインストールを行うことができる。そして、顧客は、プロバイダのサービスを使用して、ネットワークトラフィックのバランシング、アプリケーションの問題のトラブルシューティング、性能のモニタリング、障害回復の管理等を含む、さまざまな機能を実行することができる。
【0136】
ほとんどの場合、クラウドコンピューティングモデルには、クラウドプロバイダの参加が必要となる。クラウドプロバイダは、IaaSの提供(たとえば、供与、賃貸、販売)に特化したサードパーティサービスであってもよいが、そうである必要はない。また、エンティティは、プライベートクラウドをデプロイして、それ自体のインフラサービスのプロバイダになることも選択し得る。
【0137】
いくつかの例において、IaaSデプロイメントは、準備されたアプリケーションサーバ等に新たなアプリケーションまたはアプリケーションの新たなバージョンを置くプロセスである。また、サーバを準備する(たとえば、ライブラリ、デーモン等をインストールする)プロセスも含み得る。これは、クラウドプロバイダによって、ハイパーバイザレイヤ(たとえば、サーバ、ストレージ、ネットワークハードウェア、および仮想化)の下で管理されることが多い。このため、顧客は、(たとえば、(オンデマンドでスピンアップ可能な)セルフサービスの仮想マシン上での)ハンドリング(OS)、ミドルウェア、および/またはアプリケーションのデプロイメント等を担い得る。
【0138】
いくつかの例において、IaaSプロビジョニングは、使用するコンピュータまたは仮想ホストを取得することを表し、これらに必要なライブラリまたはサービスをインストールすることさえ表し得る。ほとんどの場合、デプロイメントにはプロビジョニングを含まず、プロビジョニングは最初に実行することが必要となり得る。
【0139】
場合により、IaaSプロビジョニングには2つの異なる課題が存在する。第一に、最初の課題として、何かが動作する前のインフラの初期セットのプロビジョニングがある。第二に、すべてのプロビジョニングの後、既存のインフラを発展させる課題(たとえば、新たなサービスの追加、サービスの変更、サービスの削除等)がある。場合により、これら2つの課題は、インフラの設定の宣言による定義を可能にすることによって対処され得る。言い換えると、インフラ(たとえば、必要なコンポーネントおよびコンポーネントの相互作用の様態)は、1つまたは複数の設定ファイルにより規定され得る。このため、インフラの全体的なトポロジ(たとえば、どのリソースがどのリソースに依存しているか、および各リソースが一体的に作用する様態)は、宣言により記述され得る。場合により、トポロジが規定されると、設定ファイルに記述されているさまざまなコンポーネントを作成および/または管理するワークフローが生成され得る。
【0140】
いくつかの例において、インフラは、相互接続された多くの要素を有し得る。たとえば、コアネットワークとしても知られる1つまたは複数の仮想プライベートクラウド(VPC)(たとえば、設定可能および/または共有コンピューティングリソースの潜在的オンデマンドプール)が存在し得る。また、いくつかの例において、1つまたは複数のインバウンド/アウトバウンドトラフィックグループルールが存在して、ネットワークのインバウンドおよび/もしくはアウトバウンドトラフィックが設定される様態ならびに1つもしくは複数の仮想マシン(VM)を規定するようなプロビジョニングがなされ得る。また、負荷分散器、データベース等の他のインフラ要素のプロビジョニングもなされ得る。より多くのインフラ要素の要望および/または追加がある場合は、インフラが少しずつ発展し得る。
【0141】
場合によっては、連続デプロイメント技術の採用によって、さまざまな仮想コンピューティング環境にわたるインフラコードのデプロイメントが可能となり得る。また、記載の技術は、これらの環境内でのインフラ管理を可能にし得る。いくつかの例において、サービスチームは、(たとえば、地理的に異なるさまざまな場所、場合により全世界に及ぶ)1つまたは複数の(ただし、多数であることが多い)異なる生成環境へのデプロイメントが望ましいコードを記述することができる。ただし、いくつかの例において、コードがデプロイされるインフラは、最初に設定されなければならない。場合によっては、プロビジョニングの手動による実行、リソースのプロビジョニングへのプロビジョニングツールの利用、および/またはインフラのプロビジョニング後のコードのデプロイメントへのデプロイメントツールの利用も可能である。
【0142】
図8は、少なくとも1つの実施形態に係る、IaaSアーキテクチャの例示的なパターンを示すブロック
図800である。サービスオペレータ802は、仮想クラウドネットワーク(VCN)806およびセキュアホストサブネット808を含み得るセキュアホストテナンシ804に通信可能に結合され得る。いくつかの例において、サービスオペレータ802は、1つまたは複数のクライアントコンピューティングデバイスを使用していてもよく、これらは、Microsoft Windows Mobile(登録商標)等のソフトウェアおよび/またはiOS、Windows Phone、Android、BlackBerry 8、Palm OS等の多様なモバイルオペレーティングシステムを実行するとともに、インターネット、電子メール、ショートメッセージサービス(SMS)、BlackBerry(登録商標)、または他の通信プロトコルを使用可能な携帯型手持ち式デバイス(たとえば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、個人用デジタル補助装置(PDA))またはウェアラブルデバイス(たとえば、Google Glass(登録商標)ヘッドマウントディスプレイ等)であってもよい。あるいは、クライアントコンピューティングデバイスとしては、汎用パーソナルコンピュータが可能であり、一例として、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinux(登録商標)オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータが挙げられる。クライアントコンピューティングデバイスとしては、多様な市販のUNIX(登録商標)またはUNIX類似オペレーティングシステムのいずれかを実行するワークステーションコンピュータが可能であり、たとえばGoogle Chrome OS等の多様なGNU/Linuxオペレーティングシステムが挙げられるが、これらに限定されない。この代替または追加として、クライアントコンピューティングデバイスは、VCN806および/またはインターネットにアクセスし得るネットワークを介して通信可能なシンクライアントコンピュータ、インターネット対応ゲームシステム(たとえば、Kinect(登録商標)ジェスチャ入力装置の有無を問わないMicrosoft Xboxゲームコンソール)、および/またはパーソナルメッセージングデバイス等、その他任意の電子デバイスであってもよい。
【0143】
VCN806は、セキュアシェル(SSH)VCN812に含まれるローカルピアリングゲートウェイ(LPG)810を介してSSH VCN812に通信可能に結合され得るLPG810を具備することができる。SSH VCN812は、SSHサブネット814を具備することができ、また、SSH VCN812は、制御プレーンVCN816に含まれるLPG810を介して制御プレーンVCN816に通信可能に結合され得る。また、SSH VCN812は、LPG810を介してデータプレーンVCN818に通信可能に結合され得る。制御プレーンVCN816およびデータプレーンVCN818は、IaaSプロバイダにより所有および/または運用され得るサービステナンシ819に含まれ得る。
【0144】
制御プレーンVCN816は、境界ネットワーク(たとえば、企業イントラネットと外部ネットワークとの間の企業ネットワークの一部)として動作する制御プレーン非武装地帯(DMZ)層820を具備することができる。DMZベースのサーバは、責任が限定され、侵害を抑制するのに役立ち得る。また、DMZ層820は、1つまたは複数の負荷分散器(LB)サブネット822、アプリサブネット826を含み得る制御プレーンアプリ層824、データベース(DB)サブネット830(たとえば、フロントエンドDBサブネットおよび/またはバックエンドDBサブネット)を含み得る制御プレーンデータ層828を具備することができる。制御プレーンDMZ層820に含まれるLBサブネット822は、制御プレーンアプリ層824に含まれるアプリサブネット826および制御プレーンVCN816に含まれ得るインターネットゲートウェイ834に通信可能に結合され、アプリサブネット826は、制御プレーンデータ層828に含まれるDBサブネット830、サービスゲートウェイ836、およびネットワークアドレス変換(NAT)ゲートウェイ838に通信可能に結合され得る。制御プレーンVCN816は、サービスゲートウェイ836およびNATゲートウェイ838を具備することができる。
【0145】
制御プレーンVCN816は、アプリサブネット826を含み得るデータプレーンミラーアプリ層840を具備することができる。データプレーンミラーアプリ層840に含まれるアプリサブネット826は、コンピュートインスタンス844を実行し得る仮想ネットワークインターフェースコントローラ(VNIC)842を具備することができる。コンピュートインスタンス844は、データプレーンミラーアプリ層840のアプリサブネット826を、データプレーンアプリ層846に含まれ得るアプリサブネット826に通信可能に結合され得る。
【0146】
データプレーンVCN818は、データプレーンアプリ層846、データプレーンDMZ層848、およびデータプレーンデータ層850を具備することができる。データプレーンDMZ層848は、データプレーンアプリ層846のアプリサブネット826およびデータプレーンVCN818のインターネットゲートウェイ834に通信可能に結合され得るLBサブネット822を具備することができる。アプリサブネット826は、データプレーンVCN818のサービスゲートウェイ836およびデータプレーンVCN818のNATゲートウェイ838に通信可能に結合され得る。また、データプレーンデータ層850は、データプレーンアプリ層846のアプリサブネット826に通信可能に結合され得るDBサブネット830を具備することができる。
【0147】
制御プレーンVCN816およびデータプレーンVCN818のインターネットゲートウェイ834は、パブリックインターネット854に通信可能に結合され得るメタデータ管理サービス852に通信可能に結合され得る。パブリックインターネット854は、制御プレーンVCN816およびデータプレーンVCN818のNATゲートウェイ838に通信可能に結合され得る。制御プレーンVCN816およびデータプレーンVCN818のサービスゲートウェイ836は、クラウドサービス856に通信可能に結合され得る。
【0148】
いくつかの例において、制御プレーンVCN816またはデータプレーンVCN818のサービスゲートウェイ836は、パブリックインターネット854を介さずにクラウドサービス856へのアプリケーションプログラミングインターフェース(API)呼び出しを行うことができる。サービスゲートウェイ836からクラウドサービス856へのAPI呼び出しとしては、単方向が可能である。サービスゲートウェイ836は、クラウドサービス856へのAPI呼び出しを行うことができ、クラウドサービス856は、要求されたデータをサービスゲートウェイ836に送ることができる。ただし、クラウドサービス856は、サービスゲートウェイ836へのAPI呼び出しを開始しなくてもよい。
【0149】
いくつかの例において、セキュアホストテナンシ804は、サービステナンシ819に直接接続され、さもなければ隔離され得る。セキュアホストサブネット808は、当該目的以外では隔離されるシステムを介した双方向通信を可能にし得るLPG810を通じてSSHサブネット814と通信することができる。セキュアホストサブネット808をSSHサブネット814に接続することによって、セキュアホストサブネット808は、サービステナンシ819内の他のエンティティにアクセス可能となる。
【0150】
制御プレーンVCN816は、サービステナンシ819のユーザによる所望のリソースの設定あるいはプロビジョニングを可能にし得る。制御プレーンVCN816においてプロビジョニングがなされた所望のリソースは、データプレーンVCN818においてデプロイあるいは使用されるようになっていてもよい。いくつかの例において、制御プレーンVCN816は、データプレーンVCN818から隔離可能であり、制御プレーンVCN816のデータプレーンミラーアプリ層840は、当該データプレーンミラーアプリ層840およびデータプレーンアプリ層846に含まれ得るVNIC842を介して、データプレーンVCN818のデータプレーンアプリ層846と通信可能である。
【0151】
いくつかの例において、システムのユーザすなわち顧客は、パブリックインターネット854を通じて要求を行う(たとえば、作成、読み出し、更新、または削除(CRUD)動作を行う)ことができ、パブリックインターネット854は、リクエストをメタデータ管理サービス852に送ることができる。メタデータ管理サービス852は、インターネットゲートウェイ834を通じて、リクエストを制御プレーンVCN816に送ることができる。リクエストは、制御プレーンDMZ層820に含まれるLBサブネット822により受信され得る。LBサブネット822は、リクエストが有効であるものと判定するようにしてもよく、この判定することに応答して、LBサブネット822は、制御プレーンアプリ層824に含まれるアプリサブネット826にリクエストを送信することができる。リクエストが検証され、パブリックインターネット854への呼び出しが必要になった場合、パブリックインターネット854への呼び出しは、パブリックインターネット854への呼び出しを行い得るNATゲートウェイ838に送信されるようになっていてもよい。リクエストによる格納が望ましいと考えられるメタデータは、DBサブネット830に格納され得る。
【0152】
いくつかの例において、データプレーンミラーアプリ層840は、制御プレーンVCN816とデータプレーンVCN818との間の直接通信を容易化し得る。たとえば、設定の変更、更新、または他の好適な修正は、データプレーンVCN818に含まれるリソースに適用されることが望ましいことがある。制御プレーンVCN816は、VNIC842を介して、データプレーンVCN818に含まれるリソースと直接通信することにより、リソースの設定の変更、更新、または他の好適な修正を実行することができる。
【0153】
いくつかの実施形態において、制御プレーンVCN816およびデータプレーンVCN818は、サービステナンシ819に含まれ得る。この場合、システムのユーザすなわち顧客は、制御プレーンVCN816またはデータプレーンVCN818のいずれかを所有していなくてもよいし、いずれかを動作させないようにしてもよい。代わりに、IaaSプロバイダは、制御プレーンVCN816およびデータプレーンVCN818の両者を所有していてもよいし、両者を動作させるようにしてもよく、両者がサービステナンシ819に含まれていてもよい。本実施形態は、ユーザすなわち顧客の他のユーザすなわち他の顧客のリソースとの相互作用を阻止し得るネットワークの隔離を可能にし得る。また、本実施形態は、格納に対して所望のレベルの脅威阻止を有し得ないパブリックインターネット854に依拠する必要なく、システムのユーザすなわち顧客によるデータベースのプライベートな格納を可能にし得る。
【0154】
他の実施形態において、制御プレーンVCN816に含まれるLBサブネット822は、サービスゲートウェイ836から信号を受信するように構成可能である。本実施形態において、制御プレーンVCN816およびデータプレーンVCN818は、パブリックインターネット854を呼び出すことなく、IaaSプロバイダの顧客によって呼び出されるように構成されていてもよい。IaaSプロバイダの顧客は、当該顧客が使用するデータベースがIaaSプロバイダにより制御され、パブリックインターネット854から隔離され得るサービステナンシ819に格納され得ることから、本実施形態を望むと考えられる。
【0155】
図9は、少なくとも1つの実施形態に係る、IaaSアーキテクチャの別の例示的なパターンを示すブロック
図900である。サービスオペレータ902(たとえば、
図8のサービスオペレータ802)は、仮想クラウドネットワーク(VCN)906(たとえば、
図8のVCN806)およびセキュアホストサブネット908(たとえば、
図8のセキュアホストサブネット808)を含み得るセキュアホストテナンシ904(たとえば、
図8のセキュアホストテナンシ804)に通信可能に結合され得る。VCN906は、セキュアシェル(SSH)VCN912(たとえば、
図8のSSH VCN812)に含まれるローカルピアリングゲートウェイ(LPG)810(たとえば、
図8のLPG810)を介してSSH VCN912に通信可能に結合され得るLPG910を具備することができる。SSH VCN912は、SSHサブネット914(たとえば、
図8のSSHサブネット814)を具備することができ、また、SSH VCN912は、制御プレーンVCN916(たとえば、
図8の制御プレーンVCN816)に含まれるLPG910を介して制御プレーンVCN916に通信可能に結合され得る。制御プレーンVCN916は、サービステナンシ919(たとえば、
図8のサービステナンシ819)に含まれ、データプレーンVCN918(たとえば、
図8のデータプレーンVCN818)は、システムのユーザすなわち顧客により所有または運用され得る顧客テナンシ921に含まれ得る。
【0156】
制御プレーンVCN916は、LBサブネット922(たとえば、
図8のLBサブネット822)を含み得る制御プレーンDMZ層920(たとえば、
図8の制御プレーンDMZ層820)と、アプリサブネット926(たとえば、
図8のアプリサブネット826)を含み得る制御プレーンアプリ層924(たとえば、
図8の制御プレーンアプリ層824)と、(たとえば、
図8のデータベース(DB)サブネット830に類似する)DBサブネット930を含み得る制御プレーンデータ層928(たとえば、
図8の制御プレーンデータ層828)と、を具備することができる。制御プレーンDMZ層920に含まれるLBサブネット922は、制御プレーンアプリ層924に含まれるアプリサブネット926および制御プレーンVCN916に含まれ得るインターネットゲートウェイ934(たとえば、
図8のインターネットゲートウェイ834)に通信可能に結合され、アプリサブネット926は、制御プレーンデータ層928に含まれるDBサブネット930、サービスゲートウェイ936(たとえば、
図8のサービスゲートウェイ836)、およびネットワークアドレス変換(NAT)ゲートウェイ938(たとえば、
図8のNATゲートウェイ838)に通信可能に結合され得る。制御プレーンVCN916は、サービスゲートウェイ936およびNATゲートウェイ938を具備することができる。
【0157】
制御プレーンVCN916は、アプリサブネット926を含み得るデータプレーンミラーアプリ層940(たとえば、
図8のデータプレーンミラーアプリ層840)を具備することができる。データプレーンミラーアプリ層940に含まれるアプリサブネット926は、(たとえば、
図8のコンピュートインスタンス844に類似する)コンピュートインスタンス944を実行し得る仮想ネットワークインターフェースコントローラ(VNIC)942(たとえば、VNIC842)を具備することができる。コンピュートインスタンス944は、データプレーンミラーアプリ層940に含まれるVNIC942およびデータプレーンアプリ層946(たとえば、
図8のデータプレーンアプリ層846)に含まれるVNIC942を介したデータプレーンミラーアプリ層940のアプリサブネット926とデータプレーンアプリ層946に含まれ得るアプリサブネット926との間の通信を容易化し得る。
【0158】
制御プレーンVCN916に含まれるインターネットゲートウェイ934は、パブリックインターネット954(たとえば、
図8のパブリックインターネット854)に通信可能に結合され得るメタデータ管理サービス952(たとえば、
図8のメタデータ管理サービス852)に通信可能に結合され得る。パブリックインターネット954は、制御プレーンVCN916に含まれるNATゲートウェイ938に通信可能に結合され得る。制御プレーンVCN916に含まれるサービスゲートウェイ936は、クラウドサービス956(たとえば、
図8のクラウドサービス856)に通信可能に結合され得る。
【0159】
いくつかの例において、データプレーンVCN918は、顧客テナンシ921に含まれ得る。この場合、IaaSプロバイダは、顧客ごとに制御プレーンVCN916を提供するようにしてもよく、また、IaaSプロバイダは、顧客ごとに、サービステナンシ919に含まれる一意のコンピュートインスタンス944を設定するようにしてもよい。各コンピュートインスタンス944は、サービステナンシ919に含まれる制御プレーンVCN916と顧客テナンシ921に含まれるデータプレーンVCN918との間の通信を可能にし得る。コンピュートインスタンス944によれば、顧客テナンシ921に含まれるデータプレーンVCN918において、サービステナンシ919に含まれる制御プレーンVCN916においてプロビジョニングがなされているリソースのデプロイメントあるいは使用が可能となり得る。
【0160】
他の例において、IaaSプロバイダの顧客は、顧客テナンシ921に存在するデータベースを有していてもよい。本例において、制御プレーンVCN916は、アプリサブネット926を含み得るデータプレーンミラーアプリ層940を具備することができる。データプレーンミラーアプリ層940は、データプレーンVCN918に存在し得るが、データプレーンVCN918に存在していなくてもよい。すなわち、データプレーンミラーアプリ層940は、顧客テナンシ921にアクセス可能であってもよいが、データプレーンVCN918に存在していなくてもよいし、IaaSプロバイダの顧客による所有または運用がなされていなくてもよい。データプレーンミラーアプリ層940は、データプレーンVCN918への呼び出しを行うように構成されていてもよいが、制御プレーンVCN916に含まれる任意のエンティティへの呼び出しを行うように構成されていなくてもよい。顧客は、制御プレーンVCN916においてプロビジョニングがなされているデータプレーンVCN918中のリソースのデプロイメントあるいは使用を望むと考えられ、データプレーンミラーアプリ層940は、顧客が望むリソースのデプロイメントまたは他の使用を容易化し得る。
【0161】
いくつかの実施形態において、IaaSプロバイダの顧客は、フィルタをデータプレーンVCN918に適用することができる。本実施形態において、顧客は、データプレーンVCN918がアクセスし得る対象を判定することができ、また、顧客は、データプレーンVCN918からパブリックインターネット954へのアクセスを制限するようにしてもよい。IaaSプロバイダは、フィルタを適用できなくてもよいし、任意の外部ネットワークまたはデータベースへのデータプレーンVCN918のアクセスを制御できなくてもよい。顧客テナンシ921に含まれるデータプレーンVCN918に対する顧客によるフィルタおよび制御の適用は、他の顧客およびパブリックインターネット954からのデータプレーンVCN918の隔離に役立ち得る。
【0162】
いくつかの実施形態において、クラウドサービス956は、サービスゲートウェイ936による呼び出しによって、パブリックインターネット954、制御プレーンVCN916、またはデータプレーンVCN918のいずれにも存在し得ないサービスにアクセス可能となる。クラウドサービス956と制御プレーンVCN916またはデータプレーンVCN918との間の接続は、ライブでなくてもよいし、連続でなくてもよい。クラウドサービス956は、IaaSプロバイダが所有または運用する異なるネットワーク上に存在していてもよい。クラウドサービス956は、サービスゲートウェイ936からの呼び出しを受信するように構成されていてもよく、また、パブリックインターネット954からの呼び出しを受信しないように構成されていてもよい。一部のクラウドサービス956は、他のクラウドサービス956から隔離されていてもよく、制御プレーンVCN916は、当該制御プレーンVCN916と同じリージョンにあり得ないクラウドサービス956から隔離されていてもよい。たとえば、制御プレーンVCN916は、「リージョン1」に配置されていてもよく、クラウドサービス「デプロイメント8」は、リージョン1および「リージョン2」に配置されていてもよい。デプロイメント8への呼び出しがリージョン1に配置されている制御プレーンVCN916に含まれるサービスゲートウェイ936により行われた場合、呼び出しは、リージョン1のデプロイメント8に送信されるようになっていてもよい。本例において、制御プレーンVCN916またはリージョン1のデプロイメント8は、リージョン2のデプロイメント8に通信可能に結合されていなくてもよいし、リージョン2のデプロイメント8と連通していなくてもよい。
【0163】
図10は、少なくとも1つの実施形態に係る、IaaSアーキテクチャの別の例示的なパターンを示すブロック
図1000である。サービスオペレータ1002(たとえば、
図8のサービスオペレータ802)は、仮想クラウドネットワーク(VCN)1006(たとえば、
図8のVCN806)およびセキュアホストサブネット1008(たとえば、
図8のセキュアホストサブネット808)を含み得るセキュアホストテナンシ1004(たとえば、
図8のセキュアホストテナンシ804)に通信可能に結合され得る。VCN1006は、SSH VCN1012(たとえば、
図8のSSH VCN812)に含まれるLPG1010(たとえば、
図8のLPG810)を介してSSH VCN1012に通信可能に結合され得るLPG1010を具備することができる。SSH VCN1012は、SSHサブネット1014(たとえば、
図8のSSHサブネット814)を具備することができ、また、SSH VCN1012は、制御プレーンVCN1016(たとえば、
図8の制御プレーンVCN816)に含まれるLPG1010を介して制御プレーンVCN1016に通信可能に結合され得るとともに、データプレーンVCN1018(たとえば、
図8のデータプレーンVCN818)に含まれるLPG1010を介してデータプレーンVCN1018に通信可能に結合され得る。制御プレーンVCN1016およびデータプレーンVCN1018は、サービステナンシ1019(たとえば、
図8のサービステナンシ819)に含まれ得る。
【0164】
制御プレーンVCN1016は、負荷分散器(LB)サブネット1022(たとえば、
図8のLBサブネット822)を含み得る制御プレーンDMZ層1020(たとえば、
図8の制御プレーンDMZ層820)と、(たとえば、
図8のアプリサブネット826に類似する)アプリサブネット1026を含み得る制御プレーンアプリ層1024(たとえば、
図8の制御プレーンアプリ層824)と、DBサブネット1030を含み得る制御プレーンデータ層1028(たとえば、
図8の制御プレーンデータ層828)と、を具備することができる。制御プレーンDMZ層1020に含まれるLBサブネット1022は、制御プレーンアプリ層1024に含まれるアプリサブネット1026および制御プレーンVCN1016に含まれ得るインターネットゲートウェイ1034(たとえば、
図8のインターネットゲートウェイ834)に通信可能に結合され得り、アプリサブネット1026は、制御プレーンデータ層1028に含まれるDBサブネット1030、サービスゲートウェイ1036(たとえば、
図8のサービスゲートウェイ)、およびネットワークアドレス変換(NAT)ゲートウェイ1038(たとえば、
図8のNATゲートウェイ838)に通信可能に結合され得る。制御プレーンVCN1016は、サービスゲートウェイ1036およびNATゲートウェイ1038を具備することができる。
【0165】
データプレーンVCN1018は、データプレーンアプリ層1046(たとえば、
図8のデータプレーンアプリ層846)、データプレーンDMZ層1048(たとえば、
図8のデータプレーンDMZ層848)、およびデータプレーンデータ層1050(たとえば、
図8のデータプレーンデータ層850)を具備することができる。データプレーンDMZ層1048は、データプレーンアプリ層1046のトラステッドアプリサブネット1060および非トラステッドアプリサブネット1062ならびにデータプレーンVCN1018に含まれるインターネットゲートウェイ1034に通信可能に結合され得るLBサブネット1022を具備することができる。トラステッドアプリサブネット1060は、データプレーンVCN1018に含まれるサービスゲートウェイ1036、データプレーンVCN1018に含まれるNATゲートウェイ1038、およびデータプレーンデータ層1050に含まれるDBサブネット1030に通信可能に結合され得る。非トラステッドアプリサブネット1062は、データプレーンVCN1018に含まれるサービスゲートウェイ1036およびデータプレーンデータ層1050に含まれるDBサブネット1030に通信可能に結合され得る。データプレーンデータ層1050は、データプレーンVCN1018に含まれるサービスゲートウェイ1036に通信可能に結合され得るDBサブネット1030を具備することができる。
【0166】
非トラステッドアプリサブネット1062は、テナント仮想マシン(VM)1066(1)~1066(N)に通信可能に結合され得る1つまたは複数のプライマリVNIC1064(1)~1064(N)を具備することができる。各テナントVM1066(1)~1066(N)は、顧客テナンシ1070(1)~1070(N)それぞれに含まれ得るコンテナ出力VCN1068(1)~1068(N)それぞれに含まれ得るアプリサブネット1067(1)~1067(N)それぞれに通信可能に結合され得る。セカンダリVNIC1072(1)~1072(N)はそれぞれ、データプレーンVCN1018に含まれる非トラステッドアプリサブネット1062とコンテナ出力VCN1068(1)~1068(N)に含まれるアプリサブネットとの間の通信を容易化し得る。各コンテナ出力VCN1068(1)~1068(N)は、パブリックインターネット1054(たとえば、
図8のパブリックインターネット854)に通信可能に結合され得るNATゲートウェイ1038を具備することができる。
【0167】
制御プレーンVCN1016およびデータプレーンVCN1018に含まれるインターネットゲートウェイ1034は、パブリックインターネット1054に通信可能に結合され得るメタデータ管理サービス1052(たとえば、
図8のメタデータ管理システム852)に通信可能に結合され得る。パブリックインターネット1054は、制御プレーンVCN1016およびデータプレーンVCN1018に含まれるNATゲートウェイ1038に通信可能に結合され得る。制御プレーンVCN1016およびデータプレーンVCN1018に含まれるサービスゲートウェイ1036は、クラウドサービス1056に通信可能に結合され得る。
【0168】
いくつかの実施形態において、データプレーンVCN1018は、顧客テナンシ1070と一体化され得る。この一体化は、コードの実行にサポートを望む可能性がある場合等に、IaaSプロバイダの顧客に有用または望ましくなり得る。顧客は、実行するコードを与えるようにしてもよく、このコードは、破壊的なものとなる可能性もあるし、他の顧客リソースと通信する可能性もあるし、あるいは望ましくない影響をもたらす可能性もある。これに応答して、IaaSプロバイダは、顧客により当該IaaSプロバイダに与えられたコードを実行するかを判定するようにしてもよい。
【0169】
いくつかの例において、IaaSプロバイダの顧客は、IaaSプロバイダへの一時的なネットワークアクセスを許可し、データプレーンアプリ層1046に付与される機能を要求するようにしてもよい。この機能を実行するコードは、VM1066(1)~1066(N)において実行されるようになっていてもよく、また、データプレーンVCN1018上の他の場所で実行するようには構成されていなくてもよい。各VM1066(1)~1066(N)は、1つの顧客テナンシ1070に接続されていてもよい。VM1066(1)~1066(N)に含まれるコンテナ1071(1)~1071(N)はそれぞれ、コードを実行するように構成されていてもよい。この場合は、二重の隔離が存在する可能性があり(コードを実行するコンテナ1071(1)~1071(N)は、少なくとも非トラステッドアプリサブネット1062に含まれるVM1066(1)~1066(N)に含まれていてもよい)、誤ったコードあるいは望ましくないコードによるIaaSプロバイダのネットワークまたは異なる顧客のネットワークの損傷を防止するのに役立ち得る。コンテナ1071(1)~1071(N)は、顧客テナンシ1070に通信可能に結合されていてもよく、また、顧客テナンシ1070に対してデータを送信または受信するように構成されていてもよい。コンテナ1071(1)~1071(N)は、データプレーンVCN1018中の他の任意のエンティティに対するデータの送信または受信を行うように構成されていなくてもよい。コードの実行の完了時、IaaSプロバイダは、コンテナ1071(1)~1071(N)を無効化するようにしてもよいし、廃棄するようにしてもよい。
【0170】
いくつかの実施形態において、トラステッドアプリサブネット1060は、IaaSプロバイダが所有または運用し得るコードを実行するようにしてもよい。本実施形態において、トラステッドアプリサブネット1060は、DBサブネット1030に通信可能に結合されていてもよく、また、DBサブネット1030においてCRUD動作を実行するように構成されていてもよい。非トラステッドアプリサブネット1062は、DBサブネット1030に通信可能に結合されていてもよいが、本実施形態において、DBサブネット1030において読み出し動作を実行するように構成されていてもよい。各顧客のVM1066(1)~1066(N)に含まれ、顧客からのコードを実行し得るコンテナ1071(1)~1071(N)は、DBサブネット1030と通信可能に結合されていなくてもよい。
【0171】
他の実施形態において、制御プレーンVCN1016およびデータプレーンVCN1018は、直接通信可能に結合されていなくてもよい。本実施形態において、制御プレーンVCN1016とデータプレーンVCN1018との間に直接的な通信が存在していなくてもよい。ただし、少なくとも1つの方法によって間接的に通信を行うことができる。制御プレーンVCN1016とデータプレーンVCN1018との間の通信を容易化し得るLPG1010がIaaSプロバイダにより確立されていてもよい。別の例において、制御プレーンVCN1016またはデータプレーンVCN1018は、サービスゲートウェイ1036を介して、クラウドサービス1056への呼び出しを行うことができる。たとえば、制御プレーンVCN1016からクラウドサービス1056への呼び出しには、データプレーンVCN1018と通信し得るサービスのリクエストを含み得る。
【0172】
図11は、少なくとも1つの実施形態に係る、IaaSアーキテクチャの別の例示的なパターンを示すブロック
図1100である。サービスオペレータ1102(たとえば、
図8のサービスオペレータ802)は、仮想クラウドネットワーク(VCN)1106(たとえば、
図8のVCN806)およびセキュアホストサブネット1108(たとえば、
図8のセキュアホストサブネット808)を含み得るセキュアホストテナンシ1104(たとえば、
図8のセキュアホストテナンシ804)に通信可能に結合され得る。VCN1106は、SSH VCN1112(たとえば、
図8のSSH VCN812)に含まれるLPG1110(たとえば、
図8のLPG810)を介してSSH VCN1112に通信可能に結合され得るLPG1110を具備することができる。SSH VCN1112は、SSHサブネット1114(たとえば、
図8のSSHサブネット814)を具備することができ、また、SSH VCN1112は、制御プレーンVCN1116(たとえば、
図8の制御プレーンVCN816)に含まれるLPG1110を介して制御プレーンVCN1116に通信可能に結合され得るとともに、データプレーンVCN1118(たとえば、
図8のデータプレーンVCN818)に含まれるLPG1110を介してデータプレーンVCN1118に通信可能に結合され得る。制御プレーンVCN1116およびデータプレーンVCN1118は、サービステナンシ1119(たとえば、
図8のサービステナンシ819)に含まれ得る。
【0173】
制御プレーンVCN1116は、LBサブネット1122(たとえば、
図8のLBサブネット822)を含み得る制御プレーンDMZ層1120(たとえば、
図8の制御プレーンDMZ層820)と、アプリサブネット1126(たとえば、
図8のアプリサブネット826)を含み得る制御プレーンアプリ層1124(たとえば、
図8の制御プレーンアプリ層824)と、DBサブネット1130(たとえば、
図10のDBサブネット1030)を含み得る制御プレーンデータ層1128(たとえば、
図8の制御プレーンデータ層828)と、を具備することができる。制御プレーンDMZ層1120に含まれるLBサブネット1122は、制御プレーンアプリ層1124に含まれるアプリサブネット1126および制御プレーンVCN1116に含まれ得るインターネットゲートウェイ1134(たとえば、
図8のインターネットゲートウェイ834)に通信可能に結合され、アプリサブネット1126は、制御プレーンデータ層1128に含まれるDBサブネット1130、サービスゲートウェイ1136(たとえば、
図8のサービスゲートウェイ)、およびネットワークアドレス変換(NAT)ゲートウェイ1138(たとえば、
図8のNATゲートウェイ838)に通信可能に結合され得る。制御プレーンVCN1116は、サービスゲートウェイ1136およびNATゲートウェイ1138を具備することができる。
【0174】
データプレーンVCN1118は、データプレーンアプリ層1146(たとえば、
図8のデータプレーンアプリ層846)、データプレーンDMZ層1148(たとえば、
図8のデータプレーンDMZ層848)、およびデータプレーンデータ層1150(たとえば、
図8のデータプレーンデータ層850)を具備することができる。データプレーンDMZ層1148は、データプレーンアプリ層1146のトラステッドアプリサブネット1160(たとえば、
図10のトラステッドアプリサブネット1060)および非トラステッドアプリサブネット1162(たとえば、
図10の非トラステッドアプリサブネット1062)ならびにデータプレーンVCN1118に含まれるインターネットゲートウェイ1134に通信可能に結合され得るLBサブネット1122を具備することができる。トラステッドアプリサブネット1160は、データプレーンVCN1118に含まれるサービスゲートウェイ1136、データプレーンVCN1118に含まれるNATゲートウェイ1138、およびデータプレーンデータ層1150に含まれるDBサブネット1130に通信可能に結合され得る。非トラステッドアプリサブネット1162は、データプレーンVCN1118に含まれるサービスゲートウェイ1136およびデータプレーンデータ層1150に含まれるDBサブネット1130に通信可能に結合され得る。データプレーンデータ層1150は、データプレーンVCN1118に含まれるサービスゲートウェイ1136に通信可能に結合され得るDBサブネット1130を具備することができる。
【0175】
非トラステッドアプリサブネット1162は、非トラステッドアプリサブネット1162内に存在するテナント仮想マシン(VM)1166(1)~1166(N)に通信可能に結合され得るプライマリVNIC1164(1)~1164(N)を具備することができる。各テナントVM1166(1)~1166(N)は、コンテナ1167(1)~1167(N)それぞれにおいてコードを実行可能であるとともに、コンテナ出力VCN1168に含まれ得るデータプレーンアプリ層1146に含まれ得るアプリサブネット1126に通信可能に結合され得る。セカンダリVNIC1172(1)~1172(N)はそれぞれ、データプレーンVCN1118に含まれる非トラステッドアプリサブネット1162とコンテナ出力VCN1168に含まれるアプリサブネットとの間の通信を容易化し得る。コンテナ出力VCNは、パブリックインターネット1154(たとえば、
図8のパブリックインターネット854)に通信可能に結合され得るNATゲートウェイ1138を具備することができる。
【0176】
制御プレーンVCN1116およびデータプレーンVCN1118に含まれるインターネットゲートウェイ1134は、パブリックインターネット1154に通信可能に結合され得るメタデータ管理サービス1152(たとえば、
図8のメタデータ管理システム852)に通信可能に結合され得る。パブリックインターネット1154は、制御プレーンVCN1116およびデータプレーンVCN1118に含まれるNATゲートウェイ1138に通信可能に結合され得る。制御プレーンVCN1116およびデータプレーンVCN1118に含まれるサービスゲートウェイ1136は、クラウドサービス1156に通信可能に結合され得る。
【0177】
いくつかの例において、
図11のブロック
図1100のアーキテクチャにより示されるパターンは、
図10のブロック
図1000のアーキテクチャにより示されるパターンの例外と考えられ、IaaSプロバイダが顧客と直接通信できない(たとえば、非接続リージョンである)場合に、IaaSプロバイダの顧客に望ましいと考えられる。顧客ごとにVM1166(1)~1166(N)に含まれるコンテナ1167(1)~1167(N)はそれぞれ、顧客によるリアルタイムでのアクセスが可能である。コンテナ1167(1)~1167(N)は、コンテナ出力VCN1168に含まれ得るデータプレーンアプリ層1146のアプリサブネット1126に含まれる二次VNIC1172(1)~1172(N)それぞれへの呼び出しを行うように構成されていてもよい。二次VNIC1172(1)~1172(N)は、呼び出しをNATゲートウェイ1138に送信可能であり、NATゲートウェイ1138は、呼び出しをパブリックインターネット1154に送信するようにしてもよい。本例において、顧客によるリアルタイムでのアクセスが可能なコンテナ1167(1)~1167(N)は、制御プレーンVCN1116から隔離され得るとともに、データプレーンVCN1118に含まれる他のエンティティからも隔離され得る。また、コンテナ1167(1)~1167(N)は、他の顧客のリソースからも隔離され得る。
【0178】
他の例において、顧客は、コンテナ1167(1)~1167(N)を使用して、クラウドサービス1156を呼び出すことができる。本例において、顧客は、コンテナ1167(1)~1167(N)において、クラウドサービス1156にサービスを要求するコードを実行することができる。コンテナ1167(1)~1167(N)は、このリクエストを二次VNIC1172(1)~1172(N)に送信可能であり、二次VNIC1172(1)~1172(N)は、リクエストをNATゲートウェイに送信可能であり、NATゲートウェイは、リクエストをパブリックインターネット1154に送信可能である。パブリックインターネット1154は、インターネットゲートウェイ1134を介して、制御プレーンVCN1116に含まれるLBサブネット1122にリクエストを送信可能である。リクエストが有効である旨の判定に応答して、LBサブネットは、リクエストをアプリサブネット1126に送信可能であり、アプリサブネット1126は、サービスゲートウェイ1136を介して、リクエストをクラウドサービス1156に送信可能である。
【0179】
当然のことながら、図面に示されるIaaSアーキテクチャ800、900、1000、1100は、図示以外の構成要素を有していてもよい。さらに、図面に示される実施形態は、本開示の一実施形態を包含し得るクラウドインフラシステムのいくつかの例に過ぎない。いくつかの他の実施形態において、IaaSシステムは、有する構成要素が図示より多くても少なくてもよいし、2つ以上の構成要素を組み合わせるようにしてもよいし、または構成要素の構成または配置が異なってもよい。
【0180】
ある実施形態において、本明細書に記載のIaaSシステムは、セルフサービスかつサブスクリプションベースの弾力的に拡張可能かつ確実で可用性が高くセキュアな方法で顧客に送達される一連のアプリケーション、ミドルウェア、およびデータベースサービスの提供を含んでいてもよい。本譲受人が提供するOCI(Oracle Cloud Infrastructure)がこのようなIaaSシステムの一例である。
【0181】
図12は、種々実施形態が実現され得る例示的なコンピュータシステム1200を示している。システム1200は、上述のコンピュータシステムのいずれかの実現に用いられてもよい。図面に示される通り、コンピュータシステム1200は、バスサブシステム1202を介して多くの周辺サブシステムと通信する処理ユニット1204を具備する。周辺サブシステムには、処理加速ユニット1206、I/Oサブシステム1208、ストレージサブシステム1218、および通信サブシステム1224を含み得る。ストレージサブシステム1218は、有形コンピュータ可読記憶媒体1222およびシステムメモリ1210を具備する。
【0182】
バスサブシステム1202は、コンピュータシステム1200のさまざまな構成要素およびサブシステムを目的通り互いに通信させるためのメカニズムを提供する。バスサブシステム1202は、単一のバスとして模式的に示されるが、バスサブシステムの代替実施形態では複数のバスを利用するようにしてもよい。バスサブシステム1202は、多様なバスアーキテクチャのいずれかを使用するメモリバスもしくはメモリコントローラ、周辺バス、ならびにローカルバスを含む複数種類のバス構造のいずれかであってもよい。たとえば、このようなアーキテクチャには、IEEE P1386.1標準に従って製造されたメザニンバスとして実現され得る業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオエレクトロニクス規格協会(VESA)ローカルバス、および周辺機器相互接続(PCI)バスを含み得る。
【0183】
1つまたは複数の集積回路(たとえば、従来のマイクロプロセッサまたはマイクロコントローラ)として実現され得る処理ユニット1204は、コンピュータシステム1200の動作を制御する。処理ユニット1204には、1つまたは複数のプロセッサが含まれていてもよい。これらのプロセッサには、シングルコアまたはマルチコアプロセッサを含み得る。ある実施形態において、処理ユニット1204は、シングルコアまたはマルチコアプロセッサがそれぞれに含まれる1つまたは複数の独立した処理ユニット1232および/または1234として実現されてもよい。また、他の実施形態において、処理ユニット1204は、2つのデュアルコアプロセッサを単一のチップに組み込むことにより形成されたクアッドコア処理ユニットとして実現されていてもよい。
【0184】
種々実施形態において、処理ユニット1204は、プログラムコードに応答して多様なプログラムを実行するとともに、複数の同時実行プログラムまたはプロセスを維持することができる。任意所与の時間において、実行されるプログラムコードの一部または全部がプロセッサ1204および/またはストレージサブシステム1218に存在し得る。好適なプログラミングにより、プロセッサ1204は、上述のさまざまな機能を提供可能である。また、コンピュータシステム1200は、デジタル信号プロセッサ(DSP)、専用プロセッサ、および/または類似物を含み得る処理加速ユニット1206を具備していてもよい。
【0185】
I/Oサブシステム1208は、ユーザインターフェース入力装置およびユーザインターフェース出力装置を具備していてもよい。ユーザインターフェース入力装置には、キーボード、マウスもしくはトラックボール等のポインティングデバイス、ディスプレイに組み込まれたタッチパッドもしくはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを有するオーディオ入力装置、マイク、ならびに他種の入力装置を含み得る。ユーザインターフェース入力装置には、たとえばジェスチャおよび音声コマンドを使用する自然なユーザインターフェースを通じたMicrosoft Xbox(登録商標)360ゲームコントローラ等の入力装置に対するユーザの制御および相互作用を可能にするMicrosoft Kinect(登録商標)運動センサ等の運動検知および/またはジェスチャ認識デバイスを含み得る。また、ユーザインターフェース入力装置には、ユーザの眼の活動(たとえば、撮影中および/またはメニュー選択中の「瞬き」)を検出し、眼のジェスチャを入力装置(たとえば、Google Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器等の眼ジェスチャ認識デバイスを含み得る。また、ユーザインターフェース入力装置には、音声コマンドを介したユーザによる音声認識システム(たとえば、Siri(登録商標)ナビゲータ)との相互作用を可能にする音声認識検知デバイスを含み得る。
【0186】
また、ユーザインターフェース入力装置には、3次元(3D)マウス、ジョイスティックもしくはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルビデオカメラ、ポータブルメディアプレーヤ、ウェブカメラ、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザ距離計、および視線追跡デバイス等の聴覚/視覚デバイスを含み得るが、これらに限定されない。また、ユーザインターフェース入力装置には、たとえばコンピュータトモグラフィ、磁気共鳴イメージング、位置放出トモグラフィ(position emission tomography)、医療用超音波検査デバイス等の医療用撮像入力装置を含み得る。また、ユーザインターフェース入力装置には、たとえばMIDIキーボード、デジタル楽器等のオーディオ入力装置を含み得る。
【0187】
ユーザインターフェース出力装置には、ディスプレイサブシステム、表示灯、またはオーディオ出力装置等の非視覚的ディスプレイを含み得る。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するようなフラットパネルデバイス、投射装置、タッチスクリーン等であってもよい。一般的に、用語「出力装置(output device)」の使用は、コンピュータシステム1200からユーザまたは他のコンピュータに情報を出力するための可能なすべての種類のデバイスおよびメカニズムを含むことが意図される。たとえば、ユーザインターフェース出力装置には、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力装置、およびモデム等、テキスト、グラフィックス、およびオーディオ/ビデオ情報を視覚的に伝達する多様な表示装置を含み得るが、これらに限定されない。
【0188】
コンピュータシステム1200は、ここではシステムメモリ1210内に現在配置されているものとして示されるソフトウェア要素を含むストレージサブシステム1218を備えていてもよい。システムメモリ1210は、処理ユニット1204にロードおよび実行可能なプログラム命令のほか、これらプログラムの実行時に生成されたデータを格納していてもよい。
【0189】
コンピュータシステム1200の構成および種類に応じて、システムメモリ1210は、揮発性(ランダムアクセスメモリ(RAM)等)および/または不揮発性(リードオンリーメモリ(ROM)、フラッシュメモリ等)であってもよい。RAMは通常、処理ユニット1204に直ちにアクセス可能なデータおよび/もしくはプログラムモジュールならびに/または処理ユニット1204による動作および実行が現在なされているデータおよび/もしくはプログラムモジュールを含む。いくつかの実施態様において、システムメモリ1210には、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)等、複数の異なる種類のメモリを含み得る。いくつかの実施態様において、ROMには通常、起動時等にコンピュータシステム1200内の要素間で情報を伝達するのに役立つ基本ルーチンを含む基本入出力システム(BIOS)が格納されていてもよい。また、非限定的な一例として、システムメモリ1210は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)等を含み得るアプリケーションプログラム1212、プログラムデータ1214、およびオペレーティングシステム1216を示している。一例として、オペレーティングシステム1216には、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/もしくはLinuxオペレーティングシステム、多様な市販のUNIX(登録商標)もしくはUNIX類似オペレーティングシステム(多様なGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OS等を含むが、これらに限定されない)、ならびに/またはiOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)OS、およびPalm(登録商標)OSオペレーティングシステム等のモバイルオペレーティングシステムを含み得る。
【0190】
また、ストレージサブシステム1218は、いくつかの実施形態の機能を与える基本プログラミングおよびデータ構成体を格納するための有形コンピュータ可読記憶媒体を提供するようにしてもよい。ストレージサブシステム1218には、プロセッサによって実行されると上述の機能を与えるソフトウェア(プログラム、コードモジュール、命令)が格納されていてもよい。これらのソフトウェアモジュールまたは命令は、処理ユニット1204により実行されるようになっていてもよい。また、ストレージサブシステム1218は、本開示に従って使用されるデータを格納するためのリポジトリを提供するようにしてもよい。
【0191】
また、ストレージサブシステム1200は、コンピュータ可読記憶媒体1222にさらに接続され得るコンピュータ可読記憶媒体リーダ1220を具備していてもよい。一緒に、任意選択で、コンピュータ可読記憶媒体1222は、システムメモリ1210との組合せにて、リモート、ローカル、固定、および/または取り外し可能な記憶装置のほか、コンピュータ可読情報を一時的および/または恒久的に包含、格納、送信、および取得するための記憶媒体を包括的に表し得る。
【0192】
また、コードまたはコードの一部を含むコンピュータ可読記憶媒体1222には、当技術分野において公知または使用されている任意適当な媒体を含むことができ(記憶媒体および通信媒体を含む)、情報の格納および/または伝送のための任意の方法または技術において実現されている揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体が挙げられるが、これらに限定されない。これには、RAM、ROM、電子的消去可能プログラマブルROM(EEPROM)、フラッシュメモリまたは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)または他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、または他の有形コンピュータ可読媒体等の有形コンピュータ可読記憶媒体を含み得る。また、これには、データ信号、データ伝送、または所望の情報の伝送に使用可能かつコンピュータシステム1200によりアクセス可能なその他任意の媒体等の非有形コンピュータ可読媒体を含み得る。
【0193】
一例として、コンピュータ可読記憶媒体1222には、非リムーバブル不揮発性磁気媒体に対して読み書きを行うハードディスクドライブと、リムーバブル不揮発性磁気ディスクに対して読み書きを行う磁気ディスクドライブと、CD ROM、DVD、Blu-Ray(登録商標)ディスク、または他の光学媒体等のリムーバブル不揮発性光ディスクに対して読み書きを行う光ディスクドライブと、を含み得る。コンピュータ可読記憶媒体1222には、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープ等を含み得るが、これらに限定されない。また、コンピュータ可読記憶媒体1222には、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、半導体ROM等の不揮発性メモリに基づく半導体ドライブ(SSD)、半導体RAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、ならびにDRAMおよびフラッシュメモリベースのSSDの組合せを使用するハイブリッドSSD等の揮発性メモリに基づくSSDを含み得る。ディスクドライブおよびそれらの関連するコンピュータ可読媒体は、コンピュータシステム1200に対するコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性ストレージを提供し得る。
【0194】
通信サブシステム1224は、他のコンピュータシステムおよびネットワークに対するインターフェースを提供する。通信サブシステム1224は、コンピュータシステム1200と他のシステムとの間のデータの送受信のためのインターフェースとしてサーブする。たとえば、通信サブシステム1224は、コンピュータシステム1200がインターネットを介して1つまたは複数のデバイスに接続することを可能にし得る。いくつかの実施形態において、通信サブシステム1224は、(たとえば、携帯電話技術、3G、4G、またはEDGE(Enhanced Data Rates for Global Evolution)、WiFi(IEEE 802.11ファミリ標準等の高度なデータネットワーク技術、もしくは他の移動通信技術、またはこれらの任意の組合せを使用する)無線音声および/またはデータネットワーク、全地球測位システム(GPS)受信機コンポーネント、および/または他のコンポーネントにアクセスするための無線周波数(RF)トランシーバコンポーネントを具備することができる。いくつかの実施形態において、通信サブシステム1224は、無線インターフェースの追加または代替として、有線ネットワーク接続(たとえば、Ethernet)を提供し得る。
【0195】
また、いくつかの実施形態において、通信サブシステム1224は、コンピュータシステム1200を使用し得る1人または複数人のユーザに代わって、構造化および/または非構造化データフィード1226、イベントストリーム1228、イベントアップデート1230等の形態の入力通信を受信可能である。
【0196】
一例として、通信サブシステム1224は、ソーシャルネットワークならびに/またはTwitter(登録商標)フィード、Facebook(登録商標)アップデート、RSS(Rich Site Summary)フィード等のウェブフィード、ならびに/または1つもしくは複数のサードパーティ情報源からのリアルタイムアップデート等、他の通信サービスのユーザからデータフィード1226をリアルタイムで受信するように構成されていてもよい。
【0197】
また、通信サブシステム1224は、連続データストリームの形態のデータを受信するように構成されていてもよく、これには、リアルタイムイベントおよび/またはイベントアップデート1230のイベントストリーム1228を含み得るが、これは、連続的であってもよいし、明示的な終わりのない事実上の無限であってもよい。連続データを生成するアプリケーションの例としては、たとえばセンサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(たとえば、ネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通モニタリング等が挙げられる。
【0198】
また、通信サブシステム1224は、コンピュータシステム1200に結合されている1つまたは複数のストリーミングデータ源コンピュータと連通し得る1つまたは複数のデータベースに対して、構造化および/または非構造化データフィード1226、イベントストリーム1228、イベントアップデート1230等を出力するように構成されていてもよい。
【0199】
コンピュータシステム1200としては、携帯型手持ち式デバイス(iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA等)、ウェアラブル装置(Google Glass(登録商標)ヘッドマウントディスプレイ等)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または任意の他のデータ処理システムを含むさまざまな種類のうちの1つが可能である。
【0200】
コンピュータおよびネットワークの絶えず変化する性質のため、図示のコンピュータシステム1200に関する記述は、具体例としての意図しかない。図示のシステムよりも構成要素が多いか少ないかに関わらず、他の多くの構成が可能である。たとえば、カスタマイズされたハードウェアも使用され得り、ならびに/またはハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、もしくは組合せにおける特定の要素が実装され得る。さらに、ネットワーク入出力装置等の他のコンピューティングデバイスへの接続が採用されてもよい。本明細書に記載の開示および教示内容に基づいて、当業者であれば、種々実施形態を実現する他の手法および/または方法が認識されよう。
【0201】
以上、特定の実施形態を説明したが、種々修正、変更、代替構成、および同等物についても本開示の範囲に含まれる。実施形態は、ある特定のデータ処理環境内での動作に限定されず、複数のデータ処理環境内で自由に動作し得る。また、特定の一連のトランザクションおよびステップを使用して実施形態を説明したが、当業者には、本開示の範囲が記載の一連のトランザクションおよびステップに限定されないことが明らかであろう。上述の実施形態の種々特徴および態様が個別に使用されてもよいし、一体的に使用されてもよい。
【0202】
さらに、ハードウェアおよびソフトウェアの特定の組合せを使用して実施形態を説明したが、ハードウェアおよびソフトウェアの他の組合せについても本開示の範囲に含まれることが認識されよう。実施形態は、ハードウェアにおいてのみ実現されていてもよいし、ソフトウェアにおいてのみ実現されていてもよいし、これらの組合せを使用することにより実現されていてもよい。本明細書に記載のさまざまなプロセスは、同じプロセッサ上で実現することも可能であるし、任意の組合せの異なるプロセッサ上で実現することも可能である。したがって、構成要素またはモジュールがある動作を実行するように構成されているものとして記載される場合、このような構成は、たとえばこの動作を実行するように電子回路を設計すること、この動作を実行するようにプログラム可能電子回路(マイクロプロセッサ等)をプログラムすること、またはこれらの任意の組合せによって達成され得る。プロセスは、プロセス間通信のための従来技術を含むが、これらに限定されない多様な技術を使用することにより通信可能である。また、プロセスの異なるペアが異なる技術を使用するようにしてもよいし、またはプロセスの同じペアが異なる時間に異なる技術を使用するようにしてもよい。
【0203】
プロセッサによって実行されると、本開示に記載の方法のいずれかをプロセッサに実行させるコンピュータプログラム/命令を含むコンピュータプログラム製品を使用することにより、実施形態が実現されてもよい。
【0204】
したがって、本明細書および図面は、何ら限定するものではなく、例示として捉えられるものとする。ただし、特許請求の範囲に記載の広範な思想および範囲から逸脱することなく、追加、差分、削除、ならびに他の修正および変更がなされ得ることは明らかである。このため、本開示の特定の実施形態を説明したが、これらには何ら限定の意図はない。種々修正および同等物が以下の特許請求の範囲に含まれる。
【0205】
開示の実施形態を説明する文脈(特に、以下の特許請求の範囲の文脈)における用語「a」、「an」、および「the」、ならびに同様の指示対象の使用は、本明細書における別段の指示または文脈上の明確な矛盾のない限り、単数形および複数形の両者を網羅するように解釈されるものとする。用語「備える(comprising)」、「有する(having)」、「具備する(including)」、および「含む(containing)」は、別段の断りのない限り、オープンエンドの用語(すなわち、「~を含むが、これらに限定されない」を意味する)として解釈されるものとする。用語「接続されている(connected)」は、何かが介在している場合であっても、一部または全部が含まれている、取り付けられている、または一体的に結合されているものとして解釈されるものとする。本明細書における値の範囲の記述は、本明細書における別段の指示のない限り、その範囲に含まれる別個の各値を個別に参照する簡潔な方法としてサーブすることが意図されるに過ぎず、別個の各値は、本明細書において個別の記述があるかのように本明細書に組み込まれる。本明細書における別段の指示または文脈上の明確な矛盾のない限り、本明細書に記載のすべての方法が任意好適な順序で実行され得る。本明細書に記載のありとあらゆる例または例示的な表現(たとえば、「~等(such as)」)の使用は、実施形態の理解を容易にする意図しかなく、別段の主張のない限り、本開示の範囲を制限するものではない。本明細書における如何なる表現も、特許請求されていない要素が本開示の実施に不可欠であることを示すものとは解釈されるべきではない。
【0206】
特に記載のない限り、句「X、Y、Zのうち少なくとも1つ(at least one of X, Y, or Z)」等の選言的表現は、項目、用語等がX、Y、Zのいずれかまたはこれらの任意の組合せ(たとえば、X、Y、および/またはZ)であり得ることを提示するために一般的に使用されるような文脈内での理解が意図される。したがって、このような選言的表現は一般的に、ある実施形態がXのうちの少なくとも1つ、Yのうちの少なくとも1つ、またはZのうちの少なくとも1つ各々の存在を要することを暗示する意図ではなく、そのように暗示しないものとする。
【0207】
本明細書において、本開示の実行に対して知られている最良の形態を含む本開示の好適な実施形態が記載される。当業者には、上記説明を読むことにより、これら好適な実施形態の変形例が明らかとなり得る。当業者は、このような変形例を必要に応じて採用できるものとし、本開示は、本明細書の具体的な記載と異なるように実施され得る。したがって、本開示は、適用法の許す限り、本明細書に添付の特許請求の範囲に記述されている主題のすべての修正および同等物を含む。さらに、本明細書における別段の指示のない限り、上述の要素の可能なすべての変形例における如何なる組合せも本開示に含まれる。
【0208】
本明細書に引用の刊行物、特許出願、および特許を含むすべての参考文献は、各参考文献の援用が個別かつ具体的に指示され、そのすべての内容が本明細書に記載されるのと同じ程度に本明細書に援用される。
【0209】
上記明細書において、特定の実施形態を参照して本開示の態様が記載されるが、当業者であれば、本開示がこれに限定されないことを認識するであろう。上述の本開示の種々特徴および態様が個別に使用されてもよいし、一体的に使用されてもよい。さらに、実施形態は、本明細書の広範な思想および範囲から逸脱することなく、本明細書に記載の環境および用途を越えて、任意数の環境および用途において利用され得る。したがって、本明細書および図面は、何ら限定するものではなく、例示として捉えられるものとする。
【国際調査報告】