(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-10
(54)【発明の名称】計算インスタンスの局面を修正するための技術
(51)【国際特許分類】
G06F 9/50 20060101AFI20231227BHJP
G06F 16/907 20190101ALI20231227BHJP
【FI】
G06F9/50 120A
G06F16/907
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023537066
(86)(22)【出願日】2021-03-09
(85)【翻訳文提出日】2023-08-14
(86)【国際出願番号】 US2021021575
(87)【国際公開番号】W WO2022132209
(87)【国際公開日】2022-06-23
(32)【優先日】2020-12-17
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】リンドホルム,ジェイコブ・エム
(72)【発明者】
【氏名】プライド,アンドリュー・ジェイムズ
(72)【発明者】
【氏名】ホーウィッツ,ジョシュ・アーロン
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175FB03
5B175KA04
(57)【要約】
本明細書で論じられるシステム、デバイス、方法およびコンピュータプログラム製品は、計算インスタンスの局面を修正することに向けられる。ユーザは、計算インスタンスに対する変更を要求し得る。変更が適用されると、システムは、計算インスタンスの将来の状態を示す状態オブジェクトを導き出し得る。状態オブジェクトの属性のサブセットのハッシュが計算されて、要求元コンピューティングコンポーネントに提供され得る。その後、システムは、変更を適用することに進み得る。変更の適用に基づいて、計算インスタンスの現状を示す現状オブジェクトが導き出され得る。現状オブジェクトの属性のサブセットのさらに他のハッシュが計算されて、要求元コンピューティングコンポーネントに提供され得る。これら2つのハッシュは、計算インスタンスに対する変更が実行されたことを要求元コンピューティングコンポーネントが確認することを可能にするように構成され得る。
【特許請求の範囲】
【請求項1】
コンピュータによって実行される方法であって、
コンピューティングシステムが、クラウドコンピューティング環境の計算インスタンスに対応する第1状態オブジェクトの管理に少なくとも部分的に基づいて、前記計算インスタンスを管理するステップを備え、前記第1状態オブジェクトは、前記計算インスタンスの現状を示す属性のセットを含み、前記コンピュータによって実行される方法はさらに、
コンピューティングシステムが、前記計算インスタンスの特定の属性に対する要求された変更を示す変更要求データを要求元コンピューティングコンポーネントから受信するステップと、
前記コンピューティングシステムが、前記要求された変更および前記計算インスタンスの前記現状を示す前記第1状態オブジェクトに少なくとも部分的に基づいて、前記計算インスタンスの第2状態オブジェクトを導き出すステップと、
前記コンピューティングシステムが、前記第2状態オブジェクトの属性のセットのうちの属性の第1のサブセットに少なくとも部分的に基づいて、第1のハッシュ値を算出するステップと、
前記コンピューティングシステムが、前記第1のハッシュ値を前記要求元コンピューティングコンポーネントに提供するステップと、
前記コンピューティングシステムが、前記計算インスタンスに対する前記要求された変更を実行するステップと、
前記コンピューティングシステムが、前記計算インスタンスに対する前記要求された変更の実行に少なくとも部分的に基づいて、前記第1状態オブジェクトを更新するステップと、
前記コンピューティングシステムが、前記第1状態オブジェクトの前記属性のセットのうちの第2のサブセットに少なくとも部分的に基づいて、第2のハッシュ値を算出するステップと、
前記コンピューティングシステムが、前記第2のハッシュ値を前記要求元コンピューティングコンポーネントに提供するステップとを備え、前記第1のハッシュ値および前記第2のハッシュ値は、前記要求された変更が前記計算インスタンスにおいて実行されたことを確認するために前記要求元コンピューティングコンポーネントによって利用されるように構成される、コンピュータによって実行される方法。
【請求項2】
前記第1状態オブジェクトの前記属性のセットの各属性および前記第2状態オブジェクトの前記属性のセットの各属性は、個々に、属性識別子と、前記属性識別子に対応する値とを含む、請求項1に記載のコンピュータによって実行される方法。
【請求項3】
前記要求元コンピューティングコンポーネントと1つまたは複数の属性識別子との間のマッピングに少なくとも部分的に基づいて、前記第2状態オブジェクトの前記属性のセットからの前記属性の第1のサブセットおよび前記第1状態オブジェクトの前記属性のセットからの前記属性の第2のサブセットを識別するステップをさらに備える、請求項1または2に記載のコンピュータによって実行される方法。
【請求項4】
前記第2状態オブジェクトおよび前記第1状態オブジェクトは、個々に、属性の共通のセットを含む、先行する請求項のいずれか1項に記載のコンピュータによって実行される方法。
【請求項5】
前記要求された変更を識別するデータを記憶場所に格納するステップをさらに備え、前記コンピューティングシステムのコンピューティングプロセスは、その後、前記記憶場所から前記データを取り出して、前記計算インスタンスに対する前記要求された変更を実行するための動作を実行する、先行する請求項のいずれか1項に記載のコンピュータによって実行される方法。
【請求項6】
コンピューティングシステムが、前記計算インスタンスの1つまたは複数の属性に対する第2の要求された変更を示す第2の変更要求を異なる要求元コンピューティングコンポーネントから受信するステップと、
前記コンピューティングシステムが、前記第1状態オブジェクトおよび前記第2の要求された変更に少なくとも部分的に基づいて、前記計算インスタンスの第3状態オブジェクトを導き出すステップと、
前記コンピューティングシステムが、前記第3状態オブジェクトの前記属性のセットのうちの属性の第3のサブセットに少なくとも部分的に基づいて、第3のハッシュ値を算出するステップとをさらに備え、前記属性の第3のサブセットは、前記属性の第1のサブセットとは異なる属性を有し、
前記コンピューティングシステムが、前記第3のハッシュ値を前記異なる要求元コンピューティングコンポーネントに提供するステップをさらに備え、前記第3のハッシュ値は、前記第2の要求された変更が前記計算インスタンスにおいて実行されたことを確認するために前記異なる要求元コンピューティングコンポーネントによって利用されるように構成される、先行する請求項のいずれか1項に記載のコンピュータによって実行される方法。
【請求項7】
前記コンピューティングシステムが、前記計算インスタンスに対する前記第2の要求された変更を実行するステップと、
前記コンピューティングシステムが、前記計算インスタンスに対する前記第2の要求された変更の実行に少なくとも部分的に基づいて、前記第1状態オブジェクトを更新するステップと、
前記コンピューティングシステムが、前記第1状態オブジェクトの前記属性のセットのうちの属性の第4のサブセットに少なくとも部分的に基づいて、第4のハッシュ値を算出するステップとをさらに備え、前記属性の第4のサブセットは、前記属性の第2のサブセットとは異なる属性を有し、
前記コンピューティングシステムが、前記第4のハッシュ値を前記第2の要求元コンピューティングコンポーネントに提供するステップをさらに備え、前記第4のハッシュ値は、前記第2の要求された変更が前記計算インスタンスにおいて実行されたことを確認するために前記異なる要求元コンピューティングコンポーネントによって利用されるように構成される、請求項6に記載のコンピュータによって実行される方法。
【請求項8】
コンピューティングデバイスであって、
非一時的なコンピュータ実行可能プログラム命令を格納するコンピュータ可読媒体に通信可能に結合された処理装置を備え、前記命令は、前記処理装置によって実行されると、前記コンピューティングデバイスに、
クラウドコンピューティング環境の計算インスタンスに対応する第1状態オブジェクトの管理に少なくとも部分的に基づいて、前記計算インスタンスを管理することを行わせ、前記第1状態オブジェクトは、前記計算インスタンスの現状を示す属性のセットを含み、前記命令はさらに、前記処理装置によって実行されると、前記コンピューティングデバイスに、
前記計算インスタンスの特定の属性に対する要求された変更を示す変更要求データを要求元コンピューティングコンポーネントから受信することと、
前記要求された変更および前記計算インスタンスの前記現状を示す前記第1状態オブジェクトに少なくとも部分的に基づいて、前記計算インスタンスの第2状態オブジェクトを導き出すことと、
前記第2状態オブジェクトの属性のセットのうちの属性の第1のサブセットに少なくとも部分的に基づいて、第1のハッシュ値を算出することと、
前記第1のハッシュ値を前記要求元コンピューティングコンポーネントに提供することと、
前記計算インスタンスに対する前記要求された変更を実行することと、
前記計算インスタンスに対する前記要求された変更の実行に少なくとも部分的に基づいて、前記第1状態オブジェクトを更新することと、
前記第1状態オブジェクトの前記属性のセットのうちの第2のサブセットに少なくとも部分的に基づいて、第2のハッシュ値を算出することと、
前記第2のハッシュ値を前記要求元コンピューティングコンポーネントに提供することとを行わせ、前記第1のハッシュ値および前記第2のハッシュ値は、前記要求された変更が前記計算インスタンスにおいて実行されたことを確認するために前記要求元コンピューティングコンポーネントによって利用されるように構成される、コンピューティングデバイス。
【請求項9】
前記第1状態オブジェクトの前記属性のセットの各属性および前記第2状態オブジェクトの前記属性のセットの各属性は、個々に、属性識別子と、前記属性識別子に対応する値とを含む、請求項8に記載のコンピューティングデバイス。
【請求項10】
前記コンピュータ実行可能プログラム命令を実行することはさらに、前記コンピューティングデバイスに、前記要求元コンピューティングコンポーネントと1つまたは複数の属性識別子との間のマッピングに少なくとも部分的に基づいて、前記第2状態オブジェクトの前記属性のセットからの前記属性の第1のサブセットおよび前記第1状態オブジェクトの前記属性のセットからの前記属性の第2のサブセットを識別することを行わせる、請求項8または9に記載のコンピューティングデバイス。
【請求項11】
前記第2状態オブジェクトおよび前記第1状態オブジェクトは、個々に、属性の共通のセットを含む、請求項8~10のいずれか1項に記載のコンピューティングデバイス。
【請求項12】
前記コンピュータ実行可能プログラム命令を実行することはさらに、前記コンピューティングデバイスに、前記要求された変更を識別するデータを記憶場所に格納することを行わせ、前記コンピューティングデバイスのコンピューティングプロセスは、その後、前記記憶場所から前記データを取り出して、前記計算インスタンスに対する前記要求された変更を実行するための動作を実行する、請求項8~11のいずれか1項に記載のコンピューティングデバイス。
【請求項13】
前記コンピュータ実行可能プログラム命令を実行することはさらに、前記コンピューティングデバイスに、
前記計算インスタンスの1つまたは複数の属性に対する第2の要求された変更を示す第2の変更要求を異なる要求元コンピューティングコンポーネントから受信することと、
前記第1状態オブジェクトおよび前記第2の要求された変更に少なくとも部分的に基づいて、前記計算インスタンスの第3状態オブジェクトを導き出すことと、
前記第3状態オブジェクトの前記属性のセットのうちの属性の第3のサブセットに少なくとも部分的に基づいて、第3のハッシュ値を算出することとを行わせ、前記属性の第3のサブセットは、前記属性の第1のサブセットとは異なる属性を有し、前記コンピュータ実行可能プログラム命令を実行することはさらに、前記コンピューティングデバイスに、
前記第3のハッシュ値を前記異なる要求元コンピューティングコンポーネントに提供することを行わせ、前記第3のハッシュ値は、前記第2の要求された変更が前記計算インスタンスにおいて実行されたことを確認するために前記異なる要求元コンピューティングコンポーネントによって利用されるように構成される、請求項8~12のいずれか1項に記載のコンピューティングデバイス。
【請求項14】
前記コンピュータ実行可能プログラム命令を実行することはさらに、前記コンピューティングデバイスに、
前記計算インスタンスに対する前記第2の要求された変更を実行することと、
前記計算インスタンスに対する前記第2の要求された変更の実行に少なくとも部分的に基づいて、前記第1状態オブジェクトを更新することと、
前記第1状態オブジェクトの前記属性のセットのうちの属性の第4のサブセットに少なくとも部分的に基づいて、第4のハッシュ値を算出することとをさらに行わせ、前記属性の第4のサブセットは、前記属性の第2のサブセットとは異なる属性を有し、前記コンピュータ実行可能プログラム命令を実行することはさらに、前記コンピューティングデバイスに、
前記第4のハッシュ値を前記第2の要求元コンピューティングコンポーネントに提供することを行わせ、前記第4のハッシュ値は、前記第2の要求された変更が前記計算インスタンスにおいて実行されたことを確認するために前記異なる要求元コンピューティングコンポーネントによって利用されるように構成される、請求項13に記載のコンピューティングデバイス。
【請求項15】
コンピュータ実行可能プログラム命令を格納する非一時的なコンピュータ可読記憶媒体であって、前記命令は、コンピューティングデバイスの処理装置によって実行されると、前記コンピューティングデバイスに動作を実行させ、前記動作は、
クラウドコンピューティング環境の計算インスタンスに対応する第1状態オブジェクトの管理に少なくとも部分的に基づいて、前記計算インスタンスを管理することを含み、前記第1状態オブジェクトは、前記計算インスタンスの現状を示す属性のセットを含み、前記動作はさらに、
前記計算インスタンスの特定の属性に対する要求された変更を示す変更要求データを要求元コンピューティングコンポーネントから受信することと、
前記要求された変更および前記計算インスタンスの前記現状を示す前記第1状態オブジェクトに少なくとも部分的に基づいて、前記計算インスタンスの第2状態オブジェクトを導き出すことと、
前記第2状態オブジェクトの属性のセットのうちの属性の第1のサブセットに少なくとも部分的に基づいて、第1のハッシュ値を算出することと、
前記第1のハッシュ値を前記要求元コンピューティングコンポーネントに提供することと、
前記計算インスタンスに対する前記要求された変更を実行することと、
前記計算インスタンスに対する前記要求された変更の実行に少なくとも部分的に基づいて、前記第1状態オブジェクトを更新することと、
前記第1状態オブジェクトの前記属性のセットのうちの第2のサブセットに少なくとも部分的に基づいて、第2のハッシュ値を算出することと、
前記第2のハッシュ値を前記要求元コンピューティングコンポーネントに提供することとを含み、前記第1のハッシュ値および前記第2のハッシュ値は、前記要求された変更が前記計算インスタンスにおいて実行されたことを確認するために前記要求元コンピューティングコンポーネントによって利用されるように構成される、非一時的なコンピュータ可読記憶媒体。
【請求項16】
前記動作はさらに、前記要求元コンピューティングコンポーネントと1つまたは複数の属性識別子との間のマッピングに少なくとも部分的に基づいて、前記第2状態オブジェクトの前記属性のセットからの前記属性の第1のサブセットおよび前記第1状態オブジェクトの前記属性のセットからの前記属性の第2のサブセットを識別することを含む、請求項15に記載の非一時的なコンピュータ可読記憶媒体。
【請求項17】
前記第1状態オブジェクトおよび前記第2状態オブジェクトは、個々に、属性の共通のセットを含む、請求項15または16に記載の非一時的なコンピュータ可読記憶媒体。
【請求項18】
前記動作はさらに、前記要求された変更を識別するデータを記憶場所に格納することを含み、前記コンピューティングシステムのコンピューティングプロセスは、その後、前記記憶場所から前記データを取り出して、前記計算インスタンスに対する前記要求された変更を実行するための動作を実行する、請求項15~17のいずれか1項に記載の非一時的なコンピュータ可読記憶媒体。
【請求項19】
前記動作はさらに、
前記計算インスタンスの1つまたは複数の属性に対する第2の要求された変更を示す第2の変更要求を異なる要求元コンピューティングコンポーネントから受信することと、
前記第1状態オブジェクトおよび前記第2の要求された変更に少なくとも部分的に基づいて、前記計算インスタンスの第3状態オブジェクトを導き出すことと、
前記第3状態オブジェクトの前記属性のセットのうちの属性の第3のサブセットに少なくとも部分的に基づいて、第3のハッシュ値を算出することとを含み、前記属性の第3のサブセットは、前記属性の第1のサブセットとは異なる属性を有し、前記動作はさらに、
前記第3のハッシュ値を前記異なる要求元コンピューティングコンポーネントに提供することを含み、前記第3のハッシュ値は、前記第2の要求された変更が前記計算インスタンスにおいて実行されたことを確認するために前記異なる要求元コンピューティングコンポーネントによって利用されるように構成される、請求項15~18のいずれか1項に記載の非一時的なコンピュータ可読記憶媒体。
【請求項20】
前記動作はさらに、
前記計算インスタンスに対する前記第2の要求された変更を実行することと、
前記計算インスタンスに対する前記第2の要求された変更の実行に少なくとも部分的に基づいて、前記第1状態オブジェクトを更新することと、
前記第1状態オブジェクトの前記属性のセットのうちの属性の第4のサブセットに少なくとも部分的に基づいて、第4のハッシュ値を算出することとを含み、前記属性の第4のサブセットは、前記属性の第2のサブセットとは異なる属性を有し、前記動作はさらに、
前記第4のハッシュ値を前記第2の要求元コンピューティングコンポーネントに提供することを含み、前記第4のハッシュ値は、前記第2の要求された変更が前記計算インスタンスにおいて実行されたことを確認するために前記異なる要求元コンピューティングコンポーネントによって利用されるように構成される、請求項19に記載の非一時的なコンピュータ可読記憶媒体。
【請求項21】
請求項1~7のいずれか1項に記載の方法のステップを実行するための手段を備える装置。
【請求項22】
プロセッサによって実行されると、請求項1~7のいずれか1項に記載の方法のステップを実行するコンピュータ命令を備えるコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
この非仮出願は、「計算インスタンスを修正するための技術(Techniques for Modifying a Compute Instance)」と題される、2020年12月17日に出願された米国特許出願番号第17/125,802号に対する優先権を主張し、米国特許出願番号第17/125,802号の開示は、全ての目的で全文が引用によって本明細書に援用される。
【背景技術】
【0002】
背景
クラウドコンピューティングプロバイダは、さまざまなユーザを代表して多くの計算インスタンスを管理することができる。一般的に言って、ユーザは、それらの計算インスタンスの局面を修正することはできない。さらに、計算インスタンスに対する変更がいつ収束したかを確かめることは困難であろう。本明細書に記載されている実施形態は、これらのおよび他の問題に個別的および集合的に対処する。
【発明の概要】
【課題を解決するための手段】
【0003】
簡単な概要
クラウドコンピューティングインフラストラクチャ(CCI:Cloud Computing Infrastructure)プロバイダによって管理される計算インスタンスの局面を修正するための技術(たとえば、方法、システム、1つまたは複数のプロセッサによって実行可能なコードまたは命令を格納する非一時的なコンピュータ可読媒体)が提供される。方法、システム、1つまたは複数のプロセッサによって実行可能なプログラム、コードまたは命令を格納する非一時的なコンピュータ可読記憶媒体などを含むさまざまな実施形態が本明細書に記載されている。
【0004】
一実施形態は、方法に向けられる。上記方法は、コンピューティングシステムが、クラウドコンピューティング環境の計算インスタンスに対応する第1状態オブジェクトの管理に少なくとも部分的に基づいて、上記計算インスタンスを管理するステップを備え得る。いくつかの実施形態では、上記第1状態オブジェクトは、上記計算インスタンスの現状を示す属性のセットを含む。上記方法はさらに、上記コンピューティングシステムが、上記計算インスタンスの特定の属性に対する要求された変更を示す変更要求データを要求元コンピューティングコンポーネントから受信するステップを備え得る。上記方法はさらに、上記コンピューティングシステムが、上記要求された変更および上記計算インスタンスの上記現状を示す上記第1状態オブジェクトに少なくとも部分的に基づいて、上記計算インスタンスの第2状態オブジェクトを導き出すステップを備え得る。上記方法はさらに、上記コンピューティングシステムが、上記第2状態オブジェクトの属性のセットのうちの属性の第1のサブセットに少なくとも部分的に基づいて、第1のハッシュ値を算出するステップを備え得る。上記方法はさらに、上記コンピューティングシステムが、上記第1のハッシュ値を上記要求元コンピューティングコンポーネントに提供するステップを備え得る。上記方法はさらに、上記コンピューティングシステムが、上記計算インスタンスに対する上記要求された変更を実行するステップを備え得る。上記方法はさらに、上記コンピューティングシステムが、上記計算インスタンスに対する上記要求された変更の実行に少なくとも部分的に基づいて、上記第1状態オブジェクトを更新するステップを備え得る。上記方法はさらに、上記コンピューティングシステムが、上記第1状態オブジェクトの上記属性のセットのうちの第2のサブセットに少なくとも部分的に基づいて、第2のハッシュ値を算出するステップを備え得る。上記方法はさらに、上記コンピューティングシステムが、上記第2のハッシュ値を上記要求元コンピューティングコンポーネントに提供するステップを備え得る。いくつかの実施形態では、上記第1のハッシュ値および上記第2のハッシュ値は、上記要求された変更が上記計算インスタンスにおいて実行されたことを確認するために上記要求元コンピューティングコンポーネントによって利用されるように構成される。
【0005】
別の実施形態は、コンピューティングデバイスに向けられる。上記コンピューティングデバイスは、非一時的なコンピュータ実行可能プログラム命令を格納するコンピュータ可読媒体を備え得る。上記コンピューティングデバイスはさらに、上記非一時的なコンピュータ実行可能プログラム命令を実行するためのコンピュータ可読媒体に通信可能に結合された処理装置を備え得る。上記処理装置を用いて上記非一時的なコンピュータ実行可能プログラム命令を実行することは、上記コンピューティングデバイスに上記方法を実行させる。
【0006】
さらに別の実施形態は、コンピューティングデバイスの処理装置によって実行されると、上記コンピューティングデバイスに上記方法を実行させるコンピュータ実行可能プログラム命令を格納する非一時的なコンピュータ可読記憶媒体に向けられる。
【0007】
別の実施形態は、上記方法のステップを実行するための手段を備える装置に向けられる。
【0008】
さらに別の実施形態は、プロセッサによって実行されると、上記方法のステップを実行するコンピュータ命令を備えるコンピュータプログラム製品に向けられる。
【0009】
上記の事項は、他の特徴および実施形態とともに、以下の明細書、特許請求の範囲および添付の図面を参照すると、より明らかになるであろう。
【0010】
図面を参照して、本開示に係るさまざまな実施形態について説明する。
【図面の簡単な説明】
【0011】
【
図1】少なくとも1つの実施形態に係る、計算インスタンスを修正するための開示されている技術が実現され得る例示的な環境を示す図である。
【
図2】少なくとも1つの実施形態に係る、計算インスタンスに対する要求された変更を表すハッシュ値を導き出すための例示的な方法を示すフロー図である。
【
図3】少なくとも1つの実施形態に係る、例示的な現状オブジェクトを示す図である。
【
図4】少なくとも1つの実施形態に係る、例示的な所望状態オブジェクトを示す図である。
【
図5】少なくとも1つの実施形態に係る、要求された変更を計算インスタンスに適用するための例示的な方法を示すフロー図である。
【
図6】少なくとも1つの実施形態に係る、以前に要求された変更が計算インスタンスに対してなされたことを識別するための例示的な方法を示すフロー図である。
【
図7】少なくとも1つの実施形態に係る、計算インスタンスの属性を修正するための方法の一例を示すフローチャートである。
【
図8】少なくとも1つの実施形態に係る、クラウドインフラストラクチャをサービスシステムとして実現するための1つのパターンを示すブロック図である。
【
図9】少なくとも1つの実施形態に係る、クラウドインフラストラクチャをサービスシステムとして実現するための別のパターンを示すブロック図である。
【
図10】少なくとも1つの実施形態に係る、クラウドインフラストラクチャをサービスシステムとして実現するための別のパターンを示すブロック図である。
【
図11】少なくとも1つの実施形態に係る、クラウドインフラストラクチャをサービスシステムとして実現するための別のパターンを示すブロック図である。
【
図12】少なくとも1つの実施形態に係る、例示的なコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【0012】
詳細な説明
以下の説明では、特定の実施形態の理解の徹底を期すために、具体的な詳細が説明の目的で記載されている。しかし、これらの具体的な詳細がなくてもさまざまな実施形態を実施できることは明らかであろう。図面および説明は、限定的であるよう意図されるものではない。「例示的」という語は、「例、事例、または例示として供される」ことを意味するように本明細書で用いられる。「例示的」として本明細書に記載されている実施形態または設計はいずれも、必ずしも、他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。
【0013】
本開示は、1つまたは複数のクラウドコンピューティングプロバイダコンピュータ(本明細書では、簡潔にするために、「クラウドコンピューティングコンピュータ」と称される)によって管理される計算インスタンスのユーザ修正を可能にするためのシステムおよび技術に関する。ユーザは、計算インスタンスのある局面を変更したい場合がある。例として、ユーザは、計算インスタンスのコンポーネントに名前変更を要求したい場合がある。それに応じて、ユーザは、計算インスタンスの属性(たとえば、計算インスタンスのコンポーネントの名前に対応する属性)を修正する要求を、クラウドコンピューティングコンピュータによって公開されたアプリケーションプログラミングインターフェイスを介して提示し得る。クラウドコンピューティングコンピュータは、この要求を受信して、計算インスタンスの現状を取り出し得る。計算インスタンスの現状は、状態オブジェクト(「現状オブジェクト」と称される)に維持され得る。変更が実行される場合、クラウドコンピューティングコンピュータは、計算インスタンスの将来の状態を計算し得る。例として、状態オブジェクトがコピーされ得て、その属性が変更要求に従って修正され得る。これらの修正された属性のセットは、その後の使用のために、別個の状態オブジェクト(「要求された状態オブジェクト」と称される)として格納され得る。
【0014】
各計算インスタンスは、任意の好適な数の属性に関連付けられ得る。これらの属性は、インスタンス上で実行される画像バージョン(たとえば、オペレーティングシステム、ソフトウェアパッケージ、デフォルト構成などに対応する画像バージョン)、中央処理装置(CPU:Central Processing Unit)の数、ホストに割り当てられるメモリの量、1つまたは複数のセキュリティトークンの有効期限、どの計算インスタンスを使用するかを示すアドレスなどを含み得る。本明細書における例は、ユーザによるコンポーネント名の修正について論じているが、これらの例は、ユーザが要求し得る他の変更にも同等に適用される、ということが理解されるべきである。ユーザによって要求されるこれらの変更は、計算インスタンスに関連付けられた属性の任意の好適な組み合わせの1つまたは複数の修正に関連し得る。
【0015】
要求された状態オブジェクトの属性のセットのサブセットからハッシュ値が算出され得る。ハッシュされる特定の属性のセットは、予め定義されており、要求側(または、変更要求を開始するために利用されるコンピューティングコンポーネント)によって異なってもよい。異なったユーザは、計算インスタンスの異なった局面に関心を持つ場合がある。したがって、あるユーザについて計算されるハッシュ値は、別のユーザについてのハッシュを計算するために使用されるオブジェクトの属性/データフィールドのセットとは異なるオブジェクトの属性/データフィールドのセットを利用し得る。
【0016】
ハッシュ値(たとえば、要求された変更に対応するハッシュ値)は、変更要求を提供したコンポーネント(たとえば、要求元コンピューティングコンポーネント)に提供されて、その後の検証のために格納され得る。周期的に、計算インスタンスの現状オブジェクトが取り出され得て、計算インスタンスの現状に対応するハッシュ値が当該オブジェクトから計算されて、要求元コンピューティングコンポーネントに提供され得る。これらのハッシュ値は、要求された変更が計算インスタンスに適用されたことを判断するために要求元コンピューティングコンポーネントによって利用され得る。例として、要求元コンピューティングコンポーネントは、要求された変更に対応するハッシュ値と、計算インスタンスの現状に対応するハッシュ値とを比較し得る。これらのハッシュ値が一致する場合、要求元コンピューティングコンポーネントは、要求された変更が計算インスタンスに適用されたと判断するように構成され得る。
【0017】
開示されている技術は、従来のシステムよりも改良を提供する。従来のシステムは、ユーザが計算インスタンスの局面を修正することを制限することがあり、および/または、特定の変更が計算インスタンスに対していつなされたかを確かめることは困難であることがある。本明細書に記載されている技術を利用することによって、要求元コンピューティングコンポーネントは、要求された状態オブジェクトの属性と、計算インスタンスの現状を維持する状態オブジェクトの属性とを比較しなくてもよくなる。それどころか、要求元コンピューティングコンポーネントは、要求された変更が実行されたかどうかを確かめるために2つのハッシュ値を比較するだけでよい。クラウドコンピューティングプロバイダコンピュータの管理プレーンを利用して、要求された変更を実施し、計算インスタンスの現状を更新し、ハッシュ値を算出することができる。このように、要求元コンピューティングコンポーネントに関連付けられた特定の属性および/または厳密な実装は管理プレーン内で変化し得るが、要求元コンピューティングコンポーネント(たとえば、クラウドコンピューティングプロバイダコンピュータの制御プレーン)を修正する必要はない。管理プレーンにおいて計算インスタンスを修正してハッシュ値を算出することに対応するロジックを維持することによって、要求元コンピューティングコンポーネント(たとえば、コンピューティングシステムの制御プレーン)の実装は、大幅に簡略化され、管理プレーンに対してなされる変更から切り離される。
【0018】
図1に移って、
図1は、少なくとも1つの実施形態に係る、計算インスタンスを修正するための開示されている技術が実現され得る例示的な環境100を示す図である。環境100は、ユーザを代表して、1つまたは複数のインフラストラクチャコンポーネント(たとえば、インフラストラクチャコンポーネント104)を管理するように構成されたクラウドインフラストラクチャシステム102を含み得る。クラウドコンピューティングプロバイダは、インフラストラクチャコンポーネント104(たとえば、サーバ、ストレージデバイス、ネットワークノード(たとえば、ハードウェア)、展開ソフトウェア、プラットフォーム仮想化(たとえば、ハイパーバイザ層)など)を提供するクラウドコンピューティング環境102をホストすることができる。1つまたは複数のインフラストラクチャコンポーネントは、特定のインフラストラクチャコンポーネントを提供するように構成された任意の好適な数の計算インスタンスを含み得る。計算インスタンスは、高パフォーマンスおよび強い隔離のために専用の物理サーバアクセスを提供する1つまたは複数のベアメタル計算インスタンス、および/または、1つまたは複数の仮想マシンを含み得る。仮想マシンは、物理的なベアメタルハードウェアの上で実行される独立したコンピューティング環境である。インフラストラクチャコンポーネント104は、任意の好適な数のユーザにコンピューティングリソースを提供するように構成され得る。いくつかの実施形態では、クラウドコンピューティングプロバイダはまた、それらのインフラストラクチャコンポーネントに付随するよう、さまざまなサービス(たとえば、課金、モニタリング、ロギング、セキュリティ、負荷分散およびクラスタリングなど)を供給し得る。したがって、これらのサービスはポリシー駆動型であり得るので、ユーザは、アプリケーションの利用可能性およびパフォーマンスを維持するために負荷分散を駆動するためのポリシーを実行することができるであろう。
【0019】
いくつかの事例では、クラウドインフラストラクチャシステム102のリソースおよびサービスに(たとえば、ユーザインターフェイス108を介して)アクセスするためにユーザデバイス106が利用され得る。ユーザデバイス106は、携帯電話、ハンドヘルドスキャナ、タッチスクリーンデバイス、スマートフォン、携帯情報端末(PDA:Personal Digital Assistant)、ラップトップコンピュータ、デスクトップコンピュータ、シンクライアントデバイス、タブレットPCなどであるがそれらに限定されない任意の好適なタイプのコンピューティングデバイスであり得る。いくつかの例では、ユーザデバイス106は、ネットワーク110を介して、または他のネットワーク接続を介して、クラウドインフラストラクチャシステム102と通信し得る。いくつかの例では、ネットワーク110は、ケーブルネットワーク、インターネット、無線ネットワーク、セルラーネットワーク、ならびに他のプライベートおよび/またはパブリックネットワークなどの多くの異なるタイプのネットワークのうちのいずれか1つまたはそれらの組み合わせを含み得る。ユーザデバイス106を利用して、仮想マシン(VM:Virtual Machine)(たとえば、計算インスタンス)を作成し、これらのVMにオペレーティングシステム(OS:Operating System)をインストールし、データベースなどのミドルウェアを展開し、ワークロードおよびバックアップのためにストレージバケットを作成し、ならびに/または、企業ソフトウェアを当該VM上にインストールする、クラウドインフラストラクチャシステム102の機能を呼び出すことができる。さらに、ユーザデバイス106を利用して、ネットワークトラフィックの均衡化、アプリケーション問題のトラブルシューティング、パフォーマンスの監視、災害復旧の管理などを含むさまざまな機能を実行するためのプロバイダのサービスを要求することができる。
【0020】
クラウドインフラストラクチャシステム102は、制御プレーン112と、データプレーン114とを含み得る。いくつかの実施形態では、制御プレーン112は、クラウドインフラストラクチャシステム102の機能を(たとえば、ユーザデバイス106によって)呼び出すことができる1つまたは複数のアプリケーションプログラミングインターフェイスを公開し得る。制御プレーン112は、(たとえば、ユーザデバイス106から)要求を受信し、それらの要求に応答して、それらの要求に対応する動作を実行するためのデータをデータプレーン114に提供するように構成され得る。いくつかの実施形態では、制御プレーン112は、ユーザデバイス106によって開始される1つまたは複数の要求のステータスに関するステータス更新をユーザデバイス106に提供するように構成され得る。制御プレーン112によって受信される要求のうちのいくつかは、既存のインフラストラクチャコンポーネント104に対する修正を要求し得る。
【0021】
クラウドインフラストラクチャシステム102は、データプレーン114を含み得る。いくつかの実施形態では、データプレーン114は、制御プレーン112によって提供された要求に従ってインフラストラクチャコンポーネント104をプロビジョニング、展開および維持するための任意の好適な動作を実行するように構成され得る。いくつかの実施形態では、データプレーン114は、1つまたは複数のコンピューティングプロセス(たとえば、ワーカ116)を利用して、インフラストラクチャコンポーネント104のプロビジョニング、インフラストラクチャコンポーネント104へのソフトウェアアーティファクトの展開、インフラストラクチャコンポーネント104の局面の修正などに関連するさまざまな動作を実行し得る。
【0022】
データプレーン114は、各インフラストラクチャコンポーネント104の現状に対応する状態オブジェクトを維持するように構成され得る。これらの状態オブジェクトは、変更時に、予め定義された周期性に従って、スケジュールに従って、または任意の好適なときに、モニタリングサービス120によって周期的に更新され得る。いくつかの実施形態では、データプレーン114は、追加の状態オブジェクトを維持し得て、これらの追加の状態オブジェクトの各々は、所与のインフラストラクチャコンポーネントについて提示された要求された変更に対応する。これらの追加の状態オブジェクトは、本明細書では「所望状態オブジェクト」と称され得る。現状オブジェクトおよび所望状態オブジェクトの例は、それぞれ
図3および
図4に関連付けて提供される。いくつかの実施形態では、これらのオブジェクトは、状態情報データストア118に格納され得る。
【0023】
データプレーン114は、任意の好適なときに、状態オブジェクトの1つまたは複数の属性のハッシュを算出し得る。いくつかの実施形態では、ハッシュの算出に使用される特定の属性は、インフラストラクチャコンポーネントの変更を要求した要求側および/または要求元コンピューティングコンポーネントによって決まるであろう。いくつかの実施形態では、データプレーン114は、特定の要求側/要求元コンピューティングコンポーネントについてのハッシュ値の算出に利用される対応する属性のセットを状態オブジェクトから識別するマッピングで構成され得る。データプレーン114は、インフラストラクチャコンポーネントの所望状態および現状に対応するハッシュ値を計算し得る。例として、データプレーン114は、インフラストラクチャの現状に対応する属性を、状態情報データストア118に格納された現状オブジェクトの中に維持し得る。データプレーン114は、制御プレーン112から受信された(および、いくつかの実施形態では、ユーザデバイス106から開始された)要求された変更に従って、現状オブジェクトを取り出して、その属性を修正し得る。データプレーン114は、所望状態に対応するハッシュ値を算出して、このハッシュ値を制御プレーン112に提供し得て、次に、制御プレーン112は、その後の使用のためにこのハッシュ値を格納し得る。制御プレーン112は、予め定義された周期性および/またはスケジュールに従って現状ハッシュ値をデータプレーン114から要求するように構成され得る。
【0024】
データプレーン114は、要求された変更を所与のインフラストラクチャコンポーネントに適用するための動作を実行することによってワーカ116をインスタンス化するおよび/または割り当てるように構成され得る。いくつかの実施形態では、データプレーン114は、インフラストラクチャコンポーネント104の管理および/または修正に関連付けられたさまざまなタスクに対応するデータを状態情報データストア118(または、別の好適な場所)に格納し得る。ワーカ116は、このデータをシーケンシャルに(たとえば、データが格納された順に)取り出して、タスク(たとえば、インフラストラクチャコンポーネントの属性の修正)を実行するための任意の好適な動作を実行するように構成され得る。モニタリングサービス120は、インフラストラクチャコンポーネントの状態を監視し得て、変更が生じたと判断すると、当該インフラストラクチャコンポーネントの現状に対応する現状オブジェクトを更新し得る。この更新されたオブジェクトは、引き続き状態情報データストア118に格納され得る。モニタリングサービス120は、データプレーン114の機能を呼び出し得て、および/または、モニタリングサービス120は、要求された変更によって修正された現状オブジェクトに対応するハッシュ値を算出するように構成され得る。データプレーン114および/またはデータプレーン114のコンポーネント(たとえば、モニタリングサービス120)によって算出されたハッシュ値は、任意の好適なときに(たとえば、すぐに、または、制御プレーン112から受信される現状ハッシュ値の次の要求時に)制御プレーン112に提供され得る。制御プレーン112は、以前に提供された所望状態ハッシュ値とデータプレーン114から取得された各現状ハッシュ値との比較などの調停動作を実行するように構成され得る。所望状態ハッシュ値と現状ハッシュ値とが一致すると制御プレーン112が判断すると、制御プレーン112は、要求された変更が完了したことを示すステータスデータをユーザインターフェイス108を介してユーザデバイス106に提供するように構成され得る。いくつかの実施形態では、要求された変更が完了すると、データプレーン114(または、ワーカ116などのデータプレーン114のコンポーネント)は、要求された変更に関係するいかなるデータも削除するための動作を実行し得るが、現状オブジェクトは状態情報データストア118に残って、引き続き時間の経過とともにモニタリングサービス120によって更新される。
【0025】
図2は、少なくとも1つの実施形態に係る、計算インスタンスに対する要求された変更を表すハッシュ値を導き出すための例示的な方法200を示すフロー図である。方法200は、ユーザデバイス202(たとえば、
図1のユーザデバイス106)、制御プレーン204(たとえば、
図1の制御プレーン112)、データプレーン206(たとえば、
図1のデータプレーン114)および状態情報データストア208(たとえば、
図1の状態情報データストア118)によって実行され得る。方法200は、
図2に示される動作よりも多くの動作または少ない動作を含み得る。これらの動作は、任意の好適な順序で実行され得る。いくつかの実施形態では、複数のコンポーネントによって実行される1つまたは複数の動作が単一のコンポーネントによって実行され得、および/または、単一のコンポーネントによって実行される動作が複数のコンポーネントによって分割されて提供され得る。
【0026】
方法200は、210から開始し得て、210において、ユーザデバイス202は、既存のインフラストラクチャコンポーネントのある局面を修正する要求を(たとえば、
図1のユーザインターフェイス108などのユーザインターフェイスを介して)開始し得る。例として、ユーザデバイス202を利用して、特定のインフラストラクチャコンポーネントのコンポーネント名(または、画像バージョン、CPUの数、メモリの量、1つまたは複数のセキュリティトークンに対応する有効期限、アドレスなどの別の属性)を修正する要求(たとえば、変更要求)を開始し得る。この変更要求は、ユーザデバイス202および/またはユーザデバイス202に関連付けられたエンティティ(たとえば、ユーザ)の識別子、要求された変更を示すための任意の好適なデータ、ならびに、変更要求が適用されるインフラストラクチャコンポーネント(たとえば、
図1のインフラストラクチャコンポーネント104のうちの1つ以上)を示す任意の好適なデータなどの任意の好適なデータを含み得る。
【0027】
212において、制御プレーン204は、データプレーン206によって公開された任意の好適なアプリケーションプログラミングインターフェイスを利用して、変更要求をデータプレーン206に渡し得る。214において、変更要求の受信に応答して、データプレーン206は、変更要求において識別されたインフラストラクチャコンポーネントに対応する状態情報データストア208から状態オブジェクトを取得するように構成され得る。例示を目的として、例示的な変更要求は、単一のインフラストラクチャコンポーネントについての変更(たとえば、名前変更、画像バージョン変更、CPUの数に対する変更、メモリの量に対する変更、有効期限に対する変更、アドレス変更など)を示し得る。この例では、当該インフラストラクチャコンポーネントに関連付けられた現状属性を維持するためにデータプレーン206によって使用される状態オブジェクトは、状態情報データストア208から取得され得る。いくつかの実施形態では、インフラストラクチャコンポーネントの識別子が変更要求から取得されて、この識別子を利用して状態情報データストア208から対応する状態オブジェクトを取り出し得る。
【0028】
図3は、少なくとも1つの実施形態に係る、例示的な現状オブジェクト(たとえば、現状オブジェクト300、
図2に関連付けて修正されるインフラストラクチャコンポーネントの現状に対応する属性のセットを維持する状態オブジェクト)を示す図である。現状オブジェクトは、任意の好適な数の属性を含み得る。各属性は、属性識別子(たとえば、「属性1」、「属性2」など)と、対応する値(たとえば、値1、値2など)とを含み得る。現状オブジェクト300は、特定のインフラストラクチャコンポーネントの現状に関連付けられた属性のスーパーセットを格納するために利用され得る。いくつかの実施形態では、セットの属性のうちの少なくとも1つは、オブジェクトが関係するインフラストラクチャコンポーネントに対応する識別子を含み得る。この識別子を利用して、各々が異なるインフラストラクチャコンポーネントに対応するオブジェクトのセットからオブジェクトを検索して取り出し得る。
【0029】
いくつかの実施形態では、特定の要求側が現状のどの属性にも関心を示さない場合がある。それどころか、ある変更要求側は属性のサブセット(たとえば、属性サブセット302)に関心を示し得るが、異なる変更要求側は属性の異なるサブセット(たとえば、属性サブセット304)に関心を示し得る。いくつかの実施形態では、これらのサブセットは相互排他的であり得、または、2つ以上のサブセットがそれらの中の1つまたは複数の属性を共有し得る。
図2のデータプレーン206は、特定の要求側に関係する特定の属性のサブセットを示すマッピングで構成され得る。いくつかの実施形態では、このマッピングは、データプレーンに関連付けられた構成努力の一部として、ランタイムより前に予めロードされ得る。
【0030】
図2に戻って、データプレーン206は、このマッピングから、変更要求側に関連付けられた属性のサブセットを識別し得る。非限定的な例として、マッピングは、サブセット302を変更要求側に関係しているとして識別し得る。データプレーン206は、新たな状態オブジェクト(たとえば、所望状態オブジェクト)を生成して、現状オブジェクト300の属性をこの新たな状態オブジェクトにコピーし得る。次いで、所望状態オブジェクトは、変更要求に従って修正され得る。言い換えれば、データプレーン206は、所望状態オブジェクトの1つまたは複数の属性を、インフラストラクチャコンポーネントに対する変更が完了した後に現状オブジェクト内に存在すべき値に修正し得る。変更要求に対してなされるいかなる変更も含むこれらの属性および対応する値は、「所望状態データ」と称され得て、インフラストラクチャコンポーネントの所望のおよび/または将来の状態を示すのに使用することができる。
【0031】
図4は、少なくとも1つの実施形態に係る、例示的な所望状態オブジェクト(たとえば、所望状態オブジェクト400)を示す図である。所望状態オブジェクト400は、現状オブジェクト300と同一の属性を含み得るという点において
図3の現状オブジェクト300と実質的に同様であり得るが、それらの属性のそれぞれの値はオブジェクト間で異なっていてもよい。所望状態オブジェクト400は、インフラストラクチャコンポーネントの状態を示す属性のスーパーセットも含み得る。現状オブジェクトは、インフラストラクチャコンポーネントの現状を示すデータ(たとえば、現状データ)を維持するのに対して、所望状態オブジェクト400は、変更要求に対応する所望のおよび/または将来の状態を示すデータを維持するために利用され得る。所望状態オブジェクト400は、属性サブセット302および属性サブセット304にそれぞれ対応する属性サブセット402および属性サブセット404も含み得る。
【0032】
図2に戻って、方法200は218に進み得て、218において、データプレーン206は、それが格納しているマッピングから、要求元コンピューティングコンポーネント(たとえば、ユーザデバイス106に関連付けられたエンティティ)に対応する属性サブセット(たとえば、
図2の属性サブセット402)を識別し得る。例として、データプレーン206は、212において受信された変更要求データから、ユーザデバイス202および/またはユーザデバイス202に関連付けられたエンティティ(たとえば、ユーザ)の識別子を取得し、この識別子を利用して属性サブセット402を識別し得る。属性サブセット402の属性を使用して、データプレーン206は、予め定義されたハッシングアルゴリズムおよび属性サブセット402を入力として使用してハッシュ値を計算し得る。任意の好適な数の属性を使用してハッシュ値を算出するために実行される特定の動作は、データプレーン206に知られていてかつデータプレーン206によって実施される予め定義されたスキームに従って識別され得る。いくつかの実施形態では、220において、変更要求データが状態情報データストア208に格納され得る。たとえば、いくつかの実施形態では、変更要求データおよび計算されたハッシュ値は、所望状態オブジェクトに格納され得て、次に、所望状態オブジェクトは、状態情報データストア208に格納される。いくつかの実施形態では、状態情報データストア208は、なされるべき保留中の変更のためのキューの役割を果たすことができる。したがって、まだなされていない変更のための動作を示す変更要求データが任意の好適な態様で格納され得る。
【0033】
222において、データプレーン206は、所望状態データから算出されたハッシュ値を制御プレーン204に提供し得て、次に、224において、制御プレーン204は、ハッシュ値をローカルメモリに格納し得る。このハッシュ値は、本明細書では「所望状態ハッシュ値」と称され得る。
【0034】
図5は、少なくとも1つの実施形態に係る、要求された変更を計算インスタンス(たとえば、
図1のインフラストラクチャコンポーネント104の特定のインフラストラクチャコンポーネント)に適用するための例示的な方法500を示すフロー図である。方法500は、状態情報データストア502(たとえば、
図1の状態情報データストア118)、ワーカ504(たとえば、
図1のワーカ116のうちの1つ)、計算インスタンス506(たとえば、
図2の変更要求が関係する特定のインフラストラクチャコンポーネント、
図1のインフラストラクチャコンポーネント104のうちの1つ)、およびモニタリングサービス508(たとえば、
図1のモニタリングサービス120)によって実行され得る。方法500は、
図5に示される動作よりも多くの動作または少ない動作を含み得る。方法500の動作は、任意の好適な順序で実行され得る。いくつかの実施形態では、複数のコンポーネントによって実行される1つまたは複数の動作が単一のコンポーネントによって実行され得、および/または、単一のコンポーネントによって実行される動作が複数のコンポーネントによって分割されて提供され得る。
【0035】
方法500は、510から開始し得て、510において、ワーカ504は、インスタンス化されて、インフラストラクチャコンポーネントに対してなされるべき次の変更に対応する変更要求データを状態情報データストア502から要求し得る。いくつかの実施形態では、状態情報データストア502は、まだ適用されていない1つまたは複数の変更要求のキューを維持し得る。いくつかの実施形態では、ワーカ504は、最も古い変更要求を状態情報データストア502から取得するように構成され得る。
【0036】
ワーカは、変更要求データによって示される要求された変更を適用するために実行されるべき特定の動作を識別するためのロジックにアクセスするように構成され得る。512において、ワーカ504は、これらの動作を実行して、変更を計算インスタンス506(変更要求が関連している特定のインフラストラクチャコンポーネント)に適用し得る。
【0037】
514において、モニタリングサービス508は、計算インスタンス506に対応する状態データを要求するように構成され得る。いくつかの実施形態では、モニタリングサービス508は、予め定義された周期性、スケジュールなどに従って計算インスタンス506から状態データを要求するように構成され得る。
【0038】
516において、モニタリングサービス508は、計算インスタンス506の現状を示す現状データを受信し得る。追加的にまたは代替的に、計算インスタンス506は、512においてワーカによって実行された動作の結果として、その現状データを報告し得る。追加的にまたは代替的に、ワーカ504は、(たとえば、要求された変更の完了時に)変更をモニタリングサービス508に報告してもよい。
【0039】
518において、モニタリングサービス508は、計算インスタンス506に対応する現状オブジェクトへのアクセスを要求し得る。例として、モニタリングサービス508は、計算インスタンス506に関連付けられた識別子に対応する現状オブジェクトの要求を状態情報データストア502に提示し、この要求に応答して、状態情報データストア502は、現状オブジェクトを返し得る。
【0040】
520において、モニタリングサービス508は、516において受信された現状データで現状オブジェクトを更新するための任意の好適な動作を実行し得る。いくつかの実施形態では、これらの動作は、現状オブジェクトに格納された1つまたは複数の以前の属性値を、516において受信された現状データから取得されたさまざまな値で上書きすることを含み得る。
【0041】
522において、モニタリングサービス508は、新たに修正された現状オブジェクトを状態情報データストア502に格納するための動作を実行し得る。新たに修正された現状オブジェクトを状態情報データストア502に格納することによって、モニタリングサービス508は、現状データを、
図1のデータプレーン114および/またはデータプレーン114の任意の好適なコンポーネントがアクセスできるようなものにすることができる。
【0042】
図6は、少なくとも1つの実施形態に係る、以前に要求された変更が計算インスタンスに対してなされたことを識別するための例示的な方法600を示すフロー図である。方法500は、ユーザデバイス602(たとえば、
図2のユーザデバイス202)、制御プレーン604(たとえば、
図2の制御プレーン204)、データプレーン606(たとえば、
図2のデータプレーン206)および状態情報データストア608(たとえば、
図5の状態情報データストア502)によって実行され得る。方法600は、
図6に示される動作よりも多くの動作または少ない動作を含み得る。方法600の動作は、任意の好適な順序で実行され得る。いくつかの実施形態では、複数のコンポーネントによって実行される1つまたは複数の動作が単一のコンポーネントによって実行され得、および/または、単一のコンポーネントによって実行される動作が複数のコンポーネントによって分割されて提供され得る。いくつかの実施形態では、方法600は、
図2の方法200が実行された後に実行され得る。
【0043】
方法600は、610から開始し得て、610において、制御プレーン604は、現状データの要求をデータプレーン606に提示し得る。いくつかの実施形態では、制御プレーン604は、予め定義された周期性に従って、予め定義されたスケジュールに従って、または任意の好適なときに、この要求を提示し得る。非限定的な例として、方法200が実行されると、制御プレーン604は、
図2の変更要求に関連付けられた対応するインフラストラクチャコンポーネントの現状データを周期的なペースで(たとえば、5分ごとに、2分ごとに、30秒ごとに、毎日、毎晩など)要求するように構成され得る。いくつかの実施形態では、この要求は、
図2の変更要求の要求側(たとえば、
図1のユーザデバイス106および/または当該デバイスに関連付けられたエンティティ)と、変更要求が関係したインフラストラクチャコンポーネントの識別子とを示し得る。
【0044】
612において、データプレーン606は、変更要求が関係したインフラストラクチャコンポーネントの識別子に対応する現状オブジェクトにアクセスし得る。614において、状態情報データストア608は、当該インフラストラクチャコンポーネントの現状オブジェクトを返し得る。
【0045】
616において、610において制御プレーン604によって提供された要求側の識別子を使用して、データプレーン606は、そのローカルに格納されたマッピングを調べて、要求側が関連付けられている属性サブセット(たとえば、
図3の属性サブセット302)を識別し得る。当該サブセットの属性および予め定義されたハッシングアルゴリズムのみを使用して、データプレーン606は、当該属性のサブセットに対するインフラストラクチャコンポーネントの現状を表す別のハッシュ値を計算するように構成され得る。このハッシュ値を算出するために実行される特定の動作は、データプレーン206に知られていてかつデータプレーン206によって実施される予め定義されたスキームに従って識別され得る。
【0046】
618において、616において算出されたハッシュ値(現状ハッシュ値と称される)が、610において提示された要求に応答して制御プレーン604に提供され得る。
【0047】
620において、制御プレーン604は、
図2の方法200を実行することの一部として222において受信された所望状態ハッシュ値を比較するように構成され得る。いくつかの実施形態では、618において提供された現状ハッシュ値が、方法200中に222において受信された所望状態ハッシュ値と一致しない場合、方法600は610に戻り得て、後に、現状データの新たな要求が提示され、その結果、新たな現状ハッシュ値が計算されて、所望状態ハッシュ値と比較される。この方法は、現状ハッシュ値と所望状態ハッシュ値とが一致することを比較が示すまで、任意の好適な回数繰り返され得る。この文脈における一致は、対応するインフラストラクチャコンポーネントに対する要求された変更が完了したことを意味する。
【0048】
622において、制御プレーン604は、要求された変更が完了したことの表示をユーザデバイス602に提供し得る。いくつかの実施形態では、この表示は、
図1のユーザインターフェイス108に表示され得る。図示されていないが、ユーザインターフェイス108は、以前に提示された変更要求をキャンセルする1つまたは複数のオプションを提供することができる、ということが理解されるべきである。このオプションは、任意の好適なときに(たとえば、変更要求が提示された後に比較的十分な時間が経過した後に、たとえば、完了するのに約2分かかるべきであった変更では30分後に)ユーザによって実行され得る。
【0049】
図7は、少なくとも1つの実施形態に係る、計算インスタンスの属性を修正するための方法700の一例を示すフローチャートである。方法700は、
図1のクラウドインフラストラクチャシステム102の1つまたは複数のコンポーネントによって実行され得る。方法700は、
図7に示される動作よりも多くの動作または少ない動作を含み得る。これらの動作は、任意の好適な順序で実行され得る。
【0050】
方法700は、701から開始し得て、701において、クラウドコンピューティング環境(たとえば、
図1の環境100)の計算インスタンス(たとえば、
図1のインフラストラクチャコンポーネント104のインフラストラクチャコンポーネント)がコンピューティングシステムによって(たとえば、クラウドインフラストラクチャシステム102によって)管理され得る。いくつかの実施形態では、計算インスタンスは、計算インスタンスに対応する第1状態オブジェクト(たとえば、
図3の現状オブジェクト300)の管理に少なくとも部分的に基づいて管理され得る。いくつかの実施形態では、第1状態オブジェクトは、計算インスタンスの現状を示す属性(たとえば、
図3の属性1~N)のセットを含む。
【0051】
702において、計算インスタンスの特定の属性に対する要求された変更を示す変更要求データが、コンピューティングシステムによって(たとえば、制御プレーン204によって、データプレーン206によって、など)、要求元コンピューティングコンポーネント(たとえば、
図2のユーザデバイス202、
図1のユーザデバイス106の一例、制御プレーン204など)から受信され得る。
【0052】
703において、要求された変更および計算インスタンスの現状を示す第1状態オブジェクトに少なくとも部分的に基づいて、計算インスタンスの第2状態オブジェクト(たとえば、
図4の所望状態オブジェクト400)が(たとえば、
図2のデータプレーン206によって)導き出され得る。この導き出しの一例は、
図2の216において論じられている。
【0053】
704において、第1のハッシュ値(たとえば、所望状態ハッシュ値)がコンピューティングシステム(たとえば、データプレーン206)によって算出される。いくつかの実施形態では、第1のハッシュ値は、第2状態オブジェクトの属性のセットのうちの属性の第1のサブセット(たとえば、
図4の属性サブセット402)に少なくとも部分的に基づいて算出される。この算出の一例は、
図2の218において上述されている。
【0054】
705において、第1のハッシュ値(たとえば、所望状態ハッシュ値)がコンピューティングシステム(たとえば、データプレーン206)によって要求元コンピューティングコンポーネント(たとえば、制御プレーン204、制御プレーン204を介してユーザデバイス202)に提供される。
【0055】
706において、コンピューティングシステムが計算インスタンスに対する要求された変更を実行する。要求された変更を実行することは、変更要求を計算インスタンスに適用するための1つまたは複数の動作を実行するために別個のコンピューティングプロセス(たとえば、
図5のワーカ504、
図1のワーカ116の一例)を開始することを含み得る。
【0056】
707において、計算インスタンスに対する要求された変更の実行に少なくとも部分的に基づいて、第1状態オブジェクト(たとえば、計算インスタンスに関連付けられた現状オブジェクト)がコンピューティングシステム(たとえば、
図5のモニタリングサービス508)によって更新され得る。この更新の一例は、
図5の520において上述されている。
【0057】
708において、第2のハッシュ値が(たとえば、
図6のデータプレーン606、
図1のデータプレーン114の一例によって)算出される。いくつかの実施形態では、第2のハッシュ値(たとえば、現状ハッシュ値)は、第1状態オブジェクトの属性のセットのうちの第2のサブセット(たとえば、
図4の属性サブセット402に対応する
図3の属性サブセット302)に少なくとも部分的に基づいて算出される。
【0058】
709において、第2のハッシュ値(たとえば、現状ハッシュ値)がコンピューティングシステムによって要求元コンピューティングコンポーネント(たとえば、制御プレーン604、制御プレーン604を介してユーザデバイス602)に提供される。いくつかの実施形態では、第1のハッシュ値および第2のハッシュ値は、要求された変更が計算インスタンスにおいて実行されたことを確認するために要求元コンピューティングコンポーネントによって利用されるように構成される。例として、制御プレーン604は、第1のハッシュ値(たとえば、
図2の222において受信された所望状態ハッシュ値)と第2のハッシュ値(たとえば、
図6の618において受信された現状ハッシュ値)とを比較するように構成され得る。要求元コンピューティングコンポーネントは、これら2つのハッシュ値が一致する場合に、要求された変更を完了しているとして識別し得る。これらのハッシュ値が一致しない場合、要求元コンピューティングコンポーネント(たとえば、制御プレーン604)は、その後、新たな現状データ(たとえば、その後の状態の属性を表す新たな現状ハッシュ値)を要求して、再び比較を実行し得る。このプロセスは、一致が識別されるおよび/または変更要求が(たとえば、
図1のユーザインターフェイス108を介して)キャンセルされるまで、任意の好適な回数繰り返され得る。
【0059】
プロセス700は、任意の好適な回数実行され得る。例として、第2の変更要求が異なる要求元コンピューティングコンポーネントから受信され得る。第2の変更要求は、計算インスタンスの1つまたは複数の属性に対する第2の要求された変更を要求し得る。第1状態オブジェクトおよび第2の要求された変更に少なくとも部分的に基づいて、計算インスタンスの第3状態オブジェクトが導き出され得る。第3状態オブジェクトの属性のセットのうちの属性の第3のサブセットに少なくとも部分的に基づいて、第3のハッシュ値が算出され得る。いくつかの実施形態では、属性の第3のサブセットは、属性の第1のサブセットとは異なる属性を有する。第3のハッシュ値は、当該異なる要求元コンピューティングコンポーネントに提供され得る。いくつかの実施形態では、第3のハッシュ値は、第2の要求された変更が計算インスタンスにおいて実行されたことを確認するために当該異なる要求元コンピューティングコンポーネントによって利用されるように構成される。
【0060】
上述のように、サービスとしてのインフラストラクチャ(IaaS:Infrastructure as a Service)は、1つの特定のタイプのクラウドコンピューティングである。IaaSは、パブリックネットワーク(たとえば、インターネット)を介して、仮想化されたコンピューティングリソースを提供するように構成され得る。IaaSモデルでは、クラウドコンピューティングプロバイダは、インフラストラクチャコンポーネント(たとえば、サーバ、ストレージデバイス、ネットワークノード(たとえば、ハードウェア)、展開ソフトウェア、プラットフォーム仮想化(たとえば、ハイパーバイザ層)など)をホストし得る。いくつかのケースでは、IaaSプロバイダはまた、それらのインフラストラクチャコンポーネントに付随するよう、さまざまなサービス(たとえば、課金、監視、ロギング、セキュリティ、負荷分散およびクラスタリングなど)を供給し得る。したがって、これらのサービスはポリシー駆動型であり得るので、IaaSユーザは、アプリケーションの利用可能性およびパフォーマンスを維持するために負荷分散を駆動するためのポリシーを実行することができるであろう。
【0061】
いくつかの事例では、IaaS顧客は、インターネットなどのワイドエリアネットワーク(WAN:Wide Area Network)を通してリソースおよびサービスにアクセスしてもよく、クラウドプロバイダのサービスを使用して、アプリケーションスタックの残りの要素をインストールしてもよい。たとえば、ユーザは、IaaSプラットフォームにログインして、仮想マシン(VM)を作成し、各VMにオペレーティングシステム(OS)をインストールし、データベースなどのミドルウェアを展開し、ワークロードおよびバックアップのためにストレージバケットを作成し、さらには企業ソフトウェアをそのVMにインストールし得る。次いで、顧客は、プロバイダのサービスを使用して、ネットワークトラフィックの均衡化、アプリケーション問題のトラブルシューティング、パフォーマンスの監視、災害復旧の管理などを含むさまざまな機能を実行し得る。
【0062】
ほとんどの場合、クラウドコンピューティングモデルは、クラウドプロバイダの参加を必要とすることになる。クラウドプロバイダは、IaaSの提供(たとえば、申し出、レンタル、販売)に特化した第三者サービスであり得るが、その必要はない。エンティティも、プライベートクラウドを展開することを選択して、それ自体のインフラストラクチャサービスプロバイダになってもよい。
【0063】
いくつかの例では、IaaS展開は、新たなアプリケーションまたはアプリケーションの新たなバージョンを準備されたアプリケーションサーバなどに置くプロセスである。それはまた、サーバを準備する(たとえば、ライブラリ、デーモンなどをインストールする)プロセスも含んでもよい。これは、多くの場合、クラウドプロバイダによって、ハイパーバイザ層(たとえば、サーバ、ストレージ、ネットワークハードウェア、および仮想化)の下で管理される。したがって、顧客は、(たとえば、(たとえば、オンデマンドで起動され得る)セルフサービス仮想マシン上での)ハンドリング(OS)、ミドルウェア、および/またはアプリケーション展開などを担ってもよい。
【0064】
いくつかの例では、IaaSプロビジョニングは、使用のためにコンピュータまたは仮想ホストを取得すること、および必要とされるライブラリまたはサービスをそれらにインストールすることさえも指し得る。ほとんどの場合、展開はプロビジョニングを含まず、プロビジョニングは最初に実行される必要があり得る。
【0065】
いくつかのケースでは、IaaSプロビジョニングには2つの異なる課題がある。第1に、何かが動作する前にインフラストラクチャの初期セットをプロビジョニングするという最初の課題がある。第2に、あらゆるものがプロビジョニングされると、既存のインフラストラクチャを発展させる(たとえば、新たなサービスの追加、サービスの変更、サービスの削除など)という課題がある。いくつかのケースでは、これらの2つの課題は、インフラストラクチャの構成が宣言的に定義されることを可能にすることによって対処され得る。言い換えれば、インフラストラクチャ(たとえば、どのような構成要素が必要とされるか、およびそれらがどのように対話するか)は、1つまたは複数の構成ファイルによって定義され得る。したがって、インフラストラクチャの全体的なトポロジー(たとえば、どのようなリソースがどのリソースに依存するか、およびそれらが各々どのように協働するか)は、宣言的に記述され得る。いくつかの事例では、トポロジーが定義されると、構成ファイルに記述される異なる構成要素を作成および/または管理するワークフローを生成し得る。
【0066】
いくつかの例では、インフラストラクチャは、多くの相互接続された要素を有し得る。たとえば、コアネットワークとしても知られている1つまたは複数の仮想プライベートクラウド(VPC:Virtual Private Cloud)(たとえば、構成可能なおよび/または共有のコンピューティングリソースの、潜在的にオンデマンドのプール)があり得る。いくつかの例では、ネットワークのセキュリティがどのようにセットアップされるかを定義するためにプロビジョニングされる1つまたは複数のセキュリティグループルール、および1つまたは複数の仮想マシン(VM)もあり得る。ロードバランサ、データベースなどの他のインフラストラクチャ要素もプロビジョニングされ得る。ますます多くのインフラストラクチャ要素が所望および/または追加されるにつれて、インフラストラクチャは増分的に発展し得る。
【0067】
いくつかの事例では、さまざまな仮想コンピューティング環境にわたるインフラストラクチャコードの展開を可能にするために、連続展開技法が採用され得る。加えて、説明される技法は、これらの環境内でインフラストラクチャ管理を可能にし得る。いくつかの例では、サービスチームが、1つまたは複数の、ただし多くの場合、多くの、異なる生産環境(たとえば、時として世界全体に及ぶ、さまざまな異なる地理的場所にわたる)に展開されることが望まれるコードを書き込み得る。しかしながら、いくつかの例では、コードが展開されるインフラストラクチャは、最初にセットアップされなければならない。いくつかの事例では、プロビジョニングは、手動で行われ得、プロビジョニングツールを利用してリソースをプロビジョニングしてもよく、および/または、インフラストラクチャがプロビジョニングされると、展開ツールを利用してコードを展開し得る。
【0068】
図8は、少なくとも1つの実施形態に係る、IaaSアーキテクチャの例示的なパターンを示すブロック
図800である。サービスオペレータ802は、仮想クラウドネットワーク(VCN:Virtual Cloud Network)806およびセキュアホストサブネット808を含み得るセキュアホストテナンシ804に通信可能に結合され得る。いくつかの例では、サービスオペレータ802は、1つまたは複数のクライアントコンピューティングデバイスを用いていてもよく、それらは、ポータブルハンドヘルドデバイス(たとえば、iPhone(登録商標)、セルラー電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA:Personal Digital Assistant))またはウェアラブルデバイス(たとえば、Google Glass(登録商標)ヘッドマウントディスプレイ)であってもよく、Microsoft Windows Mobile(登録商標)などのソフトウェア、および/もしくは、iOS、Windows Phone、Android、BlackBerry 8、Palm OSなどのさまざまなモバイルオペレーティングシステムを実行し、インターネット、電子メール、ショートメッセージサービス(SMS:Short Message Service)、Blackberry(登録商標)、または他のイネーブルにされた通信プロトコルである。代替的に、クライアントコンピューティングデバイスは、例として、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/もしくはLinux(登録商標)オペレーティングシステムを実行するパーソナルコンピュータならびに/またはラップトップコンピュータを含む汎用パーソナルコンピュータとし得る。クライアントコンピューティングデバイスは、たとえばGoogle(登録商標) Chrome OSなどのさまざまなGNU/Linuxオペレーティングシステムを含むがそれに限定されるものではない、さまざまな市販のUNIX(登録商標)またはUNIX様オペレーティングシステムのいずれかを実行するワークステーションコンピュータとし得る。代替的に、または追加的に、クライアントコンピューティングデバイスは、VCN806および/またはインターネットにアクセスし得るネットワークを介して通信することが可能な、シンクライアントコンピュータ、インターネット対応ゲームシステム(たとえば、Kinect(登録商標)ジェスチャ入力装置を有するかまたは有さないMicrosoft Xboxゲームコンソール)、および/またはパーソナルメッセージングデバイスなどの任意の他の電子デバイスであり得る。
【0069】
VCN806は、ローカルピアリングゲートウェイ(LPG:Local Peering Gateway)810を含み得、それは、SSH VCN812に含まれるLPG810を介してセキュアシェル(SSH:Secure Shell)VCN812に通信可能に結合され得る。SSH VCN812は、SSHサブネット814を含み得、SSH VCN812は、制御プレーンVCN816に含まれるLPG810を介して制御プレーンVCN816に通信可能に結合され得る。また、SSH VCN812は、LPG810を介してデータプレーンVCN818に通信可能に結合され得る。制御プレーンVCN816およびデータプレーンVCN818は、IaaSプロバイダによって所有および/または操作され得るサービステナンシ819に含まれ得る。
【0070】
制御プレーンVCN816は、周辺ネットワーク(たとえば、企業イントラネットと外部ネットワークとの間の企業ネットワークの部分)として機能する制御プレーンデミリタライズドゾーン(DMZ:Demilitarized Zone)層820を含み得る。DMZベースのサーバは、制限された責任を有し、侵害が含まれるように保つのを助けてもよい。さらに、DMZ層820は、1つまたは複数のロードバランサ(LB:Load Balancer)サブネット822と、アプリサブネット826を含み得る制御プレーンアプリ層824と、データベース(DB:Database)サブネット830(たとえば、フロントエンドDBサブネットおよび/またはバックエンドDBサブネット)を含み得る制御プレーンデータ層828とを含み得る。制御プレーンDMZ層820に含まれるLBサブネット822は、制御プレーンアプリ層824に含まれるアプリサブネット826と、制御プレーンVCN816に含まれ得るインターネットゲートウェイ834とに通信可能に結合され得、アプリサブネット826は、制御プレーンデータ層828に含まれるDBサブネット830と、サービスゲートウェイ836と、ネットワークアドレス変換(NAT:Network Address Translation)ゲートウェイ838とに通信可能に結合され得る。制御プレーンVCN816は、サービスゲートウェイ836およびNATゲートウェイ838を含み得る。
【0071】
制御プレーンVCN816は、アプリサブネット826を含み得るデータプレーンミラーアプリ層840を含み得る。データプレーンミラーアプリ層840に含まれるアプリサブネット826は、計算インスタンス844を実行し得る仮想ネットワークインターフェイスコントローラ(VNIC:Virtual Network Interface Controller)842を含み得る。計算インスタンス844は、データプレーンミラーアプリ層840のアプリサブネット826を、データプレーンアプリ層846に含まれ得るアプリサブネット826に通信可能に結合し得る。
【0072】
データプレーンVCN818は、データプレーンアプリ層846と、データプレーンDMZ層848と、データプレーンデータ層850とを含み得る。データプレーンDMZ層848は、データプレーンアプリ層846のアプリサブネット826およびデータプレーンVCN818のインターネットゲートウェイ834に通信可能に結合され得るLBサブネット822を含み得る。アプリサブネット826は、データプレーンVCN818のサービスゲートウェイ836およびデータプレーンVCN818のNATゲートウェイ838に通信可能に結合され得る。データプレーンデータ層850も、データプレーンアプリ層846のアプリサブネット826に通信可能に結合され得るDBサブネット830を含み得る。
【0073】
制御プレーンVCN816およびデータプレーンVCN818のインターネットゲートウェイ834は、パブリックインターネット854に通信可能に結合され得るメタデータ管理サービス852に通信可能に結合され得る。パブリックインターネット854は、制御プレーンVCN816およびデータプレーンVCN818のNATゲートウェイ838に通信可能に結合され得る。制御プレーンVCN816およびデータプレーンVCN818のサービスゲートウェイ836は、クラウドサービス856に通信可能に結合され得る。
【0074】
いくつかの例では、制御プレーンVCN816またはデータプレーンVCN818のサービスゲートウェイ836は、パブリックインターネット854を通過することなくクラウドサービス856にアプリケーションプログラミングインターフェイス(API:Application Programming Interface)呼び出しを行い得る。サービスゲートウェイ836からのクラウドサービス856へのAPI呼び出しは、一方向であり得、サービスゲートウェイ836は、クラウドサービス856にAPI呼び出しを行い得、クラウドサービス856は、要求されたデータをサービスゲートウェイ836に送信し得る。しかし、クラウドサービス856は、サービスゲートウェイ836へのAPI呼び出しを開始しなくてもよい。
【0075】
いくつかの例では、セキュアホストテナンシ804は、サービステナンシ819に直接接続することができ、サービステナンシ819は、そうでなければ隔離され得る。セキュアホストサブネット808は、他の態様では隔離されたシステムを介して双方向通信を可能にし得るLPG810を通じてSSHサブネット814と通信することができる。セキュアホストサブネット808をSSHサブネット814に接続することは、セキュアホストサブネット808にサービステナンシ819内の他のエンティティへのアクセスを与え得る。
【0076】
制御プレーンVCN816は、サービステナンシ819のユーザが所望のリソースをセットアップまたは別様にプロビジョニングすることを可能にし得る。制御プレーンVCN816内でプロビジョニングされる所望のリソースは、データプレーンVCN818内で展開または別様に使用され得る。いくつかの例では、制御プレーンVCN816は、データプレーンVCN818から隔離され得、制御プレーンVCN816のデータプレーンミラーアプリ層840は、データプレーンミラーアプリ層840およびデータプレーンアプリ層846に含まれ得るVNIC842を介して、データプレーンVCN818のデータプレーンアプリ層846と通信し得る。
【0077】
いくつかの例では、システムのユーザまたは顧客は、メタデータ管理サービス852に要求を通信し得るパブリックインターネット854を介して、要求、たとえば、作成、読出、更新、または削除(CRUD:Create, Read, Update or Delete)動作を行い得る。メタデータ管理サービス852は、インターネットゲートウェイ834を介して制御プレーンVCN816に要求を通信し得る。この要求は、制御プレーンDMZ層820に含まれるLBサブネット822によって受信され得る。LBサブネット822は、要求が有効であると判断してもよく、この判断に応答して、LBサブネット822は、制御プレーンアプリ層824に含まれるアプリサブネット826に要求を送信し得る。要求が検証され、パブリックインターネット854への呼び出しを必要とする場合、パブリックインターネット854への呼び出しは、パブリックインターネット854への呼び出しを行うことができるNATゲートウェイ838に送信され得る。要求によって記憶されることが望まれ得るメモリは、DBサブネット830に記憶され得る。
【0078】
いくつかの例では、データプレーンミラーアプリ層840は、制御プレーンVCN816とデータプレーンVCN818との間の直接通信を容易にし得る。たとえば、構成の変更、更新、または他の適切な修正が、データプレーンVCN818に含まれるリソースに適用されることが望まれる場合がある。VNIC842を介して、制御プレーンVCN816は、データプレーンVCN818に含まれるリソースと直接通信し得、それによって、構成に対する変更、更新、または他の好適な修正を実行し得る。
【0079】
いくつかの実施形態では、制御プレーンVCN816およびデータプレーンVCN818は、サービステナンシ819に含まれ得る。この場合、システムのユーザまたは顧客は、制御プレーンVCN816またはデータプレーンVCN818のいずれかを所有または操作しなくてもよい。代わりに、IaaSプロバイダが制御プレーンVCN816およびデータプレーンVCN818を所有または操作してもよく、それらの両方はサービステナンシ819に含まれてもよい。この実施形態は、ユーザまたは顧客が他のユーザまたは他の顧客のリソースと対話することを防止し得るネットワークの隔離を可能にし得る。また、この実施形態は、システムのユーザまたは顧客が、記憶のために、所望のレベルのセキュリティを有さない場合があるパブリックインターネット854に依存する必要なく、データベースをプライベートに記憶することを可能にし得る。
【0080】
他の実施形態では、制御プレーンVCN816に含まれるLBサブネット822は、サービスゲートウェイ836から信号を受信するように構成され得る。この実施形態では、制御プレーンVCN816およびデータプレーンVCN818は、パブリックインターネット854を呼び出すことなく、IaaSプロバイダの顧客によって呼び出されるように構成され得る。IaaSプロバイダの顧客は、顧客が使用するデータベースがIaaSプロバイダによって制御されてもよく、パブリックインターネット854から隔離され得るサービステナンシ819上に記憶され得るため、この実施形態を所望し得る。
【0081】
図9は、少なくとも1つの実施形態に係る、IaaSアーキテクチャの別の例示的なパターンを示すブロック
図900である。サービスオペレータ902(たとえば、
図8のサービスオペレータ802)は、仮想クラウドネットワーク(VCN)906(たとえば、
図8のVCN806)およびセキュアホストサブネット908(たとえば、
図8のセキュアホストサブネット808)を含み得るセキュアホストテナンシ904(たとえば、
図8のセキュアホストテナンシ804)に通信可能に結合され得る。VCN906は、SSH VCN912に含まれるLPG810を介してセキュアシェル(SSH)VCN912(たとえば、
図8のSSH VCN812)に通信可能に結合され得るローカルピアリングゲートウェイ(LPG)910(たとえば、
図8のLPG810)を含み得る。SSH VCN912は、SSHサブネット914(たとえば、
図8のSSHサブネット814)を含み得、SSH VCN912は、制御プレーンVCN916に含まれるLPG910を介して制御プレーンVCN916(たとえば、
図8の制御プレーンVCN816)に通信可能に結合され得る。制御プレーンVCN916は、サービステナンシ919(たとえば、
図8のサービステナンシ819)に含まれ得、データプレーンVCN918(たとえば、
図8のデータプレーンVCN818)は、システムのユーザまたは顧客によって所有または操作され得る顧客テナンシ921に含まれ得る。
【0082】
制御プレーン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のサービスゲートウェイ)と、ネットワークアドレス変換(NAT)ゲートウェイ938(たとえば、
図8のNATゲートウェイ838)とに通信可能に結合され得る。制御プレーンVCN916は、サービスゲートウェイ936およびNATゲートウェイ938を含み得る。
【0083】
制御プレーンVCN916は、アプリサブネット926を含み得るデータプレーンミラーアプリ層940(たとえば、
図8のデータプレーンミラーアプリ層840)を含み得る。データプレーンミラーアプリ層940に含まれるアプリサブネット926は、計算インスタンス944(たとえば、
図8の計算インスタンス844と同様)を実行し得る仮想ネットワークインターフェイスコントローラ(VNIC)942(たとえば、842のVNIC)を含み得る。計算インスタンス944は、データプレーンミラーアプリ層940に含まれるVNIC942とデータプレーンアプリ層946に含まれるVNIC942とを介して、データプレーンミラーアプリ層940のアプリサブネット926と、データプレーンアプリ層946(たとえば、
図8のデータプレーンアプリ層846)に含まれ得るアプリサブネット926との間の通信を容易にし得る。
【0084】
制御プレーンVCN916に含まれるインターネットゲートウェイ934は、パブリックインターネット954(たとえば、
図8のパブリックインターネット854)に通信可能に結合され得るメタデータ管理サービス952(たとえば、
図8のメタデータ管理サービス852)に通信可能に結合され得る。パブリックインターネット954は、制御プレーンVCN916に含まれるNATゲートウェイ938に通信可能に結合され得る。制御プレーンVCN916に含まれるサービスゲートウェイ936は、クラウドサービス956(たとえば、
図8のクラウドサービス856)に通信可能に結合され得る。
【0085】
いくつかの例では、データプレーンVCN918は、顧客テナンシ921に含まれ得る。この場合、IaaSプロバイダは、顧客ごとに制御プレーンVCN916を提供し得、IaaSプロバイダは、顧客ごとに、サービステナンシ919に含まれる固有の計算インスタンス944をセットアップし得る。各計算インスタンス944は、サービステナンシ919に含まれる制御プレーンVCN916と顧客テナンシ921に含まれるデータプレーンVCN918との間の通信を可能にし得る。計算インスタンス944は、サービステナンシ919に含まれる制御プレーンVCN916においてプロビジョニングされるリソースが、顧客テナンシ921に含まれるデータプレーンVCN918において展開されるかまたは別様に使用されることを可能にし得る。
【0086】
他の例では、IaaSプロバイダの顧客は、顧客テナンシ921に在住するデータベースを有してもよい。この例では、制御プレーンVCN916は、アプリサブネット926を含み得るデータプレーンミラーアプリ層940を含み得る。データプレーンミラーアプリ層940は、データプレーンVCN918内に存在し得るが、データプレーンミラーアプリ層940は、データプレーンVCN918内に在住しなくてもよい。すなわち、データプレーンミラーアプリ層940は、顧客テナンシ921へのアクセスを有し得るが、データプレーンミラーアプリ層940は、データプレーンVCN918内に存在しなくてもよく、またはIaaSプロバイダの顧客によって所有もしくは操作されなくてもよい。データプレーンミラーアプリ層940は、データプレーンVCN918への呼び出しを行うように構成され得るが、制御プレーンVCN916に含まれる任意のエンティティへの呼び出しを行うように構成されなくてもよい。顧客は、制御プレーンVCN916においてプロビジョニングされるデータプレーンVCN918内のリソースを展開または別様に使用することを所望してもよく、データプレーンミラーアプリ層940は、顧客のリソースの所望の展開または他の使用を容易にし得る。
【0087】
いくつかの実施形態では、IaaSプロバイダの顧客は、フィルタをデータプレーンVCN918に適用し得る。この実施形態では、顧客は、データプレーンVCN918が何にアクセスできるかを判断し得、顧客は、データプレーンVCN918からパブリックインターネット954へのアクセスを制限してもよい。IaaSプロバイダは、データプレーンVCN918の任意の外部ネットワークもしくはデータベースへのアクセスをフィルタ処理するかまたは別様に制御することができなくてもよい。顧客テナンシ921に含まれるデータプレーンVCN918上に顧客によってフィルタおよび制御を適用することは、データプレーンVCN918を他の顧客およびパブリックインターネット954から隔離するのを助けることができる。
【0088】
いくつかの実施形態では、クラウドサービス956は、パブリックインターネット954上、制御プレーンVCN916上、またはデータプレーンVCN918上に存在しない場合があるサービスにアクセスするために、サービスゲートウェイ936によって呼び出され得る。クラウドサービス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に通信可能に結合されなくてもよく、またはそうでなければ通信していなくてもよい。
【0089】
図10は、少なくとも1つの実施形態に係る、IaaSアーキテクチャの別の例示的なパターンを示すブロック
図1000である。サービスオペレータ1002(たとえば、
図8のサービスオペレータ802)は、仮想クラウドネットワーク(VCN)1006(たとえば、
図8のVCN806)およびセキュアホストサブネット1008(たとえば、
図8のセキュアホストサブネット808)を含み得るセキュアホストテナンシ1004(たとえば、
図8のセキュアホストテナンシ804)に通信可能に結合され得る。VCN1006は、LPG1010(たとえば、
図8のLPG810)を含み得、それは、SSH VCN1012(たとえば、
図8のSSH VCN812)に含まれるLPG1010を介してSSH VCN1012に通信可能に結合され得る。SSH VCN1012は、SSHサブネット1014(たとえば、
図8のSSHサブネット814)を含み得、SSH VCN1012は、制御プレーンVCN1016(たとえば、
図8の制御プレーンVCN816)に含まれるLPG1010を介して制御プレーンVCN1016に通信可能に結合され得、データプレーンVCN1018(たとえば、
図8のデータプレーン818)に含まれるLPG1010を介してデータプレーンVCN1018に通信可能に結合され得る。制御プレーンVCN1016およびデータプレーンVCN1018は、サービステナンシ1019(たとえば、
図8のサービステナンシ819)に含まれ得る。
【0090】
制御プレーン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を含み得る。
【0091】
データプレーン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を含み得る。
【0092】
信頼できないアプリサブネット1062は、テナント仮想マシン(VM)1066(1)~(N)に通信可能に結合され得る1つまたは複数のプライマリVNIC1064(1)~(N)を含み得る。各テナントVM1066(1)~(N)は、それぞれの顧客テナンシ1070(1)~(N)に含まれ得るそれぞれのコンテナエグレスVCN1068(1)~(N)に含まれ得るそれぞれのアプリサブネット1067(1)~(N)に通信可能に結合され得る。それぞれのセカンダリVNIC1072(1)~(N)は、データプレーンVCN1018に含まれる信頼できないアプリサブネット1062とコンテナエグレスVCN1068(1)~(N)に含まれるアプリサブネットとの間の通信を容易にし得る。各コンテナエグレスVCN1068(1)~(N)は、パブリックインターネット1054(たとえば、
図8のパブリックインターネット854)に通信可能に結合され得るNATゲートウェイ1038を含み得る。
【0093】
制御プレーンVCN1016に含まれ、データプレーンVCN1018に含まれるインターネットゲートウェイ1034は、パブリックインターネット1054に通信可能に結合され得るメタデータ管理サービス1052(たとえば、
図8のメタデータ管理システム852)に通信可能に結合され得る。パブリックインターネット1054は、制御プレーンVCN1016に含まれ、データプレーンVCN1018に含まれるNATゲートウェイ1038に通信可能に結合され得る。制御プレーンVCN1016に含まれ、データプレーンVCN1018に含まれるサービスゲートウェイ1036は、クラウドサービス1056に通信可能に結合され得る。
【0094】
いくつかの実施形態では、データプレーンVCN1018は、顧客テナンシ1070と統合され得る。この統合は、コードを実行するときにサポートを望む場合がある場合などのいくつかの場合において、IaaSプロバイダの顧客にとって有用または望ましくあり得る。顧客は、破壊的である場合があるか、他の顧客リソースと通信する場合があるか、またはそうでなければ望ましくない影響を引き起こす場合がある、実行すべきコードを提供する場合がある。これに応答して、IaaSプロバイダは、顧客によってIaaSプロバイダに与えられたコードを実行するかどうかを判断し得る。
【0095】
いくつかの例では、IaaSプロバイダの顧客は、IaaSプロバイダへの一時的なネットワークアクセスを許可し、ある機能がデータプレーン層アプリ1046にアタッチされるよう要求する場合がある。機能を実行するためのコードは、VM1066(1)~(N)において実行されてもよく、データプレーンVCN1018上の他のどこかで動作するように構成されなくてもよい。各VM1066(1)~(N)は、1つの顧客テナンシ1070に接続され得る。VM1066(1)~(N)に含まれるそれぞれのコンテナ1071(1)~(N)は、コードを実行するように構成され得る。この場合、二重隔離があり得(たとえば、コンテナ1071(1)~(N)は、コードを実行し、コンテナ1071(1)~(N)は、信頼できないアプリサブネット1062に含まれる少なくともVM1066(1)~(N)に含まれてもよい)、これは、正しくないかまたはそうでなければ望ましくないコードが、IaaSプロバイダのネットワークを損傷すること、または異なる顧客のネットワークを損傷することを防ぐのを助けることができる。コンテナ1071(1)~(N)は、顧客テナンシ1070に通信可能に結合され得、顧客テナンシ1070との間でデータを送信または受信するように構成され得る。コンテナ1071(1)~(N)は、データプレーンVCN1018内の任意の他のエンティティとの間でデータを送信または受信するように構成されなくてもよい。コードの実行が完了すると、IaaSプロバイダは、コンテナ1071(1)~(N)をキルするかまたは別様に廃棄し得る。
【0096】
いくつかの実施形態では、信頼できるアプリサブネット1060は、IaaSプロバイダによって所有または操作され得るコードを実行し得る。この実施形態では、信頼できるアプリサブネット1060は、DBサブネット1030に通信可能に結合され得、DBサブネット1030内でCRUD動作を実行するように構成され得る。信頼できないアプリサブネット1062は、DBサブネット1030に通信可能に結合され得るが、この実施形態では、信頼できないアプリサブネットは、DBサブネット1030内で読出動作を実行するように構成され得る。各顧客のVM1066(1)~(N)に含まれ得、その顧客からのコードを実行し得るコンテナ1071(1)~(N)は、DBサブネット1030と通信可能に結合されなくてもよい。
【0097】
他の実施形態では、制御プレーンVCN1016およびデータプレーンVCN1018は、直接通信可能に結合されなくてもよい。この実施形態では、制御プレーンVCN1016とデータプレーンVCN1018との間に直接通信がなくてもよい。しかしながら、通信は、少なくとも1つの方法を通して間接的に起こり得る。制御プレーンVCN1016とデータプレーンVCN1018との間の通信を容易にし得るLPG1010が、IaaSプロバイダによって確立され得る。別の例では、制御プレーンVCN1016またはデータプレーンVCN1018は、サービスゲートウェイ1036を介してクラウドサービス1056に呼び出しを行い得る。たとえば、制御プレーンVCN1016からのクラウドサービス1056への呼び出しは、データプレーンVCN1018と通信し得るサービスの要求を含み得る。
【0098】
図11は、少なくとも1つの実施形態に係る、IaaSアーキテクチャの別の例示的なパターンを示すブロック
図1100である。サービスオペレータ1102(たとえば、
図8のサービスオペレータ802)は、仮想クラウドネットワーク(VCN)1106(たとえば、
図8のVCN806)およびセキュアホストサブネット1108(たとえば、
図8のセキュアホストサブネット808)を含み得るセキュアホストテナンシ1104(たとえば、
図8のセキュアホストテナンシ804)に通信可能に結合され得る。VCN1106は、LPG1110(たとえば、
図8のLPG810)を含み得、それは、SSH VCN1112(たとえば、
図8のSSH VCN812)に含まれるLPG1110を介してSSH VCN1112に通信可能に結合され得る。SSH VCN1112は、SSHサブネット1114(たとえば、
図8のSSHサブネット814)を含み得、SSH VCN1112は、制御プレーンVCN1116(たとえば、
図8の制御プレーンVCN816)に含まれるLPG1110を介して制御プレーンVCN1116に通信可能に結合され得、データプレーンVCN1118(たとえば、
図8のデータプレーン818)に含まれるLPG1110を介してデータプレーンVCN1118に通信可能に結合され得る。制御プレーンVCN1116およびデータプレーンVCN1118は、サービステナンシ1119(たとえば、
図8のサービステナンシ819)に含まれ得る。
【0099】
制御プレーン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を含み得る。
【0100】
データプレーンVCN1118は、データプレーンアプリ層1146(たとえば、
図8のデータプレーンアプリ層846)、データプレーンDMZ層1148(たとえば、
図8のデータプレーンDMZ層848)、およびデータプレーンデータ層1150(たとえば、
図8のデータプレーンデータ層850)を含み得る。データプレーンDMZ層1148は、データプレーンアプリ層1146の信頼できるアプリサブネット1160(たとえば、
図10の信頼できるアプリサブネット1060)および信頼できないアプリサブネット1162(たとえば、
図10の信頼できないアプリサブネット1162)と、データプレーンVCN1118に含まれるインターネットゲートウェイ1134とに通信可能に結合され得るLBサブネット1122を含み得る。信頼できるアプリサブネット1160は、データプレーンVCN1118に含まれるサービスゲートウェイ1136と、データプレーンVCN1118に含まれるNATゲートウェイ1138と、データプレーンデータ層1150に含まれるDBサブネット1130とに通信可能に結合され得る。信頼できないアプリサブネット1162は、データプレーンVCN1118に含まれるサービスゲートウェイ1136と、データプレーンデータ層1150に含まれるDBサブネット1130とに通信可能に結合され得る。データプレーンデータ層1150は、データプレーンVCN1118に含まれるサービスゲートウェイ1136に通信可能に結合され得るDBサブネット1130を含み得る。
【0101】
信頼できないアプリサブネット1162は、信頼できないアプリサブネット1162内に常駐するテナント仮想マシン(VM)1166(1)~(N)に通信可能に結合され得るプライマリVNIC1164(1)~(N)を含み得る。各テナントVM1166(1)~(N)は、それぞれのコンテナ1167(1)~(N)においてコードを実行し得、コンテナエグレスVCN1168に含まれ得るデータプレーンアプリ層1146に含まれ得るアプリサブネット1126に通信可能に結合され得る。それぞれのセカンダリVNIC1172(1)~(N)は、データプレーンVCN1118に含まれる信頼できないアプリサブネット1162とコンテナエグレスVCN1168に含まれるアプリサブネットとの間の通信を容易にし得る。コンテナエグレスVCNは、パブリックインターネット1154(たとえば、
図8のパブリックインターネット854)に通信可能に結合され得るNATゲートウェイ1138を含み得る。
【0102】
制御プレーンVCN1116に含まれ、データプレーンVCN1118に含まれるインターネットゲートウェイ1134は、パブリックインターネット1154に通信可能に結合され得るメタデータ管理サービス1152(たとえば、
図8のメタデータ管理システム852)に通信可能に結合され得る。パブリックインターネット1154は、制御プレーンVCN1116に含まれ、データプレーンVCN1118に含まれるNATゲートウェイ1138に通信可能に結合され得る。制御プレーンVCN1116に含まれ、データプレーンVCN1118に含まれるサービスゲートウェイ1136は、クラウドサービス1156に通信可能に結合され得る。
【0103】
いくつかの例では、
図11のブロック
図1100のアーキテクチャによって示されるパターンは、
図10のブロック
図1000のアーキテクチャによって示されるパターンの例外と見なされてもよく、IaaSプロバイダが顧客と直接通信することができない場合(たとえば、切断された領域)、それは、IaaSプロバイダの顧客にとって望ましい場合がある。各顧客についてVM1166(1)~(N)に含まれるそれぞれのコンテナ1167(1)~(N)は、顧客によってリアルタイムでアクセスされ得る。コンテナ1167(1)~(N)は、コンテナエグレスVCN1168に含まれ得るデータプレーンアプリ層1146のアプリサブネット1126に含まれるそれぞれのセカンダリVNIC1172(1)~(N)への呼び出しを行うように構成され得る。セカンダリVNIC1172(1)~(N)はNATゲートウェイ1138に呼び出しを送信し得、NATゲートウェイ1138はパブリックインターネット1154に呼び出しを送信し得る。この例では、顧客によってリアルタイムでアクセスされ得るコンテナ1167(1)~(N)は、制御プレーンVCN1116から隔離され得、データプレーンVCN1118に含まれる他のエンティティから隔離され得る。コンテナ1167(1)~(N)はまた、他の顧客からのリソースからも隔離され得る。
【0104】
他の例では、顧客は、コンテナ1167(1)~(N)を使用してクラウドサービス1156を呼び出し得る。この例では、顧客は、コンテナ1167(1)~(N)内において、クラウドサービス1156にサービスを要求するコードを実行し得る。コンテナ1167(1)~(N)はこの要求をセカンダリVNIC1172(1)~(N)に送信し得、セカンダリVNIC1172(1)~(N)はその要求をNATゲートウェイに送信し得、NATゲートウェイはその要求をパブリックインターネット1154に送信し得る。パブリックインターネット1154は、インターネットゲートウェイ1134を介して、制御プレーンVCN1116に含まれるLBサブネット1122に要求を送信し得る。要求が有効であると判断することに応答して、LBサブネットはその要求をアプリサブネット1126に送信し得、アプリサブネット1126はその要求をサービスゲートウェイ1136を介してクラウドサービス1156に送信し得る。
【0105】
図示されるIaaSアーキテクチャ800,900,1000,1100は、図示される以外の構成要素を有し得る、ということが理解されるべきである。さらに、図示される実施形態は、本開示の実施形態を組み込んでもよいクラウドインフラストラクチャシステムのいくつかの例にすぎない。いくつかの他の実施形態では、IaaSシステムは、図示されるよりも多くの構成要素または少ない構成要素を有し得、2つ以上の構成要素を組み合わせ得、または構成要素の異なる構成または配置を有し得る。
【0106】
特定の実施形態では、本明細書に説明されるIaaSシステムは、セルフサービスであり、サブスクリプションベースであり、弾性的にスケーラブルであり、信頼性があり、高い可用性があり、セキュアな態様で顧客に配信される、アプリケーション、ミドルウェア、およびデータベースサービス提供の一式を含んでもよい。そのようなIaaSシステムの例は、本譲受人によって提供されるOracle Cloud Infrastructure(OCI)である。
【0107】
図12は、さまざまな実施形態が実現され得る例示的なコンピュータシステム1200を示す図である。システム1200は、上記で説明されるコンピュータシステムのうちのいずれかを実現するために使用され得る。図に示されるように、コンピュータシステム1200は、バスサブシステム1202を介していくつかの周辺サブシステムと通信する処理ユニット1204を含む。これらの周辺サブシステムは、処理加速ユニット1206、I/Oサブシステム1208、ストレージサブシステム1218、および通信サブシステム1224を含んでもよい。ストレージサブシステム1218は、有形のコンピュータ可読記憶媒体1222およびシステムメモリ1210を含む。
【0108】
バスサブシステム1202は、コンピュータシステム1200のさまざまなコンポーネントおよびサブシステムに、意図されるように互いに通信させるための機構を提供する。バスサブシステム1202は、単一のバスとして概略的に示されるが、バスサブシステムの代替実施形態は、複数のバスを利用し得る。バスサブシステム1202は、さまざまなバスアーキテクチャのうちのいずれかを用いるメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスを含むいくつかのタイプのバス構造のうちのいずれかであり得る。たとえば、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロチャネルアーキテクチャ(MCA:Micro Channel Architecture)バス、拡張ISA(EISA:Enhanced ISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA:Video Electronics Standards Association)ローカルバス、およびIEEE P1386.1規格に従って製造される中二階バスとして実現され得る周辺コンポーネントインターコネクト(PCI:Peripheral Component Interconnect)バスを含んでもよい。
【0109】
処理ユニット1204は、1つまたは複数の集積回路(たとえば、従来のマイクロプロセッサまたはマイクロコントローラ)として実現することができ、コンピュータシステム1200の動作を制御する。1つまたは複数のプロセッサが処理ユニット1204に含まれてもよい。これらのプロセッサは、シングルコアプロセッサまたはマルチコアプロセッサを含んでもよい。特定の実施形態では、処理ユニット1204は、シングルコアプロセッサもしくはマルチコアプロセッサが各処理ユニットに含まれる1つまたは複数の独立した処理ユニット1232および/または1234として実現され得る。他の実施形態では、処理ユニット1204はまた、2つのデュアルコアプロセッサを単一のチップに統合することによって形成されるクアッドコア処理ユニットとして実現され得る。
【0110】
さまざまな実施形態では、処理ユニット1204は、プログラムコードに応答してさまざまなプログラムを実行することができ、複数の同時に実行されるプログラムまたはプロセスを維持することができる。任意の所与の時間に、実行されるべきプログラムコードの一部または全部が、処理ユニット1204、および/またはストレージサブシステム1218に常駐することができる。好適なプログラミングを通して、処理ユニット1204は、上記で説明されるさまざまな機能を提供することができる。コンピュータシステム1200は、デジタル信号プロセッサ(DSP:Digital Signal Processor)、特殊目的プロセッサなどを含み得る処理加速ユニット1206をさらに含んでもよい。
【0111】
I/Oサブシステム1208は、ユーザインターフェイス入力デバイスおよびユーザインターフェイス出力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、たとえば、ユーザが、ジェスチャおよび発話コマンドを使用して、ナチュラルユーザインターフェイスを通して、Microsoft Xbox(登録商標)360ゲームコントローラなどの入力デバイスを制御し、それと相互作用することを可能にする、Microsoft Kinect(登録商標)モーションセンサなどのモーション感知および/またはジェスチャ認識デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の動き(たとえば、写真を撮っている間および/またはメニュー選択を行なっている間の「まばたき」)を検出し、アイジェスチャを入力デバイス(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。加えて、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含んでもよい。
【0112】
ユーザインターフェイス入力デバイスは、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡デバイスなどの聴覚/視覚デバイスも含んでもよいが、それらに限定されるものではない。加えて、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影、磁気共鳴撮像、陽電子放出断層撮影、医療用超音波検査装置などの医療用撮像入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスはまた、たとえば、MIDIキーボード、デジタル楽器などの音声入力デバイスを含んでもよい。
【0113】
ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどの非視覚的ディスプレイを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT:Cathode Ray Tube)、液晶ディスプレイ(LCD:Liquid Crystal Display)またはプラズマディスプレイを使用するものなどのフラットパネルデバイス、投影デバイス、タッチスクリーンなどであり得る。一般に、「出力デバイス」という語の使用は、コンピュータシステム1200からユーザまたは他のコンピュータに情報を出力するための全ての考えられ得るタイプのデバイスおよび機構を含むよう意図される。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなどの、テキスト、グラフィックスならびに音声/映像情報を視覚的に伝えるさまざまな表示デバイスを含んでもよいが、それらに限定されるものではない。
【0114】
コンピュータシステム1200は、現在のところシステムメモリ1210内に位置しているものとして示されているソフトウェア要素を含むストレージサブシステム1218を備え得る。システムメモリ1210は、処理ユニット1204上でロード可能および実行可能なプログラム命令、ならびにこれらのプログラムの実行中に生成されるデータを記憶し得る。
【0115】
コンピュータシステム1200の構成およびタイプに応じて、システムメモリ1210は、揮発性(ランダムアクセスメモリ(RAM:Random Access Memory)など)および/または不揮発性(読み出し専用メモリ(ROM:Read-Only Memory)、フラッシュメモリなど)であり得る。RAMは、典型的には、処理ユニット1204に即座にアクセス可能である、ならびに/もしくは処理ユニット1204によって現在操作および実行されている、データならびに/またはプログラムモジュールを含む。いくつかの実現例では、システムメモリ1210は、スタティックランダムアクセスメモリ(SRAM:Static Random Access Memory)またはダイナミックランダムアクセスメモリ(DRAM:Dynamic Random Access Memory)など、複数の異なるタイプのメモリを含んでもよい。いくつかの実現例では、起動中などにコンピュータシステム1200内の要素間で情報を転送するのに役立つ基本的なルーチンを含むベーシックインプット/アウトプットシステム(BIOS:Basic Input/Output System)が、典型的には、ROMに記憶され得る。限定ではなく例として、システムメモリ1210はまた、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS:Relational Database Management System)などを含んでもよいアプリケーションプログラム1212、プログラムデータ1214、およびオペレーティングシステム1216も示す。例として、オペレーティングシステム1216は、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/もしくはLinux(登録商標)オペレーティングシステム、さまざまな市販のUNIX(登録商標)もしくはUNIX様オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むが、それらに限定されない)、ならびに/またはiOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)12OS、およびPalm(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムを含んでもよい。
【0116】
ストレージサブシステム1218はまた、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を記憶するための有形のコンピュータ可読記憶媒体も提供し得る。プロセッサによって実行されると上述の機能を提供するソフトウェア(プログラム、コードモジュール、命令)が、ストレージサブシステム1218に記憶され得る。これらのソフトウェアモジュールまたは命令は、処理ユニット1204によって実行され得る。ストレージサブシステム1218はまた、本開示に従って使用されるデータを記憶するためのリポジトリを提供し得る。
【0117】
ストレージサブシステム1218はまた、コンピュータ可読記憶媒体1222にさらに接続され得るコンピュータ可読記憶媒体リーダ1220を含み得る。システムメモリ1210とともに、およびオプションとして、システムメモリ1210と組み合わせて、コンピュータ可読記憶媒体1222は、コンピュータ可読情報を、一時的および/またはより恒久的に収容、記憶、伝送、および取り出すために、遠隔の、ローカルな、固定された、および/またはリムーバブルなストレージデバイスに記憶媒体を加えたものを包括的に表し得る。
【0118】
コードまたはコードの一部を含むコンピュータ可読記憶媒体1222はまた、限定はしないが、情報の記憶および/または伝送のための任意の方法または技術で実現される揮発性および不揮発性の、リムーバブルおよび非リムーバブル媒体などの、記憶媒体ならびに通信媒体を含む、当該技術分野において公知であるかまたは用いられる任意の適切な媒体を含むことができる。これは、RAM、ROM、電子的に消去可能プログラマブルROM(EEPROM:Electronically Erasable Programmable ROM)、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD:Digital Versatile Disk)、または他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または他の有形のコンピュータ可読媒体などの有形のコンピュータ可読記憶媒体を含んでもよい。これはまた、データ信号、データ伝送、または所望の情報を伝送するために使用することができ、コンピューティングシステム1200によってアクセスすることができる、任意の他の媒体などの非有形のコンピュータ可読媒体を含むことができる。
【0119】
例として、コンピュータ可読記憶媒体1222は、非リムーバブル不揮発性磁気媒体に対して読み書きするハードディスクドライブ、リムーバブル不揮発性磁気ディスクに対して読み書きする磁気ディスクドライブ、CD ROM、DVDおよびBlu-Ray(登録商標)ディスクなどの、リムーバブル不揮発性光ディスクに対して読み書きする光ディスクドライブ、または他の光学媒体を含んでもよい。コンピュータ可読記憶媒体1222は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB:Universal Serial Bus)フラッシュドライブ、セキュアデジタル(SD:Secure Digital)カード、DVDディスク、デジタルビデオテープなどを含んでもよいが、それらに限定されない。コンピュータ可読記憶媒体1222はまた、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどの不揮発性メモリに基づくソリッドステートドライブ(SSD:Solid-State Drive)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMなどの揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM:Magnetoresistive RAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDも含んでもよい。ディスクドライブおよびそれらに関連付けられるコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶をコンピュータシステム1200に提供し得る。
【0120】
通信サブシステム1224は、他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム1224は、他のシステムとコンピュータシステム1200との間のデータの送受のためのインターフェイスとして働く。たとえば、通信サブシステム1224は、コンピュータシステム1200がインターネットを介して1つまたは複数のデバイスに接続することを可能にし得る。いくつかの実施形態では、通信サブシステム1224は、(たとえば、セルラー電話技術、3G、4GもしくはEDGE(グローバル進化のための高速データレート)などの先進データネットワーク技術、WiFi(IEEE802.11ファミリー規格、もしくは他のモバイル通信技術、またはそれらの任意の組み合わせを用いて)無線音声および/もしくはデータネットワークにアクセスするための無線周波数(RF:Radio Frequency)送受信機コンポーネント、グローバルポジショニングシステム(GPS:Global Positioning System)受信機コンポーネント、ならびに/または他のコンポーネントを含んでもよい。いくつかの実施形態では、通信サブシステム1224は、無線インターフェイスに加えて、またはその代わりに、有線ネットワーク接続性(たとえば、イーサネット(登録商標))を提供することができる。
【0121】
いくつかの実施形態では、通信サブシステム1224はまた、コンピュータシステム1200を使用し得る1人または複数人のユーザの代わりに、構造化されたおよび/または構造化されていないデータフィード1226、イベントストリーム1228、イベント更新1230などの形式で入力通信を受信し得る。
【0122】
例として、通信サブシステム1224は、Twitter(登録商標)フィード、Facebook(登録商標)更新、Rich Site Summary(RSS)フィードなどのウェブフィード、および/もしくは1つまたは複数の第三者情報源からのリアルタイム更新などの、ソーシャルネットワークならびに/または他の通信サービスのユーザからリアルタイムでデータフィード1226を受信するように構成され得る。
【0123】
加えて、通信サブシステム1224はまた、連続データストリームの形式でデータを受信するように構成され得、これは、明確な終端を伴わない、本質的に連続的または無限であり得る、リアルタイムイベントのイベントストリーム1228および/またはイベント更新1230を含んでもよい。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワークパフォーマンス測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などが含まれてもよい。
【0124】
通信サブシステム1224はまた、構造化されたおよび/または構造化されていないデータフィード1226、イベントストリーム1228、イベント更新1230などを、コンピュータシステム1200に結合される1つまたは複数のストリーミングデータソースコンピュータと通信し得る1つまたは複数のデータベースに出力するように構成され得る。
【0125】
コンピュータシステム1200は、ハンドヘルドポータブルデバイス(たとえば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえば、Google Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または任意の他のデータ処理システムを含む、さまざまなタイプのうちの1つとすることができる。
【0126】
常に変化するコンピュータおよびネットワークの性質のため、図に示されるコンピュータシステム1200の説明は、具体的な例として意図されているに過ぎない。図に描写されるシステムより多いまたは少ないコンポーネントを有する、多くの他の構成が可能である。たとえば、カスタマイズされたハードウェアも使用され得、および/または、特定の要素が、ハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、または組み合わせで実現され得る。さらに、ネットワーク入力/出力デバイスなどの他のコンピューティングデバイスへの接続が採用され得る。本明細書に提供される開示および教示に基づいて、当業者は、さまざまな実施形態を実現するために、他の態様および/または方法を理解するであろう。
【0127】
特定の実施形態について説明してきたが、さまざまな修正、変更、代替構成、および均等物も本開示の範囲内に包含される。実施形態は、ある特定のデータ処理環境内での動作に限定されず、複数のデータ処理環境内で自由に動作することができる。加えて、実施形態は、特定の一連のトランザクションおよびステップを使用して説明されているが、本開示の範囲は、説明された一連のトランザクションおよびステップに限定されるものではないことが、当業者に明白となるはずである。上述した実施形態のさまざまな特徴および局面は、個々にまたは一緒に用いられてもよい。
【0128】
さらに、実施形態は、ハードウェアおよびソフトウェアの特定の組み合わせを使用して説明されたが、ハードウェアおよびソフトウェアの他の組み合わせも本開示の範囲内であることを認識されたい。実施形態は、ハードウェアのみで、またはソフトウェアのみで、またはそれらの組合せを使用して実現され得る。本明細書に記載されたさまざまなプロセスは、同じプロセッサまたは任意の組み合わせの異なるプロセッサ上で実現され得る。したがって、構成要素またはモジュールが特定の動作を実行するように構成されるとして記載されている場合、そのような構成は、たとえば、動作を実行するように電子回路を設計すること、動作を実行するようにプログラム可能な電子回路(マイクロプロセッサなど)をプログラムすること、またはそれらの任意の組み合わせによって達成され得る。プロセスは、プロセス間通信のための従来の技術を含むがそれに限定されないさまざまな技術を用いて通信することができ、異なる対のプロセスが異なる技術を用いてもよく、同じ対のプロセスが異なる時間に異なる技術を用いてもよい。
【0129】
したがって、明細書および図面は、限定的な意味ではなく例示的な意味で見なされるべきである。しかしながら、特許請求の範囲に記載された、より広範な精神および範囲から逸脱することなく、追加、削減、削除、ならびに他の修正および変更がなされ得ることは明らかであろう。したがって、特定の開示の実施形態を説明してきたが、これらは限定を意図するものではない。さまざまな修正および均等物が、特許請求の範囲内にある。
【0130】
開示された実施形態を説明する文脈における(特に、特許請求の範囲の文脈における)文言「ある(a)」および「ある(an)」および「その(the)」ならびに同様の指示対象の使用は、本明細書において別段の指示がない限り、または文脈によって明らかに矛盾しない限り、単数形および複数形の両方を包含すると解釈されるべきである。文言「備える(comprising)」、「有する(having)」、「含む(including)」、および「含有する(containing)」は、特に断らない限り、非限定的な文言(すなわち、「~を含むがそれに限定されない」を意味する)として解釈されるべきである。「接続される」という文言は、何かが介在する場合であっても、部分的または全体的に内部に含まれる、取り付けられる、または共に合わせられるものとして解釈されるべきである。本明細書における値の範囲の記載は、本明細書において別段の指示がない限り、単に、その範囲内に入る各別々の値を個々に言及する簡潔な方法としての役割を果たすことを意図しており、各別々の値は、あたかもそれが本明細書において個々に記載されているかのように本明細書に組み込まれる。本明細書に記載される全ての方法は、本明細書において別段の指示がない限り、または文脈によって明らかに矛盾しない限り、任意の好適な順序で実行され得る。本明細書で提供される任意のおよび全ての例、または例示的な言葉(たとえば、「など」)の使用は、単に、実施形態をよりよく説明することを意図するものであり、別段の請求がない限り、本開示の範囲を限定するものではない。本明細書におけるいかなる文言も、任意の請求されていない要素を本開示の実施に不可欠であることを示すものとして解釈されるべきではない。
【0131】
句「X、Y、またはZのうちの少なくとも1つ」などの離接的文言は、特に別段の記載がない限り、項目、用語などがX、Y、もしくはZ、またはそれらの任意の組合せ(たとえば、X、Y、および/またはZ)のいずれかであり得ることを提示するために一般に使用される文脈内で理解されることが意図される。したがって、そのような離接的文言は、概して、ある実施形態が、Xのうちの少なくとも1つ、Yのうちの少なくとも1つ、またはZのうちの少なくとも1つが各々存在することを必要とすることを包含するよう意図されるものではなく、および包含するべきではない。
【0132】
本開示を実施するために公知の最良の形態を含む、本開示の好ましい実施形態が本明細書に記載されている。これらの好ましい実施形態の変形例は、前述の説明を読めば当業者には明らかになるであろう。当業者は、適宜、そのような変形例を採用することができるはずであり、本開示は、本明細書に具体的に説明されるものとは別様に実施され得る。したがって、本開示は、適用可能な法によって許可されるように、特許請求の範囲に記載される主題の全ての修正物および均等物を含む。さらに、その全ての可能な変形物における上記の要素の任意の組み合わせは、本明細書において別段の指示がない限り、本開示によって包含される。
【0133】
本明細書に引用される刊行物、特許出願、および特許を含む全ての引用文献は、あたかも各引用文献が個々にかつ具体的に引用により援用されるよう示され、その全体がここに記載されるのと同程度に、ここに引用により援用される。
【0134】
上記の明細書では、本開示の局面についてその具体的な実施形態を参照して説明しているが、本開示はそれに限定されるものではないということを当業者は認識するであろう。上記の開示のさまざまな特徴および局面は、個々にまたは一緒に用いられてもよい。さらに、実施形態は、本明細書の、より広い精神および範囲から逸脱することなく、本明細書に説明されるものを超えて、任意の数の環境および用途において利用され得る。したがって、明細書および図面は、限定的ではなく例示的であると見なされるべきである。
【国際調査報告】