(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-05-31
(54)【発明の名称】スナップショットハードウェアセキュリティモジュールおよびディスクメタデータストア
(51)【国際特許分類】
G06F 11/14 20060101AFI20240524BHJP
H04L 9/16 20060101ALI20240524BHJP
G06F 16/28 20190101ALI20240524BHJP
【FI】
G06F11/14 671
H04L9/16
G06F16/28
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023572931
(86)(22)【出願日】2022-04-27
(85)【翻訳文提出日】2024-01-15
(86)【国際出願番号】 US2022026511
(87)【国際公開番号】W WO2022250826
(87)【国際公開日】2022-12-01
(32)【優先日】2021-05-27
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-04-12
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】バラスブラマニアン,スリヤナラヤナン
(72)【発明者】
【氏名】マシュー,オーガスティン・バルン
(72)【発明者】
【氏名】エフティカー-ダッカー,ハミドレザ
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA02
(57)【要約】
本開示は、1つまたは複数のノードで障害が発生した場合に、キー管理データのスナップショットを取得し、キー管理データを効率的に再作成するためにスナップショットを記憶することに関する。スナップショットオーケストレータは、クラウドインフラストラクチャサービスの1つまたは複数の領域にわたる一連のノードの各々にスナップショットインスタンスを要求できる。各スナップショットインスタンスは、一連のノードの各々によって維持される複数のクライアントキーに複数の変更を提供することができる。スナップショットオーケストレータは、スナップショットインスタンスおよび対応するメタデータを取得し、一連のノードから受信したスナップショットインスタンスを検証できる。スナップショットオーケストレータは、検証されたスナップショットインスタンスおよび対応するメタデータを記憶ノードに記憶できる。これにより、スナップショットインスタンスのその後の取得、およびログ記録の再作成、および一連のノードのいずれかでの複数のキーの変更が可能になる。
【特許請求の範囲】
【請求項1】
一連のノードにわたってキー管理データのスナップショットを取り込む方法であって、前記方法は、
スナップショットオーケストレータが、クラウドインフラストラクチャサービス内の1つまたは複数の領域にわたる前記一連のノードの各々にスナップショットインスタンスを要求することを含み、各スナップショットインスタンスは、前記一連のノードの各々によって維持される複数のクライアントキーに複数の変更を提供し、各変更はログ記録内のエントリに対応し、
前記方法は、
前記スナップショットオーケストレータが、前記一連のノードの各々から前記スナップショットインスタンスおよび対応するメタデータを取得することと、
前記スナップショットオーケストレータが、前記一連のノードの各々から取得された前記スナップショットインスタンスを検証することと、
前記スナップショットインスタンスの検証に応答し、前記スナップショットオーケストレータが前記スナップショットインスタンスおよび対応するメタデータを記憶ノードに記憶することにより、前記スナップショットインスタンスのその後の取得、および前記ログ記録の再作成、および前記一連のノードのいずれかでの前記複数のキーの変更が可能になることと、を含む、方法。
【請求項2】
前記スナップショットを要求することは、前記スナップショットインスタンスを取り込む要求を指定するエントリを前記ログ記録に追加することを含み、前記一連のノードの各々は、前記ログ記録に前記追加されたエントリの識別に応答して前記スナップショットインスタンスを取り込む、請求項1に記載の方法。
【請求項3】
前記スナップショットインスタンスは、閾値期間の満了、または前記ログ記録への閾値数のエントリの追加の検出のいずれかに応答して要求される、請求項1または請求項2に記載の方法。
【請求項4】
第1の領域内の第1のノードで識別された前記複数のクライアントキーのいずれかに対する各変更は、領域間スナップショットコピー機によって、前記クラウドインフラストラクチャサービスの他の領域内の他のノード間で同期される、請求項1、請求項2または請求項3に記載の方法。
【請求項5】
前記スナップショットインスタンスを検証することは、
前記取得されたスナップショットインスタンスの各々について、各スナップショットインスタンスおよび各対応するノードに固有のエントロピー値を識別することと、
前記取得されたスナップショットインスタンスの各々について前記識別されたエントロピー値が互いに閾値類似度内にあるかどうかを決定することと、を含み、前記閾値類似度内にある前記エントロピー値に応じて前記スナップショットインスタンスが検証される、先行する請求項のいずれかに記載の方法。
【請求項6】
前記スナップショットオーケストレータが各スナップショットインスタンスを切り詰めて、前記ログ記録の指定されたエントリより前の前記ログ記録内の対応するエントリを有する前記複数のクライアントキーに対する変更を削除することさらに含む、先行する請求項のいずれかに記載の方法。
【請求項7】
第1のノードで停止通知を取得することと、
前記記憶されたスナップショットインスタンスおよび対応するメタデータを前記記憶ノードから取得することと、
前記記憶されたスナップショットインスタンスおよび対応するメタデータを前記第1のノードに提供することと、をさらに含み、前記第1のノードは、前記記憶されたスナップショットインスタンスおよび対応するメタデータを使用して、前記複数のクライアントキーに対する前記変更を指定する前記ログ記録を再作成する、先行する請求項のいずれかに記載の方法。
【請求項8】
前記メタデータは、前記第1のノードの指定された分割にアクセスするためのキーを含み、前記第1のノードの各分割はクライアントのログ記録を独立して維持し、前記スナップショットオーケストレータは、前記キーを使用して前記分割にアクセスし、前記記憶されたスナップショットインスタンスおよび対応するメタデータを前記第1のノードの前記分割に提供する、請求項7に記載の方法。
【請求項9】
スナップショット管理システムであって、
プロセッサと、
スナップショットオーケストレータを実装するための命令を含む、非一時的なコンピュータ可読媒体と、を含み、前記命令は、前記プロセッサによって実行されると、
前記一連のノードの各々にスナップショットインスタンスを要求し、各スナップショットインスタンスは、前記一連のノードの各々によって維持される複数のクライアントキーに複数の変更を提供し、各変更は、追加専用ログ記録内のログシーケンス記録に対応し、
前記一連のノードの各々から、前記スナップショットインスタンスおよび対応するメタデータを取得し、
前記スナップショットインスタンスの各々の識別されたエントロピー値に基づいて、前記一連のノードの各々から取得された前記スナップショットインスタンスを検証し、
前記スナップショットインスタンスの検証に応答して、前記スナップショットインスタンスおよび対応するメタデータを記憶ノードに記憶し、前記スナップショットインスタンスおよび対応するメタデータは、前記一連のノードのいずれかで前記追加専用ログ記録および前記複数のキーに対する変更を再作成するために使用されるように構成される、
ように前記プロセッサを構成する、スナップショット管理システム。
【請求項10】
前記スナップショットインスタンスを要求することは、前記スナップショットインスタンスを取り込む要求を指定する前記追加専用ログ記録に、指定されたログシーケンス番号を追加することを含み、前記一連のノードの各々は、前記追加専用ログ記録内の前記追加された指定されたログシーケンス番号の識別に応じて、前記スナップショットインスタンスを取り込む、請求項9に記載のスナップショット管理システム。
【請求項11】
前記プロセッサは、
前記スナップショットインスタンスの検証に応答して、前記スナップショットインスタンスに対応する前記メタデータを含むようにテーブルを更新し、前記メタデータは、前記追加専用ログ記録の前記指定されたログシーケンス番号、前記スナップショットインスタンスの取込み時のステータス、および前記スナップショットインスタンスの前記要求が開始されたタイムスタンプのいずれかに関連する、ようにさらに構成される、請求項10に記載のスナップショット管理システム。
【請求項12】
前記プロセッサは、
前記スナップショットインスタンスの各々の前記エントロピー値を識別し、各エントロピー値は、前記追加専用ログ記録の少なくとも前記追加された指定されたログシーケンス番号に基づき、および
前記取得されたスナップショットインスタンスの各々について前記識別されたエントロピー値が互いに類似性閾値内にあるかどうかを決定し、前記スナップショットインスタンスは、前記エントロピー値が前記閾値類似度内にあることに応じて検証される、
ようにさらに構成される、請求項10または請求項11に記載のスナップショット管理システム。
【請求項13】
前記プロセッサは、
各スナップショットインスタンスを切り詰めて、前記追加専用ログ記録に前記追加された指定されたログシーケンス番号より前の、前記ログ記録内の対応するエントリを持つ前記複数のクライアントキーに対する変更を削除する、
ようにさらに構成される、請求項10、請求項11または請求項12に記載のスナップショット管理システム。
【請求項14】
前記プロセッサは、
第1のノードで停止通知を取得し、
前記記憶されたスナップショットインスタンスおよび対応するメタデータを前記記憶ノードから取得し、
前記記憶されたスナップショットインスタンスおよび対応するメタデータを前記第1のノードに提供し、前記第1のノードは、前記記憶されたスナップショットインスタンスおよび対応するメタデータを使用して、前記複数のクライアントキーに対する前記変更を指定する前記追加専用ログ記録を再作成する、
ようにさらに構成される、請求項9~請求項13のいずれか1項に記載のスナップショット管理システム。
【請求項15】
スナップショットオーケストレータのプロセッサによって実行されると、前記プロセッサに、
クラウドインフラストラクチャサービスの1つまたは複数の領域にわたる一連のノードの各々にスナップショットインスタンスを要求することを含み、各スナップショットインスタンスは、前記一連のノードの各々によって維持される複数のクライアントキーに対する複数の変更を指定し、各変更はログ記録内のエントリに対応し、
前記一連のノードの各々から前記スナップショットインスタンスおよび対応するメタデータを取得することと、
前記受信したスナップショットインスタンスの各々のエントロピー値が閾値類似度内にあることを決定することによって、前記一連のノードの各々から取得された前記スナップショットインスタンスを検証することと、
前記スナップショットインスタンスの検証に応答し、前記スナップショットインスタンスおよび対応するメタデータを記憶ノードに記憶することにより、前記スナップショットインスタンスのその後の取得、および前記ログ記録の再作成、および前記一連のノードのいずれかでの前記複数のキーの変更が可能になることと、
を含む動作を実行させる一連の命令を記憶する非一時的なコンピュータ可読媒体。
【請求項16】
前記プロセスは、
第1のノードで停止通知を取得することと、
前記記憶されたスナップショットインスタンスおよび対応するメタデータを前記記憶ノードから取得することと、
前記記憶されたスナップショットインスタンスおよび対応するメタデータを前記第1のノードに提供することと、をさらに含み、前記第1のノードは、前記記憶されたスナップショットインスタンスおよび対応するメタデータを使用して、前記複数のクライアントキーに対する前記変更を指定する前記ログ記録を再作成する、請求項15に記載の非一時的なコンピュータ可読媒体。
【請求項17】
前記エントロピー値は、各スナップショットインスタンス内のビット数を表す、請求項15または請求項16に記載の非一時的なコンピュータ可読媒体。
【請求項18】
前記スナップショットインスタンスは、閾値期間の満了、または前記ログ記録への閾値数のエントリの追加の検出のいずれかに応答して要求される、請求項15、請求項16、または請求項17に記載の非一時的なコンピュータ可読媒体。
【請求項19】
前記プロセスは、
前記スナップショットオーケストレータが各スナップショットインスタンスを切り詰めて、前記ログ記録の指定されたエントリより前の前記ログ記録内の対応するエントリを有する前記複数のクライアントキーに対する変更を削除することをさらに含む、請求項15~請求項18のいずれか1項に記載の非一時的なコンピュータ可読媒体。
【請求項20】
前記スナップショットを要求することは、前記スナップショットインスタンスを取り込む要求を指定するログシーケンス番号を前記ログ記録に追加することを含み、前記一連のノードの各々は、前記ログ記録に前記追加されたログシーケンス番号の識別に応じて前記スナップショットインスタンスを取り込む、請求項15~請求項19のいずれか1項に記載の非一時的なコンピュータ可読媒体。
【請求項21】
プロセッサによって実行されると、前記プロセッサに請求項1~請求項8のいずれか1項に記載の方法を実行させるコンピュータプログラム/命令を含む、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2021年5月27日に出願され、「SNAPSHOTTING HARDWARE SECURITY MODULES AND DISK METADATA STORES」と題されている米国仮特許出願第63/194,023号、および2022年4月12日に出願された米国非仮特許出願第17/719,010号に対する優先権を主張する。前述の出願の全内容は、あらゆる目的のためにその全体が参照により本明細書に組み込まれる。
【0002】
分野
開示されている技術は、クラウド環境におけるキー管理に関する。より詳細には、開示されている技術は、クラウドインフラストラクチャシステム内の一連のノード全体でキー管理データのスナップショットおよび対応するメタデータを取り込み、1つまたは複数のノードで障害が発生した場合にキー管理データを効率的に再作成するためにスナップショットを記憶することに関する。
【背景技術】
【0003】
背景
クラウドインフラストラクチャ(CI)システムは、CIシステム内のノード(例えばサーバ)にわたってデータを記憶し、記憶されたデータのクエリを可能にする能力など、複数の機能を実行することができる。さらに、CIシステムは大量のクライアントデータを記憶および維持できる。多くの場合、クライアントデータは、適切なキーの提供に応じてのみアクセスおよび/または変更できるように、キーを使用して暗号化することができる。クライアントのキーは、CIシステム全体でクライアントデータの一部を暗号化/復号化するために使用できる。
【0004】
さらに、CIシステムにおいてクライアントデータが追加または変更されると、複数のキーが変更され得る。例えば、新しいキーを追加して新しいデータセットを暗号化することができ、または別のデータセットがCIシステムから削除されることに応じて複数のキーからキーを削除することができる。クライアントに関連する複数のキーに対する変更は、CIシステム内の1つまたは複数のノードによって記録され、維持されることができる。例えば、キーが追加、削除、変更等されると、キー管理ノードは、複数のキーに対するすべての変更と、CIシステム内の1つまたは複数のセキュリティモジュール上の関連するメタデータとを記録し、記憶することができる。キー管理ノードを使用すると、CIシステム全体でキーを取得し、暗号化されたクライアントデータを復号化できる。
【発明の概要】
【0005】
概要
本実施形態は、1つまたは複数のノードでの停止の場合にキー管理データの効率的な再作成のためにキー管理データのスナップショットを取得し、スナップショットを記憶することに関する。第1の例示的な実施形態は、一連のノードにわたるキー管理データのスナップショットを取り込む方法に関する。この方法は、スナップショットオーケストレータが、クラウドインフラストラクチャサービス内の1つまたは複数の領域にわたる一連のノードの各々にスナップショットインスタンスを要求することを含むことができる。各スナップショットインスタンスは、一連のノードの各々によって維持される複数のクライアントキーに複数の変更を提供することができる。さらに、各変更はログ記録内のエントリに対応させることができる。
【0006】
この方法は、スナップショットオーケストレータが、一連のノードの各々からスナップショットインスタンスおよび対応するメタデータを取得することを含むこともできる。この方法は、一連のノードから受信したスナップショットインスタンスを検証することも含むことができる。この方法はまた、スナップショットインスタンスの検証に応答して、スナップショットインスタンスおよび対応するメタデータを記憶ノードに記憶することを含むこともできる。これにより、その後のスナップショットインスタンスの取得、ログ記録の再作成、および一連のノードのいずれかでの複数のキーの変更が可能になる。
【0007】
別の例示的な実施形態は、スナップショット管理システムに関する。スナップショット管理システムは、プロセッサおよび非一時的なコンピュータ可読媒体を備えることができる。非一時的なコンピュータ可読媒体は、プロセッサによって実行されると、プロセッサに、一連のノードの各々にスナップショットインスタンスを要求させる命令を含む。各スナップショットインスタンスは、一連のノードの各々によって維持される複数のクライアントキーに複数の変更を提供することができる。各変更は、追加専用ログ記録内のログシーケンス記録に対応できる。
【0008】
命令はさらに、プロセッサに一連のノードの各々からスナップショットインスタンスおよび対応するメタデータを取得させることができる。この命令はさらに、プロセッサに、各スナップショットインスタンスの識別されたエントロピー値に基づいて、一連のノードから受信したスナップショットインスタンスを検証させることができる。この命令はさらに、プロセッサに、スナップショットインスタンスの検証に応答して、スナップショットインスタンスおよび対応するメタデータを記憶ノードに記憶させることができる。スナップショットインスタンスおよび対応するメタデータは、一連のノードのいずれかで追加専用ログ記録および複数のキーに対する変更を再作成するために使用されるように構成することができる。
【0009】
別の例示的な実施形態は、非一時的なコンピュータ可読媒体に関する。非一時的なコンピュータ可読媒体は、プロセッサによって実行されるとプロセッサにプロセスを実行させる一連の命令を記憶することができる。このプロセスには、クラウドインフラストラクチャサービス内の1つまたは複数の領域にわたる一連のノードの各々にスナップショットインスタンスを要求することが含まれ得る。各スナップショットインスタンスは、一連のノードの各々によって維持される複数のクライアントキーに対する複数の変更を指定することができる。さらに、各変更はログ記録内のエントリに対応させることができる。
【0010】
このプロセスは、一連のノードの各々からスナップショットインスタンスおよび対応するメタデータを取得することをさらに含むことができる。このプロセスは、受信したスナップショットインスタンスの各々のエントロピー値が閾値類似度内にあることを決定することによって、一連のノードから受信したスナップショットインスタンスを検証することをさらに含むことができる。このプロセスは、スナップショットインスタンスの検証に応答して、スナップショットインスタンスおよび対応するメタデータを記憶ノードに記憶することをさらに含むことができる。これにより、その後のスナップショットインスタンスの取得、ログ記録の再作成、および一連のノードのいずれかでの複数のキーの変更が可能になる。
【0011】
さらに、実施形態は、プロセッサによって実行されると本明細書の開示に記載される方法/技術のいずれかをプロセッサに実行させる、コンピュータプログラム/命令を含むコンピュータプログラム製品を使用することによって実装され得る。
【図面の簡単な説明】
【0012】
【
図1】少なくとも1つの実施形態による例示的なスナップショット管理システムのブロック図である。
【
図2】少なくとも1つの実施形態による、キー管理データのスナップショットを取り込むためのシステムの一例のブロック図を示す。
【
図3】少なくとも1つの実施形態による、例示的なスナップショットオーケストレータのブロック図を示す。
【
図4】少なくとも1つの実施形態による、スナップショットインスタンスの例示的なビットマップである。
【
図5】少なくとも1つの実施形態による、例示的なスナップショットファイルフォーマットビットマップのブロック図を示す。
【
図6】少なくとも1つの実施形態による、一連のノードにわたってキー管理データのスナップショットを取り込むための例示的な方法のブロック図である。
【
図7】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための1つのパターンを示すブロック図である。
【
図8】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。
【
図9】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。
【
図10】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。
【
図11】少なくとも1つの実施形態による例示的なコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【0013】
詳細な説明
クラウドインフラストラクチャ(CI)サービスは、さまざまなCIサービスおよびアプリケーションにわたって暗号キーを安全に管理および記憶するための1つまたは複数の記憶モジュール(または「ボールト」)を含むことができる。CIボールトには、高可用性を備えたハードウェアプロビジョニングおよび/またはソフトウェアパッチ適用の実行における効率を最大化しながら、安全なデータ暗号化を可能にする、安全で回復力のある管理サービスを含めることができる。
【0014】
CIサービスでは、セキュリティに敏感なワークロードは、暗号化のためにハードウェアセキュリティモジュール(HSM)に記憶された暗号キーを利用することができる。CIサービスは、HSMを使用してキー管理サービスを提供できる。クライアントキーはボールトに記憶でき、キーの領域間複製により、クライアントはCIサービスの領域間でキーを複製することで、領域の障害から復元できる。クライアントに対して複製が有効になっていることに応じて、既存のキーと新しいキーを、正確な複製ステータスを持つ関連するメタデータとともに複製できる。
【0015】
CIキー管理サービスは、HSMを使用して顧客キーを記憶することができる。各HSMには、各HSMに記憶されているキーの論理境界とセキュリティ境界を提供する複数の分割を含めることができる。クライアントがボールトを作成することに応じて、ボールトには、その分割内に作成されたボールト内のすべてのキーを含む関連する分割を含めることができる。ある分割のコンテンツは、同じ信頼チェーンを共有し、単一分割に対してローカルなセキュリティ爆発半径を維持しない限り、別の分割と共有できない場合がある。
【0016】
HSMは、複製された状態マシン(RSM)にモデル化することができる。顧客向けの各ボールトには、関連する先行書き込みログ(WAL)を含めることができる。WALは、以下に限定されないが、キーの作成と削除、メタデータの更新などを含む、順序付けられる方法でのボールト上の動作を記録できる。WALは、トランザクションの読み取りと書き込みをサポートする内部CIの永続的なキーと値のストアに記憶できる。前述の計算機と同様に、ボールトに関連付けられるWALのエントリを適用することで、ボールトを完全に再作成できる。
【0017】
さらに、ボールトがクライアント用に作成されると、デフォルトで、HSM内の関連する分割を領域内のデータセンター内のホスト全体に複製することができる。ボールトで領域間複製を有効にすると、WALを宛先領域に中継して、その領域内のすべてのホストにも適用できる。デフォルトでは、クライアントキーはデータセンター間で分散されたホスト間で複製できる。領域内のKMSサービスは、外部ネットワーク(例えば、インターネット)にアクセスせずにファイアウォール内で実行できる。領域間通信を可能にするために、KMSサービスからレルム内の他の領域にWALトラフィックを取ることができる高性能RESTfulサービス(例えば、WALサービス)を各領域で実行できる。ある領域から別の領域のWALサービスへの領域間呼び出しは、ソース領域のエッジにあるアクセス制御されたプロキシを経由できる。どのサービスも、表現的状態の転移(REST)技術を組み込むことができ、地理的に分散し、1つまたは複数のロードバランサで実行できる。各先行書き込みログ(WAL)には、時間の経過に伴うキーの変更を含む追加専用ログを含めることができる。各WALには一連のエントリを含めることができ、各エントリには関連するログシーケンス番号(LSN)が含まれる。LSNは単調に密度が高く、WALエントリごとに増加し得る。
【0018】
さらに、CIKMSは、複数の領域にわたって連携して動作する複数の分散サービスを含むことができる。しかし、領域をまたがる処理はさまざまな問題(例えば、ビザンチン障害から生じる問題)を引き起こし得る。例えば、このような複数の領域を含む分散システムでは、インシデントが発生すると、ホスト、ディスク、データストア、HSMの部分的もしくは完全な損失、またはネットワークの問題が発生し、転送中のデータ破損、メッセージの配信順序の乱れ、または分割の発生につながり得る。さらに、これにより、WAL内のデータを操作するバグもしくはインシデント、またはその他のデータセンター障害が発生し得る。これに応じて、WALにはその顧客ボールトに関連するさまざまなシステム状態全体を含めることができるため、サービスをステートレスにすることができる。各WALエントリは、クライアントデータとCIサービスに関するメタデータの両方をエンコードできる。
【0019】
例えば、さまざまな理由のいずれかにより、キー管理サービス(例えば、ハードウェアセキュリティモジュール(HSM))をホストするノードが誤動作するか、機能を失い得る。例えば、大規模な停止イベントが発生すると、HSMをホストしている装置の電力または機能が失われ、その結果、HSM内のデータが失われ得る。キー管理サービスデータが失われると、複数のキー(およびキーの追跡ログ)が失われ得、その結果、暗号化されたクライアントデータにアクセスできなくなる。
【0020】
場合によっては、CIKMSは、複数の領域シャードを有するシャードシステムとすることができる。領域シャード識別子は、CIレルム、領域、およびKMSシャードの組み合わせを整数としてエンコードできる。領域シャード識別子には、領域/レルムにわたる各シャードを表す32ビット整数を含めることができる。これにより、WALのメンバーシップを生成するための効率的な計算が可能になる。
【0021】
さらに、複数のWALを比較して、指定された時点までWALが同じであるかどうかを決定することができる。これは、各ログエントリの増分チェックサムを計算し、再計算中に実際のエントロピー値と計算されたエントロピー値を比較することによって実行できる。アンチエントロピーチェックを実行すると、ビットフリップを識別する、またはWAL間の競合を解決して、領域間のWALを収束するのに役立ち得る。
【0022】
さらに、各WALは、多数(例えば、数百万)のエントリを含むことができる。したがって、ホストのブートストラップが必要になるたび、またはクライアントに対して領域間複製が設定されるたびに複数のWALを適用するのは非効率的になり得る。領域間でWALデータを複製するには、WALのスナップショットを定期的に取得し、領域間で複製し得る。各スナップショットにはエントロピー値を含めることができる。スナップショットはすべての単一ステートマシンで同じ時点で取得でき、集中型スナップショットオーケストレータはエントロピー値を比較することができ、コンセンサス後にスナップショットを有効なものとして昇格させる。さらに、スナップショット全体のチェックサムを実行することで、データを処理してビットフリップが発生したかどうかを決定できる。
【0023】
多くの場合、RSMのスナップショットを取り込むために、さまざまなスナップショットアプローチを利用することができる。第1のスナップショットアプローチには、スナップショットの取得中にRSMの状態に変更を加えることが許可されない、ストップザワールドスナップショットが含まれる。スナップショットアプローチの別の例には、同時スナップショットが含まれ、そこでは、新しい動作の処理中にスナップショットが取得され、スナップショットの取得中にWAL記録が処理される。さらに、完全なスナップショットには、LSNに関連付けられる複製された状態全体が含まれ得る。あるいは、増分スナップショットには、1つのスナップショットが以前のスナップショットに依存する一連のスナップショットを含めることもできる。増分スナップショットを使用すると、スナップショットのサイズを削減し、スナップショットの作成にかかる時間を短縮できる。
【0024】
本実施形態は、キー管理サービスデータ(例えば、複数のキーのWAL)のスナップショットを取り込むことに関する。スナップショットオーケストレータは、特定のインスタンス(例えば、WALの指定されたログシーケンス番号(LSN)で)で複数のホストにわたってスナップショットを開始し、取得したスナップショットを同期できる。LSNには、WALエントリの順序付けに使用できる、単調に密で増加するシーケンス番号を含めることができる。保存されたスナップショットには、CIシステムで障害が発生した場合にホストが効率的に復元できるログデータの復元力のある複製を含めることができる。
【0025】
本実施形態は、さまざまな閾値に基づいてデータのスナップショットを定期的に調整できるスナップショットオーケストレータを実装することができる。スナップショットオーケストレータは、ホスト装置のクラスタ内のホスト間でスナップショットコンテンツを確認および検証する検証(アンチエントロピー)プロセスを実装できる。さらに、スナップショットオーケストレータは、クライアントデータが1つまたは複数の標準/プロトコルに従って装置またはシステムの境界を離れることがないように、メタデータを含む1つまたは複数のHSMからコンテンツを取得できる。スナップショットデータのセキュリティを確保するために、スナップショットデータを暗号化してチェックサムを行うことができる。例えば、スナップショットデータの一部をスナップショットデータから導出し、スナップショットデータと比較して、スナップショットデータ内のエラーを検出する、またはスナップショットデータの整合性を検証することができる。スナップショットデータは、複数の装置にわたって記憶できる(例えば、領域間記憶装置)。さらに、スナップショットデータのペイロード構造とスナップショットデータの切り詰めにより、メモリリソースを急激に増加させることなく、スナップショットデータを効率的に復元できる。
【0026】
スナップショットオーケストレータは、特定のタイプの個々のログ記録の適用を処理するログ記録ハンドラを含むことができる。WALプロセッサはWALを処理し、WALを1つまたは複数のログ記録ハンドラにディスパッチできる。WALプロセッサは、WAL記録が適用されるときに現在の状態(例えば、現在のLSN)を維持することができる。WALマネージャは、システムに追加/削除されたWALに基づいてWALプロセッサを管理できる。
【0027】
いくつかの実施形態では、キー管理データのスナップショットを取得する方法が提供される。CIシステム内の装置上で実行されるスナップショットオーケストレータサービスは、本明細書に記載される方法を実行することができる。スナップショットオーケストレータは、複数のホスト装置からスナップショットデータの要求を送信できる。ホスト装置によって取り込まれたスナップショットには、キー管理データ(例えば、クライアントデータを暗号化する複数のキーに一連の変更を提供するWAL)およびスナップショットデータに関連付けられるメタデータを含めることができる(例えば、ホスト装置、スナップショットデータが取得されたLSNインスタンスの識別)。複数のホスト装置は、CIシステム内の1つまたは複数の領域にわたって配置されたHSMノードおよび/またはデータベースノードを含むことができる。
【0028】
スナップショットデータの要求は、一連のホスト装置に送信することができる。スナップショットサービスは、各ホスト装置でスナップショットインスタンスを取得し、データ(例えば、スナップショットデータのエントロピー値)をスナップショット調整装置に提供することができる。スナップショットサービスは、指定された状態(例えば、書き込み追加ログ(WAL)内の指定されたLSNインスタンス)にあるスナップショットデータに応答して、スナップショットデータを取得することができる。場合によっては、スナップショットオーケストレータは、スナップショットサービスから受信した取得したエントロピー値を比較し、成功すると、一連のスナップショットデータを外部永続ストアにアップロードできる。
【0029】
スナップショットオーケストレータ装置は、複数のホスト装置からスナップショットインスタンスを取得し、スナップショットデータを検証することができる。これには、スナップショットデータを検証するための検証プロセスまたはアンチエントロピープロセスの実行が含まれ得る。場合によっては、指定されたLSNインスタンスより前のWALの一部を削除するために、スナップショットが取得された時点でWALが切り詰められ得る。
【0030】
スナップショットオーケストレータは、スナップショットデータを記憶ノードに記憶することができる。場合によっては、プライマリ記憶ノードは、領域間記憶装置内のノード間でスナップショットデータを調整/同期するためのスナップショットデータインスタンスの真実点として機能することができる。停止イベントまたはキー管理データの損失が発生した場合、スナップショットデータを取得してクライアントにキーデータを効率的に提供できる。
【0031】
A.スナップショット管理システムの概要
本明細書に記載されるシステムは、1つまたは複数のハードウェアセキュリティモジュール(HSM)内のクライアントキーと、1つまたは複数の領域にわたるオンディスクストア上の関連するメタデータとを記憶することができる。これは、異なる領域にあるこれらのホスト間でデータの同期を維持する内部複製システムによって実行できる。さらに、本明細書に記載されるシステムは、これらのHSMおよび関連するメタデータストアのスナップショットを定期的に取得して、クライアントキーデータをバックアップし、複製ログを圧縮することができる。これにより、1つまたは複数の領域でキーデータの障害または損失が発生した場合に、キーデータを効率的に取得できる。
【0032】
図1は、例示的なスナップショット管理システム100のブロック図である。スナップショット管理システム100は、スナップショットインスタンスおよび関連するメタデータを効率的に取り込むスナップショットインフラストラクチャを提供することができる。スナップショット管理システム100は、さまざまな構成可能な閾値に基づいてスナップショットを定期的に調整することができる。スナップショット管理システム100は、(例えば、アンチエントロピーチェックを実行することによって)取得されたスナップショットインスタンスをさらに検証することができる。
【0033】
場合によっては、スナップショット管理システム100は、スナップショットインスタンスのセキュリティを高めるために、スナップショットインスタンスのチェックサムを暗号化または実行することができる。さらに、スナップショット管理システム100は、スナップショットインスタンスの領域間記憶を可能にすることができる。スナップショットのペイロード構造により、メモリのバルーニングを発生させずにスナップショットインスタンスを効率的に復元できる。
【0034】
図1に示すように、スナップショット管理システム100は、スナップショットオーケストレータ102を含むことができる。スナップショットオーケストレータ102は、1つまたは複数の領域にわたるいくつかのホストノード(例えば、106A~B)にスナップショットインスタンスを要求することができる。スナップショットオーケストレータ102は、取得されたスナップショットインスタンス(例えば、WALログ記録)をさらに処理して、スナップショットインスタンスを検証することができる。スナップショットインスタンスの検証に応じて、インスタンスを後で取得するように記憶できる。
【0035】
スナップショットオーケストレータ102は、スナップショット取得サブシステム104を含むことができる。スナップショット取得サブシステム104は、ホストノード106A~Bにスナップショットインスタンスの要求を開始することができる。例えば、スナップショット取得サブシステム104は、指定されたLSNインスタンスでスナップショットを取得することを要求するエントリ(例えば、LSNインスタンスで)をWALに追加することができる。別の例として、スナップショット取得サブシステム104は、各ホストノード106A~Bによってスナップショットが取得されることを要求するメッセージをホストノード106A~Bに送信することができる。
【0036】
スナップショットオーケストレータ102は、クラスタマネージャ内で実行することができ、WALに新しいエントリを追加することによってホストノード上でスナップショットを開始することができる。スナップショットオーケストレータ102は、アンチエントロピーチェックを実行することができる。例えば、アンチエントロピーチェックが失敗した場合、ホストノードの一部が共通のアンチエントロピー値を持っている場合、スナップショットが失敗したノードは削除され、追いつくことが許可される。あるいは、警報を発することもできる。
【0037】
スナップショット管理システム100は、いくつかのホストノード(例えば、106A~B)を含むことができる。ホストノード106A~Bは、CIサービス内の複数の領域にわたって配置されたHSMを含むことができる。各ホストノード106A~Bは、クライアントに対して作成/削除されたすべてのキーの個別のログ記録を維持することができる。さらに、各ホストノード106A~Bは、スナップショットを取り込む要求を検出し、スナップショッタ110A~Bと対話してスナップショットを取り込み、スナップショットインスタンスをスナップショットオーケストレータ102に提供するためのスナップショット生成サブシステム108A~Bを含むことができる。スナップショッタは、スナップショット関連のタスク(例えば、スナップショットの実行、スナップショットのローカル記憶装置、リモートスナップショットのプル/プッシュなど)を実行するように構成された各レプリカ/サービスインスタンス内で実行されるワーカーノードであってもよい。
【0038】
各スナップショッタ110A~Bは、各ホストノードインスタンス106A~B内で実行することができる。スナップショッタ110A~Bは、先書きログマネージャの一部とすることができ、ローカルスナップショットの作成およびスナップショットの記憶を担当することができる。スナップショッタ110A~Bは、スナップショットオーケストレータ102によって呼び出すことができるアプリケーションプログラミングインターフェース(API)のセットを公開することができる。場合によっては、いくつかの以前のスナップショットを各スナップショッタ110A~Bに遠隔的に記憶することができる。
【0039】
スナップショット取得サブシステム104は、各ホストノード106A~Bによって提供されるスナップショットインスタンス112A~Bを取得することができる。スナップショットインスタンス112A~Bは、スナップショットインスタンス112A~Bの検証のためにスナップショット検証サブシステム114に提供され得る。例えば、スナップショット検証サブシステム114は、スナップショットインスタンス112A~Bを比較して、インスタンス112A~B内の任意の不一致を識別し、スナップショットインスタンス112A~Bを切り詰め、アンチエントロピーチェックを実行するなどすることができる。
【0040】
検証されたスナップショットインスタンス116は、記憶モジュール118に記憶することができる。記憶モジュール118は、ホストノード106A~Bのいずれかに障害が発生した場合に後続の取得のためにいくつかのスナップショットインスタンスを維持することができる。例えば、ホストノード106aの障害に応答して、最新のスナップショットインスタンスをホストノード106aに提供して、クライアントのWALを複製することができる。
【0041】
図2は、キー管理データのスナップショットを取り込むためのシステムの一例のブロック
図200を示す。
図2に示されるように、スナップショットオーケストレータ102は、ホスト装置上で実行される一連のスナップショットサービスにスナップショットを要求することができる。
図2に示されるように、先行書き込みログ202は、いくつかのインスタンス(例えば、204A~B)を含むことができる追加専用ログを含むことができる。さらに、スナップショットオーケストレータ102は、ホストノード106A~Bにスナップショットを取り込むように指示するLSNインスタンスを含むエントリ(例えば、206)をWAL202に追加することができる。ホストノード106A~Bは、次に、WAL202内のWALインスタンス206を識別し、本明細書で記載されるようにスナップショットインスタンスの取込みを開始することができる。
【0042】
スナップショットオーケストレータ102は、複数のホストノードにわたってスナップショット作成プロセスを調整することができ、長期記憶のために記憶モジュール118にスナップショットをプッシュする役割を担うことができる。各領域には、領域間冗長性のための対領域を含めることができる。スナップショットオーケストレータ102は、領域ごとにスナップショットを記憶モジュール118にプッシュすることができる。記憶モジュール118は、事前構成されたトゥームストーニング間隔の後(例えば、30日後)、WALに関連付けられるスナップショットを削除することができる。
【0043】
スナップショットオーケストレータ102は、テーブル(例えば、キー値ストアデータベースなどのデータベース)内のWALスナップショットおよび関連するメタデータを追跡することができる。スナップショットオーケストレータ102は、リースベースのデーモンとして実行することができ、時間間隔に基づいて定期的にスナップショットを要求することができる。スナップショットオーケストレータ102は、WAL202に書き込むことによって、オンデマンドでスナップショットを実行するためのAPIを公開することができる。さらに、スナップショットオーケストレータ102デーモンは、最新のスナップショットLSNに基づいてWALの切り詰めを実行することができる。スナップショットは、1つまたは複数の条件が満たされると開始できる。条件の例は、最新のスナップショット作成時間がスナップショット間隔よりも大きいこと、および進行中の最新のスナップショットの状態に基づくことができる。別の条件例は、WAL内の最新のLSNがWAL内の最大許可記録よりも大きいことに基づくことができる。条件が満たされることに対応して、ログエントリがWALに書き込まれ、スナップショットの進行中のメタデータテーブルにスナップショットメタデータ記録が追加され得る。
【0044】
場合によっては、複数のキー分割のバックアップにより、HSMの分割のスナップショットを取り込むことができる。これにより、HSM上の各分割に暗号化されたスナップショットを提供できる。HSMによって提供される任意のバックアップ機能(構成、キー、ユーザ)は、暗号化されたブロブに含めることができる。スナップショットの精度を保証するために、バックアップを検証し、データの精度をチェックすることができる(例えば、CRC32エラー検出アルゴリズムなどの巡回冗長チェック(CRC)を使用)。分割データがカードから読み取られ得るため、この検証にはチェックサムの実行が含まれ得る。バックアップは指定された記憶装置に記憶でき、復元機能が初期化されると、整合性チェックに合格した新しい一時分割上で復元機能を実行できる。
【0045】
場合によっては、スナップショットエントリがWAL内で検出されると、すべてのホストノードがそのHSMカード上でバックアップを実行することができる。しかし、バックアップが暗号化されているため、バックアップを相互に比較することが難しい場合がある。したがって、各バックアップタイプのすべてのデータをダウンロードし、暗号化されたデータのブロブとともに返すことができる。オーケストレータは、次いで、メタデータを使用してデータを並べ替え、バックアップを比較して、バックアップが同じオブジェクトを指しているかどうかを決定できる。
【0046】
各ホストノード106A~Bは、スナップショッタ110A~Bを実装することができる。スナップショッタ110A~Bは、先行書き込みログマネージャの一部として実行することができる。スナップショッタ110A~Bは、スナップショットを取り込み、そのスナップショットをローカルに保存することができる。スナップショッタ110A~Bはさらに、特定のLSNに関連付けられるスナップショッタのステータスを返すことを可能にするAPIを公開し、LSNに対してローカルに存在するスナップショットをリストし、ローカル/リモート記憶モジュールに直接書き込むことができるスナップショットを返すことができる。
【0047】
スナップショッタ110A~Bは、新しいローカルスナップショットを取り込むことができる。スナップショットの要求は、特定のログ記録タイプを使用して、各ホストノード106A~BのWALを介して流れることができる。その後、WALマネージャはWALプロセッサを呼び出して、スナップショットと関連するメタデータとの書き込みを担当するスナップショットライターを使用してスナップショットを取得できる。
【0048】
場合によっては、スナップショットは、WALの全体的なスナップショット内の「ミニ」スナップショットの集合として記憶され得る。各ログ記録ハンドラプロセッサは、特定のログ記録ハンドラに関連付けられるスナップショット内のデータのバージョン管理を担当できる。スナップショットライターは、整合性チェックを実行するとともに、スナップショットファイル全体のバージョン管理を担当できる。整合性チェックは、各個別のマシンで利用可能な秘密キーを介してスナップショットの暗号化キー値で署名できる。
【0049】
ダウンロードされたスナップショットおよび/またはローカルに保存されたスナップショットは、WALマネージャ内のサブディレクトリディレクトリに保存される。スナップショットとそれに対応する各装置の状態は、スナップショットマネージャによって管理できる。各スナップショットは、スナップショットが完了して検証されているかどうかを示すマーカーファイルとともに、指定されたLSNを名前として持つ記憶装置サブディレクトリに存在できる。
【0050】
B.スナップショットオーケストレータ
上述のように、スナップショットオーケストレータは、1つまたは複数のホストノードからスナップショットを取得し、そのスナップショット(および対応するメタデータ)を維持して、ホストノードのいずれかで損失が発生した場合にWALを再作成することができる。例えば、ホストノードを含む領域での障害に応答して、スナップショットオーケストレータはスナップショットと関連するメタデータとをホストノードに提供し、クライアントキー管理データを提供するWALを再作成できる。
【0051】
図3は、例示的なスナップショットオーケストレータ302のブロック
図300を示す。スナップショットオーケストレータ302は、本明細書に記載されるように、1つまたは複数のホストノードからスナップショットデータ(WAL)を取得することができる。オーケストレータ302は、取得したWALをポーリングし、追加の処理(例えば、トゥームストーニング)を実行することができる。ホストノードから受信したスナップショットと関連するメタデータとは、テーブルによって維持できる。メタデータには、ホストノードの名前、LSNインスタンス、スナップショットのステータス、記録の作成時刻などを含めることができる。テーブル内に維持されるスナップショットおよび対応するメタデータは、WALリポジトリ304にローカルに記憶できる。
【0052】
スナップショットオーケストレータ302は、WALトランケータ306を介してWALを切り詰めることができる。例えば、各ホストノードによって取り込まれたスナップショットは、指定されたLSNインスタンスで切り詰めることができる。スナップショットを切り詰めると、各スナップショットのサイズを縮小できると同時に、特定のホストノードでWALを再作成するためにWALを正確に表現できるようになる。
【0053】
スナップショットおよび対応するメタデータは、記憶モジュール310に記憶することができる。記憶モジュール310は、オーケストレータ302からのスナップショットの要求に応答してスナップショットデータの効率的な記憶および取得を可能にする、1つまたは複数の相互接続された記憶ノードを含むことができる。
【0054】
領域間スナップショットコピー機308は、バックアップおよび既存のスナップショットを領域間で輸送する役割を担う構成要素を含むことができる。領域間スナップショットコピー機308は、さまざまな領域内のノード間に任意の不一致がある場合、スナップショットメタデータテーブルを通過して、領域を越えてスナップショットデータをコピーすることができる。領域間スナップショットコピー機308は、さまざまな領域に個別に接続できるリースベースのデーモンを備えることができる。スナップショットの取込みが成功したことをステータスが示すスナップショットごとに、スナップショットを領域間スナップショットコピー機308にコピーすることができる。領域間スナップショットコピー機308のデータ複製ハンドラは、データ複製WAL記録をローカルデータベースに適用する役割を果たすことができる。各ローカルデータベースには、閾値数未満のエントリが含まれ得る。場合によっては、スナップショット作成ではデータへの書き込みのみがブロックされ、スナップショット作成の進行中にスナップショットオーケストレータのデータプレーンによってデータベースが読み取られ得る。ローカルデータベースには、キーと値の対の配列を含めることができる。キーと値の対は、LSN値と計算されたCRC32値によってデータベース内で順序付けできる。データ記録が更新されると、CRC32を段階的に変更できる。CRC32関数は、可変長文字列を、32ビットバイナリシーケンスの16進値のテキスト表現である8文字の文字列に変換する。したがって、データの精度が高まるにつれて、CRC32値も向上し得る。
【0055】
C.スナップショットデータのビットマップ
図4は、スナップショットインスタンスのビットマップ400の例である。スナップショットデータは、本明細書に記載されるように、ホストノードから取得されたスナップショットインスタンスを含むことができる。スナップショットデータには、可変長の複数のハンドラスナップショットを含めることができる。ハンドラスナップショットには、各スナップショットサービスによって取得された個別のスナップショットインスタンスを含めることができる。
【0056】
スナップショットデータ400のビットマップは、ハンドラスナップショットフィールド402、404、スナップショットヘッダフィールド406、CRC32フィールド408、およびバージョンフィールド410のいずれかを含むことができる。例えば、第1のスナップショットインスタンス(例えば、HSMからのインスタンス)は、第1のハンドラスナップショットフィールド402に含めることができる。第2のスナップショットインスタンス(例えば、バークレーデータベース(BDB)インスタンスなどからの)は、第2のハンドラスナップショットフィールド404に含めることができる。スナップショットインスタンスは、スナップショットオーケストレータによって結合されて、後でノード(例えば、HSM、BDBノード)によって解析および復元できるスナップショットペイロードを形成できる。ハンドラスナップショットフィールド402、404は、可変長(vlen)を含むことができる。
【0057】
スナップショットデータは、スナップショットサイズをバイト単位で識別するスナップショットヘッダ406を含むこともできる。スナップショットデータは、公開キー暗号化標準(PKCS)エンベロープ暗号化を使用した非対称キーを使用して暗号化できる。スナップショットデータは、巡回冗長チェック(CRC32)フィールド408と、スナップショットデータを提供するノードのバージョンを指定するバージョンフィールド410とを含むこともできる。CRC32フィールド408およびバージョンフィールド410は、スナップショットインスタンスを復号する、または公開キーにアクセスする必要なく、各スナップショットインスタンスの検証を確認できるように暗号化しないことができる。
【0058】
スナップショットインスタンスは、ハンドラスナップショットのメタデータ(例えば、名前およびオフセット)を指定するメタデータファイルに関連付けることができる。例えば、これには、スナップショットに関連付けられるLSN、先行書き込みログ名、各ハンドラスナップショットのハンドラスナップショットメタデータ、ハンドラスナップショットの数、ヘッダを含むスナップショットの長さ(バイト単位)、スナップショットのバージョン、ログ記録タイプ、エントロピー値などが含まれ得る。
【0059】
図5は、例示的なスナップショットファイルフォーマットビットマップ500のブロック図を示す。スナップショットファイルフォーマットビットマップ500は、バージョンフィールド502、ヘッダCRC32フィールド504、ヘッダフィールド506、および複数のテーブルフィールド(例えば、508、510、512)を含むことができる。
【0060】
バージョンフィールド502は、スナップショットのバージョンを提供することができる。スナップショットの長さには、スナップショットのサイズを2GBに制限する符号付き整数(例えば、4バイトなど)を含めることができる。ヘッダCRC32フィールド504は、ヘッダを含む残りのバイトのCRCを指定する4バイトを含むことができる。ヘッダフィールド506は、各テーブルにインデックスを付けるために必要なメタデータを含むことができる。ファイルフォーマットは、可変長の複数のテーブル(例えば、テーブル1、テーブル2、テーブル3)を(例えば、テーブルフィールド508、510、512内に)含むことができる。
【0061】
D.キー管理データのスナップショットを取得および管理するためのフロープロセス
上述したように、スナップショット管理システムは、一連のノードにわたってキー管理データのスナップショットを定期的に取り込み、キー管理データのその後の再作成のためにスナップショットを記憶することができる。例えば、第1のノードでの停止に応答して、最新のスナップショットを第1のノードに提供して、そのノードでキー管理データを再作成することができる。これにより、1つまたは複数のノードでの停止イベント(例えば、障害)に応じて、キー管理データ(例えば、時間の経過とともにクライアントキーへの変更)を効率的に再作成できるようになる。
図6は、一連のノードにわたってキー管理データのスナップショットを取り込むための例示的な方法600のブロック図である。例えば、本明細書に記載の方法は、スナップショット管理システム(例えば、100)の一部としてホストノード(例えば、106A~B)と対話するスナップショットオーケストレータ(例えば、102)によって実行することができる。
【0062】
602において、方法は、一連のノードにスナップショットインスタンスを要求することを含むことができる。一連のノードの各々は、各ノード上のキー管理データのスナップショットを取込みできるスナップショッタを備えることができる。キー管理データには、クライアントに固有の複数のキーのいずれかの変更(例えば、追加/削除)を含めることができる。複数のキーに対する各変更は、ログ記録内のエントリ(例えば、書き込み追加ログ(WAL)内の指定されたLSNインスタンス)に関連付けることができる。場合によっては、一連のノードは、例えば、地理的に異なる領域の異なるデータセンターなど、クラウドインフラストラクチャサービス内の1つまたは複数の領域にわたって配置することができる。この例では、第1の領域の第1のノードで識別された複数のクライアントキーのいずれかに対する各変更は、領域間スナップショットコピー機によって、クラウドインフラストラクチャサービスの他の領域の他のノード間で同期される。
【0063】
場合によっては、スナップショットを要求することは、スナップショットインスタンスを取り込む要求を指定するエントリをログ記録に追加することを含む。これに応答して、一連のノードの各々は、ログ記録に追加されたエントリの識別に応じてスナップショットインスタンスを取り込むことができる。場合によっては、スナップショットインスタンスは、閾値期間の満了(例えば、1分ごと、10分ごと)、またはログ記録への閾値数のエントリの追加の検出(例えば、100エントリごと、1000エントリごと)のいずれかに応答して要求できる。
【0064】
604で、スナップショットオーケストレータは、一連のノードからスナップショットインスタンスおよび対応するメタデータを取得することができる。スナップショットインスタンスには、一連のノードの各々上のログ(例えば、WAL)のスナップショットを含めることができる。各スナップショットインスタンスのメタデータには、スナップショットおよび/またはスナップショットを取り込みたノードのさまざまな態様を含めることができる。例えば、メタデータでは、スナップショットをトリガーしたWAL内のログシーケンス番号、スナップショットステータス、スナップショットを取り込むホストノードの識別子、エントロピー値などを指定できる。場合によっては、メタデータは、第1のノードの指定された分割にアクセスするためのキーを含み、第1のノードの各分割は、クライアントのログ記録を独立して維持する。スナップショットオーケストレータは、キーを使用して分割にアクセスし、記憶されたスナップショットインスタンスおよび対応するメタデータを第1のノードの分割に提供できる。
【0065】
606で、スナップショットオーケストレータはスナップショットデータのセットを検証することができる。これには、スナップショットデータのセットに、指定されたインスタンスでのクライアントのキーの状態の復元に使用できるわかりやすいデータが含まれていることを識別することが含まれ得る。さらに、これには、スナップショットデータを検証するための検証プロセスまたはアンチエントロピープロセスの実行が含まれ得る。
【0066】
一例として、スナップショットオーケストレータは、各スナップショットインスタンスおよび各対応するノードに特有のエントロピー値を識別することができる。本明細書で使用される場合、エントロピー値は、1つまたは複数の特性から導出される値(または一連の値)を含むことができ、スナップショットが要求されたLSN、スナップショットインスタンスのヘッダまたはスナップショットインスタンス自体のバイト数を指定するチェックサム値、スナップショットが取り込まれた時刻などである。換言すれば、本明細書で記載および使用されるエントロピー値は、一般に業界で使用され得るような、結果の不確実性の数値的尺度である必要はない。代わりに、本明細書に記載される技術によれば、エントロピー値は、上述の特性に基づいて生成することができ、各スナップショットインスタンスおよび/または各対応するノードに固有のものとすることができる。スナップショットオーケストレータは、受信した各スナップショットインスタンスの識別されたエントロピー値が互いに閾値類似度内にあるかどうかを決定できる。スナップショットインスタンスは、エントロピー値が閾値類似度内にあることに応じて検証することができる。例えば、すべてのエントロピー値が同じであるか、閾値類似度内にある場合、スナップショットインスタンスを検証できる。
【0067】
場合によっては、スナップショットオーケストレータは、各スナップショットインスタンスを切り詰めて、ログ記録の指定されたエントリより前のログ記録内の対応するエントリを有する複数のクライアントキーに対する変更を削除することができる。例えば、各スナップショットインスタンスに1000個のエントリが含まれている場合、スナップショットインスタンスを最新の100個のエントリのみに切り詰めて、スナップショットインスタンスの記憶効率を向上させると同時に、関連するすべてのクライアントキーを再作成できるようにすることができる。
【0068】
場合によっては、スナップショットインスタンスの検証に応じて、スナップショットインスタンスに対応するメタデータを含むようにテーブルを更新することができる。メタデータは、追加専用ログ記録の指定されたログシーケンス番号、スナップショットインスタンスの取込み時のステータス、およびスナップショットインスタンスの要求が検証されたタイムスタンプのいずれかに関連付けることができる。
【0069】
608で、スナップショットオーケストレータは、記憶ノードおよび一連のホストノード(例えば、領域間記憶装置)にスナップショットデータを記憶することができる。場合によっては、プライマリ記憶ノードは、WALを個別に記憶しているノード間でスナップショットデータを調整/同期するためのスナップショットデータインスタンスの真実点として機能することができる。停止イベントまたはキー管理データの損失が発生した場合、スナップショットデータを取得してクライアントにキーデータを効率的に提供できる。
【0070】
一例として、スナップショットオーケストレータは、第1のノードで停止通知を取得することができる。これは、第1のノードの停止(例えば、停電)、または第1のノードの別の障害の発生の結果であり得る。スナップショットオーケストレータは、いずれかのノードでの停止を定期的にチェックできる。他の例では、ノード(または対応する警報システム)は、いずれかのノードでの停止の検出に応答して、停止通知を送信することができる。スナップショットオーケストレータは、記憶されたスナップショットインスタンスおよび対応するメタデータを記憶ノードから取得できる。さらに、スナップショットオーケストレータは、記憶されたスナップショットインスタンスおよび対応するメタデータを第1のノードに提供できる。第1のノードは、記憶されたスナップショットインスタンスおよび対応するメタデータを使用して、複数のクライアントキーに対する変更を指定するログ記録を再作成することができる。さらに、さまざまな変形例および均等物には、実施形態に開示されている特徴の関連した適切な組み合わせが含まれる。
【0071】
E.IaaSの概要
上で述べたように、サービスとしてのインフラストラクチャ(IaaS)は、クラウドコンピューティングの特定のタイプの1つである。IaaSは、パブリックネットワーク(インターネットなど)経由で仮想化されるコンピューティングリソースを提供するように構成できる。IaaSモデルでは、クラウドコンピューティングプロバイダは、インフラストラクチャ構成要素(例えば、サーバ、記憶装置、ネットワークノード(例えばハードウェア)、展開ソフトウェア、プラットフォーム仮想化(例えばハイパーバイザ層)など)をホストすることができる。場合によっては、IaaSプロバイダは、これらのインフラストラクチャ構成要素に付随するさまざまなサービス(例えば、請求、監視、ロギング、負荷分散、およびクラスタリングなど)を提供することもできる。したがって、これらのサービスはポリシー推進型であり得るため、IaaSユーザは負荷分散を推進するポリシーを実装して、アプリケーションの可用性と性能を維持できる可能性がある。
【0072】
場合によっては、IaaS顧客は、インターネットなどのワイドエリアネットワーク(WAN)を介してリソースおよびサービスにアクセスすることができ、クラウドプロバイダのサービスを使用してアプリケーションスタックの残りの要素をインストールすることができる。例えば、ユーザはIaaSプラットフォームにログインして、仮想マシン(VM)の作成、各VMへのオペレーティングシステム(OS)のインストール、データベースなどのミドルウェアの展開、ワークロードとバックアップ用の記憶バケットの作成、さらにはエンタープライズソフトウェアをそのVMにインストールすることができる。その後、顧客はプロバイダのサービスを使用して、ネットワークトラフィックのバランス、アプリケーションの問題のトラブルシューティング、性能の監視、災害復旧の管理などのさまざまな機能を実行できる。
【0073】
ほとんどの場合、クラウドコンピューティングモデルはクラウドプロバイダの参加を必要とし得る。クラウドプロバイダは、IaaSの提供(例えば、提供、レンタル、販売)を専門とするサードパーティサービスであってもかまわないが、そうである必要はない。エンティティはプライベートクラウドを展開して、独自のインフラストラクチャサービスプロバイダになることも選択できる。
【0074】
いくつかの例では、IaaS展開は、新しいアプリケーション、またはアプリケーションの新しいバージョンを、準備されているアプリケーションサーバなどに配置するプロセスである。これには、サーバを準備するプロセス(例えば、ライブラリ、デーモンなどのインストールなど)も含まれ得る。これは多くの場合、ハイパーバイザ層(例えば、サーバ、記憶装置、ネットワークハードウェア、および仮想化)の下のクラウドプロバイダによって管理される。したがって、顧客は、(OS)、ミドルウェア、および/またはアプリケーション展開(例えば、セルフサービス仮想マシン(例えば、オンデマンドでスピンアップできる)など)などの取り扱いに責任を負うことができる。
【0075】
いくつかの例では、IaaSプロビジョニングは、使用するコンピュータまたは仮想ホストを取得し、それらに必要なライブラリまたはサービスをインストールすることさえも指し得る。ほとんどの場合、展開にはプロビジョニングが含まれていないため、最初にプロビジョニングを実行する必要があり得る。
【0076】
場合によっては、IaaSプロビジョニングには2つの異なる課題がある。まず、何かを実行する前にインフラストラクチャの初期セットをプロビジョニングするという最初の課題がある。第2に、すべてがプロビジョニングされた後に、既存のインフラストラクチャを進化させるという課題がある(例えば、新しいサービスの追加、サービスの変更、サービスの削除など)。場合によっては、インフラストラクチャの構成を宣言的に画定できるようにすることで、これら2つの課題に対処できる場合がある。言い換えれば、インフラストラクチャ(例えば、どの構成要素が必要か、どのように対話するか)は1つまたは複数の構成ファイルによって画定できる。したがって、インフラストラクチャの全体的なトポロジ(例えば、どのリソースがどのリソースに依存するか、およびそれぞれがどのように連携するかなど)を宣言的に記述することができる。場合によっては、トポロジが画定されると、構成ファイルに記述されているさまざまな構成要素を作成および/または管理するワークフローを生成できる。
【0077】
いくつかの例では、インフラストラクチャは、相互接続されている多くの要素を有し得る。例えば、コアネットワークとしても知られる、1つまたは複数の仮想プライベートクラウド(VPC)(例えば、構成可能および/または共有コンピューティングリソースの潜在的にオンデマンドのプール)が存在し得る。いくつかの例では、ネットワークの受信トラフィックおよび/または送信トラフィックがどのように設定されるかを画定するためにプロビジョニングされる1つまたは複数の受信/送信トラフィックグループルールと、1つまたは複数の仮想マシン(VM)が存在する場合もある。ロードバランサ、データベースなどの他のインフラストラクチャ要素もプロビジョニングできる。より多くのインフラストラクチャ要素が望まれたり追加されたりするにつれて、インフラストラクチャは段階的に進化し得る。
【0078】
場合によっては、さまざまな仮想コンピューティング環境にわたるインフラストラクチャコードの展開を可能にするために、継続的展開技術が使用されてもよい。さらに、説明されている技術により、これらの環境内でのインフラストラクチャ管理が可能になる。いくつかの例では、サービスチームは、1つまたは複数の、しかし多くの場合、多くの異なる生産環境(例えば、さまざまな異なる地理的位置にまたがり、場合によっては全世界に及ぶ)に展開することが望ましいコードを書くことができる。しかし、いくつかの例では、コードを展開するインフラストラクチャを最初にセットアップする必要がある。場合によっては、プロビジョニングは手動で行うことができ、プロビジョニングツールを利用してリソースをプロビジョニングすることができ、および/または展開ツールを利用して、インフラストラクチャがプロビジョニングされた後にコードを展開することができる。
【0079】
図7は、少なくとも1つの実施形態による、IaaSアーキテクチャのパターン例を示すブロック
図700である。サービスオペレータ702は、仮想クラウドネットワーク(VCN)706およびセキュアホストサブネット708を含むことができるセキュアホストテナント704に通信可能に結合することができる。いくつかの例では、サービスオペレータ702は、1つまたは複数のクライアントコンピューティング装置を使用することができ、これは、ポータブルハンドヘルド装置(例えば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))もしくはウェアラブル装置(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、Microsoft Windows Mobile(登録商標)などの実行ソフトウェア、および/またはiOS、WindowsPhone、Android、BlackBerry9、PalmOSなどのさまざまなモバイルオペレーティングシステム、ならびにインターネット、電子メール、ショートメッセージサービス(SMS)、Blackberry(登録商標)、または有効な他の通信プロトコルであり得る。あるいは、クライアントコンピューティング装置は、例えば、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinux(登録商標)オペレーティングシステムを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む汎用パーソナルコンピュータであってもよい。クライアントコンピューティング装置は、例えばGoogle Chrome OSなどのさまざまなGNU/Linuxオペレーティングシステムを含むがこれらに限定されない、さまざまな市販のUNIX(登録商標)またはUNIX類似のオペレーティングシステムのいずれかを実行するワークステーションコンピュータであり得る。代替として、または追加として、クライアントコンピューティング装置は任意の他の電子装置であってもよく、シンクライアントコンピュータ、インターネット対応ゲームシステム(例えば、Kinect(登録商標)ジェスチャ入力装置あり、または無しのMicrosoft Xboxゲームコンソール)、および/またはVCN706および/またはインターネットにアクセスできるネットワークを介して通信できるパーソナルメッセージング装置などである。
【0080】
VCN706は、SSHVCN712に含まれるLPG710を介してセキュアシェル(SSH)VCN712に通信可能に結合することができるローカルピアリングゲートウェイ(LPG)710を含むことができる。SSHVCN712は、SSHサブネット714を含むことができ、SSHVCN712は、制御プレーンVCN716に含まれるLPG710を介して制御プレーンVCN716に通信可能に結合することができる。また、SSHVCN712は、LPG710を介してデータプレーンVCN718に通信可能に結合することができる。制御プレーンVCN716およびデータプレーンVCN718は、IaaSプロバイダが所有および/または動作できるサービステナント719に含めることができる。
【0081】
制御プレーンVCN716は、境界ネットワーク(例えば、企業イントラネットと外部ネットワークとの間の企業ネットワークの一部)として機能する制御プレーン非武装地帯(DMZ)層720を含むことができる。DMZベースのサーバは責任が制限されており、侵害を阻止するのに役立ち得る。さらに、DMZ層720は、1つまたは複数のロードバランサ(LB)サブネット722、アプリサブネット726を含むことができる制御プレーンアプリ層724、制御プレーンデータ層728を含むことができ、これには、データベース(DB)サブネット730(例えば、フロントエンドDBサブネットおよび/またはバックエンドDBサブネット)を含めることができる。制御プレーンDMZ層720に含まれるLBサブネット722は、制御プレーンアプリ層724に含まれるアプリサブネット726および制御プレーンVCN716に含まれ得るインターネットゲートウェイ734に通信可能に結合することができ、アプリサブネット726は、制御プレーンデータ層728に含まれるDBサブネット730、ならびにサービスゲートウェイ736およびネットワークアドレス変換(NAT)ゲートウェイ738に通信可能に結合することができる。制御プレーンVCN716は、サービスゲートウェイ736およびNATゲートウェイ738を含むことができる。
【0082】
制御プレーンVCN716は、アプリサブネット726を含むことができるデータプレーンミラーアプリ層740を含むことができる。データプレーンミラーアプリ層740に含まれるアプリサブネット726は、コンピューティングインスタンス744を実行できる仮想ネットワークインターフェースコントローラ(VNIC)742を含むことができる。コンピューティングインスタンス744は、データプレーンミラーアプリ層740のアプリサブネット726を、データプレーンアプリ層746に含めることができるアプリサブネット726に通信可能に結合することができる。
【0083】
データプレーンVCN718は、データプレーンアプリ層746、データプレーンDMZ層748、およびデータプレーンデータ層750を含むことができる。データプレーンDMZ層748は、データプレーンアプリ層746のアプリサブネット726およびデータプレーンVCN718のインターネットゲートウェイ734に通信可能に結合され得るLBサブネット722を含むことができる。アプリサブネット726は、データプレーンVCN718のサービスゲートウェイ736およびデータプレーンVCN718のNATゲートウェイ738に通信可能に結合することができる。データプレーンデータ層750は、データプレーンアプリ層746のアプリサブネット726に通信可能に結合できるDBサブネット730を含むこともできる。
【0084】
制御プレーンVCN716およびデータプレーンVCN718のインターネットゲートウェイ734は、パブリックインターネット754に通信可能に結合され得るメタデータ管理サービス752に通信可能に結合され得る。パブリックインターネット754は、制御プレーンVCN716およびデータプレーンVCN718のNATゲートウェイ738に通信可能に接続することができる。制御プレーンVCN716およびデータプレーンVCN718のサービスゲートウェイ736は、クラウドサービス756に通信可能に結合することができる。
【0085】
いくつかの例では、制御プレーンVCN716またはデータプレーンVCN718のサービスゲートウェイ736は、パブリックインターネット754を経由せずに、クラウドサービス756へのアプリケーションプログラミングインターフェース(API)呼び出しを行うことができる。サービスゲートウェイ736からクラウドサービス756へのAPI呼び出しは一方向であり得る:サービスゲートウェイ736はクラウドサービス756へのAPI呼び出しを行うことができ、クラウドサービス756は要求されるデータをサービスゲートウェイ736に送信することができる。しかし、クラウドサービス756は、サービスゲートウェイ736へのAPI呼び出しを開始できない場合がある。
【0086】
いくつかの例では、セキュアホストテナント704は、サービステナント719に直接接続することができ、そうでなければ分離され得る。セキュアホストサブネット708は、LPG710を介してSSHサブネット714と通信することができ、LPG710は、そうでなければ分離されるシステムを介した双方向通信を可能にすることができる。セキュアホストサブネット708をSSHサブネット714に接続すると、セキュアホストサブネット708にサービステナント719内の他のエンティティへのアクセスを与えることができる。
【0087】
制御プレーンVCN716により、サービステナント719のユーザが所望のリソースをセットアップまたはプロビジョニングできるようにすることができる。制御プレーンVCN716内にプロビジョニングされる所望のリソースは、データプレーンVCN718内に展開または使用され得る。いくつかの例では、制御プレーンVCN716はデータプレーンVCN718から分離することができ、制御プレーンVCN716のデータプレーンミラーアプリ層740は、データプレーンミラーアプリ層740およびデータプレーンアプリ層746に含まれることができるVNIC742を介して、データプレーンVCN718のデータプレーンアプリ層746と通信することができる。
【0088】
いくつかの例では、システムのユーザまたは顧客は、要求をメタデータ管理サービス752に通信することができるパブリックインターネット754を介して、例えば作成、読み取り、更新、または削除(CRUD)動作などの要求を行うことができる。メタデータ管理サービス752は、インターネットゲートウェイ734を介して要求を制御プレーンVCN716に通信することができる。この要求は、制御プレーンDMZ層720に含まれるLBサブネット722によって受信され得る。LBサブネット722は、要求が有効であると決定することができ、この決定に応答して、LBサブネット722は、制御プレーンアプリ層724に含まれるアプリサブネット726に要求を送信することができる。要求が検証され、パブリックインターネット754への呼び出しが必要な場合、パブリックインターネット754への呼び出しは、パブリックインターネット754への呼び出しを行うことができるNATゲートウェイ738に送信され得る。要求によって記憶されることが望ましい場合があるメモリは、DBサブネット730に記憶できる。
【0089】
いくつかの例では、データプレーンミラーアプリ層740は、制御プレーンVCN716とデータプレーンVCN718との間の直接通信を容易にすることができる。例えば、構成に対する変更、更新、または他の適切な修正を、データプレーンVCN718に含まれるリソースに適用することが望ましい場合がある。VNIC742を介して、制御プレーンVCN716は、データプレーンVCN718に含まれるリソースと直接通信することができ、それにより、データプレーンVCN718に含まれるリソースに対する構成の変更、更新、または他の適切な修正を実行することができる。
【0090】
いくつかの実施形態では、制御プレーンVCN716およびデータプレーンVCN718は、サービステナント719に含めることができる。この場合、システムのユーザまたは顧客は、制御プレーンVCN716またはデータプレーンVCN718のいずれも所有または動作することはできない。代わりに、IaaSプロバイダは、制御プレーンVCN716およびデータプレーンVCN718を所有または動作することができ、これらは両方ともサービステナント719に含まれ得る。この実施形態は、ユーザまたは顧客が他のユーザまたは他の顧客のリソースと対話することを防止し得るネットワークの分離を可能にすることができる。また、この実施形態により、システムのユーザまたは顧客は、記憶のために所望のレベルの脅威防止を持たない可能性があるパブリックインターネット754に依存する必要なく、データベースをプライベートに記憶することができる。
【0091】
他の実施形態では、制御プレーンVCN716に含まれるLBサブネット722は、サービスゲートウェイ736から信号を受信するように構成され得る。この実施形態では、制御プレーンVCN716およびデータプレーンVCN718は、パブリックインターネット754を呼び出すことなく、IaaSプロバイダの顧客によって呼び出されるように構成され得る。顧客が使用するデータベースはIaaSプロバイダによって制御され、パブリックインターネット754から隔離され得るサービステナント719に記憶され得るため、IaaSプロバイダの顧客は、この実施形態を望む可能性がある。
【0092】
図8は、少なくとも1つの実施形態による、IaaSアーキテクチャの別のパターン例を示すブロック
図800である。サービスオペレータ802(例えば、
図7のサービスオペレータ702)は、セキュアホストテナント804(例えば、
図7のセキュアホストテナント704)に通信可能に結合することができ、これは、仮想クラウドネットワーク(VCN)806(例えば、
図7のVCN706)およびセキュアホストサブネット808(例えば、
図7のセキュアホストサブネット708)を含むことができる。VCN806は、ローカルピアリングゲートウェイ(LPG)810(例えば、
図7のLPG710)を含むことができ、これは、SSHVCN812に含まれるLPG710を介してセキュアシェル(SSH)VCN812(例えば、
図7のSSHVCN712)に通信可能に結合することができる。SSHVCN812は、SSHサブネット814(例えば、
図7のSSHサブネット714)を含むことができ、SSHVCN812は、制御プレーンVCN816に含まれるLPG810を介して、制御プレーンVCN816(例えば、
図7の制御プレーンVCN716)に通信可能に結合することができる。制御プレーンVCN816は、サービステナント819(例えば、
図7のサービステナント719)に含めることができ、データプレーンVCN818(例えば、
図7のデータプレーンVCN718)は、システムのユーザまたは顧客によって所有または動作され得る顧客テナント821に含めることができる。
【0093】
制御プレーンVCN816は、LBサブネット822(例えば、
図7のLBサブネット722)を含むことができる制御プレーンDMZ層820(例えば、
図7の制御プレーンDMZ層720)、アプリサブネット826(例えば、
図7のアプリサブネット726)を含むことができる制御プレーンアプリ層824(例えば、
図7の制御プレーンアプリ層724)、データベース(DB)サブネット830(例えば、
図7のDBサブネット730と同様)を含むことができる制御プレーンデータ層828(例えば、
図7の制御プレーンデータ層728)を含むことができる。制御プレーンDMZ層820に含まれるLBサブネット822は、制御プレーンアプリ層824に含まれるアプリサブネット826と、制御プレーンVCN816に含まれ得るインターネットゲートウェイ834(例えば、
図7のインターネットゲートウェイ734)とに通信可能に結合することができ、アプリサブネット826は、制御プレーンデータ層828に含まれるDBサブネット830、ならびにサービスゲートウェイ836(例えば、
図7のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ838(例えば、
図7のNATゲートウェイ738)に通信可能に結合することができる。制御プレーンVCN816は、サービスゲートウェイ836およびNATゲートウェイ838を含むことができる。
【0094】
制御プレーンVCN816は、アプリサブネット826を含むことができるデータプレーンミラーアプリ層840(例えば、
図7のデータプレーンミラーアプリ層740)を含むことができる。データプレーンミラーアプリ層840に含まれるアプリサブネット826は、コンピューティングインスタンス844(例えば、
図7のコンピューティングインスタンス744と同様)を実行できる仮想ネットワークインターフェースコントローラ(VNIC)842(例えば、742のVNIC)を含むことができる。コンピューティングインスタンス844は、データプレーンミラーアプリ層840のアプリサブネット826とアプリサブネット826との間の通信を容易にすることができ、これは、データプレーンミラーアプリ層840に含まれるVNIC842およびデータプレーンアプリ層846に含まれるVNIC842を介して、データプレーンアプリ層846(例えば、
図7のデータプレーンアプリ層746)に含まれることができる。
【0095】
制御プレーンVCN816に含まれるインターネットゲートウェイ834は、メタデータ管理サービス852(例えば、
図7のメタデータ管理サービス752)に通信可能に結合することができ、これは、パブリックインターネット854(例えば、
図7のパブリックインターネット754)に通信可能に結合することができる。パブリックインターネット854は、制御プレーンVCN816に含まれるNATゲートウェイ838に通信可能に結合することができる。制御プレーンVCN816に含まれるサービスゲートウェイ836は、クラウドサービス856(例えば、
図7のクラウドサービス756)に通信可能に結合することができる。
【0096】
いくつかの例では、データプレーンVCN818は、顧客テナント821に含まれることができる。この場合、IaaSプロバイダは、各顧客に対して制御プレーンVCN816を提供することができ、IaaSプロバイダは、各顧客に対して、サービステナント819に含まれる一意のコンピューティングインスタンス844をセットアップすることができる。各コンピューティングインスタンス844は、サービステナント819に含まれる制御プレーンVCN816と、顧客テナント821に含まれるデータプレーンVCN818との間の通信を可能にしてもよい。コンピューティングインスタンス844は、サービステナント819に含まれる制御プレーンVCN816内にプロビジョニングされるリソースが、顧客テナント821に含まれるデータプレーンVCN818内に展開されるか、そうでなければ使用されることを可能にし得る。
【0097】
他の例では、IaaSプロバイダの顧客は、顧客テナント821内に存在するデータベースを有し得る。この例では、制御プレーンVCN816は、アプリサブネット826を含むことができるデータプレーンミラーアプリ層840を含むことができる。データプレーンミラーアプリ層840はデータプレーンVCN818内に存在することができるが、データプレーンミラーアプリ層840はデータプレーンVCN818内に存在しなくてもよい。つまり、データプレーンミラーアプリ層840は、顧客テナント821にアクセスできるが、データプレーンミラーアプリ層840は、データプレーンVCN818に存在しなくてもよいし、IaaSプロバイダの顧客によって所有または動作されてもよい。データプレーンミラーアプリ層840は、データプレーンVCN818への呼び出しを行うように構成されてもよいが、制御プレーンVCN816に含まれる任意のエンティティへの呼び出しを行うように構成されなくてもよい。顧客は、制御プレーンVCN816内にプロビジョニングされるデータプレーンVCN818内のリソースを展開またはそうでなければ使用することを望む場合があり、データプレーンミラーアプリ層840は、顧客の所望の展開またはリソースの他の使用を容易にすることができる。
【0098】
いくつかの実施形態では、IaaSプロバイダの顧客は、データプレーンVCN818にフィルタを適用することができる。この実施形態では、顧客はデータプレーンVCN818が何にアクセスできるかを決定することができ、顧客はデータプレーンVCN818からパブリックインターネット854へのアクセスを制限することができる。IaaSプロバイダは、フィルタを適用したり、外部ネットワークまたはデータベースへのデータプレーンVCN818のアクセスを制御したりできない場合がある。顧客によるフィルタおよび制御を顧客テナント821に含まれるデータプレーンVCN818に適用すると、データプレーンVCN818を他の顧客およびパブリックインターネット854から分離するのに役立ち得る。
【0099】
いくつかの実施形態では、クラウドサービス856は、パブリックインターネット854上、制御プレーンVCN816上、またはデータプレーンVCN818上に存在しない可能性があるサービスにアクセスするために、サービスゲートウェイ836によって呼び出すことができる。クラウドサービス856と制御プレーンVCN816またはデータプレーンVCN818との間の接続は、ライブまたは継続的ではない可能性がある。クラウドサービス856は、IaaSプロバイダが所有または動作する別のネットワーク上に存在し得る。クラウドサービス856は、サービスゲートウェイ836から呼び出しを受信するように構成されてもよいし、パブリックインターネット854から呼び出しを受信しないように構成されてもよい。一部のクラウドサービス856は、他のクラウドサービス856から分離されてもよく、制御プレーンVCN816は、制御プレーンVCN816と同じ領域になくてもよいクラウドサービス856から分離されてもよい。例えば、制御プレーンVCN816は「領域1」に配置され、クラウドサービス「展開7」は領域1と「領域2」に配置され得る。展開7への呼び出しが、領域1にある制御プレーンVCN816に含まれるサービスゲートウェイ836によって行われた場合、その呼び出しは領域1の展開7に送信され得る。この例では、制御プレーンVCN816、または領域1の展開7は、領域2の展開7に通信可能に結合されていない、または通信していない可能性がある。
【0100】
図9は、少なくとも1つの実施形態による、IaaSアーキテクチャの別のパターン例を示すブロック
図900である。サービスオペレータ902(例えば、
図7のサービスオペレータ702)は、セキュアホストテナント904(例えば、
図7のセキュアホストテナント704)に通信可能に結合することができ、これは、仮想クラウドネットワーク(VCN)906(例えば、
図7のVCN706)およびセキュアホストサブネット908(例えば、
図7のセキュアホストサブネット708)を含むことができる。VCN906は、SSHVCN912(例えば、
図7のSSHVCN712)に含まれるLPG910を介してSSHVCN912に通信可能に結合され得るLPG910(例えば、
図7のLPG710)を含むことができる。SSHVCN912は、SSHサブネット914(例えば、
図7のSSHサブネット714)を含むことができ、SSHVCN912は、制御プレーンVCN916(例えば、
図7の制御プレーンVCN716)に含まれるLPG910を介して制御プレーンVCN916に通信可能に結合することができ、データプレーンVCN918(例えば、
図7のデータプレーン718)に含まれるLPG910を介してデータプレーンVCN918に通信可能に結合することができる。制御プレーンVCN916およびデータプレーンVCN918は、サービステナント919(例えば、
図7のサービステナント719)に含めることができる。
【0101】
制御プレーンVCN916は、ロードバランサ(LB)サブネット922(例えば、
図7のLBサブネット722)を含むことができる制御プレーンDMZ層920(例えば、
図7の制御プレーンDMZ層720)、アプリサブネット926(例えば、
図7のアプリサブネット726と同様)を含むことができる制御プレーンアプリ層924(例えば、
図7の制御プレーンアプリ層724)、DBサブネット930を含むことができる制御プレーンデータ層928(例えば、
図7の制御プレーンデータ層728)を含むことができる。制御プレーンDMZ層920に含まれるLBサブネット922は、制御プレーンアプリ層924に含まれるアプリサブネット926と、制御プレーンVCN916に含まれ得るインターネットゲートウェイ934(例えば、
図7のインターネットゲートウェイ734)とに通信可能に結合され得、アプリサブネット926は、制御プレーンデータ層928に含まれるDBサブネット930、サービスゲートウェイ936(例えば、
図7のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ938(例えば、
図7のNATゲートウェイ738)に通信可能に結合することができる。制御プレーンVCN916は、サービスゲートウェイ936およびNATゲートウェイ938を含むことができる。
【0102】
データプレーンVCN918は、データプレーンアプリ層946(例えば、
図7のデータプレーンアプリ層746)、データプレーンDMZ層948(例えば、
図7のデータプレーンDMZ層748)、およびデータプレーンデータ層950(例えば、
図7のデータプレーンデータ層750)を含むことができる。データプレーンDMZ層948は、LBサブネット922を含むことができ、これは、データプレーンアプリ層946の信頼できるアプリサブネット960と信頼できないアプリサブネット962、およびデータプレーンVCN918に含まれるインターネットゲートウェイ934に通信可能に結合することができる。信頼できるアプリサブネット960は、データプレーンVCN918に含まれるサービスゲートウェイ936、データプレーンVCN918に含まれるNATゲートウェイ938、およびデータプレーンデータ層950に含まれるDBサブネット930に通信可能に結合することができる。信頼できないアプリサブネット962は、データプレーンVCN918に含まれるサービスゲートウェイ936およびデータプレーンデータ層950に含まれるDBサブネット930に通信可能に結合することができる。データプレーンデータ層950は、データプレーンVCN918に含まれるサービスゲートウェイ936に通信可能に結合できるDBサブネット930を含むことができる。
【0103】
信頼できないアプリサブネット962は、テナント仮想マシン(VM)966(1)~(N)に通信可能に結合することができる1つまたは複数の1次VNIC964(1)~(N)を含むことができる。各テナントVM966(1)~(N)は、それぞれのアプリサブネット967(1)~(N)に通信可能に結合することができ、これは、それぞれの顧客テナント970(1)~(N)に含めることができるそれぞれのコンテナ出口VCN968(1)~(N)に含めることができる。それぞれの2次VNIC972(1)~(N)は、データプレーンVCN918に含まれる信頼できないアプリサブネット962と、コンテナ出口VCN968(1)~(N)に含まれるアプリサブネットとの間の通信を容易にすることができる。各コンテナ出口VCN968(1)~(N)は、パブリックインターネット954(例えば、
図7のパブリックインターネット754)に通信可能に結合できるNATゲートウェイ938を含むことができる。
【0104】
制御プレーンVCN916に含まれ、データプレーンVCN918に含まれるインターネットゲートウェイ934は、パブリックインターネット954に通信可能に結合できるメタデータ管理サービス952(例えば、
図7のメタデータ管理システム752)に通信可能に結合することができる。パブリックインターネット954は、制御プレーンVCN916に含まれ、データプレーンVCN918に含まれるNATゲートウェイ938に通信可能に結合することができる。制御プレーンVCN916に含まれ、データプレーンVCN918に含まれるサービスゲートウェイ936は、クラウドサービス956に通信可能に結合することができる。
【0105】
いくつかの実施形態では、データプレーンVCN918は、顧客テナント970と統合することができる。この統合は、コード実行時のサポートが必要な場合など、IaaSプロバイダの顧客にとって有益または望ましい場合がある。顧客は、破壊的な可能性があるコード、他の顧客リソースと通信する可能性のあるコード、またはその他の望ましくない影響を引き起こす可能性のあるコードの実行を提供し得る。これに応じて、IaaSプロバイダは、顧客からIaaSプロバイダに提供されるコードを実行するかどうかを決定できる。
【0106】
いくつかの例では、IaaSプロバイダの顧客は、IaaSプロバイダに一時的なネットワークアクセスを許可し、データプレーン層アプリ946に付加される機能を要求することができる。機能を実行するコードは、VM966(1)~(N)で実行することができ、コードはデータプレーンVCN918上の他の場所で実行するように構成することはできない。各VM966(1)~(N)は、1つの顧客テナント970に接続できる。VM966(1)~(N)に含まれるそれぞれのコンテナ971(1)~(N)は、コードを実行するように構成され得る。この場合、二重隔離が存在する可能性があり(例えば、コンテナ971(1)~(N)のコード実行、コンテナ971(1)~(N)は、信頼できないアプリサブネット962に含まれる少なくともVM966(1)~(N)に含まれ得る)、これは、間違ったコードや望ましくないコードがIaaSプロバイダのネットワークに損害を与えたり、別の顧客のネットワークに損害を与えたりすることを防ぐのに役立ち得る。コンテナ971(1)~(N)は、顧客テナント970に通信可能に結合されてもよく、顧客テナント970からデータを送信または受信するように構成されてもよい。コンテナ971(1)~(N)は、データプレーンVCN918内の任意の他のエンティティからデータを送信または受信するように構成されていない可能性がある。コードの実行が完了すると、IaaSプロバイダはコンテナ971(1)~(N)を強制終了するか、その他の方法で破棄することができる。
【0107】
いくつかの実施形態では、信頼できるアプリサブネット960は、IaaSプロバイダによって所有または動作され得るコードを実行し得る。この実施形態では、信頼できるアプリサブネット960は、DBサブネット930に通信可能に結合され、DBサブネット930内でCRUD動作を実行するように構成され得る。信頼できないアプリサブネット962は、DBサブネット930に通信可能に結合され得るが、この実施形態では、信頼できないアプリサブネットは、DBサブネット930において読み取り動作を実行するように構成され得る。各顧客のVM966(1)~(N)に含めることができ、顧客からのコードを実行することができるコンテナ971(1)~(N)は、DBサブネット930と通信可能に結合されていなくてもよい。
【0108】
他の実施形態では、制御プレーンVCN916とデータプレーンVCN918は、直接通信可能に結合されていなくてもよい。この実施形態では、制御プレーンVCN916とデータプレーンVCN918との間に直接通信が存在しなくてもよい。しかし、通信は少なくとも1つの方法を通じて間接的に行うことができる。LPG910は、制御プレーンVCN916とデータプレーンVCN918との間の通信を容易にすることができるIaaSプロバイダによって確立され得る。別の例では、制御プレーンVCN916またはデータプレーンVCN918は、サービスゲートウェイ936を介してクラウドサービス956への呼び出しを行うことができる。例えば、制御プレーンVCN916からクラウドサービス956への呼び出しは、データプレーンVCN918と通信できるサービスに対する要求を含むことができる。
【0109】
図10は、少なくとも1つの実施形態による、IaaSアーキテクチャの別のパターン例を示すブロック
図1000である。サービスオペレータ1002(例えば、
図7のサービスオペレータ702)は、セキュアホストテナント1004(例えば、
図7のセキュアホストテナント704)に通信可能に結合することができ、これは、仮想クラウドネットワーク(VCN)1006(例えば、
図7のVCN706)およびセキュアホストサブネット1008(例えば、
図7のセキュアホストサブネット708)を含むことができる。VCN1006は、SSHVCN1012に含まれるLPG1010を介してSSHVCN1012(例えば、
図7のSSHVCN712)に通信可能に結合され得るLPG1010(例えば、
図7のLPG710)を含むことができる。SSHVCN1012は、SSHサブネット1014(例えば、
図7のSSHサブネット714)を含むことができ、SSHVCN1012は、制御プレーンVCN1016(例えば、
図7の制御プレーンVCN716)に含まれるLPG1010を介して、制御プレーンVCN1016に通信可能に結合することができ、データプレーンVCN1018(例えば、
図7のデータプレーン718)に含まれるLPG1010を介して、データプレーンVCN1018に通信可能に結合することができる。制御プレーンVCN1016およびデータプレーンVCN1018は、サービステナント1019(例えば、
図7のサービステナント719)に含めることができる。
【0110】
制御プレーンVCN1016は、LBサブネット1022(例えば、
図7のLBサブネット722)を含むことができる制御プレーンDMZ層1020(例えば、
図7の制御プレーンDMZ層720)、アプリサブネット1026(例えば、
図7のアプリサブネット726)を含むことができる制御プレーンアプリ層1024(例えば、
図7の制御プレーンアプリ層724)、DBサブネット1030(例えば、
図9のDBサブネット930)を含むことができる制御プレーンデータ層1028(例えば、
図7の制御プレーンデータ層728)を含むことができる。制御プレーンDMZ層1020に含まれるLBサブネット1022は、制御プレーンアプリ層1024に含まれるアプリサブネット1026に通信可能に結合することができ、制御プレーンVCN1016に含めることができるインターネットゲートウェイ1034(例えば、
図7のインターネットゲートウェイ734)に通信可能に結合することができ、アプリサブネット1026は、制御プレーンデータ層1028に含まれるDBサブネット1030に通信可能に結合することができ、サービスゲートウェイ1036(例えば、
図7のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ1038(例えば、
図7のNATゲートウェイ738)に通信可能に結合することができる。制御プレーンVCN1016は、サービスゲートウェイ1036およびNATゲートウェイ1038を含むことができる。
【0111】
データプレーンVCN1018は、データプレーンアプリ層1046(例えば、
図7のデータプレーンアプリ層746)、データプレーンDMZ層1048(例えば、
図7のデータプレーンDMZ層748)、およびデータプレーンデータ層1050(例えば、
図7のデータプレーンデータ層750)を含むことができる。データプレーンDMZ層1048は、LBサブネット1022を含むことができ、それは、信頼できるアプリサブネット1060(例えば、
図9の信頼できるアプリサブネット960)に通信可能に結合され得、データプレーンアプリ層1046の信頼できないアプリサブネット1062(例えば、
図9の信頼できないアプリサブネット962)およびデータプレーンVCN1018に含まれるインターネットゲートウェイ1034に通信可能に結合することができる。信頼できるアプリサブネット1060は、データプレーンVCN1018に含まれるサービスゲートウェイ1036に通信可能に結合することができ、データプレーンVCN1018に含まれるNATゲートウェイ1038、およびデータプレーンデータ層1050に含まれるDBサブネット1030に通信可能に結合することができる。信頼できないアプリサブネット1062は、データプレーンVCN1018に含まれるサービスゲートウェイ1036およびデータプレーンデータ層1050に含まれるDBサブネット1030に通信可能に接続することができる。データプレーンデータ層1050は、データプレーンVCN1018に含まれるサービスゲートウェイ1036に通信可能に結合できるDBサブネット1030を含むことができる。
【0112】
信頼できないアプリサブネット1062は、1次VNIC1064(1)~(N)を含むことができ、これは、信頼できないアプリサブネット1062内に存在するテナント仮想マシン(VM)1066(1)~(N)に通信可能に結合することができる。各テナントVM1066(1)~(N)は、それぞれのコンテナ1067(1)~(N)内でコードを実行することができ、コンテナ出口VCN1068に含めることができるデータプレーンアプリ層1046に含めることができるアプリサブネット1026に通信可能に結合することができる。それぞれの2次VNIC1072(1)~(N)は、データプレーンVCN1018に含まれる信頼できないアプリサブネット1062とコンテナ出口VCN1068に含まれるアプリサブネットとの間の通信を容易にすることができる。コンテナ出口VCNは、パブリックインターネット1054(例えば、
図7のパブリックインターネット754)に通信可能に結合できるNATゲートウェイ1038を含むことができる。
【0113】
制御プレーンVCN1016に含まれ、データプレーンVCN1018に含まれるインターネットゲートウェイ1034は、パブリックインターネット1054に通信可能に結合できるメタデータ管理サービス1052(例えば、
図7のメタデータ管理システム752)に通信可能に結合することができる。パブリックインターネット1054は、制御プレーンVCN1016に含まれ、データプレーンVCN1018に含まれるNATゲートウェイ1038に通信可能に結合することができる。制御プレーンVCN1016に含まれ、データプレーンVCN1018に含まれるサービスゲートウェイ1036は、クラウドサービス1056に通信可能に結合することができる。
【0114】
いくつかの例では、
図10のブロック
図1000のアーキテクチャによって示されるパターンは、
図9のブロック
図900のアーキテクチャによって示されるパターンの例外であると考えられ、IaaSプロバイダが顧客と直接通信できない場合(例えば、切断されている領域)、IaaSプロバイダの顧客にとっては望ましい場合がある。各顧客のVM1066(1)~(N)に含まれるそれぞれのコンテナ1067(1)~(N)は、顧客によってリアルタイムでアクセス可能である。コンテナ1067(1)~(N)は、コンテナ出口VCN1068に含まれることができるデータプレーンアプリ層1046のアプリサブネット1026に含まれるそれぞれの2次VNIC1072(1)~(N)への呼び出しを行うように構成され得る。2次VNIC1072(1)~(N)は、呼び出しをパブリックインターネット1054に送信することができるNATゲートウェイ1038に呼び出しを送信することができる。この例では、顧客がリアルタイムでアクセスできるコンテナ1067(1)~(N)は、制御プレーンVCN1016から分離することができ、データプレーンVCN1018に含まれる他のエンティティから分離することができる。コンテナ1067(1)~(N)は、他の顧客からのリソースから隔離されてもよい。
【0115】
他の例では、顧客は、コンテナ1067(1)~(N)を使用して、クラウドサービス1056を呼び出すことができる。この例では、顧客は、クラウドサービス1056からサービスを要求するコードをコンテナ1067(1)~(N)内で実行することができる。コンテナ1067(1)~(N)は、この要求を2次VNIC1072(1)~(N)に送信することができ、2次VNIC1072(1)~(N)は、要求をパブリックインターネット1054に送信することができるNATゲートウェイに要求を送信することができる。パブリックインターネット1054は、インターネットゲートウェイ1034を介して、制御プレーンVCN1016に含まれるLBサブネット1022に要求を送信することができる。要求が有効であるとの決定に応答して、LBサブネットは、サービスゲートウェイ1036を介してクラウドサービス1056に要求を送信できるアプリサブネット1026に要求を送信することができる。
【0116】
図に示されているIaaSアーキテクチャ700、800、900、1000は、示されているもの以外の構成要素を有し得ることを理解されたい。さらに、図に示される実施形態は、本開示の実施形態を組み込むことができるクラウドインフラストラクチャシステムのいくつかの例にすぎない。他のいくつかの実施形態では、IaaSシステムは、図示されているよりも多いもしくは少ない構成要素を有してもよく、2つ以上の構成要素を組み合わせてもよく、または構成要素の異なる構成もしくは配置を有してもよい。
【0117】
特定の実施形態では、本明細書で説明されるIaaSシステムは、セルフサービス、サブスクリプションベース、弾力的に拡張可能、信頼性が高く、可用性が高く、安全な方法で顧客に提供されるアプリケーション、ミドルウェア、およびデータベースサービス製品のスイートを含むことができる。このようなIaaSシステムの一例として、本譲受人が提供するOracle Cloud Infrastructure(OCI)がある。
【0118】
図11は、さまざまな実施形態が実装され得る例示的なコンピュータシステム1100を示す。システム1100は、上述のコンピュータシステムのいずれかを実装するために使用することができる。図に示すように、コンピュータシステム1100は、バスサブシステム1102を介して多くの周辺サブシステムと通信する処理装置1104を含む。これらの周辺サブシステムは、処理加速装置1106、I/Oサブシステム1108、記憶サブシステム1118、および通信サブシステム1124を含み得る。記憶サブシステム1118は、有形のコンピュータ可読記憶媒体1122およびシステムメモリ1110を含む。
【0119】
バスサブシステム1102は、コンピュータシステム1100のさまざまな構成要素およびサブシステムが意図したとおりに相互に通信できるようにする機構を提供する。バスサブシステム1102は単一のバスとして概略的に示されているが、バスサブシステムの代替実施形態では複数のバスを利用することができる。バスサブシステム1102は、さまざまなバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のいずれであってもよい。例えば、そのようなアーキテクチャには、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびPeripheral Component Interconnect(PCI)バスが含まれ得る。これは、IEEEP1386.1標準に従って製造されるメザニンバスとして実装できる。
【0120】
処理装置1104は、1つまたは複数の集積回路(例えば、従来のマイクロプロセッサまたはマイクロコントローラ)として実装することができ、コンピュータシステム1100の動作を制御する。1つまたは複数のプロセッサが処理装置1104に含まれてもよい。これらのプロセッサには、単一コアプロセッサまたはマルチコアプロセッサが含まれ得る。特定の実施形態では、処理装置1104は、各処理装置に含まれる単一コアプロセッサまたはマルチコアプロセッサを有する1つまたは複数の独立した処理装置1132および/または1134として実装され得る。他の実施形態では、処理装置1104は、2つのデュアルコアプロセッサを単一のチップに統合することによって形成されるクアッドコア処理装置として実装されてもよい。
【0121】
さまざまな実施形態において、処理装置1104は、プログラムコードに応答してさまざまなプログラムを実行することができ、複数の同時実行プログラムまたはプロセスを維持することができる。いつでも、実行されるプログラムコードの一部またはすべては、プロセッサ1104および/または記憶サブシステム1118に存在することができる。適切なプログラミングを通じて、プロセッサ1104は、上述のさまざまな機能を提供することができる。コンピュータシステム1100は、デジタルシグナルプロセッサ(DSP)、専用プロセッサ等を含むことができる処理加速装置1106をさらに含むことができる。
【0122】
I/Oサブシステム1108は、ユーザインターフェース入力装置およびユーザインターフェース出力装置を含むことができる。ユーザインターフェース入力装置にはキーボード、マウスやトラックボールなどのポインティング装置、ディスプレイに組み込まれたタッチパッドやタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを備えたオーディオ入力装置、マイク、および他のタイプの入力装置が含まれ得る。ユーザインターフェース入力装置には、例えば、Microsoft Kinect(登録商標)モーションセンサーなどのモーションセンシングおよび/またはジェスチャ認識装置が含まれ得、ユーザは、ジェスチャや音声コマンドを使用した自然なユーザインターフェースを通じて、Microsoft Xbox(登録商標)360ゲームコントローラなどの入力装置を制御し、対話できるようになる。ユーザインターフェース入力装置には、ユーザからの目の活動(例えば、写真撮影中および/またはメニュー選択中の「瞬き」)を検出し、目のジェスチャを入力装置(例えば、Google Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識装置も含まれ得る。さらに、ユーザインターフェース入力装置は、ユーザが音声コマンドを通じて音声認識システム(例えば、Siri(登録商標)ナビゲータ)と対話できるようにする音声認識センシング装置を含んでもよい。
【0123】
ユーザインターフェース入力装置には、限定されないが、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルビデオカメラなどのオーディオ/ビジュアル装置、ポータブルメディアプレーヤ、ウェブカメラ、イメージスキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザ距離計、および視線追跡装置なども含まれ得る。さらに、ユーザインターフェース入力装置には、例えば、コンピュータ断層撮影法、磁気共鳴画像法、位置放射断層撮影法、医療用超音波検査装置などの医療用画像入力装置が含まれてもよい。ユーザインターフェース入力装置には、例えば、MIDIキーボード、デジタル楽器などのオーディオ入力装置も含まれ得る。
【0124】
ユーザインターフェース出力装置には、ディスプレイサブシステム、インジケータライト、またはオーディオ出力装置などの非視覚的ディスプレイが含まれてもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するものなどのフラットパネル装置、投影装置、タッチスクリーンなどであってもよい。一般に、「出力装置」という用語の使用は、コンピュータシステム1100からユーザまたは他のコンピュータに情報を出力するためのあらゆる可能なタイプの装置および機構を含むことを意図している。例えば、ユーザインターフェース出力装置には、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力装置、およびモデムなど、テキスト、グラフィックス、およびオーディオ/ビデオ情報を視覚的に伝達するさまざまな表示装置が含まれるが、これらに限定されない。
【0125】
コンピュータシステム1100は、システムメモリ1110内に現在配置されているように示されるソフトウェア要素を備える記憶サブシステム1118を備えることができる。システムメモリ1110は、処理装置1104上でロード可能および実行可能なプログラム命令、ならびにこれらのプログラムの実行中に生成されるデータを記憶することができる。
【0126】
コンピュータシステム1100の構成および種類に応じて、システムメモリ1110は、揮発性(ランダムアクセスメモリ(RAM)など)および/または不揮発性(読み取り専用メモリ(ROM)、フラッシュメモリなど)の場合がある。RAMは通常、処理装置1104に即座にアクセス可能な、ならびに/または処理装置1104によって現在動作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実装形態では、システムメモリ1110は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)などの複数の異なるタイプのメモリを含み得る。いくつかの実装形態では、起動中など、コンピュータシステム1100内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム(BIOS)は、通常、ROMに記憶され得る。限定ではなく一例として、システムメモリ1110は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などを含み得るアプリケーションプログラム1112、プログラムデータ1114、およびオペレーティングシステム1116も示す。一例として、オペレーティングシステム1116には、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinuxオペレーティングシステム、さまざまな市販のUNIX(登録商標)もしくはUNIX系オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがこれらに限定されない)、ならびに/またはiOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)11OS、およびPalm(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムが含まれ得る。
【0127】
記憶サブシステム1118はまた、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を記憶するための有形のコンピュータ可読記憶媒体を提供することもできる。プロセッサによって実行されると、上述の機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、記憶サブシステム1118に記憶され得る。これらのソフトウェアモジュールまたは命令は、処理装置1104によって実行され得る。記憶サブシステム1118はまた、本開示に従って使用されるデータを記憶するためのリポジトリを提供することもできる。
【0128】
記憶サブシステム1100はまた、コンピュータ可読記憶媒体1122にさらに接続できるコンピュータ可読記憶媒体リーダ1120を含んでもよい。一緒に、そして任意でシステムメモリ1110と組み合わせて、コンピュータ可読記憶媒体1122は、リモート、ローカル、固定、および/または取り外し可能な記憶装置に加えて、コンピュータ可読情報を一時的および/またはより永続的に収容、記憶、送信、および取得するための記憶媒体を包括的に表すことができる。
【0129】
コードまたはコードの一部を含むコンピュータ可読記憶媒体1122には、当技術分野で既知または使用されている任意の適切な媒体を含めることもでき、これには、情報の記憶および/または送信のための任意の方法または技術で実装される揮発性および不揮発性、取り外し可能なおよび取り外し不可能な媒体などの記憶媒体および通信媒体が含まれるが、これらに限定されない。これには、RAM、ROM、電子的に消去可能なプログラマブルROM(EEPROM)、フラッシュメモリもしくはその他のメモリテクノロジ、CD-ROM、デジタルバーサタイルディスク(DVD)などの有形のコンピュータ可読記憶媒体、または他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または他の有形のコンピュータ可読媒体が含まれ得る。これには、データ信号、データ送信、または所望の情報を送信するために使用でき、コンピューティングシステム1100によってアクセスできる任意の他の媒体などの、無形のコンピュータ可読媒体も含まれ得る。
【0130】
一例として、コンピュータ可読記憶媒体1122は、取り外し不可能な不揮発性磁気媒体に対して読み取りまたは書き込みを行うハードディスクドライブ、取り外し可能な不揮発性磁気ディスクに対して読み取りまたは書き込みを行う磁気ディスクドライブ、およびCDROM、DVD、Blu-Ray(登録商標)ディスクなどの取り外し可能な不揮発性光ディスク、またはその他の光媒体に対して読み取りまたは書き込みを行う光ディスクドライブを含むことができる。コンピュータ可読記憶媒体1122には、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどが含まれてもよいが、これらに限定されない。コンピュータ可読記憶媒体1122には、フラッシュメモリベースのSSDなどの不揮発性メモリに基づくソリッドステートドライブ(SSD)、エンタープライズフラッシュドライブ、ソリッドステートROMなど、ソリッドステートRAM、ダイナミックRAM、スタティックRAMなどの揮発性メモリをベースにしたSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDを組み合わせて使用するハイブリッドSSDも含まれ得る。ディスクドライブおよびそれらに関連するコンピュータ可読媒体は、コンピュータシステム1100のためのコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶を提供し得る。
【0131】
通信サブシステム1124は、他のコンピュータシステムおよびネットワークへのインターフェースを提供する。通信サブシステム1124は、コンピュータシステム1100から他のシステムとの間でデータを送受信するためのインターフェースとして機能する。例えば、通信サブシステム1124は、コンピュータシステム1100がインターネットを介して1つまたは複数の装置に接続できるようにすることができる。いくつかの実施形態では、通信サブシステム1124は、無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)トランシーバ構成要素を含めることができる(例えば、携帯電話技術、3G、4G、またはEDGE(地球規模の進化のための強化されるデータレート)などの高度なデータネットワーク技術を使用する)、WiFi(IEEE902.11ファミリ標準、または他のモバイル通信技術、またはそれらの任意の組み合わせ)、全地球測位システム(GPS)受信機構成要素、および/または他の構成要素を含むことができる。いくつかの実施形態では、通信サブシステム1124は、無線インターフェースに加えて、またはその代わりに、有線ネットワーク接続(例えば、イーサネット)を提供することができる。
【0132】
いくつかの実施形態では、通信サブシステム1124は、コンピュータシステム1100を使用することができる1人または複数のユーザに代わって、構造化および/または非構造化データフィード1126、イベントストリーム1128、イベント更新1130などの形式で入力通信を受信することもできる。
【0133】
一例として、通信サブシステム1124は、ソーシャルネットワーク、および/もしくはTwitter(登録商標)フィード、Facebook(登録商標)更新、リッチサイトサマリー(RSS)フィードなどのWebフィードなどのその他の通信サービス、ならびに/または1つもしくは複数のサードパーティ情報ソースからのリアルタイム更新のユーザからリアルタイムでデータフィード1126を受信するように構成され得る。
【0134】
さらに、通信サブシステム1124は、連続データストリームの形式でデータを受信するように構成されてもよく、これには、リアルタイムイベントおよび/またはイベント更新1130のイベントストリーム1128が含まれ得、これらは、連続的または明示的な終わりのない本質的に無制限であり得る。連続データを生成するアプリケーションの例には、例えば、センサーデータアプリケーション、金融ティッカ、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などが含まれ得る。
【0135】
通信サブシステム1124はまた、構造化および/または非構造化データフィード1126、イベントストリーム1128、イベント更新1130などを、コンピュータシステム1100に結合される1つまたは複数のストリーミングデータソースコンピュータと通信することができる1つまたは複数のデータベースに出力するように構成することもできる。
【0136】
コンピュータシステム1100は、ハンドヘルドポータブル装置(例えば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブル装置(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含むさまざまなタイプのうちの1つであり得る。
【0137】
コンピュータおよびネットワークの絶え間なく変化する性質のため、図に示されるコンピュータシステム1100の説明は、特定の例としてのみ意図されている。図に示されているシステムよりも多くの、または少ない構成要素を備えた他の多くの構成が可能である。例えば、カスタマイズされているハードウェアも使用されたり、特定の要素がハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、またはその組み合わせで実装されたりし得る。さらに、ネットワーク入出力装置などの他のコンピューティング装置への接続が使用されてもよい。本明細書で提供される開示および教示に基づいて、当業者であれば、さまざまな実施形態を実装するための他の手法および/または方法を理解するであろう。
【0138】
特定の実施形態について説明してきたが、さまざまな修正、変更、代替構造、および均等物も本開示の範囲内に含まれる。実施形態は、特定の特有のデータ処理環境内での動作に限定されず、複数のデータ処理環境内で自由に動作することができる。さらに、特定の一連のトランザクションおよびステップを使用して実施形態を説明したが、本開示の範囲が説明した一連のトランザクションおよびステップに限定されないことは当業者には明らかである。上述の実施形態のさまざまな特徴および態様は、個別にまたは組み合わせて使用することができる。
【0139】
さらに、ハードウェアとソフトウェアの特定の組み合わせを使用して実施形態を説明したが、ハードウェアとソフトウェアの他の組み合わせも本開示の範囲内であることを認識されたい。実施形態は、ハードウェアのみで、もしくはソフトウェアのみで、またはそれらの組み合わせを使用して実装することができる。本明細書で説明するさまざまなプロセスは、同じプロセッサ上で実装することも、異なるプロセッサを任意に組み合わせて実装することもできる。したがって、構成要素またはモジュールが特定の動作を実行するように構成されていると説明されている場合、このような構成は、例えば、動作を実行する電子回路を設計することによって、動作を実行するようにプログラマブル電子回路(マイクロプロセッサなど)をプログラムすることによって、またはそれらの任意の組み合わせによって達成することができる。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信することができ、プロセスの異なる対が異なる技術を使用したり、同じプロセスの対が異なる時点で異なる技術を使用したりすることができる。
【0140】
したがって、明細書および図面は、限定的な意味ではなく、例示的な意味としてみなされるべきである。しかし、特許請求の範囲に記載のより広い趣旨および範囲から逸脱することなく、追加、減算、削除、ならびにその他の修正および変更を行うことができることは明らかである。したがって、特定の開示実施形態について説明してきたが、これらは限定することを意図したものではない。さまざまな修正および均等物は、以下の特許請求の範囲内に含まれる。
【0141】
開示されている実施形態を説明する文脈における(特に、以下の特許請求の範囲の文脈において)用語「a」、「an」、「the」、および同様の指示対象の使用は、本明細書で別途指示するか、文脈と明らかに矛盾しない限り、単数形と複数形の両方をカバーすると解釈されるべきである。「含む」、「有する」、「含む」、および「含有する」という用語は、特に断りのない限り、無制限の用語(すなわち、「含むがこれらに限定されない」を意味する)として解釈されるべきである。「接続されている」という用語は、たとえ何かが介在している場合でも、部分的または全体的に内部に含まれている、取り付けられている、または結合されていると解釈される。本明細書における値の範囲の記載は、本明細書に別段の記載がない限り、その範囲内にある各々の個別の値を個別に参照する簡略的な方法として機能することを単に意図しており、個別の各値は、あたかも本明細書に個別に記載されているかのように明細書に組み込まれる。本明細書に記載されるすべての方法は、本明細書に別段の指示がない限り、または文脈と明らかに矛盾しない限り、任意の適切な順序で実行することができる。本明細書で提供されるあらゆる例、または例示的な文言(例えば、「など」)の使用は、単に実施形態をより良く説明することを目的としており、別段の請求がない限り、本開示の範囲に制限を課すものではない。本明細書のいかなる文言も、特許請求されていない任意の要素が本開示の実施に必須であることを示すものとして解釈されるべきではない。
【0142】
「X、Y、またはZのうちの少なくとも1つ」という句などの選言的表現は、特に別段の記載がない限り、項目、用語などがX、Y、またはZのいずれか、またはそれらの任意の組み合わせ(例えば、X、Y、および/またはZ)であり得ることを示すために一般に使用されると文脈内で理解されることを意図している。したがって、そのような選言的表現は、一般に、特定の実施形態が、Xの少なくとも1つ、Yの少なくとも1つ、またはZの少なくとも1つがそれぞれ存在することを必要とすることを意味することを意図したものではなく、また、意味するべきではない。
【0143】
本開示の好ましい実施形態が、本開示を実施するための既知の最良のモードを含めて、本明細書に記載される。これらの好ましい実施形態の変形は、前述の説明を読めば当業者には明らかになるであろう。当業者であれば、そのような変形を必要に応じて採用することができるはずであり、本開示は、本明細書に具体的に記載された以外の方法で実施することもできる。したがって、本開示には、適用される法律によって許可される、本明細書に添付の特許請求の範囲に記載されている主題のすべての修正および均等物が含まれる。さらに、本明細書で別段の指示がない限り、可能なすべての変形例における上述の要素の任意の組み合わせが本開示に包含される。
【0144】
本明細書に引用される刊行物、特許出願、および特許を含むすべての参考文献は、各参考文献が参照により組み込まれることが個別かつ具体的に示され、その全体が本明細書に記載されるのと同じ程度に、参照により本明細書に組み込まれる。
【0145】
前述の明細書では、本開示の態様は、その特定の実施形態を参照して説明されているが、当業者は、本開示がそれに限定されないことを認識するであろう。上述の開示のさまざまな特徴および態様は、個別にまたは組み合わせて使用することができる。さらに、実施形態は、本明細書のより広範な趣旨および範囲から逸脱することなく、本明細書に記載されているものを超える任意の数の環境および用途において利用することができる。したがって、明細書および図面は、限定的なものではなく、例示的なものとみなされるべきである。
【国際調査報告】