(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-05
(54)【発明の名称】ダウンタイムなしで安全にデータベースを移行するための技術
(51)【国際特許分類】
G06F 16/21 20190101AFI20240628BHJP
G06F 9/46 20060101ALI20240628BHJP
G06F 16/182 20190101ALI20240628BHJP
【FI】
G06F16/21
G06F9/46 430
G06F9/46 420A
G06F16/182
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023579254
(86)(22)【出願日】2022-06-06
(85)【翻訳文提出日】2024-02-16
(86)【国際出願番号】 US2022032367
(87)【国際公開番号】W WO2022271437
(87)【国際公開日】2022-12-29
(32)【優先日】2021-06-24
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ルオン,ドゥック・トロン
(72)【発明者】
【氏名】コウ,シュエクン
(72)【発明者】
【氏名】ロンカリック,カルビン・アレクサンダー
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA01
(57)【要約】
ダウンタイムなしでデータストア間の効率的なデータ移行を可能にする技術が開示される。分散コンピューティングシステムは、初期データストアと標的データストアを使用して実装できる。初期データストアから標的データストアへのデータの一部の移行中に、分散コンピューティングシステムは、データエンティティを作成する、またはデータストアでワークフローインスタンスを起動するための要求を受信できる。システムは、要求を扱うためのプライマリデータストアとして初期データストアまたは標的データストアが指定されているかどうかを決定できる。システムは、初期データストアまたは標的データストアに要求に関連付けられているキーが存在するかどうかを決定することもできる。キーがデータストアのいずれかに存在する場合、システムはデータエンティティの作成を中止することができる。
【特許請求の範囲】
【請求項1】
方法であって、
分散コンピューティングシステムが、初期データストアのユーザに関連付けられているデータを記憶するように構成されている前記初期データストアを実装することを含み、前記初期データストアは初期ストア状態を有し、プライマリデータストアとして指定されており、
前記方法は、
前記分散コンピューティングシステムが、標的ストア状態を有する標的データストアを実装することと、
前記分散コンピューティングシステムが、前記初期データストアに記憶される前記ユーザに関連する前記データの一部を前記標的データストアに移行することと、
前記データの前記一部の前記移行中:
前記分散コンピューティングシステムが、第1のデータエンティティを作成するための、キーに関連付けられている要求を受信することと、
前記要求に応答して、前記分散コンピューティングシステムは、前記初期データストアが前記プライマリデータストアとして指定されていると決定することと、
前記分散コンピューティングシステムが、前記初期データストアに関連付けられている前記初期ストア状態を決定することと、
前記初期ストア状態の決定に応答して、前記分散コンピューティングシステムは、前記キーが前記標的データストアに存在しないことを確認することと、
前記分散コンピューティングシステムが、前記初期データストアに前記第1のデータエンティティを作成することと、をさらに含み、前記第1のデータエンティティを作成することは、前記第1のデータエンティティを前記初期データストアにコミットすることを含む、方法。
【請求項2】
前記分散コンピューティングシステムが、前記標的データストアを前記プライマリデータストアとして指定することと、
前記分散コンピューティングシステムが、第2のデータエンティティを作成するための、第2のキーに関連付けられている第2の要求を受信することと、
前記第2の要求に応答して、前記分散コンピューティングシステムは、前記標的データストアが前記プライマリデータストアとして指定されていると決定することと、
前記分散コンピューティングシステムが、前記標的データストアに関連付けられている前記標的ストア状態を決定することと、
前記標的ストア状態の前記決定に応答して、前記分散コンピューティングシステムは、前記第2のキーが前記初期データストアに存在しないことを確認することと、
前記分散コンピューティングシステムが、前記標的データストアに前記第2のデータエンティティを作成することと、をさらに含み、前記第2のデータエンティティを作成することは、前記第2のデータエンティティを前記標的データストアにコミットすることを含む、請求項1に記載の方法。
【請求項3】
前記第2のデータエンティティは、前記標的データストア内の新しい不変データを含み、
前記分散コンピューティングシステムが、前記初期データストアを前記プライマリデータストアとして指定することと、
前記分散コンピューティングシステムが、前記標的データストアに記憶される前記データの追加部分を前記初期データストアに転送することと、
前記データの前記追加部分の前記転送中:
前記分散コンピューティングシステムが、第3のデータエンティティを作成するための、第3のキーに関連付けられている第3の要求を受信することと、
前記第3の要求に応答して、前記分散コンピューティングシステムは、前記初期データストアが前記プライマリデータストアとして指定されていると決定することと、
前記分散コンピューティングシステムが、前記初期データストアに関連付けられている前記初期ストア状態を決定することと、
前記初期ストア状態の前記決定に応答して、前記分散コンピューティングシステムは、前記第3のキーが前記標的データストアに存在しないことを確認することと、
前記分散コンピューティングシステムが、前記初期データストアに前記第3のデータエンティティを作成することと、をさらに含み、前記第3のデータエンティティを作成することは、前記第3のデータエンティティを前記初期データストアにコミットすることを含む、請求項2に記載の方法。
【請求項4】
前記初期ストア状態はオープンまたはクローズであり得、前記標的ストア状態はオープンまたはクローズであり得る、先行する請求項のいずれかに記載の方法。
【請求項5】
前記データは、不変データ、一時データ、およびキーデータを含む、先行する請求項のいずれかに記載の方法。
【請求項6】
前記データの前記一部を移行することは、前記不変データを前記初期データストアから前記標的データストアに複製することを含む、請求項5に記載の方法。
【請求項7】
前記第1のデータエンティティを前記初期データストアにコミットする前に、前記分散コンピューティングシステムが前記初期ストア状態を決定することと、
前記分散コンピューティングシステムが、前記第1のデータエンティティを前記初期データストアにコミットすることと、をさらに含む、先行する請求項のいずれかに記載の方法。
【請求項8】
1つまたは複数のプロセッサと、
コンピュータ実行可能命令を記憶する1つまたは複数のメモリと、を含む、分散コンピューティングシステムであって、
前記コンピュータ実行可能命令は、前記1つまたは複数のプロセッサで実行されると、前記分散コンピューティングシステムに
初期データストアのユーザに関連付けられているデータを記憶するように構成されている前記初期データストアを実装させ、前記初期データストアは初期ストア状態を有し、プライマリデータストアとして指定されており、
標的ストア状態を有する標的データストアを実装させ、
前記初期データストアに記憶されている前記ユーザに関連付けられている前記データの一部を前記標的データストアに移行させ、
前記データの前記一部の前記移行中:
第1のデータエンティティを作成するための、キーに関連付けられている要求を受信させ、
前記要求に応答して、前記初期データストアが前記プライマリデータストアとして指定されていると決定させ、
前記初期データストアに関連付けられている前記初期ストア状態を決定させ、
前記初期ストア状態の前記決定に応答して、前記キーが前記標的データストアに存在しないことを確認させ、
前記初期データストアに前記第1のデータエンティティを作成させ、前記第1のデータエンティティを作成させることは、前記第1のデータエンティティを前記初期データストアにコミットすることを含む、分散コンピューティングシステム。
【請求項9】
前記コンピュータ実行可能命令を実行することは、前記分散コンピューティングシステムにさらに、
前記標的データストアを前記プライマリデータストアとして指定させ、
第2のデータエンティティを作成するための、第2のキーに関連付けられている第2の要求を受信させ、
前記第2の要求に応答して、前記標的データストアが前記プライマリデータストアとして指定されていると決定させ、
前記標的データストアに関連付けられている前記標的ストア状態を決定させ、
前記標的ストア状態の前記決定に応答して、前記第2のキーが前記初期データストアに存在しないことを確認させ、
前記標的データストアに前記第2のデータエンティティを作成させ、前記第2のデータエンティティを作成させることは、前記第2のデータエンティティを前記標的データストアにコミットすることを含む、請求項8に記載の分散コンピューティングシステム。
【請求項10】
前記第2のデータエンティティは新しい不変データを含み、前記コンピュータ実行可能命令を実行することは、前記分散コンピューティングシステムにさらに、
前記初期データストアを前記プライマリデータストアとして指定させ、
前記標的データストアに記憶されている前記データの追加部分を前記初期データストアに転送させ、
前記データの前記追加部分の前記転送中:
第3のデータエンティティを作成するための、第3のキーに関連付けられている第3の要求を受信させ、
前記第3の要求に応答して、前記初期データストアが前記プライマリデータストアとして指定されていると決定させ、
前記初期データストアに関連付けられている前記初期ストア状態を決定させ、
前記初期ストア状態の前記決定に応答して、前記第3のキーが前記標的データストアに存在しないことを確認させ、
前記初期データストアに前記第3のデータエンティティを作成させ、前記第3のデータエンティティを作成させることは、前記第3のデータエンティティを前記初期データストアにコミットすることを含む、請求項9に記載の分散コンピューティングシステム。
【請求項11】
前記初期ストア状態はオープンまたはクローズであり得、前記標的ストア状態はオープンまたはクローズであり得る、先行する請求項のいずれかに記載の分散コンピューティングシステム。
【請求項12】
前記データは、不変データ、一時データ、およびキーデータを含む、先行する請求項のいずれかに記載の分散コンピューティングシステム。
【請求項13】
前記データの前記一部を移行することは、前記不変データを前記初期データストアから前記標的データストアに複製することを含む、請求項12に記載の分散コンピューティングシステム。
【請求項14】
前記コンピュータ実行可能命令を実行することは、前記分散コンピューティングシステムにさらに、
前記第1のデータエンティティを前記初期データストアにコミットする前に、前記初期ストア状態を決定させ、
前記第1のデータエンティティを前記初期データストアにコミットさせる、先行する請求項のいずれかに記載の分散コンピューティングシステム。
【請求項15】
1つまたは複数のプロセッサによって実行されると、分散コンピューティングシステムに少なくとも、
初期データストアのユーザに関連付けられているデータを記憶するように構成されている前記初期データストアを実装させ、前記初期データストアは初期ストア状態を有し、プライマリデータストアとして指定されており、
標的ストア状態を有する標的データストアを実装させ、
前記初期データストアに記憶されている前記ユーザに関連付けられている前記データの一部を前記標的データストアに移行させ、
前記データの前記一部の前記移行中:
第1のデータエンティティを作成する、キーに関連付けられている要求を受信させ、
前記要求に応答して、前記初期データストアが前記プライマリデータストアとして指定されていると決定させ、
前記初期データストアに関連付けられている前記初期ストア状態を決定させ、
前記初期ストア状態の前記決定に応答して、前記キーが前記標的データストアに存在しないことを確認させ、
前記初期データストアに前記第1のデータエンティティを作成させ、前記第1のデータエンティティを作成させることは、前記第1のデータエンティティを前記初期データストアにコミットすることを含む、コンピュータ実行可能命令を記憶する非一時的なコンピュータ可読媒体。
【請求項16】
前記コンピュータ実行可能命令を実行することは、前記分散コンピューティングシステムにさらに、
前記標的データストアを前記プライマリデータストアとして指定させ、
第2のデータエンティティを作成するための、第2のキーに関連付けられている第2の要求を受信させ、
前記第2の要求に応答して、前記標的データストアが前記プライマリデータストアとして指定されていると決定させ、
前記標的データストアに関連付けられている前記標的ストア状態を決定させ、
前記標的ストア状態の前記決定に応答して、前記第2のキーが前記初期データストアに存在しないことを確認させ、
前記標的データストアに前記第2のデータエンティティを作成させ、前記第2のデータエンティティを作成させることは、前記第2のデータエンティティを前記標的データストアにコミットすることを含む、請求項15に記載の非一時的なコンピュータ可読媒体。
【請求項17】
前記第2のデータエンティティは新しい不変データを含み、前記コンピュータ実行可能命令を実行することは、前記分散コンピューティングシステムにさらに、
前記標的データストアに記憶されている前記データの追加部分を前記初期データストアに転送させ、
前記データの前記追加部分の前記転送中:
第3のデータエンティティを作成するための、第3のキーに関連付けられている第3の要求を受信させ、
前記第3の要求に応答して、前記初期データストアが前記プライマリデータストアとして指定されていると決定させ、
前記初期データストアに関連付けられている前記初期ストア状態を決定させ、
前記初期ストア状態の前記決定に応答して、前記第3のキーが前記標的データストアに存在しないことを確認させ、
前記初期データストアに前記第3のデータエンティティを作成させ、前記第3のデータエンティティを作成させることは、前記第3のデータエンティティを前記初期データストアにコミットすることを含む、請求項16に記載の非一時的なコンピュータ可読媒体。
【請求項18】
前記初期ストア状態はオープンまたはクローズであり得、前記標的ストア状態はオープンまたはクローズであり得る、先行する請求項のいずれかに記載の非一時的なコンピュータ可読媒体。
【請求項19】
前記データは、不変データ、一時データ、およびキーデータを含む、先行する請求項のいずれかに記載の非一時的なコンピュータ可読媒体。
【請求項20】
前記コンピュータ実行可能命令を実行することは、前記分散コンピューティングシステムにさらに、
前記第1のデータエンティティを初期データストアにコミットする前に、前記初期ストア状態を決定させ、
前記第1のデータエンティティを前記初期データストアにコミットさせる、請求項15に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【0001】
背景
クラウドベースのサービスは、トランザクションを介してデータストアまたはデータベース内でデータを記憶または更新することになり得るタスクを処理するためのソリューションを提供する。マルチテナント分散コンピューティングシステムでは、データ記憶バックエンドの要件が変化したとき、顧客データが1つのデータストアから別のデータストアに移行され得る。従来、顧客データの移行には、コンピューティング環境が初期データストアから標的データストアに移行する間に顧客プロセスの機能が失われることを表すダウンタイムコストが発生する。したがって、顧客プロセスの機能を維持しながら、あるデータストアから別のデータストアにデータを移行するための改良された技術が必要とされている。
【0002】
技術分野
本開示は、分散コンピューティングシステムに関する。より詳細には、本開示は、データベースのダウンタイムを招くことなく、分散コンピューティングシステム内でデータベースを移行するための技術を説明する。
【発明の概要】
【0003】
簡単な説明
本開示の実施形態は、ダウンタイムのないデータベース移行を提供することに関する。ダウンタイムなしでデータベースを移行すると、移行前、移行中、および移行後にユーザのデータベースとの対話の機能が維持され得るため、移行の進行中にユーザは機能が失われることがなくなり得る。特に、本開示のいくつかの実施形態は、すべてのデータではなく、あるデータベースから別のデータベースにデータの一部を移行する方法について説明する。
【0004】
いくつかの実施形態は、分散コンピューティングシステム内で初期データストアおよび標的データストアを実装するための方法を提供する。データストアはデータベースまたは他のデータ記憶システムであってもよい。データストアには、NoSQL(キー値を含む)、リレーショナル、およびマルチモーダルなど、いくつかの異なるタイプがあり得る。分散コンピューティングシステムは、ワークフローサービスまたは他のアプリケーションサービスを提供するように構成できる。ワークフローに対応する実施形態の場合、分散コンピューティングシステムは、分散コンピューティングシステムのユーザ/顧客が利用できる一連のクラウドサービスの中にサービスとしてのワークフロー(WFaaS)を含むことができる。ワークフローサービスは、データ移行前および移行中の両方で、データストアでのトランザクションに対する多数の要求を扱えるため、本明細書で開示される技術は、ワークフローの起動やクエリなどの顧客要求の適切な取扱いに対処できる。ワークフローには、ワークフローインスタンスデータを処理するために実行される一連のタスクまたはその他の動作を含めることができる。
【0005】
一実施形態は、分散コンピューティングシステムが実行する方法を対象とする。この方法には、初期データストアと標的データストアを実装することが含まれ得る。初期データストアは、オープンまたはクローズであり得る初期ストア状態を持つことができる。同様に、標的データストアは、オープンまたはクローズであり得る標的ストア状態を持つことができる。1つのデータストアがプライマリとして指定される。初期データストアは、初期データストアのユーザ(例えば、顧客、テナントなど)に関連付けられているデータを記憶するように構成することができる。データの一部を初期データストアから標的データストアに移行できる。データの一部の移行には、初期データストアから標的データストアへのデータの一部を複製すること、初期ストア状態を変更すること、標的ストア状態を変更すること、および指定されるプライマリを変更することが含まれ得る。
【0006】
データの一部が移行されている間、分散コンピューティングシステムは、新しいデータエンティティ(例えば、第1のデータエンティティ)の作成を伴う顧客要求を受信することができる。データエンティティを作成することは、インスタンス(例えば、ワークフローインスタンス)を起動することとも呼ばれ得、そのため、顧客要求は起動要求と呼ばれ得る。第1のデータエンティティの作成には、データストアとの1つまたは複数のトランザクションが含まれ得る。要求には、要求および/または他の属性を一意に識別できるキーを含めることができる。分散コンピューティングシステムは、初期データストアがプライマリデータストアとして指定されているため、起動要求およびトランザクションに関連付けるのに適切なデータストアであると決定できる。分散コンピューティングシステム(例えば、分散コンピューティングシステムのスケジューラまたは他のプロセス)は、初期ストア状態がオープンであると決定することもできる。ストア状態がオープンの場合、要求に関連付けられているキーの存在について標的データストアがチェックされる。キーは、第1のデータエンティティの起動トランザクションの一部として記憶され得る。データストア内にキーが存在するということは、同一のキーを持つデータエンティティがそのデータストアですでに起動されていることを示す。移行プロセス中に同じキーを持つインスタンスが起動されないようにするために、分散コンピューティングシステムは、(初期データストアにキーが存在しないことを確認することに加えて)キーが標的データストアに存在しないことを確認できる。キーが存在しない場合、第1のデータエンティティは初期データストアで作成され得る。第1のデータエンティティを作成するためのトランザクションは、第1のデータエンティティを初期データストアにコミットすること、またはトランザクションを中止することを含むことができる。
【0007】
別の実施形態では、この方法は、移行プロセスの後半で発生する起動要求を扱うための追加の動作を含むことができる。標的データストアはプライマリデータストアとして指定され得る。分散コンピューティングシステムは、第2のキーに関連付けられている第2のデータエンティティを作成する第2の要求を受信することができる。次に、分散コンピューティングシステムは、標的データストアがプライマリとして指定されていると決定し、標的ストア状態を決定し、第2キーが初期データストアに存在しないことを確認できる。これらの決定(例えば、標的ストア状態がオープンである)に基づいて、分散コンピューティングシステムは、標的データストアで第2のデータエンティティを作成することができる。
【0008】
いくつかの実施形態では、初期データストアに記憶されるユーザデータは、不変データ、一時データ、およびキーデータを含むことができる。不変データとは、データストア内で作成され、読み取りはできるが更新や削除はできないデータのことであり得る。データの第1の部分と追加の部分を初期データストアと標的データストアとの間で移行する場合、データの部分には不変データが含まれ得る。
【0009】
別の実施形態では、この方法は、データの一部が初期データストアから標的データストアに複製された後、データ移行のロールバックを扱う追加の動作を含むことができる。クラウドサービス(例えば、WFaaS)は、移行中に標的データストア内に新しい不変データを作成することができる(例えば、第2のデータエンティティは新しい不変データを含むことができる)。初期データストアはプライマリデータストアとして指定され得る。データの追加部分を標的データストアから初期データストアに転送できる。データの追加部分には、クラウドサービスによって作成される新しい不変データを含めることができる。この転送中に、分散コンピューティングシステムは、第3のデータエンティティを作成するための第3の要求を受信できる。第3の要求には第3のキーを含めることができる。その後、分散コンピューティングシステムは、初期データストアがプライマリデータストアとして指定されており、初期ストア状態がオープンであり、および標的データストアに第3のキーが存在しないと決定できる。その後、分散コンピューティングシステムは、初期データストアで第3のデータエンティティを作成できる。
【0010】
他のいくつかの実施形態では、この方法は、初期データストアにトランザクションをコミットする前に、初期ストア状態がオープンであることを保証する動作を含む。トランザクションの結果、データストア内にキーおよび不変データが作成され得、そのデータは第1および第2のデータエンティティの作成に関連付けられる。
【0011】
別の実施形態は、1つまたは複数のプロセッサと、1つまたは複数のプロセッサで実行されると、分散コンピューティングシステムに初期データストアとターゲットデータストアとを実装させるコンピュータ実行可能命令を記憶する1つまたは複数のメモリとを含む分散コンピューティングシステムを対象とする。分散コンピューティングシステムは、初期データストアをプライマリデータストアとして指定され得る。この命令により、分散コンピューティングシステムは、データの一部を初期データストアから標的データストアに移行できる。データが(例えば複製によって)移行している間、分散コンピューティングシステムは、初期データストアで第1のデータエンティティを作成する要求を受信し得る。要求には、要求、第1のデータエンティティ、第1のデータエンティティの範囲、または要求の他の属性を一意に識別できるキーを含めることができる。この命令により、分散コンピューティングシステムは、初期データストアがプライマリデータストアとして指定されており、したがって起動要求およびトランザクションに関連付ける適切なデータストアであると決定できる。この命令により、分散コンピューティングシステムは初期ストア状態がオープンであると決定することもできる。ストア状態がオープンの場合、要求に関連付けられているキーの存在について標的データストアがチェックされる。キーが存在しない場合、分散コンピューティングシステムは第1のデータエンティティを初期データストアに記憶する。第1のデータエンティティを作成するためのトランザクションは、第1のデータエンティティを初期データストアにコミットすること、またはトランザクションを中止することを含むことができる。
【0012】
さらに別の実施形態では、命令は、分散コンピューティングシステムに、移行プロセスの後半で発生する起動要求を扱わせることができる。標的データストアはプライマリデータストアとして指定され得る。分散コンピューティングシステムは、第2のキーに関連付けられている第2のデータエンティティを作成する第2の要求を受信することができる。この命令により、コンピューティングシステムは、標的データストアがプライマリとして指定されていると決定し、標的ストア状態を決定し、第2のキーが初期データストアに存在しないことを確認できる。これらの決定(例えば、標的ストア状態がオープンであること)に基づいて、システムは、標的データストアで第2のデータエンティティを作成することができる。
【0013】
別の実施形態では、命令により、データの一部が初期データストアから標的データストアに複製された後、分散コンピューティングシステムがデータ移行のロールバックを扱えるようにすることができる。第2のデータエンティティには、標的データストア内の新しい不変データが含まれ得る。初期データストアはプライマリデータストアとして指定され得る。この命令により、分散コンピューティングシステムは、データの追加部分を標的データストアから初期データストアに転送することができる。この転送中に、分散コンピューティングシステムは、第3のデータエンティティを作成するための第3の要求を受信できる。第3の要求には第3のキーを含めることができる。この命令により、分散コンピューティングシステムは、初期データストアがプライマリデータストアとして指定されていること、初期ストア状態がオープンであること、および標的データストアに第3のキーが存在しないと決定できる。次に、コンピューティングシステムは、初期データストアで第3のデータエンティティを作成できる。
【0014】
さらに別の実施形態は、プロセッサによって実行されると、コンピュータシステムに少なくとも:初期データストアと標的データストアを実装し、データの一部を初期データストアから標的データストアに移行し、データの移行中に、初期データストアで第1のデータエンティティを作成する要求を受信し、初期データストアがプライマリデータストアとして指定されていると決定し、初期ストア状態がオープンであると決定し、要求に関連付けられているキーが標的データストアに存在することを確認し、キーが存在しないと決定し次第、初期データストアに第1のデータエンティティを作成させる特定のコンピュータ実行可能命令を記憶する非一時的なコンピュータ可読媒体を対象とする。第1のデータエンティティを作成するためのトランザクションは、第1のデータエンティティを初期データストアにコミットすること、またはトランザクションを中止することを含むことができる。
【0015】
いくつかの実施形態では、命令は、分散コンピューティングシステムに:標的データストアをプライマリデータストアとして指定し、第2のキーに関連付けられている第2のデータエンティティを作成するための第2の要求を受信し、標的データストアがプライマリとして指定されていると決定し、標的ストア状態を決定し、第2のキーが初期データストアに存在しないことを確認し、これらの決定に応じて、標的データソースで第2のデータエンティティを作成することを行わせることができる。
【0016】
別の実施形態では、命令は、分散コンピューティングシステムに:標的データストアに新しい不変データを作成し、初期データストアをプライマリデータストアとして指定し、データの追加部分を標的データストアから初期データストアに転送し、この転送中に、第3のデータエンティティを作成するための第3の要求を受信することを行わせることができる。第3の要求には第3のキーを含めることができる。この命令はさらに、分散コンピューティングシステムに:初期データストアがプライマリデータストアとして指定されていると決定し、初期ストア状態を決定し、標的データストアに第3のキーが存在しないことを確認し、初期データストアに第3のデータエンティティを作成することを行わせることができる。
【0017】
実施形態は、プロセッサによって実行されると、本開示で説明される方法のいずれかをプロセッサに実行させるコンピュータプログラム/命令を含むコンピュータプログラム製品を使用することによって実装され得る。
【図面の簡単な説明】
【0018】
【
図1】いくつかの実施形態による、初期データストアから標的データストアにデータを移行する例示的なプロセスの簡略化されるブロック図および関連するフローチャートを示す図である。
【
図2】いくつかの実施形態による、データストアとのトランザクションのためのプロセスを起動できるワークフローサービスを実装する例示的な分散コンピューティングシステムを示す図である。
【
図3】一実施形態による、データの移行のための例示的な初期データストア構成および標的データストア構成を示す簡略ブロック図である。
【
図4】いくつかの実施形態による、初期データストアから標的データストアへのデータの移行中にプロセス起動論理を扱うための例示的なプロセスの流れ図である。
【
図5】いくつかの実施形態による、初期データストアから標的データストアへのデータ移行をロールバックする例示的なプロセスのフローチャートを示す図である。
【
図6】いくつかの実施形態による、初期データストアから標的データストアへのデータの移行中に第1のデータエンティティを作成する例示的なプロセスの簡略化される流れ図である。
【
図7】いくつかの実施形態による、初期データストアから標的データストアへのデータの移行中に第2のデータエンティティを作成する例示的なプロセスの別の簡略化される流れ図である。
【
図8】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための1つのパターンを示すブロック図である。
【
図9】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。
【
図10】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。
【
図11】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。
【
図12】少なくとも1つの実施形態による例示的なコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【0019】
詳細な説明
以下の説明では、説明の目的で、特定の実施形態の完全な理解を提供するために特定の詳細が記載される。しかし、これらの特定の詳細がなくても、さまざまな実施形態を実施できることは明らかであろう。図および説明は、限定することを意図したものではない。
【0020】
本明細書で説明する技術は、サービスとしてのワークフロー(WFaaS)を参照し、ワークフロー処理タスク(ワークフローインスタンスとも呼ばれる)は、分散コンピューティングシステム(例えば、クライアント/サーバ環境、クラウドコンピューティング環境など)内でホストされる1つまたは複数のワーカー(例えば、クライアント装置、ワーカープロセス、ワーカースレッドなど)に分散されてもよい。しかし、この技術は、1つまたは複数のデータストアとトランザクションしてデータエンティティを作成することができる他のコンピューティングアプリケーションにも適用できる。分散コンピューティングシステムは、ワークフローインスタンスまたはワークフローサービスの他の動作を実行するための動作を実行する、任意の適切な数のコンピューティングインスタンス(例えば、コンピューティングノード、仮想マシン、仮想化コンテナ、ホスト、または他の適切な物理もしくは仮想コンピューティングリソース)を含むことができる。ワークフローインスタンスは、1つまたは複数のデータエンティティの作成に関連付けることができる。データエンティティには、ワークフローインスタンスに関連付けられているデータを含めることができる。1つまたは複数のデータエンティティを作成してワークフローインスタンスが起動された後、ワーカーはコード(例えば、ワークフローインスタンスデータによって記述される顧客作成のコード)を実行できる。ワークフローインスタンスの結果として、ワークフローインスタンスデータが更新され得る。これには、1つまたは複数のデータエンティティの作成または変更が含まれ得る。
【0021】
ワークフローインスタンスは、要求(例えば、顧客要求)によって起動され得る。このような要求は、分散コンピューティングシステムのデータストアの基本的な構成に依存しない場合がある。例えば、顧客の要求には、分散コンピューティングシステムが使用する特定のデータストアまたはデータベースを指定しない、ワークフローインスタンスを起動するための情報が含まれ得る。要求には、キー値と範囲を含み得るキーデータを含めることができる。キーデータは、有効範囲内のキーに対するワークフローインスタンスの一意性を保証するために使用できるように、べき等であってもよい。つまり、キーに対応するワークフローインスタンスは一度に1つだけ存在できる。
【0022】
ワークフローインスタンスを起動することに加えて、顧客は、WFaaSに特定の種類の不変データを記憶することを要求することもできる。不変データにはワークフロー定義を含めることができる。不変データはワークフローインスタンスに関連付けることができ、一度作成されると、関連付けられるワークフローインスタンスまたは他のインスタンスによって更新または削除されることはない。不変データは、後続のインスタンスまたはデータストアへの他のトランザクションによって使用され得るため、存続され得る。ワークフローインスタンスは、ワークフローインスタンスの1つまたは複数のタスクに対応するデータを含み得る一時データの作成に関連付けることもできる。一時データには、ワークフローインスタンスのリースまたは割り当てデータ(例えば、履歴割り当て)も含まれ得る。一時データは、特定のワークフローインスタンスの存続期間内で作成および更新できる。一時データに関連付けられているワークフローインスタンスが終了すると、その一時データは他のどのワークフロープロセスでも必要なくなり得る。一時データは、データストアを維持するためのガベージコレクションまたはその他のプロセスの一部として、一定期間後にデータストアから削除されるようにスケジュールできる。
【0023】
ワークフローインスタンスに関連付けられているデータは、データストア、データベース、または他の記憶システムに存続され得る。データストアは、例えば、リレーショナルデータベース、キー値のデータベース、別のNoSQLデータベース、マルチモーダルデータベース、またはその他のデータベースなど、さまざまなデータストアのいずれかであり得る。データストアは、大規模なデータストア内のコンテナであるプラガブルデータベース(PDB)として構成できる。分散コンピューティングシステムでは、テナントおよびアプリケーションのデータ記憶要件(例えば、スケーラビリティ要件、専用データストアを必要とする顧客、記憶インフラストラクチャの追加、記憶のロード分散など)が変更されると、あるデータストアから別のデータストアへのデータの移行が必要になり得る。例えば、上記のデータはキー値のデータベースに存続され得る。別の標的データベース(例えば、マルチモーダルデータベース)への移行が必要になり得る。移行中に顧客がダウンタイムを経験しないことを確保するために、コンピューティング環境には、初期データストアまたは標的データストアとのトランザクションを引き起こす可能性のある顧客要求を扱うための追加論理を組み込むことができる。このようにして、顧客の要求は、移行中に分散コンピューティングシステムの状態と実装されるデータストアに依存しないままにすることができる。つまり、顧客の観点から見ると、顧客の要求はデータ移行前、移行中、移行後に同じように機能できるため、ダウンタイムが発生しない。
【0024】
上記のWFaaSの例を続けると、WFaaS顧客をあるデータストアから別のデータストアに移行することは、初期データストアから標的データストアにデータの一部を複製することを含むことができる。ワークフロー一時データは、ワークフローインスタンスの存続期間中にそのインスタンスによってのみ必要とされ得るため、移行ではそのデータが転送から除外され得る。つまり、移行では、初期データストアから標的データストアに不変データのみが複製され得る。初期データストアで作成される一時データは、関連するワークフローインスタンスの終了後のガベージコレクションプロセス中に、最終的に初期データストアから排出され得る。
【0025】
顧客は、移行プロセス全体を通して新しいワークフローインスタンスの起動を要求することができる。上で述べたように、顧客の要求は、分散コンピューティングシステムのデータストアの構成に依存しない場合がある。初期データストアの不変データが標的データストアに複製されると、新しく起動されるワークフローインスタンスがトランザクションできるプライマリデータストアとして標的データストアを指定する移行が発生し得る。キーデータは標的データストアで複製されない可能性があるため、標的データストアで新しく起動されるワークフローインスタンスには、現在標的データストアにはなく、初期データストアにはあり得るキーが含まれ得る。WFaaSはワークフローインスタンスキー(例えば、シングルトンキー)の一意性を強制するため、ワークフローインスタンスの起動論理により、分散コンピューティングシステムが初期データストア内のキーの存在をチェックし得る。キーが初期データストアに記憶されている場合、同一のワークフローインスタンスが初期データストアにすでに存在しているため、起動要求により競合が発生する。その後、分散コンピューティングシステムはワークフローインスタンスの起動要求を拒否できる。
【0026】
ほとんどのワークフローインスタンスは、初期データストアから標的データストアに移行するのに必要な時間を超えて存続することができないように、比較的短い存続期間を有することができる。しかし、一部のワークフローインスタンスの存続期間は比較的長い場合がある。いずれの場合も、初期データストアで起動されるワークフローインスタンスには、ワークフローインスタンスの存続期間中、初期データストアとトランザクションを実行する関連付けられるプロセスが含まれ得る。同様に、標的データストアで起動されるワークフローインスタンスには、ワークフローインスタンスの存続期間中標的データストアとトランザクションを実行するプロセスが関連付けられ得る。したがって、標的データストアに移行した後、ワークフロープロセスをホストする分散コンピューティングシステムは、初期データストアに記憶されているすべての一時データが存続期間の終了に達するまで、両方のデータストアを維持し続けることができる。
【0027】
初期データストアから標的データストアに移行する前に、顧客は、分散コンピューティングシステム(例えば、クラウドサービス、WFaaSなど)が、新しい不変データを作成する(例えば、新しいワークフロー定義を作成する)ことを要求することができる。初期データストアがまだプライマリデータストアであり、起動されるワークフローインスタンスを受信する場合は、新しい不変データを初期データストアと標的データストアの両方に作成して、この新しい不変データが両方のデータストアに確実に複製されるようにすることができる。
【0028】
本明細書に記載の技術によって多くの利点が達成される。ゼロダウンタイムのデータベース移行を実現する従来の方法では、非常に複雑で、非効率的なデータ複製が発生し、手動での調整が必要になる。例えば、リアルタイムデータ複製では、初期データストア内のすべてのデータを標的データストアに複製する必要があり、これにより、標的データストアに不要な一時データが複製される。さらに、リアルタイム複製では、新しいデータが作成されると両方のストア間でリアルタイムに「複製」されるように、移行プロセス中に作成されるデータの複製が必要になる。初期データストアと標的データストアが異なるスキーマを持つ異なるタイプ(例えば、キー値とマルチモーダル)である場合、リアルタイム複製方法は非常に複雑になる。別の例として、2つのデータストア間の重要な制約を強制する分散トランザクションメカニズムは非常に複雑になり、トランザクションホストを管理するための追加のコンピューティングリソースが必要になる。
【0029】
対照的に、ワークフロー起動論理は、重要な制約を維持しながら、ダウンタイムなしでデータの一部を複製できるようにし、データストア移行のための計算効率と時間効率の高いプロセスを提供する。不変データのみを複製することで、移行開始前に初期データストアが正常に動作している状態で不変データを複製できるため、移行遷移時間を最小限に抑えることができる。さらに、あるデータストアから別のデータストアへの移行中のデータのリアルタイム複製は、すべてのデータではなく不変データに限定され、移行プロセスの一部でのみ行われる。不変データの作成は通常、頻繁に実行される動作ではないため、移行中に作成される不変データを複製するための計算コストが削減される。
【0030】
図1は、初期データストア112から標的データストア114にデータを移行する例示的なプロセス101の簡略化されるブロック
図100および関連するフローチャートを示す。初期データストア112は、キー値データベース、NoSQLデータベース、マルチモーダルデータベースなどを含むがこれらに限定されない、いくつかの異なるタイプのデータストア、データベース、または他の記憶システムのいずれであってもよい。同様に、標的データストア114は、同じタイプのデータストアまたはデータベースのいずれであってもよい。いくつかの実施形態では、標的データストア114は、初期データストア112とは異なるタイプのデータストアである。例えば、初期データストア112はキー値データベースであってもよく、一方、標的データストアはマルチモーダルデータベースであってもよい。いくつかの他の実施形態では、初期データストア112と標的データストア114は同じタイプのデータベースであってもよい。特定の実施形態によれば、初期データストア112および標的データストア114は、同じスキーマを有してもよいし、異なるスキーマを有してもよい。
【0031】
初期データストア112および標的データストア114は、分散コンピューティングシステム、例えばクラウドコンピューティング環境で実装され得る。分散コンピューティングシステムは、1つまたは複数のアプリケーションに、初期データストア112、標的データストア114、または1つもしくは複数の他のデータストアとトランザクションする機能を提供するように構成され得る。分散コンピューティングシステムは、マルチテナント環境として1人または複数の顧客のためにアプリケーションをホストおよび実行するように構成することもできる。マルチテナント環境では、1人または複数の顧客は、分散コンピューティングシステム内で実行されるアプリケーションのインスタンスと対話することができ、分散コンピューティングシステムは、次に、初期データストア112および標的データストア114を含む1つまたは複数のデータストアとトランザクションすることができる。いくつかの実施形態では、データストアの一方または両方がプラガブルデータベースとして実装されてもよい。プラガブルデータベースは、より大きな仮想データベースまたは物理データベース内の仮想データベースであり得る。いくつかの実施形態では、分散コンピューティングシステムを使用する各顧客は、アプリケーションごとに独自のプラガブルデータベースを有することができる。例えば、顧客はワークフローデータに関連付けられているデータベースを持っている場合がある。いくつかの他の実施形態では、1人または複数の顧客が、アプリケーションに関連付けられている1つまたは複数のプラガブルデータベースを共有することができる。マルチテナント環境内の分離要件によって、環境内のデータ記憶リソースの共有範囲が決まり得る。
【0032】
ここでプロセス101の流れ図に目を向けると、初期データストア112から標的データストア114へのデータの移行は、プロセス101のブロックによって表されるフェーズに分割することができる。フェーズには、初期の安定フェーズ(ブロック102)、移行前フェーズ(ブロック104)、移行フェーズ(ブロック106)、移行後フェーズ(ブロック108)、および安定(終了)フェーズ(ブロック110)が含まれ得る。プロセス101は、現在のフェーズで1つまたは複数の先行条件を満たし、次にフェーズ移行をもたらす1つまたは複数のアクションを実行することに従って各フェーズを進むことができる。例えば、先行条件は、分散コンピューティングシステム内のすべてのホストノードが、標的データストア114がアプリケーションのプライマリデータストアに指定されていることを認識することであってもよい。
【0033】
ブロック102で、初期データストア112が実装される。初期データストア112の実装は、データ移行が実行される既存のデータストアを識別することを含むことができる。初期データストア112は、プライマリデータストアとして指定され得る。分散コンピューティングシステムは、分散コンピューティングシステムがトランザクションできるデータストアとしてプライマリデータストアを識別できる。初期データストア112は、「オープン」の初期ストア状態を有することもできる。初期データストア112がオープンのとき、初期データストア112に関連付けられているインスタンスを起動する要求(例えば、データエンティティの作成、ワークフローインスタンスの起動など)は成功し、
図100の「トランザクション」の矢印で示されるように、分散コンピューティングシステムは正常に初期データストア112とトランザクションを行うことができる。初期ストア状態およびプライマリデータストアとしての指定は、初期データストア112またはアプリケーションに関連付けられている別のデータストア(例えば、別のWFaaSデータストア)に記憶されるデータによって表され得る。
【0034】
安定フェーズから移行するための条件は、分散コンピューティングシステム内のすべてのホスト(例えば、WFaaSサーバ)が、初期データストア112がプライマリデータストアとして指定されていることを認識することを含み得る。安定フェーズから移行前フェーズへの移行には、標的データストア114を実装する動作が含まれ得る。
【0035】
ブロック104では、標的データストア114を分散コンピューティングシステム内に実装することができる。いくつかの実施形態では、標的データストア114は、分散コンピューティングシステムによりプロビジョニングされる新しいデータストアまたはデータベースであり得る。標的データストア114は、「オープン」の標的ストア状態を有することができる。標的ストア状態はオープンであるが、インスタンスを起動する要求(例えば、ワークフローインスタンスを起動し、データエンティティを作成する)は、プライマリデータストアとして初期データストア112にルーティングされる。
【0036】
移行前フェーズから移行フェーズに移行するための条件は、標的データストア114が、正しくプロビジョニングされており、標的ストア状態が「オープン」であり、初期データストア112に記憶されるデータの一部が標的データストア114に複製されていることを含むことができる。ワークフローデータを移行する場合、一時データまたはキーデータを複製することなく、複製されるデータの部分は、初期データストア112におけるすべての不変データとすることができる。移行前フェーズから移行フェーズへの移行には、初期ストア状態を「クローズ」に設定する動作が含まれ得る。この動作は、初期データストア112に記憶されている初期ストア状態を更新するための、初期データストア112とのトランザクションであってもよい。
【0037】
上で簡単に述べたように、移行前フェーズ中、データの一部の複製後または複製中であるが初期データストア112をクローズする前に、顧客は新しいインスタンスを起動することができる。初期データストア112はプライマリデータストアとして指定されているため、これらの新しいインスタンスは、初期データストア112とトランザクションするように構成されている関連プロセスを有することができ、標的データストア114で複製されるべきであるが、データの一部が複製されたときに省略され得る新しいデータを初期データストア112で作成することができる。移行前フェーズ中に適切なデータ複製を確保するために、新しいデータを作成するトランザクションは、初期データストア112と標的データストア114の両方でその新しいデータを作成するように構成され得る(新しく作成されるデータのリアルタイム複製と同様)。本明細書で例示されるWFaaSシステム内では、新しいデータは、新しい不変データであり得る。
【0038】
ブロック106では、初期ストア状態をオープンからクローズに変更することによって移行フェーズに入る。初期ストア状態がクローズされている場合、起動要求は初期データストア112から標的データストア114に再ルーティングされることになる。起動要求のこの再ルーティングは、初期データストア112がまだプライマリデータストアとして指定されている場合でも発生し得る。以前に起動されたインスタンスは、初期データストア112を実行およびトランザクションする関連プロセスが依然として有し得る。標的データストア114で起動されるワークフローインスタンスの場合、移行プロセスが移行フェーズに達すると、分散コンピューティングシステムは、初期データストアでキーデータをチェックしてキーべき等性を確認することができる。このチェックにより、同じキーを持つ複数のワークフローインスタンスが同時に起動されないようにすることができる。
【0039】
移行フェーズから移行後フェーズに移行するための条件は、すべてのホスト(例えば、WFaaSサーバ)がプライマリデータストア(初期データストア112)の状態が「クローズ」であることを認識することであり得る。この条件ではコンピューティング環境内のホストからの確認応答のみが必要になり得るため、移行フェーズにかかる時間は比較的短くなる(例えば、数分のオーダー)。移行フェーズから移行後フェーズへの移行は、標的データストア114をプライマリデータストアとして指定することを含むことができる。
【0040】
ブロック108で、標的データストア114は、今度は分散コンピューティングシステム内で起動されるインスタンスのプライマリデータストアとなる。プライマリデータストアとして、新しい起動要求は標的データストア114にルーティングされる。ブロック106の移行フェーズと同様に、以前に起動されるインスタンスは、依然として、初期データストア112と実行およびトランザクションする関連プロセスを有し得る。
【0041】
移行後フェーズから安定(終了)フェーズに移行するための条件は、標的データストア114に複製されなかった初期データストア112内のデータが初期データストア112から排出されることを含むことができる。ワークフローデータの場合、排出されるデータは一時データであり、一定期間後にガベージコレクションプロセスによって削除され得る。さらなる条件は、初期データストア112に記憶されるすべてのキーが範囲外になることであり得る。初期データストア112からのデータは、初期データストア112を実行しトランザクションするインスタンスおよびその関連プロセスの存続期間が終わるまで存続し得るため、移行後フェーズは比較的長期間(例えば、数日間)続き得る。安定(終了)フェーズへの移行は、分散コンピューティングシステムからの初期データストア112の除去(例えば、プロビジョニング解除)であり得る。
【0042】
最後に、ブロック110で、コンピューティング環境は、安定(終了)フェーズの安定状態に戻る。標的データストア114は、プライマリデータストアであり、インスタンス(例えば、ワークフローインスタンス、新しいデータエンティティの作成など)の起動要求を受信することができる。安定(終了)フェーズは、初期安定フェーズのミラーであり、標的データストア114が初期データストア112の代わりとなる。
【0043】
図5に関して以下でより詳細に説明するように、移行プロセスには、データ移行のロールバックをサポートする機能を含めることができる。ロールバック動作の場合、ワークフローインスタンスの起動論理は同じままで、本明細書で開示される技術に従来の移行方法に比べてさらなる柔軟性と利点を提供する。安定(終了)フェーズからの移行のロールバックは、前方移行について前述したように進行する。移行前フェーズからのロールバックには、標的データストア114の削除が含まれる。いくつかの実施形態では、競合を避けるために、移行フェーズ中のロールバックは許可されない場合がある。移行後フェーズからのロールバックには、標的データストア114で作成された新しいデータを初期データストア112に複製し、その後、システムが前方移行の移行前状態にあるかのように上記のように処理を進めることが含まれ得るが、データストアの「初期」と「標的」の性質が交換される。
【0044】
図2は、いくつかの実施形態による、データストアとトランザクションするためのプロセスを起動できるワークフローサービスを実装するクラウドコンピューティング環境200内の分散コンピューティングシステム210を示す。分散コンピューティングシステム210は、分散コンピューティングシステムを実装するためにコンピュータ可読命令(例えば、コード、プログラム)を実行する1つまたは複数のコンピューティングシステムによって実装され得る。
図2に示されるように、分散コンピューティングシステム210は、ロードバランサ212、ゲートウェイ214(例えば、マルチテナントゲートウェイ)、アプリケーションプログラミングインターフェース(API)サーバ216、および1つまたは複数の実行環境222を含むさまざまなシステムを含む。
図2に示すシステムによって使用される、またはシステムによって生成されるデータまたは情報の部分は、データ記憶装置256に記憶され得る。いくつかの実施形態では、データ記憶装置256は、例えば
図1の初期データストア112および標的データストア114を含む、本明細書で説明される1つまたは複数のデータストアを含むことができる。
図2に示されるシステムは、コンピューティングシステム、ハードウェア、またはそれらの組み合わせの1つまたは複数の処理装置(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)を使用して実装され得る。ソフトウェアは、非一時的な記憶媒体(例えば、メモリ装置)に記憶されてもよい。
【0045】
分散コンピューティングシステム210は、さまざまな構成で実装することができる。
図2に示される実施形態では、分散コンピューティングシステム210は、クラウドプロバイダネットワークの1つまたは複数のサーバ上に実装することができる。
図2に示す分散コンピューティングシステム210を含むコンピューティング環境200は、単なる一例であり、請求される実施形態の範囲を不当に限定することを意図するものではない。当業者であれば、多くの可能な変形、代替、および修正を認識するであろう。例えば、一部の実装では、分散コンピューティングシステム210は、
図2に示されるシステムよりも多いまたは少ないシステムを使用して実装することができ、2つ以上のシステムを組み合わせてもよいし、システムの異なる構成または配置を有してもよい。
【0046】
いくつかの実施形態では、実行環境(例えば、実行環境222)は、ワークフローのタスク(例えば、ワークフローインスタンス、ステップインスタンスなど)の一部またはすべてを実行するための環境(例えば、「クライアント」ノード、ホストノードなど)を表し得る。異なる実行環境がテナント(顧客など)に関連付けられ得る。例えば、
図2に示される実施形態では、実行環境222は、分散コンピューティングシステムのテナント220に関連付けられている。1つまたは複数の異なる実行環境を追加のテナントに関連付けることができる。実行環境は、任意の適切な数のコンピューティングノードを利用して調整される方法で動作を実行するように構成され得る。「コンピューティングノード」(本明細書では「ノード」とも呼ばれる)は、サーバ、コンピューティング装置、仮想マシン、または実行環境の一部として動作を実行するように構成されている任意の適切な物理的もしくは仮想コンピューティングリソースを含み得る。
【0047】
分散コンピューティングシステムのテナントに割り当てられるリソースは、階層的に配置されている複数のクラウドベースのリソースから選択される。例えば、
図2に示すように、リソースは、クラウドインフラストラクチャサービス240のプールであり得る。クラウドインフラストラクチャサービス240は、メタデータストア242、サービスとしてのワークフロー(WFaaS)244、仮想クラウドネットワーク(VCN)246、IDおよびアクセス管理(IAM)サービス248、ならびにデータカタログ250を含むことができる。メタデータストア242は、サービスとしてのキー値データベース(KaaS)または他の適切なデータ記憶サービスとして実装することができる。
【0048】
特定の実施形態では、ユーザ(例えば、顧客202)は、場合によってはパブリックネットワーク208(例えば、インターネット)を介して分散コンピューティングシステム210に通信可能に結合されるコンピューティング装置204を介して、分散コンピューティングシステム210と対話することができる。コンピューティング装置204は、携帯電話、タブレット、デスクトップコンピュータなどを含むがこれらに限定されないさまざまなタイプのものであってもよい。ユーザは、コンピューティング装置によって実行されるアプリケーションのコンソールユーザインターフェース(UI)(グラフィカルユーザインターフェースであってもよい)を使用して、または分散コンピューティングシステム210によって提供されるAPI動作を介して、クラウドコンピューティングシステムと対話することができる。
【0049】
一例として、分散コンピューティングシステム210のテナント220に関連付けられているユーザは、新しいデータエンティティを作成する(例えば、ワークフローインスタンスを起動する)ために、分散コンピューティングシステム210に要求(例えば、起動要求、インスタンス起動要求など)を送信することによって、分散コンピューティングシステム210と対話することができる。これに応じて、分散コンピューティングシステム210は、実行環境222内で1つまたは複数のワーカー224を実行することができる。起動要求は、分散コンピューティングシステム210内のロードバランサ212によって受信され、分散コンピューティングシステム210は、分散コンピューティングシステム内のマルチテナントプロキシサービス、例えばゲートウェイ214に要求を送信することができる。ゲートウェイ214は、ユーザの要求を認証/認可し、その要求をAPIサーバ216にルーティングする役割を担ってもよく、APIサーバ216は、1つもしくは複数のクラウドサービス(例えば、メタデータストア242、WFaaS244)または実行環境222と通信して要求を実行するための動作を実行するように構成され得る。特定の例では、ゲートウェイ214は、ユーザを認可し、ユーザの要求をAPIサーバ216に送信する共有マルチテナントハイパーテキスト転送プロトコル(HTTP)プロキシサービスを表すことができる。
【0050】
WFaaSプロセスの場合、ワーカー224は、1つまたは複数のワークフローインスタンスに対応する1つまたは複数のタスクを実行することができる。ワーカー224は、データ記憶装置256およびメタデータストア242とトランザクションするように構成することができる。メタデータストア242は、指定されたプライマリデータストアを識別することができる。ワークフローインスタンスに対応する1つまたは複数のタスクは、データ記憶装置256における1つまたは複数のデータエンティティの作成を含むことができる。メタデータストア242との対話は、データアクセスオブジェクト226を経由することができ、データアクセスオブジェクト226は、分散コンピューティングシステム210内に存在するデータ記憶サービスと対話するように構成することができる。
図2は、データ記憶装置256を実装するデータ記憶システムを制約しない。
【0051】
起動要求にはキーを含めることができる。いくつかの実施形態では、キーは、代理範囲を伴う代理キーとすることができる。WFaaS244は、グローバルに一意のインスタンスIDを顧客に返すことによって起動要求に応答することができる。インスタンスIDは一時データの一例であり得、一方、キーはキーデータの一例である。ワークフローインスタンスが起動されると、インスタンスIDおよびキーは、ワーカー224がトランザクションするように構成されているデータストアに記憶され得る。
【0052】
いくつかの実施形態では、顧客は、ワークフローインスタンスに関連付けられているインスタンスIDまたは代理キーを標的とするクエリを送信することによって、ワークフローインスタンスをクエリすることができる。移行中にこの機能を保護するために、インスタンスIDには、起動時にインスタンスが関連付けられていたデータストアの参照またはその他の識別情報を含めることができる。インスタンスIDを標的とするクエリは、次いで、そのインスタンスを扱っているデータストアを標的にする。データストア識別情報をインスタンスIDにエンコードすると、関連するプログラム関数(例えば、API呼び出し)が移行中にワークフローインスタンスと正常に対話できるようになる。代理キークエリの場合、WFaaSは初期データストアと標的データストアの両方を標的にし、インスタンスを含むデータストアからクエリ結果(例えば、インスタンスの一時データ)を受信する。
【0053】
図3は、一実施形態による、データの移行のための例示的な初期データストア構成302および標的データストア構成304の簡略
図300である。初期データストア構成302と標的データストア構成304は両方とも、ワークフローインスタンスを実行するマルチテナント環境用に実装され、各テナントは独自のデータベースに関連付けられる。
図3に示すように、初期データストア構成302は、データベースサービス(KaaS)306によって提供される1つまたは複数のキー値データベースを含むことができる。例えば、テナントデータベース308~312は、各テナントのワークフローデータ(例えば、不変データ、一時データ、およびキーデータ)の専用データベース(例えばプラガブルデータベース)であり得る。この例では、データベースサービス(KaaS)306は、メタデータストア314(例えば、メタデータストア242)とデータ記憶装置(例えば、データ記憶装置256)の両方として二重の役割を果たす。さらに、初期データストア構成302は、キー値データベースとして実装される1つまたは複数の追加のデータストアまたはデータベース(例えば、メタデータストア314)を含むことができる。メタデータストア314は、ワークフローサービス(例えば、
図2のサービス(WFaaS)244に類似し得るWFaaS)の制御プレーンサービス316に関連付けられているデータを記憶するために使用され得る。
【0054】
ワークフローサービスデータプレーン318は、
図2に関して説明した実行環境222を含む、分散コンピューティングシステムの1つまたは複数のテナントによって使用されるWFaaSのデータプレーンサービスを表すことができる。したがって、ワークフローサービスデータプレーン318は、分散コンピューティングシステムのテナントのワークフローインスタンスに関連付けられている実行プロセスを含むことができる。ワークフローサービスデータプレーン318は、初期データアクセスオブジェクト(DAO)322を介してデータベースサービス(KaaS)306と対話することができる。初期DAO322は、特定のデータベースサービス、この場合はKaaS306用に構成されるインターフェース層であり得る。当技術分野で典型的なデータアクセスオブジェクトと同様に、初期DAO322は、ワークフローデータプレーン318(例えば、ワーカー224)の実行プロセスとKaaS306によって使用されるデータ記憶システムとの間の抽象化を提供することができる。他のいくつかの実施形態では、初期データストア構成は、異なるDAOを使用して抽象化層を提供できる異なるタイプのデータベースサービス(例えば、マルチモーダル)を実装することができる。
【0055】
WFaaSは、ワークフローインスタンスの実行の管理を支援するために、1つまたは複数のバックグラウンドジョブ320を含むこともできる。これらのバックグラウンドジョブ320には、アンチエントロピーエンジン、遅延ワークフロー実行プロセス、ガベージコレクション、およびサービス健全性モニタリングを含めることができる。これらのジョブは、初期データストア構成302内の1つまたは複数のデータストアとトランザクションを行うように構成できる。バックグラウンドジョブ320は、ワークフローサービスデータプレーン318用と同じ初期DAO322を使用してKaaS306とインターフェースすることができる。
【0056】
データ移行後、標的データストア構成304は、初期データストア構成302内のデータストアとは異なる1つまたは複数のデータストアを含むことができる。
図3に示されるように、標的データストア構成304は、コンテナデータベース324を含むことができる。コンテナデータベース324は、初期データストア構成から移行されたテナントのワークフローデータプレーンデータを含む1つまたは複数のプラガブルデータベースを含むことができる。移行後の新しい構成には、顧客ごとに個別のデータストアに記憶されるデータを含めることができる。いくつかの実施形態では、テナントは、独自のデータストア、例えば、テナントデータベース326およびテナントデータベース328を有し得る。分散コンピューティングシステムの他のテナントは、テナントデータストア330用に1つまたは複数のプラガブルデータベースを持つことができる。
【0057】
標的データストア構成304には、初期データストア構成302とは異なるデータ記憶システムが含まれ得るため、いくつかの実施形態では、ワークフローサービスデータプレーン318は、標的データストア構成304のデータ記憶システムとインターフェースするように構成されている標的DAO332を実装することができる。移行後の構成に対して実装されるデータ記憶システムのタイプが移行前の構成から変更されていない実施形態では、ワークフローサービスによって使用されるDAOは変更されない可能性がある。いくつかの実施形態では、初期データストア構成302の1つまたは複数のデータストアは移行されない可能性がある。例えば、ワークフローサービス制御プレーン316データのメタデータストア314は、テナントの移行プロセス中に変更されないままであってもよい。メタデータストア314は、標的データストア構成304内の他のデータストアとは異なるタイプ(例えば、キー値)にすることができる。(KaaS306を介して)メタデータストアとインターフェースするために、ワークフローサービスデータプレーン318は、新しい標的DAO332を実装することに加えて、初期DAO322を保持してもよい。
【0058】
図4は、いくつかの実施形態による、初期データストアから標的データストアへのデータの移行中にインスタンス起動論理を扱うための例示的なプロセスの流れ図である。初期データストアは、
図1の初期データストア112を含む、本明細書で説明する初期データストアのうちの1つであってもよい。同様に、標的データストアは、本明細書で説明される標的データストアの1つ、例えば、標的データストア114であってもよい。プロセス400(同様にプロセス600および700)は、論理流れ図として示されており、その各動作は、ハードウェア、コンピュータ命令、またはそれらの組み合わせで実装できる一連の動作を表す。コンピュータ命令の文脈では、動作は、1つまたは複数のプロセッサによって実行されると、記載される動作を実行する1つまたは複数のコンピュータ可読記憶媒体に記憶されるコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令には、特定の機能を実行する、または特定のデータ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などが含まれる。動作を説明する順序は制限として解釈されることを意図したものではなく、説明される動作の任意の数を省略したり、任意の順序および/または並行して組み合わせてプロセスを実装することができる。
【0059】
プロセス400によって示される起動論理は、分散コンピューティングシステム内のデータストアへの読み取りおよび書き込みを担当する分散コンピューティングシステムのプロセスによって実装され得る。読み取りと書き込みは、ワークフローインスタンスを起動する目的で行われ得る。いくつかの実施形態では、プロセスはワークフローサービス(例えば、WFaaS244)の構成要素であってもよい。
【0060】
エントリ402で、プライマリデータストアを決定することによって、移行中にインスタンスを起動するプロセスが始まる。移行プロセスのフェーズに応じて、プライマリデータストアは初期データストアまたは標的データストアになり得る。例えば、
図1に関して説明した移行前フェーズおよび移行フェーズ中に、プライマリデータストアが初期データストアである。移行後および安定(終了)フェーズ中に、プライマリデータストアは標的データストアである。プロセス400の起動論理は、移行フェーズに依存しないため、2つのデータストア間の移行またはロールバック動作のどのフェーズ中でも適用できる。プライマリデータストアとして指定されていないデータストアは、セカンダリデータストアと呼ばれ得る。プライマリデータストアの指定は、プライマリデータストアまたは分散コンピューティングシステムに実装される別のデータストアに記憶されるフラグまたは他のデータであってもよい。
【0061】
決定404で、402で決定されるプライマリデータストアがチェックされて、そのストア状態が決定される。このチェックは、プライマリデータストア内に記憶され得るストア状態を読み取るためのプライマリデータストアとのトランザクションにすることができる。いくつかの実施形態では、異なるデータストアは、プライマリデータストアおよびセカンダリデータストアのストア状態を含むことができるため、確認には、異なるデータストアからストア状態データを読み取るトランザクションが含まれる。プライマリデータストアが「オープン」である場合、起動要求はプライマリデータストアにルーティングされる。プライマリデータストアが「クローズ」である場合、起動要求はセカンダリデータストアにルーティングされる。インスタンスを起動する前に、追加のチェックを行って、キーデータのべき等性と、起動要求の処理に必要な時間内にプライマリデータストア状態が変化していないことを確認できる。
【0062】
プライマリデータストアがオープンであることを確認した後、ワークフローインスタンスがワークフローサービスのシングルトンキー要件に違反していないことを確認し、分散コンピューティングシステムは、決定406で、起動要求とともに受信したキーの存在についてセカンダリデータストアをチェックすることができる。セカンダリデータストアに一致するキーがある場合、そのキーを持つインスタンスがセカンダリデータストアですでに起動されている。同じキーを持つ第2のインスタンスは起動できない可能性があるため、エンドポイント408で競合が発生してプロセスが中止され得る。この動作は、移行が発生していない安定フェーズ中でも同じである。顧客は同じキーを使用して第2のインスタンスを起動できない。
【0063】
セカンダリデータストアに一致するキーがない場合、プロセスはブロック410に進むことができ、インスタンスは、実行環境内の実行プロセス(例えば、ワーカー224)によって実行される対応するタスクとともに起動され、現在プライマリデータストアとして指定されているデータストアとトランザクションを行うように構成され、プライマリデータストアは、移行フェーズに応じて、初期データストアまたは標的データストアになり得る。
【0064】
移行中、プライマリデータストアは、そのストア状態が「オープン」から「クローズ」に変更され得る。ストア状態の変更はプライマリデータベースとのトランザクションであり得るため、インスタンスが完全に起動される前(例えば、ワークフローインスタンスがプライマリデータストアにコミットされる前)に、プライマリデータストアで状態が更新(およびその更新がコミット)され得る。言い換えれば、起動要求の実行と、ある移行フェーズから次の移行フェーズへの移行命令の受信がほぼ同時に発生する可能性があるため、インスタンスが起動される前にプライマリデータストアがクローズされ、その関連キーデータが対応するデータストアに記憶される。この場合、同じキーを持つ第2の起動要求が受信され、(プライマリデータストアがクローズされたばかりなので)セカンダリデータストアにルーティングされ、セカンダリデータストアで第2のインスタンスが正常に起動され得る(第1の起動要求のキーがプライマリデータストアにコミットされていないため)。これを回避するために、プライマリデータストアでの起動をコミットする前に、決定412で2回目の確認が行われ、プライマリデータストアがまだ「オープン」かどうかがチェックされる。そうでない場合、プロセスはエンドポイント414で例外を発生して中止され得る。
【0065】
プライマリデータストアがまだオープンである場合、ブロック416で起動トランザクションをコミットすることができる。決定418で最終チェックを実行して、起動トランザクション(例えば、インスタンスメタデータをプライマリデータストアにコミットすること)が成功したことを確認することができる。そうである場合、プロセスはエンドポイント420で成功のレポートを出して終了できる。起動コミットが成功しなかった場合、プロセスはエンドポイント408で中止され得る。
【0066】
決定404に戻ると、起動要求が受信されるときにプライマリデータストアがクローズされている場合、その要求はセカンダリデータストアにルーティングされる。ブロック422、424、426、428、および430は、それぞれ、上で説明した対応するブロック406、408、410、416、および418について説明した動作と同様であるが、セカンダリデータストアでインスタンスが起動されるため、インスタンスに対応する実行プロセスは、セカンダリデータストアとトランザクションを行うように構成されている。決定422で、キーデータのチェックがプライマリデータストア(例えば、セカンダリデータストアが現在標的データストアである場合には初期データストア)で実行される。移行プロセスでは、セカンダリデータストアを新しいプライマリデータストアとして指定する前に、プライマリデータストアの状態が「オープン」から「クローズ」に変更されるため、セカンダリデータストアに対して決定412の安全性チェック動作が実行されない場合がある。
【0067】
図5は、いくつかの実施形態による、初期データストアから標的データストアへのデータの移行をロールバックするための例示的なプロセス501の流れ
図500を示す。初期データストアおよび標的データストアは、
図1の初期データストア112および標的データストア114と同様であり得る。プロセス101は、
図1に示したプロセスと同じであってもよく、データ移行の5つのフェーズがある。移行のロールバックには、標的データストアで作成される新しいデータの複製、標的データストアのクローズ、初期データストアのプライマリデータストアとしての指定、および分散コンピューティングシステムからの標的データストアの最終的な削除が含まれ得る。一般に、ロールバック動作は、前述した前方移行動作の逆である。
【0068】
いくつかの実施形態では、ロールバック動作は、移行フェーズを除く移行プロセスのすべてのフェーズからサポートされる。上で簡単に述べたように、移行前フェーズ(つまり、初期データストアがクローズする前)からのロールバック動作502には、標的データストアで新しいデータが作成されていないため、標的データストアの削除(例えば、プロビジョニング解除)が含まれ得る。安定(終了)フェーズからのロールバック動作504は、プロセス101の前方移行の逆であることができ、ロールバックではなく別個の移行として扱うことができる。
【0069】
移行後フェーズからのロールバックプロセス501の場合、標的データストアには、移行後のフェーズ中に分散コンピューティングシステムにより(例えば、顧客による新しいワークフロー定義の作成に応じて)作成される新しいデータ(例えば、新しい不変データ)が含まれ得る。ロールバックは、前方移行と同様に進行するが、プロセスが逆になる。
【0070】
ブロック506で、初期ストア状態を「クローズ」から「オープン」に変更することによってロールバック前フェーズに入る。ロールバック前フェーズに入る条件として、標的データストア内の新しいデータの一部(例えば、新しい不変データ)が初期データストアに複製される。
【0071】
ブロック508で、標的データストアをクローズすることによってロールバックフェーズに入る。
図4に関して説明した起動論理は、ロールバック前、ロールバック、およびロールバック後のフェーズで受信した起動要求に引き続き適用される。ロールバック後フェーズに移行するための条件は、すべてのホスト(例えば、WFaaSサーバ)がプライマリデータストアの状態がクローズされていることを認識することであり得る。
【0072】
ブロック510で、初期データストアをプライマリデータストアとして指定することによって、ロールバック後フェーズに入る。安定フェーズへの移行条件は、すべてのホスト(例えば、WFaaSサーバ)が、初期データストアがプライマリデータストアに指定されていることと、データ(例えば、一時データ、キーデータ)が標的データストアから排出されることを認識することであり得る。これらの条件が満たされると、標的データストアを削除することで、初期データストアのみを含む安定フェーズに入ることができる。
【0073】
図6は、いくつかの実施形態による、初期データストアから標的データストアへのデータの移行中にデータエンティティを作成する(例えば、ワークフローインスタンスを起動する)例示的なプロセス600の簡略化される流れ図である。初期データストアおよび標的データストアは、本明細書で説明する初期データストアおよび標的データストアのいずれか、例えば
図1の初期データストア112および標的データストア114と同様でよい。
【0074】
プロセス600は、分散コンピューティングシステムが初期データストアを実装することでブロック602で開始することができる。初期データストアの実装には、データストアのプロビジョニングが含まれ得る。初期データストアは、初期データストアのユーザ(例えば、顧客202)に関連付けられているデータを記憶するように構成することができる。ユーザは、分散コンピューティングシステムのテナントであり得る。初期データストアは初期ストア状態を持つことができる。初期ストア状態は、オープンまたはクローズのいずれかになり得る。いくつかの実施形態では、ユーザに関連付けられているデータは、不変データ、一時データ、およびキーデータであり得る。初期データストアはプライマリデータストアとして指定され得る。プライマリデータストアとしての指定および初期ストア状態は、初期データストアまたは分散コンピューティングシステムに関連付けられている別のデータストアに記憶されるデータ値であってもよい。
【0075】
ブロック604で、分散コンピューティングシステムは標的データストアを実装することができる。初期データストアと同様に、標的データストアは、分散コンピューティング環境で利用可能なリソースからプロビジョニングできる。標的データストアは、初期データストアと同じタイプのデータストア(例えば、同じデータベースタイプ)であってもよいし、異なるタイプであってもよい。標的データストアは標的ストア状態を持つことができる。初期ストア状態と同様に、標的ストア状態はオープンまたはクローズの場合があり、標的データストアまたは分散コンピューティング環境内の別のデータストアに記憶されるデータ値であり得る。
【0076】
ブロック606で、初期データストアに記憶されるデータの一部に対してデータ移行プロセスを開始することができる。移行プロセスは、
図1に関して説明したプロセス101と同様とすることができる。いくつかの実施形態では、移行プロセスは、WFaaSシステムのテナントを、テナントのワークフローデータに対応する初期データストアから標的データストアに移行する。データの一部には不変のワークフローデータが含まれ得るが、移行されないデータには、1つまたは複数のワークフローインスタンスに関連付けられている一時データやキーデータが含まれ得る。データの一部を移行することには、初期データストアから標的データストアへその一部を複製することが含まれ得る。データの一部の移行は、一時データとキーデータが初期データストアから排出されるまで続行できる。
【0077】
データの一部の移行中、分散コンピューティングシステムは依然としてインスタンスの起動要求を扱うことができる。インスタンスに関連付けられているデータエンティティは、移行のフェーズと本明細書で説明するプロセスに従って、初期データストアまたは標的データストアのいずれかで作成できる。ブロック608で、分散コンピューティングシステム(例えば、サービス(WFaaS)244のスケジューリングプロセス)は、第1のデータエンティティ(例えば、ワーカー224によって実行されるタスクを含むワークフローインスタンスなど)を作成する要求を受信することができる。要求には、キーおよびキー範囲を含む、第1のデータエンティティに関連付けられているメタデータを含めることができる。分散コンピューティングシステムの1つまたは複数のプロセス(例えば、ワーカー224)は、初期データストアとトランザクションして第1のデータエンティティを作成するように構成することができる。例えば、分散コンピューティングシステムは、ワークフローを実行するために不変データ(例えば、ワークフロー定義)を読み取ることができる。
【0078】
ブロック610で、分散コンピューティングシステムは、要求に応答して、初期データストアがプライマリデータストアとして指定されていると決定することができる。ブロック612で、初期データストアに関連付けられている初期ストア状態も決定され得る。初期ストア状態の決定には、状態に対応するデータ値を読み取るための初期データストアとのトランザクションが含まれ得る。初期ストア状態は「オープン」または「クローズ」のいずれかになり得る。
【0079】
初期ストア状態の決定に応答して、分散コンピューティングシステムは、ブロック614で、キーが標的データストアに存在しないことを確認することができる。ブロック616で、分散コンピューティングシステムは、初期データストアに第1のデータエンティティを作成することができる。初期データストアで第1のデータエンティティを作成することには、初期データストア内のデータを書き込むこと、読み取ること、更新すること、および削除することが含まれ得る。分散コンピューティングシステムは、第1のデータエンティティに関連付けられているデータを初期データストアにコミットする前に、第1のデータエンティティの作成を中止することもできる。
【0080】
図7は、いくつかの実施形態による、初期データストアから標的データストアへのデータの移行中に第2のデータエンティティを作成する(例えば、第2のワークフローインスタンスを起動する)例示的なプロセス700の別の簡略化される流れ図である。
図6と同様に、初期データストアおよび標的データストアは、本明細書で説明される他の初期データストアおよび標的データストアと同様であり得る。プロセス700は、上で論じたプロセス600の拡張と考えることができる。
【0081】
プロセスは、初期データストアから標的データストアへのデータの移行中にブロック702で始まる。標的データストアはプライマリデータストアとして指定され得る。分散コンピューティングシステムは、ブロック704で、第2のデータエンティティを作成するための第2の要求を受信することができる。第2の要求は、第2のキーおよび第2のキー範囲を含む、第2のデータエンティティに関連付けられているメタデータを含むことができる。分散コンピューティングシステムの1つまたは複数のプロセス(例えば、ワーカー224)は、標的データストアとトランザクションして第2のデータエンティティを作成するように構成することができる。例えば、第2の分散コンピューティングシステムは、ワークフローを実行するために不変データ(例えば、ワークフロー定義)を読み取ることができる。
【0082】
ブロック706で、分散コンピューティングシステムは、要求に応答して、標的データストアがプライマリデータストアに指定されたと決定することができる(ブロック702)。ブロック708で、標的ストア状態も決定され得る。標的ストア状態は「オープン」または「クローズ」の場合がある。標的ストア状態がオープンであるという決定に応答して、分散コンピューティングシステムは、ブロック710で、第2のキーが初期データストアに存在しないことを確認することができる。最後に、ブロック712で、分散コンピューティングシステムは、標的データストアに第2のデータエンティティを作成することができる。標的データストアで第2のデータエンティティを作成することには、標的データストア内のデータを書き込むこと、読み取ること、更新すること、および削除することが含まれ得る。分散コンピューティングシステムは、第2のデータエンティティに関連付けられているデータを標的データストアにコミットする前に、第2のデータエンティティの作成を中止することもできる。
【0083】
サービスとしてのインフラストラクチャのアーキテクチャ例
上で述べたように、サービスとしてのインフラストラクチャ(IaaS)は、クラウドコンピューティングの特定のタイプの1つである。IaaSは、パブリックネットワーク(インターネットなど)経由で仮想化されるコンピューティングリソースを提供するように構成できる。IaaSモデルでは、クラウドコンピューティングプロバイダは、インフラストラクチャ構成要素(例えば、サーバ、記憶装置、ネットワークノード(例えばハードウェア)、展開ソフトウェア、プラットフォーム仮想化(例えばハイパーバイザ層)など)をホストすることができる。場合によっては、IaaSプロバイダは、これらのインフラストラクチャ構成要素に付随するさまざまなサービス(例えば、請求、監視、ロギング、負荷分散、およびクラスタリングなど)を提供することもできる。したがって、これらのサービスはポリシー推進型であり得るため、IaaSユーザは負荷分散を推進するポリシーを実装して、アプリケーションの可用性と性能を維持できる可能性がある。
【0084】
場合によっては、IaaS顧客は、インターネットなどのワイドエリアネットワーク(WAN)を介してリソースおよびサービスにアクセスすることができ、クラウドプロバイダのサービスを使用してアプリケーションスタックの残りの要素をインストールすることができる。例えば、ユーザはIaaSプラットフォームにログインして、仮想マシン(VM)の作成、各VMへのオペレーティングシステム(OS)のインストール、データベースなどのミドルウェアの展開、ワークロードとバックアップ用の記憶バケットの作成、さらにはエンタープライズソフトウェアをそのVMにインストールすることができる。その後、顧客はプロバイダのサービスを使用して、ネットワークトラフィックのバランス、アプリケーションの問題のトラブルシューティング、性能の監視、災害復旧の管理などのさまざまな機能を実行できる。
【0085】
ほとんどの場合、クラウドコンピューティングモデルはクラウドプロバイダの参加を必要とする。クラウドプロバイダは、IaaSの提供(例えば、提供、レンタル、販売)を専門とするサードパーティサービスであってもかまわないが、そうである必要はない。エンティティはプライベートクラウドを展開して、独自のインフラストラクチャサービスプロバイダになることも選択できる。
【0086】
いくつかの例では、IaaS展開は、新しいアプリケーション、またはアプリケーションの新しいバージョンを、準備されているアプリケーションサーバなどに配置するプロセスである。これには、サーバを準備するプロセス(例えば、ライブラリ、デーモンなどのインストールなど)も含まれ得る。これは多くの場合、ハイパーバイザ層(例えば、サーバ、記憶装置、ネットワークハードウェア、および仮想化)の下のクラウドプロバイダによって管理される。したがって、顧客は、(OS)、ミドルウェア、および/またはアプリケーション展開(例えば、セルフサービス仮想マシン(例えば、オンデマンドでスピンアップできる)など)などの取扱いに責任を負うことができる。
【0087】
いくつかの例では、IaaSプロビジョニングは、使用するコンピュータまたは仮想ホストを取得し、それらに必要なライブラリまたはサービスをインストールすることさえも指し得る。ほとんどの場合、展開にはプロビジョニングが含まれていないため、最初にプロビジョニングを実行する必要があり得る。
【0088】
場合によっては、IaaSプロビジョニングには2つの異なる課題がある。まず、何かを実行する前にインフラストラクチャの初期セットをプロビジョニングするという最初の課題がある。第2に、すべてがプロビジョニングされた後に、既存のインフラストラクチャを進化させるという課題がある(例えば、新しいサービスの追加、サービスの変更、サービスの削除など)。場合によっては、インフラストラクチャの構成を宣言的に画定できるようにすることで、これら2つの課題に対処できる場合がある。言い換えれば、インフラストラクチャ(例えば、どの構成要素が必要か、どのように対話するか)は1つまたは複数の構成ファイルによって画定できる。したがって、インフラストラクチャの全体的なトポロジ(例えば、どのリソースがどのリソースに依存するか、およびそれぞれがどのように連携するかなど)を宣言的に記述することができる。場合によっては、トポロジが画定されると、構成ファイルに記述されているさまざまな構成要素を作成および/または管理するワークフローを生成できる。
【0089】
いくつかの例では、インフラストラクチャは、相互接続されている多くの要素を有し得る。例えば、コアネットワークとしても知られる、1つまたは複数の仮想プライベートクラウド(VPC)(例えば、構成可能および/または共有コンピューティングリソースの潜在的にオンデマンドのプール)が存在し得る。いくつかの例では、ネットワークの受信トラフィックおよび/または送信トラフィックがどのように設定されるかを画定するためにプロビジョニングされる1つまたは複数の受信/送信トラフィックグループルールと、1つまたは複数の仮想マシン(VM)が存在する場合もある。ロードバランサ、データベースなどの他のインフラストラクチャ要素もプロビジョニングできる。より多くのインフラストラクチャ要素が望まれたり追加されたりするにつれて、インフラストラクチャは段階的に進化し得る。
【0090】
場合によっては、さまざまな仮想コンピューティング環境にわたるインフラストラクチャコードの展開を可能にするために、継続的展開技術が使用されてもよい。さらに、説明されている技術により、これらの環境内でのインフラストラクチャ管理が可能になる。いくつかの例では、サービスチームは、1つまたは複数の、しかし多くの場合、多くの異なる生産環境(例えば、さまざまな異なる地理的位置にまたがり、場合によっては全世界に及ぶ)に展開することが望ましいコードを書くことができる。しかし、例によっては、コードを展開するインフラストラクチャを最初にセットアップする必要があり得る。場合によっては、プロビジョニングは手動で行うことができ、プロビジョニングツールを利用してリソースをプロビジョニングすることができ、および/または展開ツールを利用して、インフラストラクチャがプロビジョニングされた後にコードを展開することができる。
【0091】
図8は、少なくとも1つの実施形態による、IaaSアーキテクチャのパターン例を示すブロック
図800である。サービスオペレータ802は、仮想クラウドネットワーク(VCN)806およびセキュアホストサブネット808を含むことができるセキュアホストテナント804に通信可能に結合することができる。いくつかの例では、サービスオペレータ802は、1つまたは複数のクライアントコンピューティング装置を使用することができ、これは、ポータブルハンドヘルド装置(例えば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))もしくはウェアラブル装置(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、Microsoft Windows Mobile(登録商標)などの実行ソフトウェア、および/またはiOS、WindowsPhone、Android、BlackBerry8、PalmOSなどのさまざまなモバイルオペレーティングシステム、ならびにインターネット、電子メール、ショートメッセージサービス(SMS)、Blackberry(登録商標)、または有効な他の通信プロトコルであり得る。あるいは、クライアントコンピューティング装置は、例えば、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinux(登録商標)オペレーティングシステムを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む汎用パーソナルコンピュータであってもよい。クライアントコンピューティング装置は、例えばGoogle Chrome OSなどのさまざまなGNU/Linuxオペレーティングシステムを含むがこれらに限定されない、さまざまな市販のUNIX(登録商標)またはUNIX類似のオペレーティングシステムのいずれかを実行するワークステーションコンピュータであり得る。代替として、または追加として、クライアントコンピューティング装置は任意の他の電子装置であってもよく、シンクライアントコンピュータ、インターネット対応ゲームシステム(例えば、Kinect(登録商標)ジェスチャ入力装置あり、または無しのMicrosoft Xboxゲームコンソール)、および/またはVCN806および/またはインターネットにアクセスできるネットワークを介して通信できるパーソナルメッセージング装置などである。
【0092】
VCN806は、SSHVCN812に含まれるLPG810を介してセキュアシェル(SSH)VCN812に通信可能に結合することができるローカルピアリングゲートウェイ(LPG)810を含むことができる。SSHVCN812は、SSHサブネット814を含むことができ、SSHVCN812は、制御プレーンVCN816に含まれるLPG810を介して制御プレーンVCN816に通信可能に結合することができる。また、SSHVCN812は、LPG810を介してデータプレーンVCN818に通信可能に結合することができる。制御プレーンVCN816およびデータプレーンVCN818は、IaaSプロバイダが所有および/または動作できるサービステナント819に含めることができる。
【0093】
制御プレーンVCN816は、境界ネットワーク(例えば、企業イントラネットと外部ネットワークとの間の企業ネットワークの一部)として機能する制御プレーン非武装地帯(DMZ)層820を含むことができる。DMZベースのサーバは責任が制限されており、侵害を阻止するのに役立ち得る。さらに、DMZ層820は、1つまたは複数のロードバランサ(LB)サブネット822、アプリサブネット826を含むことができる制御プレーンアプリ層824、データベース(DB)サブネット830(例えば、フロントエンドDBサブネットおよび/またはバックエンドDBサブネット)を含むことができる制御プレーンデータ層828を含むことができる。制御プレーンDMZ層820に含まれるLBサブネット822は、制御プレーンアプリ層824に含まれるアプリサブネット826と、制御プレーンVCN816に含まれ得るインターネットゲートウェイ834とに通信可能に結合することができ、アプリサブネット826は、制御プレーンデータ層828に含まれるDBサブネット830、ならびにサービスゲートウェイ836およびネットワークアドレス変換(NAT)ゲートウェイ838に通信可能に結合することができる。制御プレーンVCN816は、サービスゲートウェイ836およびNATゲートウェイ838を含むことができる。
【0094】
制御プレーンVCN816は、アプリサブネット826を含むことができるデータプレーンミラーアプリ層840を含むことができる。データプレーンミラーアプリ層840に含まれるアプリサブネット826は、コンピューティングインスタンス844を実行できる仮想ネットワークインターフェースコントローラ(VNIC)842を含むことができる。コンピューティングインスタンス844は、データプレーンミラーアプリ層840のアプリサブネット826を、データプレーンアプリ層846に含めることができるアプリサブネット826に通信可能に結合することができる。
【0095】
データプレーンVCN818は、データプレーンアプリ層846、データプレーンDMZ層848、およびデータプレーンデータ層850を含むことができる。データプレーンDMZ層848は、データプレーンアプリ層846のアプリサブネット826およびデータプレーンVCN818のインターネットゲートウェイ834に通信可能に結合され得るLBサブネット822を含むことができる。アプリサブネット826は、データプレーンVCN818のサービスゲートウェイ836およびデータプレーンVCN818のNATゲートウェイ838に通信可能に結合することができる。データプレーンデータ層850は、データプレーンアプリ層846のアプリサブネット826に通信可能に結合できるDBサブネット830を含むこともできる。
【0096】
制御プレーンVCN816およびデータプレーンVCN818のインターネットゲートウェイ834は、パブリックインターネット854に通信可能に結合され得るメタデータ管理サービス852に通信可能に結合され得る。パブリックインターネット854は、制御プレーンVCN816の、およびデータプレーンVCN818のNATゲートウェイ838に通信可能に結合することができる。制御プレーンVCN816の、およびデータプレーンVCN818のサービスゲートウェイ836は、クラウドサービス856に通信可能に結合することができる。
【0097】
いくつかの例では、制御プレーンVCN816またはデータプレーンVCN818のサービスゲートウェイ836は、パブリックインターネット854を経由せずに、クラウドサービス856へのアプリケーションプログラミングインターフェース(API)呼び出しを行うことができる。サービスゲートウェイ836からクラウドサービス856へのAPI呼び出しは一方向であり得る:サービスゲートウェイ836はクラウドサービス856へのAPI呼び出しを行うことができ、クラウドサービス856は要求されるデータをサービスゲートウェイ836に送信することができる。しかし、クラウドサービス856は、サービスゲートウェイ836へのAPI呼び出しを開始できない場合がある。
【0098】
いくつかの例では、セキュアホストテナント804は、サービステナント819に直接接続することができ、そうでなければ分離され得る。セキュアホストサブネット808は、LPG810を介してSSHサブネット814と通信することができ、LPG810は、そうでなければ分離されるシステムを介した双方向通信を可能にすることができる。セキュアホストサブネット808をSSHサブネット814に接続すると、セキュアホストサブネット808にサービステナント819内の他のエンティティへのアクセスを与えることができる。
【0099】
制御プレーンVCN816は、サービステナント819のユーザが所望のリソースをセットアップまたはプロビジョニングできるようにすることができる。制御プレーンVCN816内にプロビジョニングされる所望のリソースは、データプレーンVCN818内に展開または使用され得る。いくつかの例では、制御プレーンVCN816はデータプレーンVCN818から分離することができ、制御プレーンVCN816のデータプレーンミラーアプリ層840は、データプレーンミラーアプリ層840およびデータプレーンアプリ層846に含まれ得るVNIC842を介して、データプレーンVCN818のデータプレーンアプリ層846と通信することができる。
【0100】
いくつかの例では、システムのユーザまたは顧客は、要求をメタデータ管理サービス852に通信することができるパブリックインターネット854を介して、例えば作成、読み取り、更新、または削除(CRUD)動作などの要求を行うことができる。メタデータ管理サービス852は、インターネットゲートウェイ834を介して要求を制御プレーンVCN816に通信することができる。この要求は、制御プレーンDMZ層820に含まれるLBサブネット822によって受信され得る。LBサブネット822は、要求が有効であると決定することができ、この決定に応答して、LBサブネット822は、制御プレーンアプリ層824に含まれるアプリサブネット826に要求を送信することができる。要求が確認され、パブリックインターネット854への呼び出しが必要な場合、パブリックインターネット854への呼び出しは、パブリックインターネット854への呼び出しを行うことができるNATゲートウェイ838に送信され得る。要求によって記憶されることが望ましい場合があるメモリは、DBサブネット830に記憶できる。
【0101】
いくつかの例では、データプレーンミラーアプリ層840は、制御プレーンVCN816とデータプレーンVCN818との間の直接通信を容易にすることができる。例えば、構成に対する変更、更新、または他の適切な修正を、データプレーンVCN818に含まれるリソースに適用することが望ましい場合がある。VNIC842を介して、制御プレーンVCN816は、データプレーンVCN818に含まれるリソースと直接通信することができ、それにより、データプレーンVCN818に含まれるリソースに対する構成の変更、更新、または他の適切な修正を実行することができる。
【0102】
いくつかの実施形態では、制御プレーンVCN816およびデータプレーンVCN818は、サービステナント819に含めることができる。この場合、システムのユーザまたは顧客は、制御プレーンVCN816またはデータプレーンVCN818のいずれも所有または動作できない可能性がある。代わりに、IaaSプロバイダは、制御プレーンVCN816およびデータプレーンVCN818を所有または動作することができ、これらは両方ともサービステナント819に含まれ得る。この実施形態は、ユーザまたは顧客が他のユーザのまたは他の顧客のリソースと対話することを防止し得るネットワークの分離を可能にすることができる。また、この実施形態により、システムのユーザまたは顧客は、記憶装置として所望のレベルの脅威防止を持たない可能性があるパブリックインターネット854に依存する必要なく、データベースをプライベートに記憶することができる。
【0103】
他の実施形態では、制御プレーンVCN816に含まれるLBサブネット822は、サービスゲートウェイ836から信号を受信するように構成され得る。この実施形態では、制御プレーンVCN816およびデータプレーンVCN818は、パブリックインターネット854を呼び出すことなく、IaaSプロバイダの顧客によって呼び出されるように構成され得る。顧客が使用するデータベースはIaaSプロバイダによって制御され、パブリックインターネット854から隔離され得るサービステナント819に記憶され得るため、IaaSプロバイダの顧客は、この実施形態を望む可能性がある。
【0104】
図9は、少なくとも1つの実施形態による、IaaSアーキテクチャの別のパターン例を示すブロック
図900である。サービスオペレータ902(例えば、
図8のサービスオペレータ802)は、セキュアホストテナント904(例えば、
図8のセキュアホストテナント804)に通信可能に結合することができ、これは、仮想クラウドネットワーク(VCN)906(例えば、
図8のVCN806)およびセキュアホストサブネット908(例えば、
図8のセキュアホストサブネット808)を含むことができる。VCN906は、ローカルピアリングゲートウェイ(LPG)910(例えば、
図8のLPG810)を含むことができ、これは、SSH VCN912に含まれるLPG810を介してセキュアシェル(SSH)VCN912(例えば、
図8のSSH VCN812)に通信可能に結合することができる。SSH VCN912は、SSHサブネット914(例えば、
図8のSSHサブネット814)を含むことができ、SSH VCN912は、制御プレーンVCN916に含まれるLPG910を介して、制御プレーンVCN916(例えば、
図8の制御プレーンVCN816)に通信可能に結合することができる。制御プレーンVCN916は、サービステナント919(例えば、
図8のサービステナント819)に含めることができ、データプレーンVCN918(例えば、
図8のデータプレーンVCN818)は、システムのユーザまたは顧客によって所有または動作され得る顧客テナント921に含めることができる。
【0105】
制御プレーンVCN916は、LBサブネット922(例えば、
図8のLBサブネット822)を含むことができる制御プレーンDMZ層920(例えば、
図8の制御プレーンDMZ層820)、アプリサブネット926(例えば、
図8のアプリサブネット826)を含むことができる制御プレーンアプリ層924(例えば、
図8の制御プレーンアプリ層824)、データベース(DB)サブネット930(例えば、
図8のDBサブネット830と同様)を含むことができる制御プレーンデータ層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を含むことができる。
【0106】
制御プレーンVCN916は、アプリサブネット926を含むことができるデータプレーンミラーアプリ層940(例えば、
図8のデータプレーンミラーアプリ層840)を含むことができる。データプレーンミラーアプリ層940に含まれるアプリサブネット926は、仮想ネットワークインターフェースコントローラ(VNIC)942(例えば、842のVNIC)を含むことができ、それは、コンピューティングインスタンス944(例えば、
図8のコンピューティングインスタンス844と同様)を実行することができる。コンピューティングインスタンス944は、データプレーンミラーアプリ層940のアプリサブネット926とアプリサブネット926との間の通信を容易にすることができ、これは、データプレーンミラーアプリ層940に含まれるVNIC942およびデータプレーンアプリ層946に含まれるVNIC942を介して、データプレーンアプリ層946(例えば、
図8のデータプレーンアプリ層846)に含まれ得る。
【0107】
制御プレーンVCN916に含まれるインターネットゲートウェイ934は、メタデータ管理サービス952(例えば、
図8のメタデータ管理サービス852)に通信可能に結合することができ、これは、パブリックインターネット954(例えば、
図8のパブリックインターネット854)に通信可能に結合することができる。パブリックインターネット954は、制御プレーンVCN916に含まれるNATゲートウェイ938に通信可能に結合することができる。制御プレーンVCN916に含まれるサービスゲートウェイ936は、クラウドサービス956(例えば、
図8のクラウドサービス856)に通信可能に結合することができる。
【0108】
いくつかの例では、データプレーンVCN918は、顧客テナント921に含まれ得る。この場合、IaaSプロバイダは、各顧客に対して制御プレーンVCN916を提供することができ、IaaSプロバイダは、各顧客に対して、サービステナント919に含まれる一意のコンピューティングインスタンス944をセットアップすることができる。各コンピューティングインスタンス944は、サービステナント919に含まれる制御プレーンVCN916と、顧客テナント921に含まれるデータプレーンVCN918との間の通信を可能にすることができる。コンピューティングインスタンス944は、サービステナント919に含まれる制御プレーンVCN916内にプロビジョニングされるリソースが、顧客テナント921に含まれるデータプレーンVCN918内に展開されるか、さもなければ使用されることを可能にし得る。
【0109】
他の例では、IaaSプロバイダの顧客は、顧客テナント921内に存在するデータベースを有し得る。この例では、制御プレーンVCN916は、アプリサブネット926を含むことができるデータプレーンミラーアプリ層940を含むことができる。データプレーンミラーアプリ層940はデータプレーンVCN918内に存在することができるが、データプレーンミラーアプリ層940はデータプレーンVCN918内に存在しなくてもよい。つまり、データプレーンミラーアプリ層940は、顧客テナント921にアクセスできるが、データプレーンミラーアプリ層940は、データプレーンVCN918に存在しないか、IaaSプロバイダの顧客によって所有または動作されない可能性がある。データプレーンミラーアプリ層940は、データプレーンVCN918への呼び出しを行うように構成されてもよいが、制御プレーンVCN916に含まれる任意のエンティティへの呼び出しを行うように構成されなくてもよい。顧客は、制御プレーンVCN916内にプロビジョニングされるデータプレーンVCN918内のリソースを展開または使用することを望む場合があり、データプレーンミラーアプリ層940は、顧客のリソースの所望の展開または他の使用を容易にすることができる。
【0110】
いくつかの実施形態では、IaaSプロバイダの顧客は、データプレーンVCN918にフィルタを適用することができる。この実施形態では、顧客はデータプレーンVCN918が何にアクセスできるかを決定することができ、顧客はデータプレーンVCN918からパブリックインターネット954へのアクセスを制限することができる。IaaSプロバイダは、フィルタを適用したり、任意の外部ネットワークまたはデータベースへのデータプレーンVCN918のアクセスを制御したりできない場合がある。顧客によるフィルタおよび制御を顧客テナント921に含まれるデータプレーンVCN918に適用すると、データプレーンVCN918を他の顧客からおよびパブリックインターネット954から分離するのに役立ち得る。
【0111】
いくつかの実施形態では、クラウドサービス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に通信可能に結合されていない、または通信していない可能性がある。
【0112】
図10は、少なくとも1つの実施形態による、IaaSアーキテクチャの別のパターン例を示すブロック
図1000である。サービスオペレータ1002(例えば、
図8のサービスオペレータ802)は、セキュアホストテナント1004(例えば、
図8のセキュアホストテナント804)に通信可能に結合することができ、これは、仮想クラウドネットワーク(VCN)1006(例えば、
図8のVCN806)およびセキュアホストサブネット1008(例えば、
図8のセキュアホストサブネット808)を含むことができる。VCN1006は、SSHVCN1012に含まれるLPG1010を介してSSHVCN1012(例えば、
図8のSSHVCN812)に通信可能に結合され得るLPG1010(例えば、
図8のLPG810)を含むことができる。SSHVCN1012は、SSHサブネット1014(例えば、
図8のSSHサブネット814)を含むことができ、SSHVCN1012は、制御プレーンVCN1016(例えば、
図8の制御プレーンVCN816)に含まれるLPG1010を介して、制御プレーンVCN1016に通信可能に結合することができ、データプレーンVCN1018(例えば、
図8のデータプレーン818)に含まれるLPG1010を介して、データプレーンVCN1018に通信可能に結合することができる。制御プレーンVCN1016およびデータプレーンVCN1018は、サービステナント1019(例えば、
図8のサービステナント819)に含めることができる。
【0113】
制御プレーンVCN1016は、ロードバランサ(LB)サブネット1022(例えば、
図8のLBサブネット822)を含むことができる制御プレーンDMZ層1020(例えば、
図8の制御プレーンDMZ層820)、アプリサブネット1026(例えば、
図8のアプリサブネット826と同様)を含むことができる制御プレーンアプリ層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を含むことができる。
【0114】
データプレーンVCN1018は、データプレーンアプリ層1046(例えば、
図8のデータプレーンアプリ層846)、データプレーンDMZ層1048(例えば、
図8のデータプレーンDMZ層848)、およびデータプレーンデータ層1050(例えば、
図8のデータプレーンデータ層850)を含むことができる。データプレーンDMZ層1048は、LBサブネット1022を含むことができ、それは、信頼できるアプリサブネット1060に通信可能に結合され得、データプレーンアプリ層1046の信頼できないアプリサブネット1062およびデータプレーンVCN1018に含まれるインターネットゲートウェイ1034に通信可能に結合することができる。信頼できるアプリサブネット1060は、データプレーンVCN1018に含まれるサービスゲートウェイ1036に通信可能に結合することができ、データプレーンVCN1018に含まれるNATゲートウェイ1038、およびデータプレーンデータ層1050に含まれるDBサブネット1030に通信可能に結合することができる。信頼できないアプリサブネット1062は、データプレーンVCN1018に含まれるサービスゲートウェイ1036およびデータプレーンデータ層1050に含まれるDBサブネット1030に通信可能に接続することができる。データプレーンデータ層1050は、データプレーンVCN1018に含まれるサービスゲートウェイ1036に通信可能に結合できるDBサブネット1030を含むことができる。
【0115】
信頼できないアプリサブネット1062は、テナント仮想マシン(VM)1066(1)~(N)に通信可能に結合できる1つまたは複数のプライマリVNIC1064(1)~(N)を含むことができる。各テナントVM1066(1)~(N)は、それぞれの顧客テナント1070(1)~(N)に含めることができるそれぞれのコンテナ出口VCN1068(1)~(N)に含めることができるそれぞれのアプリサブネット1067(1)~(N)に通信可能に結合することができる。それぞれの2次VNIC1072(1)~(N)は、データプレーンVCN1018に含まれる信頼できないアプリサブネット1062とコンテナ出口VCN1068(1)~(N)に含まれるアプリサブネットとの間の通信を容易にすることができる。各コンテナ出口VCN1068(1)~(N)は、パブリックインターネット1054(例えば、
図8のパブリックインターネット854)に通信可能に結合できるNATゲートウェイ1038を含むことができる。
【0116】
制御プレーンVCN1016に含まれ、データプレーンVCN1018に含まれるインターネットゲートウェイ1034は、パブリックインターネット1054に通信可能に結合できるメタデータ管理サービス1052(例えば、
図8のメタデータ管理システム852)に通信可能に結合することができる。パブリックインターネット1054は、制御プレーンVCN1016に含まれ、データプレーンVCN1018に含まれるNATゲートウェイ1038に通信可能に結合することができる。制御プレーンVCN1016に含まれ、データプレーンVCN1018に含まれるサービスゲートウェイ1036は、クラウドサービス1056に通信可能に結合することができる。
【0117】
いくつかの実施形態では、データプレーンVCN1018は、顧客テナント1070と統合することができる。この統合は、コード実行時のサポートを望む場合など、IaaSプロバイダの顧客にとって有益または望ましい場合がある。顧客は、破壊的な可能性があるコード、他の顧客リソースと通信する可能性のあるコード、またはその他の望ましくない影響を引き起こす可能性のあるコードの実行を提供し得る。これに応じて、IaaSプロバイダは、顧客からIaaSプロバイダに提供されるコードを実行するかどうかを決定できる。
【0118】
いくつかの例では、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)を強制終了するか、その他の方法で廃棄することができる。
【0119】
いくつかの実施形態では、信頼できるアプリサブネット1060は、IaaSプロバイダによって所有または動作され得るコードを実行し得る。この実施形態では、信頼できるアプリサブネット1060は、DBサブネット1030に通信可能に結合され、DBサブネット1030においてCRUD動作を実行するように構成され得る。信頼できないアプリサブネット1062は、DBサブネット1030に通信可能に結合され得るが、この実施形態では、信頼できないアプリサブネットは、DBサブネット1030において読み取り動作を実行するように構成され得る。各顧客のVM1066(1)~(N)に含めることができ、顧客からのコードを実行することができるコンテナ1071(1)~(N)は、DBサブネット1030と通信可能に結合されなくてもよい。
【0120】
他の実施形態では、制御プレーンVCN1016とデータプレーンVCN1018は、直接通信可能に結合されていなくてもよい。この実施形態では、制御プレーンVCN1016とデータプレーンVCN1018との間に直接通信はなくてもよい。しかし、通信は少なくとも1つの方法を通じて間接的に行うことができる。LPG1010は、制御プレーンVCN1016とデータプレーンVCN1018との間の通信を容易にすることができるIaaSプロバイダによって確立され得る。別の例では、制御プレーンVCN1016またはデータプレーンVCN1018は、サービスゲートウェイ1036を介してクラウドサービス1056への呼び出しを行うことができる。例えば、制御プレーンVCN1016からクラウドサービス1056への呼び出しは、データプレーンVCN1018と通信できるサービスに対する要求を含むことができる。
【0121】
図11は、少なくとも1つの実施形態による、IaaSアーキテクチャの別のパターン例を示すブロック
図1100である。サービスオペレータ1102(例えば、
図8のサービスオペレータ802)は、仮想クラウドネットワーク(VCN)1106(例えば、
図8のVCN806)を含むことができるセキュアホストテナント1104(例えば、
図8のセキュアホストテナント804)およびセキュアホストサブネット1108(例えば、
図8のセキュアホストサブネット808)に通信可能に結合することができる。VCN1106は、SSH VCN1112に含まれるLPG1110を介してSSH VCN1112(例えば、
図8のSSH VCN812)に通信可能に結合され得るLPG1110(例えば、
図8のLPG810)を含むことができる。SSH VCN1112は、SSHサブネット1114(例えば、
図8のSSHサブネット814)を含むことができ、SSH VCN1112は、制御プレーンVCN1116に含まれるLPG1110を介して、制御プレーンVCN1116(例えば、
図8の制御プレーンVCN816)およびデータプレーンVCN1118に含まれるLPG1110を介して、データプレーンVCN1118(例えば、
図8のデータプレーン818)に通信可能に結合することができる。制御プレーンVCN1116およびデータプレーンVCN1118は、サービステナント1119(例えば、
図8のサービステナント819)に含めることができる。
【0122】
制御プレーン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を含むことができる。
【0123】
データプレーンVCN1118は、データプレーンアプリ層1146(例えば、
図8のデータプレーンアプリ層846)、データプレーンDMZ層1148(例えば、
図8のデータプレーンDMZ層848)、およびデータプレーンデータ層1150(例えば、
図8のデータプレーンデータ層850)を含み得る。データプレーンDMZ層1148は、LBサブネット1122を含むことができ、それは、信頼できるアプリサブネット1160(例えば、
図10の信頼できるアプリサブネット1060)およびデータプレーンVCN1118に含まれるデータプレーンアプリ層1146およびインターネットゲートウェイ1134の信頼できないアプリサブネット1162(例えば、
図10の信頼できないアプリサブネット1062)に通信可能に結合することができる。信頼できるアプリサブネット1160は、データプレーンVCN1118に含まれるサービスゲートウェイ1136、データプレーンVCN1118に含まれるNATゲートウェイ1138、およびデータプレーンデータ層1150に含まれるDBサブネット1130に通信可能に結合することができる。信頼できないアプリサブネット1162は、データプレーンVCN1118に含まれるサービスゲートウェイ1136およびデータプレーンデータ層1150に含まれるDBサブネット1130に通信可能に結合することができる。データプレーンデータ層1150は、データプレーンVCN1118に含まれるサービスゲートウェイ1136に通信可能に結合できるDBサブネット1130を含むことができる。
【0124】
信頼できないアプリサブネット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を含むことができる。
【0125】
制御プレーンVCN1116に含まれ、データプレーンVCN1118に含まれるインターネットゲートウェイ1134は、パブリックインターネット1154に通信可能に結合できるメタデータ管理サービス1152(例えば、
図8のメタデータ管理システム852)に通信可能に結合することができる。パブリックインターネット1154は、制御プレーンVCN1116に含まれるNATゲートウェイ1138およびデータプレーンVCN1118に含まれるNATゲートウェイ1138に通信可能に結合することができる。制御プレーンVCN1116に含まれ、データプレーンVCN1118に含まれるサービスゲートウェイ1136は、クラウドサービス1156に通信可能に結合することができる。
【0126】
いくつかの例では、
図11のブロック
図1100のアーキテクチャによって示されるパターンは、
図10のブロック
図1000のアーキテクチャによって示されるパターンの例外であると考えられ、IaaSプロバイダが顧客と直接通信できない場合(例えば、切断されている領域)、IaaSプロバイダの顧客にとっては望ましい場合がある。各顧客のVM1166(1)~(N)に含まれるそれぞれのコンテナ1167(1)~(N)は、顧客によってリアルタイムでアクセス可能である。コンテナ1167(1)~(N)は、コンテナ出口VCN1168に含まれることができるデータプレーンアプリ層1146のアプリサブネット1126に含まれるそれぞれの2次VNIC1172(1)~(N)への呼び出しを行うように構成され得る。2次VNIC1172(1)~(N)は、呼び出しをパブリックインターネット1154に送信することができるNATゲートウェイ1138に呼び出しを送信することができる。この例では、顧客がリアルタイムでアクセスできるコンテナ1167(1)~(N)は、制御プレーンVCN1116から分離することができ、データプレーンVCN1118に含まれる他のエンティティから分離することができる。コンテナ1167(1)~(N)は、他の顧客からのリソースから隔離されてもよい。
【0127】
他の例では、顧客は、コンテナ1167(1)~(N)を使用して、クラウドサービス1156を呼び出すことができる。この例では、顧客は、クラウドサービス1156からサービスを要求するコードをコンテナ1167(1)~(N)内で実行することができる。コンテナ1167(1)~(N)は、この要求を2次VNIC1172(1)~(N)に送信することができ、2次VNIC1172(1)~(N)は、要求をパブリックインターネット1154に送信することができるNATゲートウェイに要求を送信することができる。パブリックインターネット1154は、インターネットゲートウェイ1134を介して、制御プレーンVCN1116に含まれるLBサブネット1122に要求を送信することができる。要求が有効であるとの決定に応答して、LBサブネットは、サービスゲートウェイ1136を介してクラウドサービス1156に要求を送信できるアプリサブネット1126に要求を送信することができる。
【0128】
図に示されているIaaSアーキテクチャ800、900、1000、1100は、示されているもの以外の構成要素を有し得ることを理解されたい。さらに、図に示される実施形態は、本開示の実施形態を組み込むことができるクラウドインフラストラクチャシステムのいくつかの例にすぎない。他のいくつかの実施形態では、IaaSシステムは、図示されているよりも多いもしくは少ない構成要素を有してもよく、2つ以上の構成要素を組み合わせてもよく、または構成要素の異なる構成もしくは配置を有してもよい。
【0129】
特定の実施形態では、本明細書で説明されるIaaSシステムは、セルフサービス、サブスクリプションベース、弾力的に拡張可能、信頼性が高く、可用性が高く、安全な方法で顧客に提供されるアプリケーション、ミドルウェア、およびデータベースサービス製品のスイートを含むことができる。このようなIaaSシステムの一例として、本譲受人が提供するOracle Cloud Infrastructure(OCI)がある。
【0130】
図12は、さまざまな実施形態が実装され得る例示的なコンピュータシステム1200を示す。システム1200は、上述のコンピュータシステムのいずれかを実装するために使用することができる。図に示すように、コンピュータシステム1200は、バスサブシステム1202を介して多くの周辺サブシステムと通信する処理装置1204を含む。これらの周辺サブシステムは、処理加速装置1206、I/Oサブシステム1208、記憶サブシステム1218、および通信サブシステム1224を含み得る。記憶サブシステム1218は、有形のコンピュータ可読記憶媒体1222およびシステムメモリ1210を含む。
【0131】
バスサブシステム1202は、コンピュータシステム1200のさまざまな構成要素およびサブシステムが意図したとおりに相互に通信できるようにする機構を提供する。バスサブシステム1202は単一のバスとして概略的に示されているが、バスサブシステムの代替実施形態では複数のバスを利用することができる。バスサブシステム1202は、さまざまなバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のいずれであってもよい。例えば、そのようなアーキテクチャには、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびPeripheral Component Interconnect(PCI)バスが含まれ得る。これは、IEEEP1386.1標準に従って製造されるメザニンバスとして実装できる。
【0132】
処理装置1204は、1つまたは複数の集積回路(例えば、従来のマイクロプロセッサまたはマイクロコントローラ)として実装することができ、コンピュータシステム1200の動作を制御する。1つまたは複数のプロセッサが処理装置1204に含まれてもよい。これらのプロセッサには、単一コアプロセッサまたはマルチコアプロセッサが含まれ得る。特定の実施形態では、処理装置1204は、各処理装置に含まれる単一コアプロセッサまたはマルチコアプロセッサを有する1つまたは複数の独立した処理装置1232および/または1234として実装され得る。他の実施形態では、処理装置1204は、2つのデュアルコアプロセッサを単一のチップに統合することによって形成されるクアッドコア処理装置として実装されてもよい。
【0133】
さまざまな実施形態において、処理装置1204は、プログラムコードに応答してさまざまなプログラムを実行することができ、複数の同時実行プログラムまたはプロセスを維持することができる。いつでも、実行されるプログラムコードの一部またはすべては、プロセッサ1204および/または記憶サブシステム1218に存在することができる。適切なプログラミングを通じて、プロセッサ1204は、上述のさまざまな機能を提供することができる。コンピュータシステム1200は、デジタルシグナルプロセッサ(DSP)、専用プロセッサ等を含むことができる処理加速装置1206をさらに含むことができる。
【0134】
I/Oサブシステム1208は、ユーザインターフェース入力装置およびユーザインターフェース出力装置を含むことができる。ユーザインターフェース入力装置にはキーボード、マウスやトラックボールなどのポインティング装置、ディスプレイに組み込まれたタッチパッドやタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを備えたオーディオ入力装置、マイク、および他のタイプの入力装置が含まれ得る。ユーザインターフェース入力装置には、例えば、Microsoft Kinect(登録商標)モーションセンサーなどのモーションセンシングおよび/またはジェスチャ認識装置が含まれ得、ユーザは、ジェスチャや音声コマンドを使用した自然なユーザインターフェースを通じて、Microsoft Xbox(登録商標)360ゲームコントローラなどの入力装置を制御し、対話できるようになる。ユーザインターフェース入力装置には、ユーザからの目の活動(例えば、写真撮影中および/またはメニュー選択中の「瞬き」)を検出し、目のジェスチャを入力装置(例えば、Google Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識装置も含まれ得る。さらに、ユーザインターフェース入力装置は、ユーザが音声コマンドを通じて音声認識システム(例えば、Siri(登録商標)ナビゲータ)と対話できるようにする音声認識センシング装置を含んでもよい。
【0135】
ユーザインターフェース入力装置には、限定されないが、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルビデオカメラなどのオーディオ/ビジュアル装置、ポータブルメディアプレーヤ、ウェブカメラ、イメージスキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザ距離計、および視線追跡装置なども含まれ得る。さらに、ユーザインターフェース入力装置には、例えば、コンピュータ断層撮影法、磁気共鳴画像法、位置放射断層撮影法、医療用超音波検査装置などの医療用画像入力装置が含まれてもよい。ユーザインターフェース入力装置には、例えば、MIDIキーボード、デジタル楽器などのオーディオ入力装置も含まれ得る。
【0136】
ユーザインターフェース出力装置には、ディスプレイサブシステム、インジケータライト、またはオーディオ出力装置などの非視覚的ディスプレイが含まれてもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するものなどのフラットパネル装置、投影装置、タッチスクリーンなどであってもよい。一般に、「出力装置」という用語の使用は、コンピュータシステム1200からユーザまたは他のコンピュータに情報を出力するためのあらゆる可能なタイプの装置および機構を含むことを意図している。例えば、ユーザインターフェース出力装置には、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力装置、およびモデムなど、テキスト、グラフィックス、およびオーディオ/ビデオ情報を視覚的に伝達するさまざまな表示装置が含まれるが、これらに限定されない。
【0137】
コンピュータシステム1200は、システムメモリ1210内に現在配置されているように示されるソフトウェア要素を備える記憶サブシステム1218を備えることができる。システムメモリ1210は、処理装置1204上でロード可能および実行可能なプログラム命令、ならびにこれらのプログラムの実行中に生成されるデータを記憶することができる。
【0138】
コンピュータシステム1200の構成および種類に応じて、システムメモリ1210は、揮発性(ランダムアクセスメモリ(RAM)など)および/または不揮発性(読み取り専用メモリ(ROM)、フラッシュメモリなど)の場合がある。RAMは通常、処理装置1204に即座にアクセス可能な、ならびに/または処理装置1204によって現在動作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実装形態では、システムメモリ1210は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)などの複数の異なるタイプのメモリを含み得る。いくつかの実装形態では、起動中など、コンピュータシステム1200内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム(BIOS)は、通常、ROMに記憶され得る。限定ではなく一例として、システムメモリ1210は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などを含み得るアプリケーションプログラム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オペレーティングシステムなどのモバイルオペレーティングシステムが含まれ得る。
【0139】
記憶サブシステム1218はまた、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を記憶するための有形のコンピュータ可読記憶媒体を提供することもできる。プロセッサによって実行されると、上述の機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、記憶サブシステム1218に記憶され得る。これらのソフトウェアモジュールまたは命令は、処理装置1204によって実行され得る。記憶サブシステム1218はまた、本開示に従って使用されるデータを記憶するためのリポジトリを提供することもできる。
【0140】
記憶サブシステム1200はまた、コンピュータ可読記憶媒体1222にさらに接続できるコンピュータ可読記憶媒体リーダ1220を含んでもよい。一緒に、そして任意でシステムメモリ1210と組み合わせて、コンピュータ可読記憶媒体1222は、リモート、ローカル、固定、および/または取り外し可能な記憶装置に加えて、コンピュータ可読情報を一時的および/またはより永続的に収容、記憶、送信、および取得するための記憶媒体を包括的に表すことができる。
【0141】
コードまたはコードの一部を含むコンピュータ可読記憶媒体1222には、当技術分野で既知または使用されている任意の適切な媒体を含めることもでき、これには、情報の記憶および/または送信のための任意の方法または技術で実装される揮発性および不揮発性、取り外し可能なおよび取り外し不可能な媒体などの記憶媒体および通信媒体が含まれるが、これらに限定されない。これには、RAM、ROM、電子的に消去可能なプログラマブルROM(EEPROM)、フラッシュメモリもしくはその他のメモリテクノロジ、CD-ROM、デジタルバーサタイルディスク(DVD)などの有形のコンピュータ可読記憶媒体、または他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または他の有形のコンピュータ可読媒体が含まれ得る。これには、データ信号、データ送信、または所望の情報を送信するために使用でき、コンピューティングシステム1200によってアクセスできる任意の他の媒体などの、無形のコンピュータ可読媒体も含まれ得る。
【0142】
一例として、コンピュータ可読記憶媒体1222は、取り外し不可能な不揮発性磁気媒体に対して読み取りまたは書き込みを行うハードディスクドライブ、取り外し可能な不揮発性磁気ディスクに対して読み取りまたは書き込みを行う磁気ディスクドライブ、およびCDROM、DVD、Blu-Ray(登録商標)ディスクなどの取り外し可能な不揮発性光ディスク、またはその他の光媒体に対して読み取りまたは書き込みを行う光ディスクドライブを含むことができる。コンピュータ可読記憶媒体1222には、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどが含まれてもよいが、これらに限定されない。コンピュータ可読記憶媒体1222には、フラッシュメモリベースのSSDなどの不揮発性メモリに基づくソリッドステートドライブ(SSD)、エンタープライズフラッシュドライブ、ソリッドステートROMなど、ソリッドステートRAM、ダイナミックRAM、スタティックRAMなどの揮発性メモリをベースにしたSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDを組み合わせて使用するハイブリッドSSDも含まれ得る。ディスクドライブおよびそれらに関連するコンピュータ可読媒体は、コンピュータシステム1200のためのコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶を提供し得る。
【0143】
通信サブシステム1224は、他のコンピュータシステムおよびネットワークへのインターフェースを提供する。通信サブシステム1224は、コンピュータシステム1200から他のシステムとの間でデータを送受信するためのインターフェースとして機能する。例えば、通信サブシステム1224は、コンピュータシステム1200がインターネットを介して1つまたは複数の装置に接続できるようにすることができる。いくつかの実施形態では、通信サブシステム1224は、無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)トランシーバ構成要素を含めることができる(例えば、携帯電話技術、3G、4G、またはEDGE(地球規模の進化のための強化されるデータレート)などの高度なデータネットワーク技術を使用する)、WiFi(IEEE802.11ファミリ標準、または他のモバイル通信技術、またはそれらの任意の組み合わせ)、全地球測位システム(GPS)受信機構成要素、および/または他の構成要素を含むことができる。いくつかの実施形態では、通信サブシステム1224は、無線インターフェースに加えて、またはその代わりに、有線ネットワーク接続(例えば、イーサネット)を提供することができる。
【0144】
いくつかの実施形態では、通信サブシステム1224は、コンピュータシステム1200を使用することができる1人または複数のユーザに代わって、構造化および/または非構造化データフィード1226、イベントストリーム1228、イベント更新1230などの形式で入力通信を受信することもできる。
【0145】
一例として、通信サブシステム1224は、ソーシャルネットワーク、および/もしくはTwitter(登録商標)フィード、Facebook(登録商標)更新、リッチサイトサマリー(RSS)フィードなどのWebフィードなどのその他の通信サービス、ならびに/または1つもしくは複数のサードパーティ情報ソースからのリアルタイム更新のユーザからリアルタイムでデータフィード1226を受信するように構成され得る。
【0146】
さらに、通信サブシステム1224は、連続データストリームの形式でデータを受信するように構成されてもよく、これには、リアルタイムイベントおよび/またはイベント更新1230のイベントストリーム1228が含まれ得、これらは、連続的または明示的な終わりのない本質的に無制限であり得る。連続データを生成するアプリケーションの例には、例えば、センサーデータアプリケーション、金融ティッカ、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などが含まれ得る。
【0147】
通信サブシステム1224はまた、構造化および/または非構造化データフィード1226、イベントストリーム1228、イベント更新1230などを、コンピュータシステム1200に結合される1つまたは複数のストリーミングデータソースコンピュータと通信することができる1つまたは複数のデータベースに出力するように構成することもできる。
【0148】
コンピュータシステム1200は、ハンドヘルドポータブル装置(例えば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブル装置(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含むさまざまなタイプのうちの1つであり得る。
【0149】
コンピュータおよびネットワークの絶え間なく変化する性質のため、図に示されるコンピュータシステム1200の説明は、特定の例としてのみ意図されている。図に示されているシステムよりも多くの、または少ない構成要素を備えた他の多くの構成が可能である。例えば、カスタマイズされているハードウェアも使用されたり、特定の要素がハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、またはその組み合わせで実装されたりし得る。さらに、ネットワーク入出力装置などの他のコンピューティング装置への接続が使用されてもよい。本明細書で提供される開示および教示に基づいて、当業者であれば、さまざまな実施形態を実装するための他の手法および/または方法を理解するであろう。
【0150】
特定の実施形態について説明してきたが、さまざまな修正、変更、代替構造、および均等物も本開示の範囲内に含まれる。実施形態は、特定の特有のデータ処理環境内での動作に限定されず、複数のデータ処理環境内で自由に動作することができる。さらに、特定の一連のトランザクションおよびステップを使用して実施形態を説明したが、本開示の範囲が説明した一連のトランザクションおよびステップに限定されないことは当業者には明らかである。上述の実施形態のさまざまな特徴および態様は、個別にまたは組み合わせて使用することができる。
【0151】
さらに、ハードウェアとソフトウェアの特定の組み合わせを使用して実施形態を説明したが、ハードウェアとソフトウェアの他の組み合わせも本開示の範囲内であることを認識されたい。実施形態は、ハードウェアのみで、もしくはソフトウェアのみで、またはそれらの組み合わせを使用して実装することができる。本明細書で説明するさまざまなプロセスは、同じプロセッサ上で実装することも、異なるプロセッサを任意に組み合わせて実装することもできる。したがって、構成要素またはモジュールが特定の動作を実行するように構成されていると説明されている場合、このような構成は、例えば、動作を実行する電子回路を設計することによって、動作を実行するようにプログラマブル電子回路(マイクロプロセッサなど)をプログラムすることによって、またはそれらの任意の組み合わせによって達成することができる。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信することができ、プロセスの異なる対が異なる技術を使用したり、同じプロセスの対が異なる時点で異なる技術を使用したりすることができる。
【0152】
したがって、明細書および図面は、限定的な意味ではなく、例示的な意味としてみなされるべきである。しかし、特許請求の範囲に記載のより広い趣旨および範囲から逸脱することなく、追加、減算、削除、ならびにその他の修正および変更を行うことができることは明らかである。したがって、特定の開示実施形態について説明してきたが、これらは限定することを意図したものではない。さまざまな修正および均等物は、以下の特許請求の範囲内に含まれる。
【0153】
開示されている実施形態を説明する文脈における(特に、以下の特許請求の範囲の文脈において)用語「a」、「an」、「the」、および同様の指示対象の使用は、本明細書で別途指示するか、文脈と明らかに矛盾しない限り、単数形と複数形の両方をカバーすると解釈されるべきである。「含む」、「有する」、「含む」、および「含有する」という用語は、特に断りのない限り、無制限の用語(すなわち、「含むがこれらに限定されない」を意味する)として解釈されるべきである。「接続されている」という用語は、たとえ何かが介在している場合でも、部分的または全体的に内部に含まれている、取り付けられている、または結合されていると解釈される。本明細書における値の範囲の記載は、本明細書に別段の記載がない限り、その範囲内にある各々の個別の値を個別に参照する簡略的な方法として機能することを単に意図しており、個別の各値は、あたかも本明細書に個別に記載されているかのように明細書に組み込まれる。本明細書に記載されるすべての方法は、本明細書に別段の指示がない限り、または文脈と明らかに矛盾しない限り、任意の適切な順序で実行することができる。本明細書で提供されるあらゆる例、または例示的な文言(例えば、「など」)の使用は、単に実施形態をより良く説明することを目的としており、別段の請求がない限り、本開示の範囲に制限を課すものではない。本明細書のいかなる文言も、特許請求されていない任意の要素が本開示の実施に必須であることを示すものとして解釈されるべきではない。
【0154】
「X、Y、またはZのうちの少なくとも1つ」という句などの選言的表現は、特に別段の記載がない限り、項目、用語などがX、Y、またはZのいずれか、またはそれらの任意の組み合わせ(例えば、X、Y、および/またはZ)であり得ることを示すために一般に使用されると文脈内で理解されることを意図している。したがって、そのような選言的表現は、一般に、特定の実施形態が、Xの少なくとも1つ、Yの少なくとも1つ、またはZの少なくとも1つがそれぞれ存在することを必要とすることを意味することを意図したものではなく、また、意味するべきではない。
【0155】
本開示の好ましい実施形態が、本開示を実施するための既知の最良のモードを含めて、本明細書に記載される。これらの好ましい実施形態の変形は、前述の説明を読めば当業者には明らかになるであろう。当業者であれば、そのような変形を必要に応じて採用することができるはずであり、本開示は、本明細書に具体的に記載された以外の方法で実施することもできる。したがって、本開示には、適用される法律によって許可される、本明細書に添付の特許請求の範囲に記載されている主題のすべての修正および均等物が含まれる。さらに、本明細書で別段の指示がない限り、可能なすべての変形例における上述の要素の任意の組み合わせが本開示に包含される。
【0156】
本明細書に引用される刊行物、特許出願、および特許を含むすべての参考文献は、各参考文献が参照により組み込まれることが個別かつ具体的に示され、その全体が本明細書に記載されるのと同じ程度に、参照により本明細書に組み込まれる。
【0157】
前述の明細書では、本開示の態様は、その特定の実施形態を参照して説明されているが、当業者は、本開示がそれに限定されないことを認識するであろう。上述の開示のさまざまな特徴および態様は、個別にまたは組み合わせて使用することができる。さらに、実施形態は、本明細書のより広範な趣旨および範囲から逸脱することなく、本明細書に記載されているものを超える任意の数の環境および用途において利用することができる。したがって、明細書および図面は、限定的なものではなく、例示的なものとみなされるべきである。さまざまな変形例および均等物には、実施形態に開示される特徴の関連した適切な組み合わせが含まれる。
【国際調査報告】