(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-08
(54)【発明の名称】異なるテナントが所有するコンピューティングインスタンスの接続および分離
(51)【国際特許分類】
G06F 9/54 20060101AFI20241001BHJP
【FI】
G06F9/54 Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024513031
(86)(22)【出願日】2022-04-12
(85)【翻訳文提出日】2024-03-19
(86)【国際出願番号】 US2022024481
(87)【国際公開番号】W WO2023027775
(87)【国際公開日】2023-03-02
(32)【優先日】2021-08-27
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-08-27
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ブイヤン,エイ・エム・ヘラリ・モルトゥザ
(72)【発明者】
【氏名】クライン,ヨハネス
(72)【発明者】
【氏名】ナグ,ジョーティッシュマン
(72)【発明者】
【氏名】フォーゲル,ダニエル・エム
(72)【発明者】
【氏名】ゴッラプディ,サヒティア
(57)【要約】
2つのコンピューティングインスタンス間の接続を作成するための技術が開示される。異なるクラウドテナントからの2つの異なるサービスによってコンピューティングリソースがプロビジョニングされるにもかかわらず、2つ以上のクラウドリソース(例えば、2つのコンピューティングインスタンス)を接続するためのインフラストラクチャおよび一般化される方法が説明される。コンピューティングインスタンスを配線するために実行される自動プロセスについて説明する。自動プロセスは通常、2つの異なるサービスを提供し、2つの異なるサービステナントからプロビジョニングされる任意の2つのコンピューティングインスタンスを接続するために適用できる。
【特許請求の範囲】
【請求項1】
異なるテナントからコンピューティングインスタンスを接続するためのコンピュータで実行される方法であって、
第1のサービスのための第1の制御プレーンが、前記第1のサービスの第1のコンピューティングインスタンスと第2のサービスの第2のコンピューティングインスタンスとの間の接続を作成するための要求を受信することを含み、前記第1のコンピューティングインスタンスは前記第1の制御プレーンによって制御され、前記第2のコンピューティングインスタンスは第2の制御プレーンによって制御され、前記第1のコンピューティングインスタンスは顧客テナント内にあり、前記第2のコンピューティングインスタンスは前記顧客テナント内にあり、前記第1のコンピューティングインスタンスは前記顧客テナント内の前記第2のコンピューティングインスタンスから分離され、
前記方法は、
前記第1の制御プレーンが、前記第1のコンピューティングインスタンスと前記第2のコンピューティングインスタンスとの間の前記接続を作成するための処理動作のセットを実行することと、
処理動作の前記セットを実行した後、前記接続により、前記第1の制御プレーンが前記第2のコンピューティングインスタンスの制御を得、前記第1のコンピューティングインスタンスと前記第2のコンピューティングインスタンスとの間の通信を可能にすることと、をさらに含む、方法。
【請求項2】
処理動作の前記セットを実行することは、
前記第1の制御プレーンが、顧客に代わって前記第1の制御プレーンが前記第2の制御プレーンと通信できることを示すトークンを取得することを含む、請求項1に記載の方法。
【請求項3】
処理動作の前記セットを実行することは、
前記第1の制御プレーンが、前記第2のコンピューティングインスタンス上で実行できる許可される動作のセットを決定することを含む、請求項1または請求項2に記載の方法。
【請求項4】
処理動作の前記セットを実行することは、
前記第1の制御プレーンが、前記第2の制御プレーンに接続要求を送信することを含み、前記接続要求は、前記第1のコンピューティングインスタンスおよび前記第2のコンピューティングインスタンスを識別する情報を含み、前記第2の制御プレーンは、前記接続に関する情報を記憶し、
処理動作の前記セットを実行することは、
前記第1の制御プレーンが、前記接続に関する情報を記憶することを含む、請求項1、請求項2または請求項3に記載の方法。
【請求項5】
前記第1の制御プレーンはドミナント制御プレーンであり、前記第2の制御プレーンはパッシブ制御プレーンであり、前記第1のコンピューティングインスタンスはドミナントコンピューティングインスタンスであり、前記第2のコンピューティングインスタンスはパッシブコンピューティングインスタンスである、先行する請求項のいずれか1項に記載の方法。
【請求項6】
前記接続を作成するための処理動作の前記セットを実行する前に、前記第1の制御プレーンが、前記顧客テナント内に前記第1のサービスの前記第1のコンピューティングインスタンスを作成することをさらに含む、先行する請求項のいずれか1項に記載の方法。
【請求項7】
処理動作の前記セットを実行することは、
前記第1の制御プレーンが前記第2の制御プレーンに、前記顧客テナント内で前記第2のコンピューティングインスタンスを作成するための要求を送信することを含み、前記第2の制御プレーンは、前記要求に応答して前記顧客テナント内に前記第2のコンピューティングインスタンスを作成する、先行する請求項のいずれか1項に記載の方法。
【請求項8】
前記第1のサービスは企業リソースプランニング(ERP)サービスであり、前記第2のサービスは会話型人工知能(AI)サービスである、先行する請求項のいずれか1項に記載の方法。
【請求項9】
処理動作の前記セットを実行した後、前記接続により、前記第2の制御プレーンは、前記第2のコンピューティングインスタンス上で少なくとも1つの動作を実行することが制限される、先行する請求項のいずれか1項に記載の方法。
【請求項10】
コンピュータ実行可能命令を記憶する非一時的なコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令は、実行されると、コンピュータシステムの1つまたは複数のプロセッサに方法を実行させ、前記方法は、
第1のサービスの第1のコンピューティングインスタンスと第2のサービスの第2のコンピューティングインスタンスとの間の接続を作成するための要求を受信することを含み、前記第1のコンピューティングインスタンスは前記コンピュータシステムの第1の制御プレーンによって制御され、前記第2のコンピューティングインスタンスは第2の制御プレーンによって制御され、前記第1のコンピューティングインスタンスは顧客テナント内にあり、前記第2のコンピューティングインスタンスは前記顧客テナント内にあり、前記第1のコンピューティングインスタンスは前記顧客テナント内の前記第2のコンピューティングインスタンスから分離され、
前記方法は、
前記第1のコンピューティングインスタンスと前記第2のコンピューティングインスタンスとの間の前記接続を作成するための処理動作のセットを実行することと、
処理動作の前記セットを実行した後、前記接続により前記第2のコンピューティングインスタンスの制御を得、前記第1のコンピューティングインスタンスと前記第2のコンピューティングインスタンスとの間の通信を可能にすることと、を含む、方法を実行させる、非一時的なコンピュータ可読記憶媒体。
【請求項11】
処理動作の前記セットを実行することは、
前記コンピュータシステムが顧客に代わって前記第2の制御プレーンと通信できることを示すトークンを取得することを含む、請求項10に記載の非一時的なコンピュータ可読記憶媒体。
【請求項12】
処理動作の前記セットを実行することは、
前記第2のコンピューティングインスタンス上で実行できる許可される動作のセットを決定することを含む、請求項10または請求項11に記載の非一時的なコンピュータ可読記憶媒体。
【請求項13】
処理動作の前記セットを実行することは、
前記第2の制御プレーンに接続要求を送信することを含み、前記接続要求は、前記第1のコンピューティングインスタンスおよび前記第2のコンピューティングインスタンスを識別する情報を含み、前記第2の制御プレーンは、前記接続に関する情報を記憶し、
処理動作の前記セットを実行することは、
前記接続に関する情報を記憶することを含む、請求項10、請求項11、または請求項12に記載の非一時的なコンピュータ可読記憶媒体。
【請求項14】
前記第1の制御プレーンはドミナント制御プレーンであり、前記第2の制御プレーンはパッシブ制御プレーンであり、前記第1のコンピューティングインスタンスはドミナントコンピューティングインスタンスであり、前記第2のコンピューティングインスタンスはパッシブコンピューティングインスタンスである、請求項10~請求項13のいずれか1項に記載の非一時的なコンピュータ可読記憶媒体。
【請求項15】
コンピュータシステムであって、
プロセッサと、
前記プロセッサによって実行可能であり、前記プロセッサによる実行時に処理を実行させる複数の命令を記憶するように構成されているメモリと、を含み、前記処理は、
第1のサービスの第1のコンピューティングインスタンスと第2のサービスの第2のコンピューティングインスタンスとの間の接続を作成するための要求を受信することを含み、前記第1のコンピューティングインスタンスは前記コンピュータシステムの第1の制御プレーンによって制御され、前記第2のコンピューティングインスタンスは第2の制御プレーンによって制御され、前記第1のコンピューティングインスタンスは顧客テナント内にあり、前記第2のコンピューティングインスタンスは前記顧客テナント内にあり、前記第1のコンピューティングインスタンスは前記顧客テナント内の前記第2のコンピューティングインスタンスから分離され、
前記処理は、
前記第1のコンピューティングインスタンスと前記第2のコンピューティングインスタンスとの間の前記接続を作成するための処理動作のセットを実行することと、
処理動作の前記セットを実行した後、前記接続により前記第2のコンピューティングインスタンスの制御を得、前記第1のコンピューティングインスタンスと前記第2のコンピューティングインスタンスとの間の通信を可能にすることと、を含む、コンピュータシステム。
【請求項16】
処理動作の前記セットを実行することは、
前記コンピュータシステムが顧客に代わって前記第2の制御プレーンと通信できることを示すトークンを取得することを含む、請求項15に記載のコンピュータシステム。
【請求項17】
処理動作の前記セットを実行することは、
前記第2のコンピューティングインスタンス上で実行できる許可される動作のセットを決定することを含む、請求項15または請求項16に記載のコンピュータシステム。
【請求項18】
処理動作の前記セットを実行することは、
前記第2の制御プレーンに接続要求を送信することを含み、前記接続要求は、前記第1のコンピューティングインスタンスおよび前記第2のコンピューティングインスタンスを識別する情報を含み、前記第2の制御プレーンは前記接続に関する情報を記憶し、
処理動作の前記セットを実行することは、
前記接続に関する情報を記憶することを含む、請求項15、請求項16、または請求項17に記載のコンピュータシステム。
【請求項19】
前記第1の制御プレーンはドミナント制御プレーンであり、前記第2の制御プレーンはパッシブ制御プレーンであり、前記第1のコンピューティングインスタンスはドミナントコンピューティングインスタンスであり、前記第2のコンピューティングインスタンスはパッシブコンピューティングインスタンスである、請求項15~請求項18のいずれか1項に記載のコンピュータシステム。
【請求項20】
前記接続を作成するための処理動作の前記セットを実行する前に、前記顧客テナント内に前記第1のサービスの前記第1のコンピューティングインスタンスを作成することをさらに含む、請求項15に記載のコンピュータシステム。
【請求項21】
請求項1~請求項9のいずれか1項に記載の方法のステップを実行する手段を含む、コンピューティングインスタンスを接続するための装置。
【請求項22】
プロセッサによって実行されると、請求項1~請求項9のいずれか1項に記載の方法のステップを実装するコンピュータ命令を含むコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願
本出願は、「異なるテナントが所有するコンピューティングインスタンスの接続による制限される動作」と題する米国非仮出願第17/459,167号に関連する。前述の出願の全内容は、あらゆる目的のために参照により本明細書に組み込まれる。
【背景技術】
【0002】
背景
顧客がIaaSクラウドサービスプロバイダ(CSP)によって提供されるIaaSサービスの加入者としてサインアップすると、その顧客のためにアカウントまたはテナントが作成される。ある実装形態では、顧客用に作成されるテナント(顧客テナントとも呼ばれる)は、顧客のすべてのクラウドリソースを保持するルートレベルのコンパートメントを提供する。一般的なシナリオでは、顧客とそのユーザは、その顧客のテナント内に配置されるリソースにのみアクセスできる。これらのリソースには、例えば、顧客に1つまたは複数のサービスを提供するために顧客にプロビジョニングされる1つまたは複数のコンピューティングインスタンスが含まれ得る。
【発明の概要】
【発明が解決しようとする課題】
【0003】
顧客が加入し、顧客インスタンスが顧客にプロビジョニングされる特定のサービスの場合、コンピューティングインスタンスは通常、特定のサービスに関連するクラウドリソースをプロビジョニングおよび管理するように構成される別のサービスインフラストラクチャによって作成および提供される。例えば、顧客がサービスAとサービスBに加入している場合、独自のテナント(サービステナントと呼ばれる)に関連付けられるサービスAインフラストラクチャは、顧客にサービスAを提供するコンピューティングインスタンスAを作成およびプロビジョニングするように構成される。同様に、独自のテナントに関連付けられるサービスBインフラストラクチャは、顧客にサービスBを提供するコンピューティングインスタンスBを作成およびプロビジョニングするように構成される。コンピューティングインスタンスAのライフサイクル管理はサービスAインフラストラクチャによって排他的に制御され、コンピューティングインスタンスBのライフサイクル管理はサービスBインフラストラクチャによって排他的に制御される。さらに、別々のサービスインフラストラクチャによって作成されるコンピューティングインスタンスは、2つの異なるテナントのインフラストラクチャによってプロビジョニングされているため、相互に直接通信したり対話したりすることはできない。しかし、顧客が2つの異なるサービスインフラストラクチャから受信したリソース(例えば、上記の例ではコンピューティングインスタンスAとコンピューティングインスタンスB)を利用して相互に対話し、連携することができる場合もあるが、サービステナントに基づいてコンピューティングインスタンスが分離されているため、これは困難になる。
【0004】
本開示は、上述の問題に対する解決策を説明する。
簡単な概要
本開示は、一般に、コンピューティングインスタンス間の接続の作成に関する。本明細書で説明されるように、コンピューティングリソースが異なるクラウドテナントからの2つの異なるサービスによってプロビジョニングされているにもかかわらず、2つ(またはそれ以上)のクラウドリソース(例えば、2つのコンピューティングインスタンス)を接続(「配線」とも呼ばれる)するためのインフラストラクチャと一般化される方法が説明されている。コンピューティングインスタンスを配線するために実行される自動プロセスについて説明する。自動プロセスは通常、2つの異なるサービスを提供し、2つの異なるサービステナントからプロビジョニングされる任意の2つのコンピューティングインスタンスを接続するために適用できる。
【0005】
例えば、顧客は、第1のサービスコンピューティングインスタンスと第2のサービスコンピューティングインスタンスを接続するために、第1のサービスインフラストラクチャに要求を送信することができる。要求は、第1のサービスインフラストラクチャの第1のサービス制御プレーンにより受信され、処理され得る。次に、2つのコンピューティングインスタンスを接続するためのワークフローが実行される。このワークフローには、第1のサービス制御プレーン、第2のサービス制御プレーン、およびID管理および認可サービス(IDMAS)によって実行される処理が含まれる。
【課題を解決するための手段】
【0006】
ある実施形態では、方法は、第1のサービスのための第1の制御プレーンが、第1のサービスの第1のコンピューティングインスタンスと第2のサービスの第2のコンピューティングインスタンスとの間の接続を作成するための要求を受信することを含み、第1のコンピューティングインスタンスは第1の制御プレーンによって制御され、第2のコンピューティングインスタンスは第2の制御プレーンによって制御され、第1のコンピューティングインスタンスは顧客テナント内にあり、第2のコンピューティングインスタンスは顧客テナント内にあり、第1のコンピューティングインスタンスは顧客テナント内の第2のコンピューティングインスタンスから分離される。方法は、第1の制御プレーンが、第1のコンピューティングインスタンスと第2のコンピューティングインスタンスとの間の接続を作成するための処理動作のセットを実行することと、処理動作のセットを実行した後、接続により第2のコンピューティングインスタンスの制御を得、第1のコンピューティングインスタンスと第2のコンピューティングインスタンスとの間の通信を可能にすることと、をさらに含む。
【0007】
さらに別の実施形態では、第1の制御プレーンが、第1の制御プレーンが顧客に代わって第2の制御プレーンと通信できることを示すトークンを取得する。
【0008】
さらに別の実施形態では、処理動作のセットを実行することは、第1の制御プレーンが、第2のコンピューティングインスタンス上で実行できる許可される動作のセットを決定することを含む。
【0009】
さらに別の実施形態では、処理動作のセットを実行することは、第1の制御プレーンが、第2の制御プレーンに接続要求を送信することを含み、接続要求は、第1のコンピューティングインスタンスおよび第2のコンピューティングインスタンスを識別する情報を含み、第2の制御プレーンは接続に関する情報を記憶し、処理動作のセットを実行することは、第1の制御プレーンが、接続に関する情報を記憶すること、を含む。
【0010】
さらに別の実施形態では、第1の制御プレーンはドミナント制御プレーンであり、第2の制御プレーンはパッシブ制御プレーンであり、第1のコンピューティングインスタンスはドミナントコンピューティングインスタンスであり、第2のコンピューティングインスタンスはパッシブコンピューティングインスタンスである。
【0011】
さらに別の実施形態では、接続を作成するための処理動作のセットを実行する前に、第1の制御プレーンが、顧客テナント内に第1のサービスの第1のコンピューティングインスタンスを作成することをさらに含む。
【0012】
さらに別の実施形態では、処理動作のセットを実行することは、第1の制御プレーンが第2の制御プレーンに、顧客テナント内で第2のコンピューティングインスタンスを作成するための要求を送信することを含み、第2の制御プレーンは、要求に応答して顧客テナント内に第2のコンピューティングインスタンスを作成する。
【0013】
さらに別の実施形態では、第1のサービスは企業リソースプランニング(ERP)サービスであり、第2のサービスは会話型人工知能(AI)サービスである。
【0014】
さらに別の実施形態では、処理動作のセットを実行した後、接続により、第2の制御プレーンは、第2のコンピューティングインスタンス上で少なくとも1つの動作を実行することが制限される。
【0015】
ある実施形態では、コンピュータ実行可能命令を記憶する非一時的なコンピュータ可読記憶媒体が開示され、コンピュータ実行可能命令は、実行されると、コンピュータシステムの1つまたは複数のプロセッサに方法を実行させ、方法は、第1のサービスの第1のコンピューティングインスタンスと第2のサービスの第2のコンピューティングインスタンスとの間の接続を作成するための要求を受信することを含み、第1のコンピューティングインスタンスはコンピュータシステムの第1の制御プレーンによって制御され、第2のコンピューティングインスタンスは第2の制御プレーンによって制御され、第1のコンピューティングインスタンスは顧客テナント内にあり、第2のコンピューティングインスタンスは顧客テナント内にあり、第1のコンピューティングインスタンスは顧客テナント内の第2のコンピューティングインスタンスから分離され、方法は、第1のコンピューティングインスタンスと第2のコンピューティングインスタンスとの間の接続を作成するために処理動作のセットを実行することと、処理動作のセットを実行した後、接続により第2のコンピューティングインスタンスの制御を得、第1のコンピューティングインスタンスと第2のコンピューティングインスタンスとの間の通信を可能にすることと、を含む。
【0016】
ある実施形態では、プロセッサと、プロセッサによって実行可能であり、プロセッサによる実行時に処理を実行させる複数の命令を記憶するように構成されているメモリと、を備えるコンピュータシステムが開示され、処理は、第1のサービスの第1のコンピューティングインスタンスと第2のサービスの第2のコンピューティングインスタンスとの間の接続を作成するための要求を受信することを含み、第1のコンピューティングインスタンスはコンピュータシステムの第1の制御プレーンによって制御され、第2のコンピューティングインスタンスは第2の制御プレーンによって制御され、第1のコンピューティングインスタンスは顧客テナント内にあり、第2のコンピューティングインスタンスは顧客テナント内にあり、第1のコンピューティングインスタンスは顧客テナント内の第2のコンピューティングインスタンスから分離され、処理は、第1のコンピューティングインスタンスと第2のコンピューティングインスタンスとの間の接続を作成するために処理動作のセットを実行することと、処理動作のセットを実行した後、接続により第2のコンピューティングインスタンスの制御を得、第1のコンピューティングインスタンスと第2のコンピューティングインスタンスとの間の通信を可能にすることと、を含む。
【0017】
ある実施形態では、本開示の実施形態による方法のいずれかのステップを実行する手段を備える、コンピューティングインスタンスを接続するための装置が開示される。
【0018】
ある実施形態では、プロセッサによって実行されると、本開示の実施形態による方法のいずれかのステップを実装するコンピュータ命令を含むコンピュータプログラム製品が開示される。
【0019】
前述のことは、他の特徴および実施形態とともに、以下の明細書、特許請求の範囲、および添付の図面を参照することによってより明らかになるであろう。
【図面の簡単な説明】
【0020】
【
図1】いくつかの実施形態による分散環境の簡略化されたブロック図である。
【
図2】ある実施形態による、顧客テナント内で2つのコンピューティングインスタンスを接続するプロセスを示す簡略化されたスイムチャートを示す図である。
【
図3】ある実施形態による、顧客テナント内に接続されている2つのコンピューティングインスタンスを分離するプロセスを示す簡略化されたスイムチャートを示す図である。
【
図4】ある実施形態による、顧客テナント内で2つのコンピューティングインスタンスを接続するプロセスを示す簡略化されたスイムチャートを示し、パッシブインスタンスはまだ存在せず、プロセスの一部として作成される図である。
【
図5】ある実施形態による、顧客テナント内で2つのコンピューティングインスタンスを接続するプロセスを示す簡略化されたスイムチャートを示し、ドミナントインスタンスはまだ存在せず、プロセスの一部として作成される図である。
【
図6】ある実施形態による、顧客テナント内で2つのコンピューティングインスタンスを接続するプロセスを示す簡略化されたスイムチャートを示し、2つのコンピューティングインスタンスは両方ともまだ存在しないが、プロセスの一部として作成される図である。
【
図7】ある実施形態による、動作が許可されるかどうかを決定するプロセスを示す図である。
【
図8】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための1つのパターンを示すブロック図である。
【
図9】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。
【
図10】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。
【
図11】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。
【
図12】少なくとも1つの実施形態による例示的なコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【0021】
詳細な説明
以下の説明では、説明の目的で、ある実施形態の完全な理解を提供するために特定の詳細が記載される。しかし、これらの特定の詳細がなくても、さまざまな実施形態を実施できることは明らかであろう。図および説明は、限定することを意図したものではない。「例示的な」という言葉は、本明細書では「例、事例、または実例として機能する」という意味で使用される。本明細書で「例示的」として説明されるいかなる実施形態または設計も、必ずしも他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。
【0022】
本開示は、一般に、コンピューティングインスタンス間の接続の作成に関する。顧客がIaaSクラウドサービスプロバイダ(CSP)によって提供されるIaaSサービスの加入者としてサインアップすると、顧客のためにアカウントまたはテナントが作成される。ある実装形態では、顧客用に作成されるテナント(顧客テナントとも呼ばれる)は、顧客のすべてのクラウドリソースを保持するルートレベルのコンパートメントを提供する。一般的なシナリオでは、顧客とそのユーザは、その顧客のテナント内に配置されるリソースにのみアクセスできる。これらのリソースには、例えば、顧客に1つまたは複数のサービスを提供するために顧客にプロビジョニングされる1つまたは複数のコンピューティングインスタンスが含まれ得る。
【0023】
顧客が加入し、顧客インスタンスが顧客にプロビジョニングされる特定のサービスの場合、コンピューティングインスタンスは通常、特定のサービスに関連するクラウドリソースをプロビジョニングおよび管理するように構成される別のサービスインフラストラクチャによって作成および提供される。例えば、顧客がサービスAとサービスBに加入している場合、独自のテナント(サービステナントと呼ばれる)に関連付けられるサービスAインフラストラクチャは、顧客にサービスAを提供するコンピューティングインスタンスAを作成およびプロビジョニングするように構成される。同様に、独自のテナントに関連付けられるサービスBインフラストラクチャは、顧客にサービスBを提供するコンピューティングインスタンスBを作成およびプロビジョニングするように構成される。コンピューティングインスタンスAのライフサイクル管理はサービスAインフラストラクチャによって排他的に制御され、コンピューティングインスタンスBのライフサイクル管理はサービスBインフラストラクチャによって排他的に制御される。さらに、別々のサービスインフラストラクチャによって作成されるコンピューティングインスタンスは、2つの異なるテナントのインフラストラクチャによってプロビジョニングされているため、相互に直接通信したり対話したりすることはできない。しかし、顧客が2つの異なるサービスインフラストラクチャから受信したリソース(例えば、上記の例ではコンピューティングインスタンスAとコンピューティングインスタンスB)を利用して相互に対話し、連携することができる場合もあるが、サービステナントに基づいてコンピューティングインスタンスが分離されているため、これは困難になる。
【0024】
この意味で、顧客は、2つのコンピューティングインスタンスを「接続」して、コンピューティングインスタンスのそのような協調機能を可能にすることを望む場合がある。以前は、このような接続は、接続する2つのコンピューティングインスタンスを実装するコードにカスタマイズされる変更を加えることでのみ実現できた。しかし、このような解決策はそれらのコンピューティングインスタンスにのみ固有であり、通常は接続される他のクラウドリソースに適用できない。さらに、接続する2つのコンピューティングインスタンスに特定のコード変更を適用する必要があるため、プロセスに時間がかかり、これらのコンピューティングインスタンスのみに固有であり、他のタイプのコンピューティングインスタンスには適用できない。その結果、顧客はそのような接続を要求に応じて要求できなかった。
【0025】
本開示は、上述の問題に対する解決策を説明する。本明細書で説明されるように、コンピューティングリソースが異なるクラウドテナントからの2つの異なるサービスによってプロビジョニングされているにもかかわらず、2つ(またはそれ以上)のクラウドリソース(例えば、2つのコンピューティングインスタンス)を接続(「配線」とも呼ばれる)するためのインフラストラクチャと一般化される方法が説明されている。コンピューティングインスタンスを配線するために実行される自動プロセスについて説明する。自動プロセスは通常、2つの異なるサービスを提供し、2つの異なるサービステナントからプロビジョニングされる任意の2つのコンピューティングインスタンスを接続するために適用できる。
【0026】
例えば、顧客は、第1のサービスコンピューティングインスタンスと第2のサービスコンピューティングインスタンスを接続するために、第1のサービスインフラストラクチャに要求を送信することができる。要求は、第1のサービスインフラストラクチャの第1のサービス制御プレーンにより受信され、処理され得る。次に、2つのコンピューティングインスタンスを接続するためのワークフローが実行される。このワークフローには、第1のサービス制御プレーン、第2のサービス制御プレーン、およびID管理および認可サービス(IDMAS)によって実行される処理が含まれる。このワークフローの一部として実行される処理に関連する詳細は、
図2、3、4、5、6、および7に示されており、以下で説明される。
【0027】
図1は、いくつかの実施形態による分散環境100の簡略化されたブロック図である。分散環境100は、1つまたは複数の通信ネットワーク上の1つまたは複数の通信リンクを介して互いに通信可能に結合される複数のコンピュータシステムを備えることができる。
図1の分散環境100は、サービスAインフラストラクチャ110、サービスBインフラストラクチャ120、顧客テナント130、ID管理および認可サービス140、ならびにユーザ動作コンソール106を含む。
【0028】
図1に示される分散環境は、単なる一例であり、請求される実施形態の範囲を不当に限定することを意図するものではない。多くの変形、代替、および修正が可能である。例えば、いくつかの実装形態では、分散環境100は、
図1に示されるものより多くの、または少ないコンピュータシステムまたは構成要素を有してもよい。あるいは、コンピュータシステムおよび通信回線の異なる構成または配置を有していてもよい。
【0029】
図1に示されるさまざまな構成要素は、1つまたは複数のコンピュータシステムを使用して実装することができる。例示的なコンピュータシステムは、コンピューティングリソース(例えば、1つまたは複数のプロセッサまたはCPU)、メモリリソース(例えば、システムメモリ、不揮発性メモリ)、およびネットワークリソース(例えば、ネットワークインターフェイスカード(NIC))を備え得る。コンピュータシステムは、ネットワークリソースを使用して、1つまたは複数の通信ネットワークを介して1つまたは複数の他のコンピュータシステムと通信することができる。通信ネットワークには、例えば、インターネット、イントラネット、エクストラネット、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、および通信を容易にする他のネットワーク、ならびにそれらの組み合わせが含まれ得る。通信は、1つまたは複数の有線または無線通信プロトコルを使用して、有線または無線リンクを介して行われてもよい。ある実装形態では、通信ネットワークは、IaaSプロバイダによって提供される物理基板ネットワークを含むことができる。
【0030】
ある実装形態では、
図1に示されるさまざまな構成要素は、サービスとしてのインフラストラクチャ(IaaS)プロバイダなどのクラウドサービスプロバイダ(CSP)によって提供されるインフラストラクチャによってホストされ得る。IaaSモデルでは、CSPは、顧客が仮想クラウドネットワーク(VCN)と呼ばれる独自のカスタマイズ可能なプライベートネットワークを構築するために使用できるインフラストラクチャ(クラウドサービスプロバイダインフラストラクチャまたはCSPIと呼ばれる)を提供する。顧客は、コンピューティングインスタンスなどの1つまたは複数の顧客リソースまたはワークロードをこれらのVCNに展開できる。コンピューティングインスタンスは、仮想マシンまたはベアメタルインスタンスにすることができる。仮想マシン(VM)コンピューティングインスタンスは、物理ベアメタルコンピュータシステム上で実行される独立した仮想化マシンであり得る。ハイパーバイザーなどの仮想化技術により、同じ物理コンピュータシステム(ホストマシンとも呼ばれる)上で複数の仮想マシンコンピューティングインスタンスを実行できる。ベアメタルコンピューティングインスタンスは、ハイパーバイザーなしのベアメタルサーバまたはホストマシンによってホストされる。ベアメタルコンピューティングインスタンスがプロビジョニングされると、単一の顧客またはテナントがベアメタルインスタンスをホストするコンピュータシステムの物理CPU、メモリ、およびネットワークインターフェイスの制御を維持し、コンピュータシステムは他の顧客やテナントと共有されない。
【0031】
顧客がIaaS CSPによって提供されるIaaSサービスの加入者としてサインアップすると、顧客のテナントと呼ばれるアカウントが顧客のために作成される。例えば、
図1に示すように、顧客テナント130は、加入顧客のために作成され得る。ある実装形態では、顧客テナント130などのテナントは、顧客のすべてのクラウドリソースを保持するルートレベルのコンパートメントを提供する。個別の異なる顧客に対して、特定の個別のテナントを作成できる。一般的なシナリオでは、顧客は、その顧客のテナント内に配置されているリソースにのみアクセスできる。顧客は、顧客のルートテナント(ルートコンパートメント)内に追加のコンパートメントを作成し、その追加のコンパートメント内に配置されるリソースへのアクセスをさらに制御することができる。これは、1つまたは複数のアクセスポリシーをコンパートメントに関連付けて、コンパートメント内のリソースへのアクセスを制御することによって実現される。顧客向けにクラウドリソース(例えば、コンピューティングインスタンス、ブロックボリューム、クラウドネットワークなど)が作成される場合、顧客はリソースを配置する特定のコンパートメントを指定できる。最も単純なデフォルトのシナリオでは、顧客のクラウドリソースは顧客のルートテナント内に配置される。例えば、
図1では、サービスAコンピューティングインスタンス131およびサービスBコンピューティングインスタンス132などの顧客のクラウドリソースは、顧客テナント130用に作成されるルートコンパートメント内に配置され得る。
【0032】
IaaSサービスに加入することに加えて、顧客は、1つまたは複数のCSPによって提供され得る他のさまざまなサービスに加入することができる。これらのサービスには、Software-as-a-Service(SaaS)モデル、Platform-as-a-Service(PaaS)モデル、およびその他のタイプのクラウドサービスで提供されるサービスが含まれ得る。クラウドサービスという用語は、一般に、CSPが提供するシステムおよびインフラストラクチャ(クラウドインフラストラクチャ)を使用して、CSPによってユーザまたは顧客が要求に応じて(例えば、加入モデルを介して)利用可能になるサービスを指すのに使用される。通常、CSPのインフラストラクチャを構成するサーバおよびシステムは、顧客自身のオンプレミスのサーバおよびシステムとは別のものである。したがって、顧客は、サービス用のハードウェアおよびソフトウェアリソースを個別に購入する必要なく、CSPが提供するクラウドサービスを利用できる。クラウドサービスは、サービスの提供に使用されるインフラストラクチャの調達に顧客が投資する必要なく、加入顧客がアプリケーションやコンピューティングリソースに簡単かつスケーラブルにアクセスできるように設計されている。
【0033】
例えば、
図1に示される実施形態では、顧客は、サービスAインフラストラクチャ110を使用してCSPによって提供される「サービスA」と、サービスBインフラストラクチャ120を使用してCSPによって提供される別の「サービスB」に加入することができる。サービスAインフラストラクチャ110は、1人または複数の加入顧客のためにサービスAに関連するクラウドリソースをプロビジョニングおよび管理するように構成されている。サービスAインフラストラクチャ110は、そのサービスのために特別に作成されるサービスAテナント115内で動作することができる。加入顧客のユーザ105は、コンソール106を使用して、サービスAを提供するコンピューティングインスタンスを要求する要求をサービスAインフラストラクチャ110に送信することができる。それに応じて、サービスAインフラストラクチャ110は、サービスAコンピューティングインスタンス131(例えば、サービスAを提供する特定のインスタンス)をユーザ105にプロビジョニングすることができる。
図1に示すように、プロビジョニングされるサービスAコンピューティングインスタンス131は、顧客テナント130内に記憶することができる。サービスAインフラストラクチャ110は、サービスAコンピューティングインスタンス131のライフサイクル管理と構成を担当する。
【0034】
ある実装形態では、
図1に示されるように、サービスAインフラストラクチャ110は、顧客(例えば、サービスAコンピューティングインスタンス131)にクラウドリソースをプロビジョニングし、コンピューティングインスタンスを構成し、コンピューティングインスタンスを更新し、サービスAコンピューティングインスタンス131のライフサイクル管理を実行する責任を負うサービスA制御プレーン112を含むことができる。サービスA制御プレーン112は、サービスAに加入している他の顧客に同様のサービスを提供することができる。サービスA制御プレーン112は、コマンドを受信し、さもなければ、例えばコンソール106を介してユーザ105と通信するためのフロントエンド113構成要素を含み得る。サービスAインフラストラクチャ110は、フロントエンド113によって受信されるユーザ要求に対応する処理を実行する役割を担うワークフロー構成要素114を含むこともできる。ある実施形態では、ワークフロー構成要素114は、制御プレーン112によって受信されるユーザ要求に対応する処理を実行するための1つまたは複数のワークフロープロセスを構成および実行する役割を担ってもよい。
【0035】
サービスBインフラストラクチャ120は、加入顧客のためにサービスBに関連するクラウドリソースをプロビジョニングおよび管理するように構成されている。サービスBインフラストラクチャ120は、そのサービスのために特別に作成されるサービスBテナント125内で動作することができる。加入顧客のユーザ105は、コンソール106を使用して、サービスBを提供するコンピューティングインスタンスを要求する要求をサービスBインフラストラクチャ120に送信することができる。それに応じて、サービスBインフラストラクチャ120は、サービスBコンピューティングインスタンス132(例えば、サービスBを提供する特定のインスタンス)をユーザ105にプロビジョニングすることができる。
図1に示すように、プロビジョニングされるサービスBコンピューティングインスタンス132は、顧客テナント130内に記憶することができる。サービスBインフラストラクチャ120は、サービスBコンピューティングインスタンス132のライフサイクル管理および構成を担当する。
【0036】
ある実装形態では、
図1に示すように、サービスBインフラストラクチャ120は、顧客(例えば、サービスBコンピューティングインスタンス132)にクラウドリソースをプロビジョニングし、コンピューティングインスタンスを構成し、コンピューティングインスタンスを更新し、サービスBコンピューティングインスタンス132のライフサイクル管理を実行する責任を負うサービスB制御プレーン122を含むことができる。サービスB制御プレーン122は、サービスBに加入している他の顧客に同様のサービスを提供することができる。サービスB制御プレーン122は、コマンドを受信し、さもなければ、例えばコンソール106を介してユーザ105と通信するためのフロントエンド123構成要素を含むことができる。サービスBインフラストラクチャ120は、フロントエンド123によって受信されるユーザ要求に対応する処理を実行する役割を担うワークフロー構成要素124を含むこともできる。ある実施形態では、ワークフロー構成要素124は、制御プレーン122によって受信されるユーザ要求に対応する処理を実行するための1つまたは複数のワークフロープロセスを構成および実行する役割を担ってもよい。
【0037】
サービスAテナント115、サービスBテナント125、および顧客テナント130は、3つの別個のテナントであることに留意されたい。サービスAインフラストラクチャ110は、サービスBインフラストラクチャ120によってプロビジョニングされるクラウドリソースにアクセスしたり、またはそれを制御したりすることはできない。例えば、サービスAインフラストラクチャ110はサービスBコンピューティングインスタンス132にアクセスできない。同様に、サービスBインフラストラクチャ120は、サービスAインフラストラクチャ110によってプロビジョニングされるクラウドリソースにアクセスしたり、またはそれを制御したりすることはできない。例えば、サービスBインフラストラクチャ120はサービスAコンピューティングインスタンス131にアクセスできない。
【0038】
サービスAコンピューティングインスタンス131とサービスBコンピューティングインスタンス132は、2つの異なるテナント、例えば、サービスAテナント115とサービスBテナント125内のエンティティによってプロビジョニングおよび制御されるため、2つのコンピューティングインスタンスは相互に対話することはできないし、しない。しかし、顧客が2つの異なるサービスから受信したリソースを利用して、相互に対話し、連携できるという状況も考えられる。例えば、顧客テナント130を持つ顧客は、サービスAコンピューティングインスタンス131とサービスBコンピューティングインスタンス132を利用して、連携できる。この意味で、顧客は2つのコンピューティングインスタンスを「接続」して、コンピューティングインスタンスのそのような協調機能を可能にすることを希望し得る。例えば、サービスAが、企業リソースプランニング(ERP)サービスなどの企業アプリケーションサービスを提供するSaaSサービスであると仮定する。したがって、サービスAインフラストラクチャ110によってプロビジョニングされるサービスAコンピューティングインスタンス131は、顧客にERPサービスを提供することができる。さらに、サービスBが会話型人工知能(AI)サービス(デジタルアシスタントまたはチャットボットサービスとも呼ばれる)であると仮定する。サービスBインフラストラクチャ120は、顧客のためにチャットボットサービスインスタンス(例えば、サービスBコンピューティングインスタンス132)を作成および訓練するように構成され、チャットボットサービスインスタンスは、話し言葉および/または書き言葉に応答するように構成される。顧客はチャットボット経由で自身のERPサービスと対話したい場合がある。これを達成するために、顧客は、自身のチャットボットサービスインスタンス(例えば、サービスBコンピューティングインスタンス132)をERPコンピューティングインスタンス(例えば、サービスAコンピューティングインスタンス131)に接続することを望む場合がある。
【0039】
これまでは、そのような接続は、接続される2つのコンピューティングインスタンスを実装するコードにカスタマイズされる変更を加えることによってのみ達成できた。しかし、このような解決策はそれらのコンピューティングインスタンスにのみ固有であり、通常は接続される他のクラウドリソースに適用できない。さらに、接続する2つのコンピューティングインスタンスに特定のコード変更を適用する必要があるため、プロセスに時間がかかり、これらのコンピューティングインスタンスのみに固有であり、他のタイプのコンピューティングインスタンスには適用できない。その結果、顧客はそのような接続を要求に応じて要求できなかった。
【0040】
本開示は、上述の問題に対する解決策を説明する。本明細書で説明されるように、コンピューティングリソースが異なるクラウドテナントからの2つの異なるサービスによってプロビジョニングされているにもかかわらず、2つ(またはそれ以上)のクラウドリソース(例えば、2つのコンピューティングインスタンス)を接続(「配線」とも呼ばれる)するためのインフラストラクチャと一般化される方法が説明されている。コンピューティングインスタンスを配線するために実行される自動プロセスについて説明する。自動プロセスは通常、2つの異なるサービスを提供し、2つの異なるサービステナントからプロビジョニングされる任意の2つのコンピューティングインスタンスを接続するために適用できる。
【0041】
例えば、
図1に示される実施形態では、ユーザ105は、コンソール106を介して、サービスAインフラストラクチャ110に要求を送信して、サービスAコンピューティングインスタンス131およびサービスBコンピューティングインスタンス132を接続することができる。要求は、サービスA制御プレーン112によって受信され、処理され得る。次に、2つのコンピューティングインスタンスを接続するためにワークフローが実行され、このワークフローには、サービスA制御プレーン112、サービスB制御プレーン122、ならびにID管理および認可サービス(IDMAS)140によって実行される処理が含まれる。このワークフローの一部として実行される処理に関連する詳細は、
図2、3、4、5、6、および7に示されており、以下で説明される。2つのコンピューティングインスタンスを接続するための全体的なワークフローには、サービスAインフラストラクチャ110、サービスBインフラストラクチャ120、およびIDMAS140によって実行される個別のワークフローが含まれ得る。
【0042】
例えば、ERPサービスコンピューティングインスタンスおよびチャットボットコンピューティングインスタンスに関して前述した例では、ユーザは、2つのコンピューティングインスタンスが接続されることを要求することができる。次に、接続を実行するための処理が実行される。接続の結果、ERPコンピューティングインスタンスのユーザは、チャットボットインスタンスとの会話を使用してERPインスタンスと対話できるようになる。
【0043】
接続される2つのコンピューティングインスタンス間の接続が顧客によって望まれなくなった場合、顧客ユーザは、要求に応じて、以前に接続されたコンピューティングインスタンスの分離(すなわち、接続の解除)を要求することができる。例えば、
図1に示される実施形態では、ユーザ105は、コンソール106を介して、サービスAインフラストラクチャ110に、以前に接続されたサービスAコンピューティングインスタンス131およびサービスBコンピューティングインスタンス132を分離するための要求を送信することができる。要求は、サービスA制御プレーン112によって受信され、処理され得る。次に、2つのコンピューティングインスタンスを分離するためにワークフローが実行され、このワークフローには、サービスA制御プレーン112、サービスB制御プレーン122、ならびにID管理および認可サービス140によって実行される処理が含まれる。このワークフローの一部として実行される処理に関連する詳細は
図3に示されており、以下で説明される。
【0044】
したがって、本明細書に記載の実施形態により、ユーザ105は、要求に応じて、2つのコンピューティングインスタンスが接続されて互いに通信できるようにすること、または再び要求に応じて、分離できるように要求することができる。
図1に示すように、接続は、サービスAコンピューティングインスタンス131とサービスBコンピューティングインスタンス132との間の通信リンクを表す接続リンク133を使用して象徴的に示されている。
【0045】
接続/分離処理に関連付けられる情報は、サービスAインフラストラクチャ110により接続/分離情報111として記憶され得る。同様に、接続/分離処理に関連付けられる情報は、サービスBインフラストラクチャ120によって接続/分離情報121として記憶されてもよい。
【0046】
ID管理および認可サービス140は、要求側ユーザが、接続または分離されるコンピューティングインスタンスの特定のセットの接続または分離を要求することを認可されるかどうかをチェックするためのサービスを提供するように構成される。認可は、接続または分離されるサービスインスタンスに対して定義されるアクセス制御ポリシーに基づく場合がある。例えば、どのインスタンスを接続/分離できるか、どのユーザが接続/分離を要求できるか、などを制御するポリシーを顧客テナント130に対して定義することができる。ID管理および認可サービス140は、そのようなポリシーを評価して、要求を認可できるかどうかを決定することができる。ID管理および認可サービス140は、サービスAインフラストラクチャ110およびサービスBインフラストラクチャ120が、接続プロセス中(または分離プロセス中)、ユーザ105に代わって相互に通信できるようにすることができる。
【0047】
図2は、ある実施形態による、顧客テナント内で2つのコンピューティングインスタンスを接続するプロセスを示す簡略化されたスイムチャート200を示す。
図2に示す処理は、それぞれのシステムの1つまたは複数の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)で、ハードウェアを使用して、またはそれらの組み合わせで、実装され得る。ソフトウェアは、非一時的な記憶媒体(例えば、メモリデバイス)に記憶されてもよい。
図2に示し、以下に説明する方法は、例示的で、非限定的であることを意図したものである。
図2は、特定のシーケンスまたは順序で発生するさまざまな処理動作を示しているが、これに限定することを意図したものではない。ある代替実施形態では、処理は何らかの異なる順序で実行されてもよく、またはいくつかのステップが並行して実行されてもよい。
【0048】
スイムチャート200は、2つのコンピューティングインスタンスを接続するプロセスを示している。
図2に示されるプロセスでは、接続される2つのコンピューティングインスタンスが、接続要求を受信する前にすでに存在していることが仮定される。例えば、接続されている2つのコンピューティングインスタンスは、接続要求を受信する前にあらかじめ作成されたものであり得る。ある実施形態では、2つのサービスから2つのインスタンスを接続するための要求が受信されるとき、インスタンスがまだ存在していない場合、処理の一部として、コンピューティングインスタンスは、最初にそれぞれのサービスインフラストラクチャと対話することによって作成され、その後、コンピューティングインスタンスは、
図2に示される処理に従って接続され得る。
【0049】
例えば、
図1に示される実施形態では、ユーザ105は、(例えば、コンソール106を介して)サービスAの第1のコンピューティングインスタンスを作成する命令をサービスA制御プレーンフロントエンド113に送信することができる。ユーザ命令の受信に応答して、サービスA制御プレーンワークフロー114は、ユーザの顧客テナント130内にサービスAコンピューティングインスタンス131(例えば、第1のサービスの実体)を作成および構成することができる。サービスA制御プレーン112は、サービスAコンピューティングインスタンス131の制御および管理を継続することができる。同様に、ユーザ105は、(例えば、コンソール106を介して)サービスBの第2のコンピューティングインスタンスを作成する命令をサービスB制御プレーン122に送信することができる。ユーザ命令の受信に応答して、サービスB制御プレーン122は、ユーザの顧客テナント130内にサービスBコンピューティングインスタンス132(例えば、第2のサービスの実体)を作成および構成することができる。サービスB制御プレーン122は、サービスBコンピューティングインスタンス132の制御および管理を継続することができる。
【0050】
サービスAコンピューティングインスタンス131とサービスBコンピューティングインスタンス132の両方が顧客テナント130内に存在し得るが、サービスAコンピューティングインスタンス131とサービスBコンピューティングインスタンス132は独立して作成でき、最初は顧客テナント130内で互いに分離されている。通常、サービスA制御プレーン112はサービスAコンピューティングインスタンス131の所有権を有し、その結果、サービスA制御プレーン112のみがサービスAコンピューティングインスタンス131にアクセスしてサービスAコンピューティングインスタンス131を構成できる。同様に、通常、サービスB制御プレーン122はサービスBコンピューティングインスタンス132の所有権を有し、その結果、サービスB制御プレーン122のみがサービスBコンピューティングインスタンス132にアクセスしてサービスBコンピューティングインスタンス132を構成することができる。この分離のため、サービスAコンピューティングインスタンス131とサービスBコンピューティングインスタンス132は、通常、相互に通信したり、または情報を共有したりすることができない。
【0051】
図2に示され、以下で説明される処理は、ユーザの命令に基づいて、サービスAコンピューティングインスタンス131とサービスBコンピューティングインスタンス132とを接続することができる。接続の結果として、サービスAコンピューティングインスタンス131とサービスBコンピューティングインスタンス132は通信し、情報を交換することができる。また、サービスA制御プレーン112は、サービスAコンピューティングインスタンス131とサービスBコンピューティングインスタンス132の両方を所有、制御、および/または構成することができる。
【0052】
図2に示されるように、処理は、ユーザデバイス(例えば、コンソール106)を使用するユーザ105が、サービスAコンピューティングインスタンス131およびサービスBコンピューティングインスタンス132を接続するための要求をサービスA制御プレーン112に送信するとき、S202で開始され得る。
【0053】
本開示の目的上、ユーザから接続要求を受信する制御プレーンを「ドミナント」制御プレーンと呼び、他方の制御プレーンを「パッシブ」制御プレーンと呼ぶ。ドミナント制御プレーンは接続プロセスを開始し、接続を実行するために必要な機能とAPIを含む。例えば、
図2では、サービスA制御プレーン112はS202で接続要求を受信するため、ドミナント制御プレーンとなり、一方、サービスB制御プレーン122がパッシブ制御プレーンとなる。
【0054】
図2に示される例では、命令はサービスA制御プレーンフロントエンド113によって受信される。2つの別個のサービス制御プレーンによって作成される2つの別個のコンピューティングインスタンスが接続されるため、ある実施形態では、接続要求は2つのサービス制御プレーンのいずれか一方に送信され得る。例えば、サービスAコンピューティングインスタンス131とサービスBコンピューティングインスタンス132を接続する場合、接続要求は、ユーザデバイス(例えば、コンソール106)によってサービスA制御プレーン112またはサービスB制御プレーン122のいずれかに送信され得る。ユーザ105は、ユーザデバイス(例えば、コンソール106)を介して、どのサービスに命令を送信するかを決定することができる。例えば、ユーザ105は、ユーザデバイス(例えば、コンソール106)を介して、ユーザインターフェイスに表示されるリストからサービスAを選択することができる。
【0055】
他のいくつかの実装形態では、2つのコンピューティングインスタンスを接続するために、接続要求を2つのサービス制御プレーンのうちの特定の1つに送信する必要があり得る。例えば、一例として、サービスAコンピューティングインスタンス131およびサービスBコンピューティングインスタンス132が接続されるためには、接続要求はサービスB制御プレーン122ではなくサービスA制御プレーン112に送信される必要があり得る。このような実装形態では、制御プレーンのうちの1つ(例えば、サービスA制御プレーン112)だけが(例えば、利用可能な処理能力およびAPIに基づいて)ドミナント制御プレーンとなり得る。このような場合、ユーザデバイス(例えば、コンソール106)は、ドミナント制御プレーンとなり得る特定の制御プレーンに接続要求を送信しなければならない。
【0056】
ある実施形態では、接続プロセスが完了した後、接続により、ドミナント制御プレーンは、パッシブ制御プレーンのコンピューティングインスタンス(顧客テナント内)の制御および所有権を有することになる。この結果、パッシブ制御プレーンがコンピューティングインスタンス上で実行できるある動作(例えば、コンピューティングインスタンスの削除)は、接続が存続する限り許可されなくなる。その代わりに、そのような実施形態では、パッシブ制御プレーンは、ドミナント制御プレーンからの接続メッセージおよび命令を受信して従い、ドミナント制御プレーンがパッシブ制御プレーンのコンピューティングインスタンスの制御を取得できるようにする。
【0057】
接続要求を受信した後、ドミナント制御プレーンは、次いで、接続要求を実行できるかどうかを決定する処理を開始することができる。例えば、接続を要求しているユーザがそのような要求を認可するかどうかを決定する処理が実行されてもよい。ある実装形態では、ID管理および認可サービス140は、認可のための処理を実行することができる。したがって、S204で、ドミナント制御プレーン(この例では、サービスA制御プレーン112)は、S202で受信される要求に関連するID管理および認可サービス140情報を送信することができる。次に、ID管理および認可サービス140は、認可プロセスを開始することができる。認可が成功した場合(つまり、ユーザは、識別される2つのコンピューティングインスタンスの接続を要求できる)、次に、S204の一部として、ID管理および認可サービス140は、接続処理を続行するための認可を提供する応答をドミナント制御プレーン(すなわち、サービスA制御プレーン112)に送り返すことができる。
【0058】
いくつかの実施形態では、ID管理および認可サービス140によってサービスA制御プレーン112に送信される応答は、On-Behalf-Of(OBO)トークンを含むことができる。サービスA制御プレーン112に送信されるOBOトークンは、サービスA制御プレーン112が、ユーザデバイス(例えば、コンソール106)に代わって接続関連命令をサービスB制御プレーン122に送信することを認可されていることのトークンまたは証拠として機能する。ある実装形態では、OBOトークンは、サービスA制御プレーン112からサービスB制御プレーン122への後続のすべての通信(一般に、ドミナント制御プレーンからパッシブ制御プレーンへの通信)における認可の証拠として含めることができる。
【0059】
ある実施形態では、2つのコンピューティングインスタンス間の接続が許可されているかどうかを確認するためのチェックも実行され得る。このような実装形態では、接続は、あるタイプのコンピューティングインスタンス間でのみ許可され得る。つまり、あるサービスのコンピューティングインスタンス間でのみ許可され得る。許可されるサービス間の接続を識別する情報が記憶され得る。S202で受信した要求が、接続が許可されていない2つのコンピューティングインスタンスを識別する場合、接続プロセスは終了され、エラーメッセージが要求側ユーザに返されてもよい。例えば、サービスAコンピューティングインスタンスとサービスBコンピューティングインスタンスとの間の接続が許可されていない場合、コンピューティングインスタンス131および132を接続するための要求は許可されない可能性がある。ある実装形態では、識別される2つのコンピューティングインスタンス間の接続が許可されているかどうかを確認するこのチェックは、接続要求を受信した後、ドミナント制御プレーンにより実行される。ドミナント制御プレーンは、許可される接続を識別する情報にアクセスして、特定の要求される接続がどこで許可されるかを決定することができる。いくつかの他の実装形態では、このチェックはID管理および認可サービス140によって実行されてもよい。
【0060】
接続を実行する処理は、同期的に実行されてもよいし、非同期的に実行されてもよい。いくつかの実装形態では、要求側ユーザは処理全体が完了するまで待つ必要がない(またはロックされない)ため、非同期実装が好ましい。したがって、非同期処理を使用する実装形態では、S206で、サービスA制御プレーンフロントエンド113は、処理を実行するための非同期作業要求を作成し、作業要求識別子をユーザデバイス(例えば、コンソール106)に提供する。ユーザデバイス(例えば、コンソール106)は、作業要求IDを送信することによって、接続処理のステータスに関する更新を要求することができる。
【0061】
S208において、ステップS204におけるID管理および認可処理を完了した後、サービスA制御プレーンフロントエンド113は、サービスA制御プレーンワークフロー114構成要素に、接続を作成するためのワークフローを開始するように指示する。いくつかの実施形態では、サービスA制御プレーンフロントエンド113は、接続を作成するためのサービスB制御プレーン122との通信に使用するために、サービスA制御プレーンワークフロー114にOBOトークンを提供することができる。
【0062】
S210において、サービスA制御プレーンワークフロー114(すなわち、ドミナント制御プレーン)は、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)に接続要求を送信する。接続要求は、サービスB制御プレーン122が所有するコンピューティングインスタンスが、ドミナント制御プレーン(すなわち、サービスA制御プレーン122)が所有する別のコンピューティングインスタンスに接続されていることをサービスB制御プレーン122に通知する。接続要求メッセージには、接続に関連付けられる任意の適切な情報のペイロードが含まれる。例えば、接続要求は、サービスA制御プレーン112が接続の作成を開始することを認可されていることを示すID/認可情報を含むことができる。例えば、S204でサービスA制御プレーン112によって受信されるOBOトークンは、S210で送信される要求に含まれてもよい。さらに、接続要求は、接続されるインスタンス(例えば、サービスAコンピューティングインスタンス131およびサービスBコンピューティングインスタンス132)を示すことができる。コンピューティングインスタンスは、インスタンスを一意に識別する識別子、例えば、それぞれのOracle Cloud Identifier(OCID)を使用して識別できる。
【0063】
さらに、接続要求は、ドミナント制御プレーンおよびパッシブ制御プレーンのIDを示すことができる。例えば、
図2の例では、ドミナント制御プレーンはサービスA制御プレーン112であり、パッシブ制御プレーンはサービスB制御プレーン122である。これによってもまた、ドミナントコンピューティングインスタンスとパッシブコンピューティングインスタンスが識別される。サービスA制御プレーン112はドミナント制御プレーンであるため、サービスAコンピューティングインスタンス131はドミナントコンピューティングインスタンスと呼ばれる。同様に、サービスB制御プレーン122はパッシブ制御プレーンであるため、接続ではサービスBコンピューティングインスタンス132をパッシブコンピューティングインスタンスと呼ぶ。
【0064】
さらに、ある実施形態では、接続により、(a)顧客、および(b)パッシブ制御プレーンがパッシブコンピューティングインスタンス上で実行できる動作に制限が課される。ある実装形態では、S210で送信される接続要求は、これらの制限を示す情報を含むことができる。例えば、要求は、顧客およびパッシブ制御プレーンごとに、接続により、顧客および/またはパッシブ制御プレーンによるパッシブコンピューティングインスタンス上で許可されるまたは許可されない1つまたは複数の動作のリストを識別し得る。要求は、接続により、顧客によるパッシブコンピューティングインスタンス上で許可される、または許可されない1つまたは複数の動作のリストを識別し得る。ある実装では、顧客およびパッシブサービス制御プレーンの各々に対して、許可される動作のリストが提供される。接続が存在する間は、リストで特に指定されていない動作は許可されない。いくつかの実施形態では、パッシブコンピューティングインスタンス(例えば、サービスBコンピューティングインスタンス132)を削除するための動作は、顧客が許可される動作の新しいリストにもはや含まれない場合がある。いくつかの実施形態では、接続を削除する動作は、顧客ではなく所有者にのみ許可され得る。
【0065】
CREATE ATTACH APIと呼ばれ得る接続要求の例を以下に示す。
POST/ServiceBInstances/<instanceId>/attachments/
{
"attachToId":
"ocid1.ServiceAinstance.oc1..aaaaaaaat733hgqhsleueh6yeqyx3gnbiik47cca4juksmlodvzr3B6cwbpa",
"attachmentType":"ServiceA",//既知の列挙型
"attachmentMetadata":{},//接続固有のメタデータ
"ownerMetadata":{//所有者固有のメタデータ
"ownerService":["ServiceA-control-plane"],//ServiceACPのSP名。これは、同じサービスの複数のSP名をサポートするためのリストである。
//何らかの*は、このリソースのすべてのアクセス許可を管理することを意味する。
"allowedOwnerOperations"://所有者が実行できるはずの動作のリスト
"allowedCustomerOperations"://他のすべての呼び出し元に許可される制御プレーンのアクセス許可文字列のリスト
}
}
【0066】
上記の要求に示されているように、パッシブコンピューティングインスタンス(上記の例では、サービスBインスタンス)がドミナントコンピューティングインスタンス(上記の例では、サービスAインスタンス)に接続されている。要求内の「attachToId」は、パッシブコンピューティングインスタンスが接続されるドミナントコンピューティングインスタンスの識別子(例えば、OCID)を提供する。「attachmentType」は、ドミナントコンピューティングインスタンスのタイプ、つまりドミナントコンピューティングインスタンスによって提供されるサービスを識別する。「attachmentMetadata」は接続固有のメタデータを提供する。「ownerMetadatattachmentTypea」は、所有者固有のメタデータを提供する。「ownerService」は、ドミナント制御プレーンに関連付けられるサービスプロバイダ名を識別する。上記の例では、名前は「ServiceA-control-plane」である。「allowedOwnerOperations」は、接続が存在する間に所有者(すなわち、ドミナント制御プレーン)による許可される動作を識別する。例えば、ドミナント制御プレーン(すなわち、サービスA制御プレーン112)は、パッシブコンピューティングインスタンス上でGET、LIST、UPDATEおよびDELETE ATTACHMENT動作を実行することを許可され得る。「allowedCustomerOperations」は、接続が存在する間に顧客による許可される動作を識別する。例えば、顧客はパッシブコンピューティングインスタンス上でGET、LISTおよびUPDATE動作の実行のみを許可され得る。
【0067】
顧客(例えば、顧客テナントの管理者)、ドミナント制御プレーン(すなわち、サービスA制御プレーン112)、パッシブ制御プレーン(すなわち、サービスB制御プレーン122)のいずれも、接続が存在する間、パッシブコンピューティングインスタンス(すなわち、サービスBコンピューティングインスタンス132)を削除することが許可されないことに留意されたい。したがって、パッシブ制御プレーン(すなわち、サービスB制御プレーン122)がパッシブコンピューティングインスタンス(すなわち、サービスBコンピューティングインスタンス132)の作成者および所有者であるにもかかわらず、接続中に、パッシブコンピューティングインスタンス(すなわち、サービスBコンピューティングインスタンス132)を削除することは許可されていない。
【0068】
S212において、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)は、接続要求を受信したことに応答して処理を実行する。これには、サービスA制御プレーン112(すなわち、ドミナント制御プレーン)から受信した接続要求の詳細を記録に記憶(「ポストする」とも呼ばれる)して接続情報を永続化することと、サービスBコンピューティングインスタンス132(すなわち、パッシブコンピューティングインスタンス)に関連付けられる所有権および許可される動作を変更することと、を含むことができる。
【0069】
例えば、サービスB制御プレーン122は、顧客テナント130内で、サービスBコンピューティングインスタンス132(例えば、関連するOCIDによって識別される)が現在サービスAコンピューティングインスタンス131(例えば、関連するOCIDによって識別される)に接続されていることを示す記録を作成し、記憶することができる。この記録は、サービスBコンピューティングインスタンス132がパッシブコンピューティングインスタンスであり、サービスAコンピューティングインスタンス131がドミナントコンピューティングインスタンスであることを示すことができる。さらに、記録は、関連する制御プレーンとそのそれぞれの役割を示すことができる。例えば、ドミナント制御プレーンはサービスA制御プレーン112であり得、パッシブ制御プレーンはサービスB制御プレーン122であり得る。この記録には、パッシブコンピューティングインスタンスが接続されているサービスのタイプ(つまり、ドミナントコンピューティングインスタンスによって提供されるサービス)を示す情報を含めることもできる。さらに、記録は、サービスA制御プレーン112が現在サービスBコンピューティングインスタンス132の所有者であることを示すことができる(すなわち、この例ではサービスA制御プレーン112がドミナント制御プレーンであるため)。これにより、サービスB制御プレーン122は、サービスBコンピューティングインスタンス132の制御および所有権をサービスA制御プレーン112に与えることができる。記録は、接続が存在する間にサービスBコンピューティングインスタンス132でどのような動作が許可されるかを示すこともでき、その動作は、以前に許可された動作の修正であってもよい。動作には、サービスBコンピューティングインスタンス132に対する顧客が許可される動作および所有者が許可される動作(例えば、ドミナント制御プレーンが実行できる動作)を含めることができる。例えば、削除動作は顧客が許可される動作に含まれ得ないため、接続が存在する間は実行できない場合がある。
【0070】
いくつかの実施形態では、サービスB制御プレーン122は、サービスA制御プレーン112が接続の作成を開始することを認可されていることを検証することができる。例えば、サービスB制御プレーン122は、OBOトークンおよび/またはOBOトークンに関連付けられる許可の信頼性を検証することができる。
【0071】
いくつかの実施形態では、S212の一部として、サービスB制御プレーン122は、顧客テナント130内のサービスBコンピューティングインスタンス132を変更および構成して、接続が存在することを示すことができる。
【0072】
前述したように、ある実装形態では、接続を実行する処理は非同期で実行することができる。その場合、サービスA制御プレーン112は、サービスB制御プレーン122に定期的にポーリングして、サービスB制御プレーン122によって実行されている接続要求の処理のステータスを決定してもよい。いくつかの実施形態では、サービスB制御プレーン122は、サービスA制御プレーン112に非同期要求識別子を提供して、接続要求が受信され、処理中であることを確認することができる。次いで、サービスA制御プレーン112は、現在の処理ステータスについてサービスB制御プレーン122にポーリングするときに、非同期要求識別子を使用することができる。最終的に、サービスB制御プレーン122は、サービスB制御プレーン122において接続処理が完了したことを示すメッセージで応答する。メッセージは、サービスB制御プレーン122によって実行される処理の成功または失敗のいずれかを示し得る。
【0073】
したがって、S214において、サービスB制御プレーン122は、接続がサービスB制御プレーン122で処理されることを示す接続応答をサービスA制御プレーン112に送信する。接続応答メッセージは、ステップS210で送信される接続要求メッセージに従って接続の詳細が確認され、実装されることをサービスA制御プレーン112に通知することができる。
【0074】
パッシブ制御プレーン(例えば、サービスB制御プレーン122)からドミナント制御プレーン(例えば、サービスA制御プレーン112)に送信される接続応答メッセージの例を以下に示す。
応答==>
{
"iD":"ocid1.serviceattachment.oc1.uK-london-1.aaaaa...."
//パッシブ制御プレーンが生成する接続ID
「instanceID」:
"ocid1.ServiceBinstance.oc1.uK-london-
1.amaaaaaaaxki4uqarjeyspipvniykktxvdglpc52ycz7rrxibl5tcvfkcoaa"
"attachToId":
"ocid1.ServiceAinstance.oc1..aaaaaaaat733hgqhsleueh6yeqyx3gnbiik47cca4juksmlodvzr3B6cwbpa"
"compartmentId":“インスタンスまたはこの接続のコンパートメント”
"attachmentType":“ServiceA”
"ownerMetadata":{
"attachmentType":"ServiceA"//多態性識別子
"ownerService":["ServiceA-control-plane"]
//サービスプロバイダごとの追加のカスタムフィールド。例えば、サービスA制御プレーンは次の2つを定義できる。他のサービスプロバイダは独自のサービスを定義できる。
"allowedCustomerOperations"://他のすべての呼び出し元に許可される制御プレーンのアクセス許可文字列のリスト
"allowedOwnerOperations"://所有者が実行できる動作のリスト
""
}
"LifecycleState":“ATTACHIMG”
}
【0075】
上記の要求に示されているように、「i d」は接続の識別子を提供する。「instanceID」は、現在ドミナントコンピューティングインスタンスに接続されているパッシブコンピューティングインスタンスの識別子(例えば、OCID)を提供する。「attachToId」は、パッシブコンピューティングインスタンスが現在接続されているドミナントコンピューティングインスタンスの識別子(例えば、OCID)を提供する。「compartmentId」は、パッシブコンピューティングインスタンスまたは接続のコンパートメント(例えば、パッシブコンピューティングインスタンスが配置される顧客テナント130内のコンパートメント)を識別する。「attachmentType」は、ドミナントコンピューティングインスタンスのタイプ、つまりドミナントコンピューティングインスタンスによって提供されるサービスを識別する。「ownerMetadata」は、以下の追加データフィールドを示す。「ownerService」は、ドミナント制御プレーンに関連付けられるサービスプロバイダ名を識別する。上記の例では、名前は「ServiceA-control-plane」である。特定のサービスおよび制御プレーン用に構成される追加のデータフィールドを含めることができる。例えば、「allowedCustomerOperations」は、接続が存在するときに顧客による許可される動作を識別する。例えば、顧客はパッシブコンピューティングインスタンス上でGET、LIST、UPDATE、およびATTACH動作を実行することを許可され得る。「allowedOwnerOperations」は、接続が存在する間に所有者(すなわち、ドミナント制御プレーン)による許可される動作を識別する。例えば、ドミナント制御プレーン(すなわち、サービスA制御プレーン112)は、パッシブコンピューティングインスタンス上でGET、LIST、およびUPDATE動作を実行することを許可され得る。「lifecycleState」は、接続に対して現在どのような動作が実行されているかを示す。上記の例では、接続が確立中であるため、「lifecycleState」は「attaching」になっている。
【0076】
任意選択で、S216で、サービスA制御プレーン112(すなわち、ドミナント制御プレーン)は、顧客テナント130内のサービスBコンピューティングインスタンス132を構成および/または更新するために、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)に命令を送信することができる。例えば、コンピューティングインスタンスのタイプに応じて、サービスA制御プレーン112は、サービスBコンピューティングインスタンス132とサービスAコンピューティングインスタンス131との間の通信を可能にする機能(例えば、チャットボットコンピューティングインスタンスのスキル)をサービスBコンピューティングインスタンス132にインストールすることができる。
【0077】
S218において、サービスA制御プレーン112(すなわち、ドミナント制御プレーン)は、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)からの接続応答を受信したことに応答して、コンピューティングインスタンスを接続するための処理を実行する。例えば、サービスA制御プレーン112は、接続情報をドミナント制御プレーンに保持するために、任意の適切な情報を記録に記憶することができる。これには、サービスB制御プレーン122によって示されるサービスBコンピューティングインスタンス132のコンパートメントID(例えば、顧客テナント130内)を記憶することが含まれ得る。さらに、サービスA制御プレーン112は、どのような許可される動作がサービスB制御プレーン122によって同意され、および/または提供されるかを識別することができる。
【0078】
いくつかの実施形態では、S218で実行される処理の一部として、サービスA制御プレーン112は、サービスAコンピューティングインスタンス131とサービスBコンピューティングインスタンス132が相互に通信できるように、ID配線を実行することができる。これには、今後のサービス呼び出しがOAuth資格証明を使用して実行できるように、Oracle Identity Cloud Service(IDCS)OAuth資格証明の設定および永続化が含まれ得る。
【0079】
いくつかの実施形態では、S218で実行される処理の一部として、サービスA制御プレーン112は、接続を示すようにサービスAコンピューティングインスタンス131および/またはサービスBコンピューティングインスタンス132を構成できる。
【0080】
この時点で、両方の制御プレーンは接続に同意し、接続に関連付けられる情報を記憶し、ある許可、所有権、構成を変更するなど、接続を完了するための処理を実行する。サービスB制御プレーン122(すなわち、パッシブ制御プレーン)は、サービスBコンピューティングインスタンス132(すなわち、パッシブコンピューティングインスタンス)の制御および所有権をサービスA制御プレーン112(すなわち、ドミナント制御プレーン)に与えている。その結果、サービスA制御プレーン112(ドミナント制御プレーン)は現在、サービスAコンピューティングインスタンス131(すなわち、ドミナントコンピューティングインスタンス)とサービスBコンピューティングインスタンス132(すなわち、パッシブコンピューティングインスタンス)の両方の制御と所有権を有し、他のサービス制御プレーンは、サービスBコンピューティングインスタンス132の所有権を主張できない。サービスAコンピューティングインスタンス131と接続されるサービスBコンピューティングインスタンス132は両方とも、顧客テナント130内に引き続き存在する。
【0081】
接続およびサービスA制御プレーンのサービスBコンピューティングインスタンス132の一時的所有権は、接続が後続の分離API呼び出しによって削除されるまで有効のままである。いくつかの実施形態では、接続が存在する間はサービスBコンピューティングインスタンス132を削除することができない。サービスBコンピューティングインスタンス132を削除するには、最初にコンピューティングインスタンスを分離する必要があり、その後、サービスBコンピューティングインスタンス132を削除することができる。ユーザデバイス(例えば、コンソール106)が、サービスBコンピューティングインスタンス132の所有権をもはや持たないサービスB制御プレーン122を介してサービスBコンピューティングインスタンス132を削除しようとすると、接続が存在するため、削除の試みは拒否される。ユーザデバイス(例えば、コンソール106)が、現在所有権を有するサービスA制御プレーン112を介してサービスBコンピューティングインスタンス132を削除しようとすると、ユーザデバイス(例えば、コンソール106)には、接続が存在することが通知されるため、コンピューティングインスタンスが分離されるまでサービスBコンピューティングインスタンス132を削除することはできない。
【0082】
S220で、サービスA制御プレーンワークフロー114は、接続が正常に確立されたことを示す(あるいは、失敗した場合には)完了メッセージをサービスA制御プレーンフロントエンド113に送り返すことができる。次に、S222で、サービスA制御プレーンフロントエンド113は、接続が正常に確立されたことを示す(または失敗を示す)完了メッセージをユーザ105に(例えば、コンソール106などのユーザデバイスを介して)送り返すことができる。
【0083】
図2に示す処理の結果、2つの異なるサービステナントで動作する2つの異なるサービスからの2つのコンピューティングインスタンスは、通常は別個で独立しており、依存関係または接続なしで、ユーザ105の希望に応じて、相互に通信し、連携(例えば、API呼び出しを介して)するように接続できるようになった。実施形態は、2つのコンピューティングインスタンス間の対話または通信が一方向または双方向であることを可能にする。
【0084】
一例として、サービスAコンピューティングインスタンス131は、顧客関係管理サービスを提供できるフュージョンアプリケーションサービスのコンピューティングインスタンスであり得る。サービスBコンピューティングインスタンス132は、チャットボットなどの顧客対話サービスを提供できるOracle Digital Assistant(ODA)アプリケーションのコンピューティングインスタンスとすることができる。ユーザは、フュージョンアプリケーションサービスに記憶されているある質問セットや対応する応答回答など、ODAインスタンスを構成および/または訓練するための情報を提供できる。その結果、顧客がチャットボットに質問を送信すると、チャットボットは質問に基づいてフュージョンアプリケーションサービスから回答を取得し、その応答回答を顧客に提供できる。
【0085】
ユーザ105は、2つのインスタンスが対話して情報を共有できるように、フュージョンコンピューティングインスタンスとODAコンピューティングインスタンスを接続することを望む場合がある。通常、2つのインスタンスは対話することができず、2つのインスタンス間の情報の共有は人間のユーザによって手動で行われる。しかし、上記のプロセスを使用して接続すると、人間のユーザを必要とせずに情報の自動共有を行うことができる。例えば、ODAコンピューティングインスタンスは顧客と対話して顧客の注文書を受信することができ、ODAコンピューティングインスタンスは接続されているフュージョンコンピューティングインスタンスに注文書情報を提供することができ、フュージョンコンピューティングインスタンスは注文書を履行できる。
【0086】
上で説明し、
図1に示した例では、ドミナントおよびパッシブコンピューティングインスタンス(例えば、サービスAコンピューティングインスタンス131およびサービスBコンピューティングインスタンス132)は両方とも同じ顧客に対して作成され、したがって同じ顧客テナントの下にある。しかし、他の実施形態では、接続される2つのインスタンスは、2つの異なる顧客テナントに存在し得る。これは、上記の
図2に関して説明したのと同じ方法で実行することができ、同じ顧客テナント内にある2つのコンピューティングインスタンスを接続する。換言すれば、インスタンスのクロステナント接続が可能である。
【0087】
上記のプロセスは、1つのコンピューティングインスタンスを別のコンピューティングインスタンスに接続すること、すなわち、1対1接続を説明する。しかし、これに限定されるものではない。他の実施形態では、1対多(例えば、1つのドミナントコンピューティングインスタンスと複数のパッシブコンピューティングインスタンス)、多対1(例えば、複数のドミナントコンピューティングインスタンスと1つのパッシブコンピューティングインスタンス)、および/または多対多タイプの接続(例えば、複数のパッシブコンピューティングインスタンスに接続される複数のドミナントコンピューティングインスタンス)など、複数のコンピューティングインスタンスを含む他のタイプの接続を作成することができる。複数のコンピューティングインスタンスを有する実施形態では、コンピューティングインスタンスは、異なるサービスによるインスタンスである(例えば、各々が異なるサービスに対応する複数のパッシブコンピューティングインスタンス)。
【0088】
図3は、ある実施形態による、顧客テナント内に接続されている2つのコンピューティングインスタンスを分離するプロセスを示す簡略化されたスイムチャート300を示す。
図3に示す処理は、それぞれのシステムの1つまたは複数の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)で、ハードウェアを使用して、またはそれらの組み合わせで、実装され得る。ソフトウェアは、非一時的な記憶媒体(例えば、メモリデバイス)に記憶されてもよい。
図3に示し、以下に説明する方法は、例示的であり、非限定的であることを意図したものである。
図3は、特定のシーケンスまたは順序で発生するさまざまな処理動作を示しているが、これに限定することを意図したものではない。ある代替実施形態では、処理は何らかの異なる順序で実行されてもよく、またはいくつかのステップが並行して実行されてもよい。
【0089】
スイムチャート300は、2つのコンピューティングインスタンスを分離するプロセスを示している。
図3に示されるプロセスでは、分離される2つのコンピューティングインスタンスがすでに存在し、分離要求を受信する前にすでに接続されていると仮定されている。例えば、分離される2つのコンピューティングインスタンスは、
図2に関して上で説明した処理を通じて以前に接続されている場合がある。
【0090】
図3に示されるように、処理は、ユーザデバイス(例えば、コンソール106)を使用するユーザ105が、ユーザの顧客テナント130内のサービスAコンピューティングインスタンス131とサービスBコンピューティングインスタンス132を分離するための要求をサービスA制御プレーン112に送信するときS302で開始され得る。
【0091】
非同期処理を使用する実装形態では、S304で、サービスA制御プレーンフロントエンド113は、処理を実行するための非同期作業要求を作成し、作業要求識別子をユーザデバイス(例えば、コンソール106)に提供する。ユーザデバイス(例えば、コンソール106)は、作業要求IDを送信することによって、接続処理のステータスに関する更新を要求することができる。
【0092】
S306で、サービスA制御プレーンフロントエンド113は、サービスA制御プレーンワークフロー114構成要素に、2つのコンピューティングインスタンスを分離するためのワークフローを開始するように指示する。いくつかの実施形態では、サービスA制御プレーンフロントエンド113は、2つのコンピューティングインスタンスを分離するためにサービスB制御プレーン122との通信に使用するために、サービスA制御プレーンワークフロー114にOBOトークンを提供することができる。
【0093】
S308で、サービスA制御プレーンワークフロー114(すなわち、ドミナント制御プレーン)は、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)に分離要求を送信する。分離要求は、サービスB制御プレーン122に、サービスB制御プレーン122に関連付けられるコンピューティングインスタンスが、ドミナント制御プレーン(すなわち、サービスA制御プレーン122)に関連付けられる別のコンピューティングインスタンスから分離されつつあることを通知し、これにより、以前のコンピューティングインスタンスの設定が復元される。分離要求メッセージには、接続と分離に関連する任意の適切な情報のペイロードが含まれる。例えば、分離要求は、サービスA制御プレーン112が分離を開始することを認可されていることを示すID/認可情報を含むことができる。例えば、サービスA制御プレーン112(例えば、
図2のS204)によって受信されるOBOトークンは、S308で送信される要求に含まれてもよい。さらに、接続要求は、分離されるインスタンス(例えば、サービスAコンピューティングインスタンス131およびサービスBコンピューティングインスタンス132)を示すことができる。コンピューティングインスタンスは、インスタンスを一意に識別する識別子、例えば、それぞれのOracle Cloud Identifier(OCID)を使用して識別できる。さらに、分離要求は、ドミナント制御プレーンとパッシブ制御プレーンのIDだけでなく、対応するドミナント制御プレーンとパッシブ制御プレーンのIDも示すことができる。分離要求には、接続の識別子も含まれ得る。
【0094】
さらに、ある実施形態では、接続の除去により、パッシブコンピューティングインスタンス上で実行できる動作に以前に課されていた制限が除去され得る。ある実装形態では、S308で送信される分離要求は、これらの制限の除去を示す情報を含むことができる。例えば、要求は、顧客およびパッシブ制御プレーンごとに、1つまたは複数の動作のリストを識別し得、これらの動作は、接続により、顧客および/またはパッシブ制御プレーンによるパッシブコンピューティングインスタンス上で許可されているか、または許可されていないため、接続が除去されるときに復元する必要がある。いくつかの実施形態では、接続に関連付けられる動作のリストを削除することができ、それによって接続に関連付けられる制限が削除される。
【0095】
S310において、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)は、分離要求を受信したことに応答して処理を実行する。これには、ポストされる記録から接続の詳細を削除すること、およびサービスBコンピューティングインスタンス132(すなわち、パッシブコンピューティングインスタンス)に関連付けられる所有権および許可される動作を変更することが含まれ得る。いくつかの実施形態では、サービスB制御プレーン122は、サービスA制御プレーン112が接続を除去することを認可されていることを検証することができる。例えば、サービスB制御プレーン122は、OBOトークンの信頼性および/またはOBOトークンに関連付けられる許可を検証することができる。いくつかの実施形態では、S310の一部として、サービスB制御プレーン122は、以前の接続がもはや存在しないことを示すために、顧客テナント130内のサービスBコンピューティングインスタンス132を変更および構成することができる。
【0096】
S312において、サービスB制御プレーン122は、サービスB制御プレーン122において分離が処理されることを示す分離応答をサービスA制御プレーン112に送信する。分離応答メッセージは、サービスA制御プレーン112に、以前の接続詳細が除去されることを通知し、ステップS308で送信される分離要求メッセージに従って復元されるインスタンス設定を計算することができる。
【0097】
S314において、サービスA制御プレーン112(すなわち、ドミナント制御プレーン)は、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)からの分離応答を受信したことに応答して、コンピューティングインスタンスを分離する処理を実行する。例えば、サービスA制御プレーン112は、ドミナント制御プレーンにおける以前の接続に関する記憶される情報を除去することができ、以前の許可される動作のセットを復元し、ID配線を除去でき、ならびに/またはサービスAコンピューティングインスタンス131および/もしくはサービスBコンピューティングインスタンス132を構成して接続を示さなくなる。
【0098】
この時点で、両方の制御プレーンは接続を除去することに同意し、接続に関連付けられる記憶情報の削除やある許可、所有権、構成の復元など、コンピューティングインスタンスを分離するための処理を実行する。サービスB制御プレーン122(すなわち、パッシブ制御プレーン)は、サービスBコンピューティングインスタンス132(すなわち、パッシブコンピューティングインスタンス)の制御および所有権を取り戻した。その結果、サービスA制御プレーン112(ドミナント制御プレーン)は、サービスBコンピューティングインスタンス132(すなわち、パッシブコンピューティングインスタンス)の制御および所有権を持たなくなる。サービスAコンピューティングインスタンス131とサービスBコンピューティングインスタンス132は両方とも、顧客テナント130内に引き続き存在する。
【0099】
S316において、サービスA制御プレーンワークフロー114は、分離が正常に完了したことを示す(あるいは、失敗した場合には)完了メッセージをサービスA制御プレーンフロントエンド113に送り返すことができる。次に、S318で、サービスA制御プレーンフロントエンド113は、接続が正常に除去されたことを示す(または失敗を示す)完了メッセージをユーザ105に(例えば、コンソール106などのユーザデバイスを介して)送り返すことができる。
【0100】
図4は、ある実施形態による、顧客テナント内で2つのコンピューティングインスタンスを接続するプロセスを示す簡略化されたスイムチャート400を示す。ここで、パッシブインスタンスはまだ存在せず、プロセスの一部として作成される。
図4に示す処理は、それぞれのシステムの1つまたは複数の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)で、ハードウェアを使用して、またはそれらの組み合わせで、実装され得る。ソフトウェアは、非一時的な記憶媒体(例えば、メモリデバイス)に記憶されてもよい。
図4に示され、以下に説明される方法は、例示的であり、非限定的であることを意図したものである。
図4は、特定のシーケンスまたは順序で発生するさまざまな処理動作を示しているが、これに限定することを意図したものではない。ある代替実施形態では、処理は何らかの異なる順序で実行されてもよく、またはいくつかのステップが並行して実行されてもよい。
【0101】
スイムチャート400は、2つのコンピューティングインスタンスを接続するプロセスを示している。
図4に示されるプロセスでは、接続されるドミナントインスタンスは接続要求を受信する前にすでに存在し、接続されるパッシブインスタンスは接続要求を受信する前にはまだ存在しないことが仮定される。例えば、接続されているドミナントコンピューティングインスタンスは接続要求を受信する前にあらかじめ作成され得るが、接続されているパッシブコンピューティングインスタンスは接続要求を受信する前に作成されていない。
【0102】
例えば、
図1に示す実施形態では、ユーザ105は、(例えば、コンソール106を介して)サービスAの第1のコンピューティングインスタンスを作成する命令をサービスA制御プレーンフロントエンド113に送信することができる。ユーザ命令を受信したことに応答して、サービスA制御プレーンワークフロー114は、ユーザの顧客テナント130内にサービスAコンピューティングインスタンス131(例えば、第1のサービスの実体)を作成および構成することができる。サービスA制御プレーン112は、サービスAコンピューティングインスタンス131の制御および管理を継続することができる。しかし、ユーザ105は、サービスBの第2のコンピューティングインスタンスを作成する命令をサービスBの制御プレーン122に送信していない可能性があり、したがって、サービスBのコンピューティングインスタンス132(例えば、第2のサービスの実体)は、ユーザの顧客テナント130内にはまだ存在していない可能性がある。
【0103】
図4に示すように、処理はユーザデバイス(例えば、コンソール106)を使用するユーザ105が、ユーザの顧客テナント130内でサービスAコンピューティングインスタンス131とサービスBコンピューティングインスタンス132を接続するための要求をサービスA制御プレーン112に送信するときS402で開始することができ、これは
図2のステップS202と同一または類似であり得る。
【0104】
接続要求を受信した後、ドミナント制御プレーンは、接続要求を実行できるかどうかを決定する処理を開始することができる。例えば、接続を要求しているユーザがそのような要求を認可するかどうかを決定する処理が実行されてもよい。ある実装形態では、ID管理および認可サービス140は、認可のための処理を実行することができる。したがって、
図2のステップS204と同一または類似であり得るS404では、ドミナント制御プレーン(この例では、サービスA制御プレーン112)が、S402で受信した要求に関連する情報をID管理および認可サービス140に送信することができる。次に、ID管理および認可サービス140は、認可プロセスを開始することができる。認可が成功した場合(つまり、ユーザが2つのコンピューティングインスタンスの接続を要求できる場合)、次に、S404の一部として、ID管理および認可サービス140は、接続処理を続行するための認可を提供する応答をドミナント制御プレーン(すなわち、サービスA制御プレーン112)に送り返すことができる。いくつかの実施形態では、ID管理および認可サービス140によってサービスA制御プレーン112に送信される応答は、On-Behalf-Of(OBO)トークンを含むことができる。
【0105】
非同期処理を使用した実装形態では、S406では、
図2のステップS206と同一または類似であり得、サービスA制御プレーンフロントエンド113は、処理を実行するための非同期作業要求を作成し、作業要求識別子をユーザデバイス(例えば、コンソール106)に提供する。ユーザデバイス(例えば、コンソール106)は、作業要求IDを送信することによって、接続処理のステータスに関する更新を要求することができる。
【0106】
図2のステップS208と同一または類似であり得るS408では、ステップS404におけるID管理および認可処理が完了した後、サービスA制御プレーンフロントエンド113は、サービスA制御プレーンワークフロー114構成要素に、接続を作成するためのワークフローを開始するように指示する。いくつかの実施形態では、サービスA制御プレーンフロントエンド113は、接続を作成するためのサービスB制御プレーン122との通信に使用するために、サービスA制御プレーンワークフロー114にOBOトークンを提供することができる。
【0107】
S409Aで、サービスA制御プレーンワークフロー114は、サービスBコンピューティングインスタンス132(例えば、第2のサービスの実体)がユーザの顧客テナント130内に存在しないと決定する。したがって、接続を作成することができる前に、サービスBコンピューティングインスタンス132を作成することが決定される。
【0108】
S409Bでは、サービスA制御プレーンワークフロー114は、ユーザの顧客テナント130内にサービスBコンピューティングインスタンス132(例えば、第2のサービスの実体)を作成するための要求をサービスB制御プレーン122(すなわち、パッシブ制御プレーン)に送信する。作成要求には、作成に関連する任意の適切な情報のペイロードが含まれる。例えば、作成要求は、サービスA制御プレーン112がコンピューティングインスタンスの作成を開始することを認可されていることを示すID/認可情報を含むことができる。例えば、S404でサービスA制御プレーン112によって受信されるOBOトークンは、S409Bで送信される要求に含まれてもよい。
【0109】
S409Cにおいて、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)は、作成要求を受信したことに応答して処理を実行する。これには、ユーザの顧客テナント130内でサービスBコンピューティングインスタンス132(例えば、第2のサービスの実体)を作成および構成することが含まれ得る。サービスB制御プレーン122は、サービスBコンピューティングインスタンス132の制御および管理を継続することができる。次に、サービスB制御プレーン122は、コンピューティングインスタンスがユーザの顧客テナント130内で作成されることを示す作成応答をサービスA制御プレーン112に送信することができる。応答メッセージは、サービスBコンピューティングインスタンス132のインスタンス識別子(例えば、OCID)および他の任意の適切な情報をサービスA制御プレーン112に通知することができる。サービスBコンピューティングインスタンス132が作成された後、サービスA制御プレーン112は、2つのコンピューティングインスタンスを接続するプロセスを続行することができる。
【0110】
S410では、
図2のステップS210と同一または類似であり得、サービスA制御プレーンワークフロー114(すなわち、ドミナント制御プレーン)は、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)に接続要求を送信する。接続要求は、サービスB制御プレーン122が所有するコンピューティングインスタンスが、ドミナント制御プレーン(すなわち、サービスA制御プレーン122)が所有する別のコンピューティングインスタンスに接続されていることをサービスB制御プレーン122に通知する。接続要求メッセージには、接続に関連付けられる任意の適切な情報のペイロードが含まれる。例えば、接続要求は、サービスA制御プレーン112が接続の作成を開始することを認可されていることを示すID/認可情報を含むことができる。例えば、S404でサービスA制御プレーン112によって受信されるOBOトークンは、S410で送信される要求に含まれてもよい。さらに、接続要求は、接続されるインスタンス(例えば、サービスAコンピューティングインスタンス131およびサービスBコンピューティングインスタンス132)を示すことができる。コンピューティングインスタンスは、インスタンスを一意に識別する識別子、例えば、それぞれのOracle Cloud Identifier(OCID)を使用して識別できる。さらに、接続要求は、ドミナント制御プレーンとパッシブ制御プレーンのIDだけでなく、対応するドミナント制御プレーンとパッシブ制御プレーンのIDも示すことができる。
【0111】
さらに、ある実施形態では、接続により、(a)顧客、および(b)パッシブ制御プレーンがパッシブコンピューティングインスタンス上で実行できる動作に制限が課される。ある実装形態では、S410で送信される接続要求には、これらの制限を示す情報が含まれ得る。例えば、要求は、各顧客およびパッシブ制御プレーンごとに、接続により、顧客および/またはパッシブ制御プレーンによるパッシブコンピューティングインスタンス上で許可されるまたは許可されない1つまたは複数の動作のリストを識別し得る。要求は、接続により、顧客によるパッシブコンピューティングインスタンス上で許可される、または許可されない1つまたは複数の動作のリストを識別し得る。ある実装形態では、顧客およびパッシブサービス制御プレーンの各々に対して、許可される動作のリストが提供される。接続が存在する間は、リストで特に指定されていない動作は許可されない。いくつかの実施形態では、パッシブコンピューティングインスタンス(例えば、サービスBコンピューティングインスタンス132)を削除するための動作は、顧客が許可される動作の新しいリストにもはや含まれない場合がある。いくつかの実施形態では、接続を削除する動作は、顧客ではなく所有者にのみ許可され得る。
【0112】
S412において、
図2のステップS212と同一または類似であり得、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)は、接続要求を受信したことに応答して処理を実行する。これには、サービスA制御プレーン112(すなわち、ドミナント制御プレーン)から受信した接続要求の詳細を記録に記憶(「ポストする」とも呼ばれる)して接続情報を永続化することと、サービスBコンピューティングインスタンス132(すなわち、パッシブコンピューティングインスタンス)に関連付けられる所有権および許可される動作を変更することと、を含むことができる。いくつかの実施形態では、サービスB制御プレーン122は、サービスA制御プレーン112が接続の作成を開始することを認可されていることを検証することができる。例えば、サービスB制御プレーン122は、OBOトークンの信頼性および/またはOBOトークンに関連付けられる許可を検証することができる。いくつかの実施形態では、S412の一部として、サービスB制御プレーン122は、顧客テナント130内のサービスBコンピューティングインスタンス132を変更および構成して、接続が存在することを示すことができる。
【0113】
S414において、
図2のステップS214と同一または類似であり得、サービスB制御プレーン122は、接続がサービスB制御プレーン122で処理されることを示す接続応答をサービスA制御プレーン112に送信する。接続応答メッセージは、ステップS410で送信される接続要求メッセージに従って接続の詳細が確認され、実装されることをサービスA制御プレーン112に通知することができる。
【0114】
任意に、S416において、
図2のステップS216と同一または類似であり得、サービスA制御プレーン112(すなわち、ドミナント制御プレーン)は、顧客テナント130内のサービスBコンピューティングインスタンス132を構成および/または更新するために、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)に命令を送信することができる。例えば、コンピューティングインスタンスのタイプに応じて、サービスA制御プレーン112は、サービスBコンピューティングインスタンス132とサービスAコンピューティングインスタンス131との間の通信を可能にする機能(例えば、チャットボットコンピューティングインスタンスのスキル)をサービスBコンピューティングインスタンス132にインストールすることができる。
【0115】
S418において、
図2のステップS218と同一または類似であり得、サービスA制御プレーン112(すなわち、ドミナント制御プレーン)は、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)からの接続応答を受信したことに応答して、コンピューティングインスタンスを接続するための処理を実行する。例えば、サービスA制御プレーン112は、接続情報をドミナント制御プレーンに保持するために、任意の適切な情報を記録に記憶することができる。これには、サービスB制御プレーン122によって示されるサービスBコンピューティングインスタンス132のコンパートメントID(例えば、顧客テナント130内)を記憶することが含まれ得る。さらに、サービスA制御プレーン112は、どのような許可される動作がサービスB制御プレーン122によって同意され、および/または提供されたかを識別することができる。いくつかの実施形態では、S418で実行される処理の一部として、サービスA制御プレーン112は、サービスAコンピューティングインスタンス131とサービスBコンピューティングインスタンス132が相互に通信できるようにID配線を実行することができる。いくつかの実施形態では、S418で実行される処理の一部として、サービスA制御プレーン112は、接続を示すようにサービスAコンピューティングインスタンス131および/またはサービスBコンピューティングインスタンス132を構成することができる。
【0116】
この時点で、両方の制御プレーンは接続に同意し、接続に関連付けられる情報の記憶やある許可、所有権、および構成の変更など、接続を完了するための処理を実行する。サービスB制御プレーン122(すなわち、パッシブ制御プレーン)は、サービスBコンピューティングインスタンス132(すなわち、パッシブコンピューティングインスタンス)の制御および所有権をサービスA制御プレーン112(すなわち、ドミナント制御プレーン)に与えている。その結果、サービスA制御プレーン112(ドミナント制御プレーン)は、サービスAコンピューティングインスタンス131(すなわち、ドミナントコンピューティングインスタンス)とサービスBコンピューティングインスタンス132(すなわち、パッシブコンピューティングインスタンス)の両方の制御と所有権を現在有する。サービスAコンピューティングインスタンス131と接続されるサービスBコンピューティングインスタンス132は両方とも、顧客テナント130内に引き続き存在する。
【0117】
S420では、
図2のステップS220と同一または類似であり得、サービスA制御プレーンワークフロー114は、接続が正常に確立されたことを示す(または、失敗した場合)完了メッセージをサービスA制御プレーンフロントエンド113に送り返すことができる。次に、S422では、
図2のステップS222と同一または類似であり得、サービスA制御プレーンフロントエンド113は、接続が正常に確立されたことを示す(または失敗を示す)完了メッセージをユーザ105に(例えば、コンソール106などのユーザデバイスを介して)送り返すことができる。
【0118】
図4に示される処理の結果として、2つの異なるサービステナントで動作する2つの異なるサービスからの2つのコンピューティングインスタンスは、通常は別個で独立しており、依存関係や接続はないが、ユーザ105の希望に応じて接続され、相互に通信できるようになる。
【0119】
図5は、ある実施形態による、顧客テナント内で2つのコンピューティングインスタンスを接続するプロセスを示す簡略化されたスイムチャート500を示し、ここで、ドミナントインスタンスはまだ存在せず、プロセスの一部として作成される。
図5に示される処理は、それぞれのシステムの1つまたは複数の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)で、ハードウェアを使用して、またはそれらの組み合わせで、実装され得る。ソフトウェアは、非一時的な記憶媒体(例えば、メモリデバイス)に記憶されてもよい。
図5に示し、以下に説明する方法は、例示的であり、非限定的であることを意図したものである。
図5は、特定のシーケンスまたは順序で発生するさまざまな処理動作を示しているが、これに限定することを意図したものではない。ある代替実施形態では、処理は何らかの異なる順序で実行されてもよく、またはいくつかのステップが並行して実行されてもよい。
【0120】
スイムチャート500は、2つのコンピューティングインスタンスを接続するプロセスを示している。
図5に示すプロセスでは、接続されるパッシブインスタンスは接続要求を受信する前にすでに存在し、接続されるドミナントインスタンスは接続要求を受信する前にはまだ存在しないと仮定する。例えば、接続されているパッシブコンピューティングインスタンスは接続要求を受信する前にあらかじめ作成され得るが、接続されているドミナントコンピューティングインスタンスは接続要求を受信する前に作成されていない。
【0121】
例えば、
図1に示される実施形態では、ユーザ105は、(例えば、コンソール106を介して)サービスBの第2のコンピューティングインスタンスを作成する命令をサービスB制御プレーン122に送信することができる。ユーザ命令を受信したことに応答して、サービスB制御プレーン122は、ユーザの顧客テナント130内にサービスBコンピューティングインスタンス132(例えば、第2のサービスの実体)を作成および構成することができる。サービスB制御プレーン122は、サービスBコンピューティングインスタンス132の制御および管理を継続することができる。しかし、ユーザ105は、サービスAの第1のコンピューティングインスタンスを作成する命令をサービスAの制御プレーンフロントエンド113に送信していない可能性があり、したがって、サービスAコンピューティングインスタンス131(例えば、第1のサービスの実体)は、ユーザの顧客テナント130内にまだ存在していない可能性がある。
【0122】
図5に示すように、処理は、ユーザデバイス(例えば、コンソール106)を使用するユーザ105が、ユーザの顧客テナント130内でサービスAコンピューティングインスタンス131とサービスBコンピューティングインスタンス132を接続するための要求をサービスA制御プレーン112に送信するときS502で開始することができ、これは
図2のステップS202と同一または類似であり得る。
【0123】
接続要求を受信した後、ドミナント制御プレーンは、接続要求を実行できるかどうかを決定する処理を開始することができる。例えば、接続を要求しているユーザがそのような要求を認可されるかどうかを決定する処理が実行されてもよい。ある実装形態では、ID管理および認可サービス140は、認可のための処理を実行することができる。したがって、S504において、
図2のステップS204と同一または類似であり得、ドミナント制御プレーン(この例では、サービスA制御プレーン112)は、S502で受信される要求に関連するID管理および認可サービス140情報を送信することができる。次に、ID管理および認可サービス140は、認可プロセスを開始することができる。認可が成功した場合(つまり、ユーザが2つのコンピューティングインスタンスの接続を要求できる場合)、次に、S504の一部として、ID管理および認可サービス140は、接続処理を続行するための認可を提供する応答をドミナント制御プレーン(すなわち、サービスA制御プレーン112)に送り返すことができる。いくつかの実施形態では、ID管理および認可サービス140によってサービスA制御プレーン112に送信される応答は、On-Behalf-Of(OBO)トークンを含むことができる。
【0124】
非同期処理を使用する実装形態では、
図2のステップS206と同一または類似であり得るS506で、サービスA制御プレーンフロントエンド113は、処理を実行するための非同期作業要求を作成し、作業要求識別子をユーザデバイス(例えば、コンソール106)に提供する。ユーザデバイス(例えば、コンソール106)は、作業要求IDを送信することによって、接続処理のステータスに関する更新を要求することができる。
【0125】
図2のステップS208と同一または類似であり得るS508において、ステップS504のID管理および認可処理を完了した後、サービスA制御プレーンフロントエンド113は、サービスA制御プレーンワークフロー114構成要素に、接続を作成するためのワークフローを開始するように指示する。いくつかの実施形態では、サービスA制御プレーンフロントエンド113は、接続を作成するためのサービスB制御プレーン122との通信に使用するために、サービスA制御プレーンワークフロー114にOBOトークンを提供することができる。
【0126】
S509-Aにおいて、サービスA制御プレーンワークフロー114は、サービスAコンピューティングインスタンス131(例えば、第1のサービスの実体)がユーザの顧客テナント130内に存在しないと決定する。したがって、接続を作成することができる前に、サービスAのコンピューティングインスタンス131を作成することが決定される。
【0127】
S509-Bにおいて、サービスA制御プレーンワークフロー114は、ユーザの顧客テナント130内にサービスAコンピューティングインスタンス131(例えば、第1のサービスの実体)を作成し、構成する。サービスA制御プレーン112は、サービスAコンピューティングインスタンス131の制御および管理を継続することができる。サービスAコンピューティングインスタンス131が作成された後、サービスA制御プレーン112は、2つのコンピューティングインスタンスを接続するプロセスを続行することができる。
【0128】
S510において、
図2のステップS210と同一または類似であり得、サービスA制御プレーンワークフロー114(すなわち、ドミナント制御プレーン)は、サービスB制御プレーン122に接続要求を送信する(すなわち、パッシブ制御プレーン)。接続要求は、サービスB制御プレーン122が所有するコンピューティングインスタンスが、ドミナント制御プレーン(すなわち、サービスA制御プレーン122)が所有する別のコンピューティングインスタンスに接続されていることをサービスB制御プレーン122に通知する。接続要求メッセージには、接続に関連付けられる任意の適切な情報のペイロードが含まれる。例えば、接続要求は、サービスA制御プレーン112が接続の作成を開始することを認可されていることを示すID/認可情報を含むことができる。例えば、S504でサービスA制御プレーン112によって受信されるOBOトークンは、S510で送信される要求に含まれてもよい。さらに、接続要求は、接続されるインスタンス(例えば、サービスAコンピューティングインスタンス131およびサービスBコンピューティングインスタンス132)を示すことができる。コンピューティングインスタンスは、インスタンスを一意に識別する識別子、例えば、それぞれのOracle Cloud Identifier(OCID)を使用して識別できる。さらに、接続要求は、ドミナント制御プレーンとパッシブ制御プレーンのIDだけでなく、対応するドミナント制御プレーンとパッシブ制御プレーンのIDも示すことができる。
【0129】
さらに、ある実施形態では、接続により、(a)顧客、および(b)パッシブ制御プレーンがパッシブコンピューティングインスタンス上で実行できる動作に制限が課される。ある実装形態では、S510で送信される接続要求は、これらの制限を示す情報を含むことができる。例えば、要求は、各顧客およびパッシブ制御プレーンごとに、接続により、顧客および/またはパッシブ制御プレーンによるパッシブコンピューティングインスタンス上で許可されるまたは許可されない1つまたは複数の動作のリストを識別し得る。要求は、接続により、顧客によるパッシブコンピューティングインスタンス上で許可される、または許可されない1つまたは複数の動作のリストを識別し得る。ある実装形態では、顧客およびパッシブサービス制御プレーンの各々に対して、許可される動作のリストが提供される。接続が存在する間は、リストで特に指定されていない動作は許可されない。いくつかの実施形態では、パッシブコンピューティングインスタンス(例えば、サービスBコンピューティングインスタンス132)を削除するための動作は、顧客が許可される動作の新しいリストにもはや含まれない場合がある。いくつかの実施形態では、接続を削除する動作は、顧客ではなく所有者にのみ許可され得る。
【0130】
S512では、
図2のステップS212と同一または類似であり得、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)は、接続要求を受信したことに応答して処理を実行する。これには、サービスA制御プレーン112(すなわち、ドミナント制御プレーン)から受信した接続要求の詳細を記録に記憶(「ポストする」とも呼ばれる)して接続情報を永続化することと、サービスBコンピューティングインスタンス132(すなわち、パッシブコンピューティングインスタンス)に関連付けられる所有権および許可される動作を変更することと、を含むことができる。いくつかの実施形態では、サービスB制御プレーン122は、サービスA制御プレーン112が接続の作成を開始することを認可されていることを検証することができる。例えば、サービスB制御プレーン122は、OBOトークンおよび/またはOBOトークンに関連付けられる許可の信頼性を検証することができる。いくつかの実施形態では、S512の一部として、サービスB制御プレーン122は、顧客テナント130内のサービスBコンピューティングインスタンス132を変更および構成して、接続が存在することを示すことができる。
【0131】
S514では、
図2のステップS214と同一または類似であり得、サービスB制御プレーン122は、接続がサービスB制御プレーン122で処理されることを示す接続応答をサービスA制御プレーン112に送信する。接続応答メッセージは、ステップS510で送信される接続要求メッセージに従って接続の詳細が確認され、実装されることをサービスA制御プレーン112に通知することができる。
【0132】
任意選択で、S516では、
図2のステップS216と同一または類似であり得、サービスA制御プレーン112(すなわち、ドミナント制御プレーン)は、顧客テナント130内のサービスBコンピューティングインスタンス132を構成および/または更新するために、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)に命令を送信することができる。例えば、コンピューティングインスタンスのタイプに応じて、サービスA制御プレーン112は、サービスBコンピューティングインスタンス132とサービスAコンピューティングインスタンス131との間の通信を可能にする機能(例えば、チャットボットコンピューティングインスタンスのスキル)をサービスBコンピューティングインスタンス132にインストールすることができる。
【0133】
S518では、
図2のステップS218と同一または類似であり得、サービスA制御プレーン112(すなわち、ドミナント制御プレーン)は、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)からの接続応答を受信したことに応答して、コンピューティングインスタンスを接続するための処理を実行する。例えば、サービスA制御プレーン112は、接続情報をドミナント制御プレーンに保持するために、任意の適切な情報を記録に記憶することができる。これには、サービスB制御プレーン122によって示されるサービスBコンピューティングインスタンス132のコンパートメントID(例えば、顧客テナント130内)を記憶することが含まれ得る。さらに、サービスA制御プレーン112は、どのような許可される動作がサービスB制御プレーン122によって同意され、および/または提供されたかを識別することができる。いくつかの実施形態では、S518で実行される処理の一部として、サービスA制御プレーン112は、サービスAコンピューティングインスタンス131とサービスBコンピューティングインスタンス132が相互に通信できるようにID配線を実行することができる。いくつかの実施形態では、S518で実行される処理の一部として、サービスA制御プレーン112は、サービスAコンピューティングインスタンス131および/またはサービスBコンピューティングインスタンス132を構成して、接続を示すことができる。
【0134】
この時点で、両方の制御プレーンは接続に同意し、接続に関連する情報の記憶や、ある許可、所有権、および構成の変更など、接続を完了するための処理を実行する。サービスB制御プレーン122(すなわち、パッシブ制御プレーン)は、サービスBコンピューティングインスタンス132(すなわち、パッシブコンピューティングインスタンス)の制御および所有権をサービスA制御プレーン112(すなわち、ドミナント制御プレーン)に与えている。その結果、サービスA制御プレーン112(ドミナント制御プレーン)は現在、サービスAコンピューティングインスタンス131(すなわち、ドミナントコンピューティングインスタンス)とサービスBコンピューティングインスタンス132(すなわち、パッシブコンピューティングインスタンス)の両方の制御と所有権を有する。サービスAコンピューティングインスタンス131と接続されるサービスBコンピューティングインスタンス132は両方とも、顧客テナント130内に引き続き存在する。
【0135】
S520では、
図2のステップS220と同一または類似であり得、サービスA制御プレーンワークフロー114は、接続が正常に確立されたことを示す(または、失敗した場合)完了メッセージをサービスA制御プレーンフロントエンド113に送り返すことができる。次に、S522において、
図2のステップS222と同一または類似であり得るが、サービスA制御プレーンフロントエンド113は、接続が正常に確立されたことを示す(または失敗を示す)完了メッセージをユーザ105に(例えば、コンソール106などのユーザデバイスを介して)送り返すことができる。
【0136】
図5に示される処理の結果として、2つの異なるサービステナントで動作する2つの異なるサービスからの2つのコンピューティングインスタンスは、通常は別個で独立しており、依存関係または接続はないが、ユーザ105の希望に応じて接続され、相互に通信できるようになる。
【0137】
図6は、ある実施形態による、顧客テナント内で2つのコンピューティングインスタンスを接続するプロセスを示す簡略化されたスイムチャート600を示し、ここで、2つのコンピューティングインスタンスは両方ともまだ存在しておらず、プロセスの一部として作成される。
図6に示される処理は、それぞれのシステムの1つまたは複数の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)で、ハードウェアを使用して、またはそれらの組み合わせで、実装され得る。ソフトウェアは、非一時的な記憶媒体(例えば、メモリデバイス)に記憶されてもよい。
図6に示され、以下に説明される方法は、例示的であり、非限定的であることを意図したものである。
図6は、特定のシーケンスまたは順序で発生するさまざまな処理動作を示しているが、これに限定することを意図したものではない。ある代替実施形態では、処理は何らかの異なる順序で実行されてもよく、またはいくつかのステップが並行して実行されてもよい。
【0138】
スイムチャート600は、2つのコンピューティングインスタンスを接続するプロセスを示している。
図6に示すプロセスでは、接続されるドミナントインスタンスは接続要求を受信する前には存在せず、接続されるパッシブインスタンスも接続要求を受信する前にはまだ存在しないと仮定する。例えば、接続されるドミナントコンピューティングインスタンスとパッシブコンピューティングインスタンスの両方が、接続要求を受信する前に作成されていない。
【0139】
例えば、
図1に示される実施形態では、ユーザ105は(例えば、コンソール106を介して)サービスAの第1のコンピューティングインスタンスを作成する命令をサービスA制御プレーンフロントエンド113に送信していない可能性があり、したがって、サービスAコンピューティングインスタンス131(例えば、第1のサービスの実体)は、ユーザの顧客テナント130内にまだ存在していない可能性がある。また、ユーザ105は、サービスBの第2のコンピューティングインスタンスを作成する命令をサービスB制御プレーン122に送信していない可能性があり、したがって、サービスBコンピューティングインスタンス132(例えば、第2のサービスの実体)は、ユーザの顧客テナント130内にはまだ存在していない可能性がある。
【0140】
図6に示すように、処理は、ユーザデバイス(例えば、コンソール106)を使用するユーザ105が、ユーザの顧客テナント130内でサービスAコンピューティングインスタンス131とサービスBコンピューティングインスタンス132を接続するための要求をサービスA制御プレーン112に送信するときS602で開始することができ、これは
図2のステップS202と同一または類似であり得る。
【0141】
接続要求を受信した後、ドミナント制御プレーンは、接続要求を実行できるかどうかを決定する処理を開始することができる。例えば、接続を要求しているユーザがそのような要求を認可されるかどうかを決定する処理が実行されてもよい。ある実装形態では、ID管理および認可サービス140は、認可のための処理を実行することができる。したがって、S604において、
図2のステップS204と同一または類似であり得、ドミナント制御プレーン(この例では、サービスA制御プレーン112)は、S602で受信される要求に関連するID管理および認可サービス140情報を送信することができる。次に、ID管理および認可サービス140は、認可プロセスを開始することができる。認可が成功した場合(すなわち、ユーザが2つのコンピューティングインスタンスの接続を要求することを許可されている場合)、S604の一部として、ID管理および認可サービス140は、接続処理を続行するための認可を提供する応答をドミナント制御プレーン(すなわち、サービスA制御プレーン112)に送り返すことができる。いくつかの実施形態では、ID管理および認可サービス140によってサービスA制御プレーン112に送信される応答は、On-Behalf-Of(OBO)トークンを含むことができる。
【0142】
非同期処理を使用する実装形態では、
図2のステップS206と同一または類似であり得るS606において、サービスA制御プレーンフロントエンド113は、処理を実行するための非同期作業要求を作成し、作業要求識別子をユーザデバイス(例えば、コンソール106)に提供する。ユーザデバイス(例えば、コンソール106)は、作業要求IDを送信することによって、接続処理のステータスに関する更新を要求することができる。
【0143】
図2のステップS208と同一または類似であり得るS608において、ステップS604のID管理および認可処理が完了した後、サービスA制御プレーンフロントエンド113は、サービスA制御プレーンワークフロー114構成要素に、接続を作成するためのワークフローを開始するように指示する。いくつかの実施形態では、サービスA制御プレーンフロントエンド113は、接続を作成するためのサービスB制御プレーン122との通信に使用するために、サービスA制御プレーンワークフロー114にOBOトークンを提供することができる。
【0144】
S609-Aにおいて、サービスA制御プレーンワークフロー114は、サービスAコンピューティングインスタンス131(例えば、第1のサービスの実体)とサービスBコンピューティングインスタンス132(例えば、第2のサービスの実体)の両方が、ユーザの顧客テナント130内に存在しないと決定する。したがって、接続を作成することができる前に、サービスAコンピューティングインスタンス131およびサービスBコンピューティングインスタンス132を作成することが決定される。
【0145】
S609-Bにおいて、サービスA制御プレーンワークフロー114は、ユーザの顧客テナント130内にサービスAコンピューティングインスタンス131(例えば、第1のサービスの実体)を作成し、構成する。サービスA制御プレーン112は、サービスAコンピューティングインスタンス131の制御および管理を継続することができる。
【0146】
S609-Cにおいて、サービスA制御プレーンワークフロー114は、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)に要求を送信し、ユーザの顧客テナント130内にサービスBコンピューティングインスタンス132(例えば、第2のサービスの実体)を作成する。作成要求には、作成に関連する任意の適切な情報のペイロードが含まれる。例えば、作成要求は、サービスA制御プレーン112がコンピューティングインスタンスの作成を開始することを認可されていることを示すID/認可情報を含むことができる。例えば、S604でサービスA制御プレーン112によって受信されるOBOトークンは、S609Cで送信される要求に含まれてもよい。
【0147】
S609-Dにおいて、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)は、作成要求を受信したことに応答して処理を実行する。これには、ユーザの顧客テナント130内でサービスBコンピューティングインスタンス132(例えば、第2のサービスの実体)を作成および構成することが含まれ得る。サービスB制御プレーン122は、サービスBコンピューティングインスタンス132の制御および管理を継続することができる。次に、サービスB制御プレーン122は、コンピューティングインスタンスがユーザの顧客テナント130内で作成されることを示す作成応答をサービスA制御プレーン112に送信することができる。応答メッセージは、サービスBコンピューティングインスタンス132のインスタンス識別子(例えば、OCID)および他の任意の適切な情報をサービスA制御プレーン112に通知することができる。サービスAコンピューティングインスタンス131およびサービスBコンピューティングインスタンス132が作成された後、サービスA制御プレーン112は、2つのコンピューティングインスタンスを接続するプロセスを続行することができる。
【0148】
S610において、
図2のステップS210と同一または類似であり得、サービスA制御プレーンワークフロー114(すなわち、ドミナント制御プレーン)は、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)に接続要求を送信する。接続要求は、サービスB制御プレーン122が所有するコンピューティングインスタンスが、ドミナント制御プレーン(すなわち、サービスA制御プレーン122)が所有する別のコンピューティングインスタンスに接続されていることをサービスB制御プレーン122に通知する。接続要求メッセージには、接続に関連付けられる任意の適切な情報のペイロードが含まれる。例えば、接続要求は、サービスA制御プレーン112が接続の作成を開始することを認可されていることを示すID/認可情報を含むことができる。例えば、S604でサービスA制御プレーン112によって受信されるOBOトークンは、S610で送信される要求に含まれてもよい。さらに、接続要求は、接続されるインスタンス(例えば、サービスAコンピューティングインスタンス131およびサービスBコンピューティングインスタンス132)を示すことができる。コンピューティングインスタンスは、インスタンスを一意に識別する識別子、例えば、それぞれのOracle Cloud Identifier(OCID)を使用して識別できる。さらに、接続要求は、ドミナント制御プレーンとパッシブ制御プレーンのIDだけでなく、対応するドミナント制御プレーンとパッシブ制御プレーンのIDも示すことができる。
【0149】
さらに、ある実施形態では、接続により、(a)顧客、および(b)パッシブ制御プレーンがパッシブコンピューティングインスタンス上で実行できる動作に制限が課される。ある実装形態では、S610で送信される接続要求は、これらの制限を示す情報を含むことができる。例えば、要求は、各顧客およびパッシブ制御プレーンごとに、接続により、顧客および/またはパッシブ制御プレーンによるパッシブコンピューティングインスタンス上で許可されるまたは許可されない1つまたは複数の動作のリストを識別し得る。要求は、接続により、顧客によるパッシブコンピューティングインスタンス上で許可される、または許可されない1つまたは複数の動作のリストを識別し得る。ある実装形態では、顧客およびパッシブサービス制御プレーンの各々に対して、許可される動作のリストが提供される。接続が存在する間は、リストで特に指定されていない動作は許可されない。いくつかの実施形態では、パッシブコンピューティングインスタンス(例えば、サービスBコンピューティングインスタンス132)を削除するための動作は、顧客が許可される動作の新しいリストにもはや含まれない場合がある。いくつかの実施形態では、接続を削除する動作は、顧客ではなく所有者にのみ許可され得る。
【0150】
S612において、
図2のステップS212と同一または類似であり得、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)は、接続要求を受信したことに応答して処理を実行する。これには、サービスA制御プレーン112(すなわち、ドミナント制御プレーン)から受信した接続要求の詳細を記録に記憶(「ポストする」とも呼ばれる)して接続情報を永続化することと、サービスBコンピューティングインスタンス132(すなわち、パッシブコンピューティングインスタンス)に関連付けられる所有権および許可される動作を変更することと、を含むことができる。いくつかの実施形態では、サービスB制御プレーン122は、サービスA制御プレーン112が接続の作成を開始することを認可されていることを検証することができる。例えば、サービスB制御プレーン122は、OBOトークンおよび/またはOBOトークンに関連付けられる許可の信頼性を検証することができる。いくつかの実施形態では、S612の一部として、サービスB制御プレーン122は、顧客テナント130内のサービスBコンピューティングインスタンス132を変更および構成して、接続が存在することを示すことができる。
【0151】
S614において、
図2のステップS214と同一または類似であり得、サービスB制御プレーン122は、接続がサービスB制御プレーン122で処理されることを示す接続応答をサービスA制御プレーン112に送信する。接続応答メッセージは、ステップS610で送信される接続要求メッセージに従って接続の詳細が確認され、実装されることをサービスA制御プレーン112に通知することができる。
【0152】
任意に、S616において、
図2のステップS216と同一または類似であり得、サービスA制御プレーン112(すなわち、ドミナント制御プレーン)は、顧客テナント130内のサービスBコンピューティングインスタンス132を構成および/または更新するために、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)に命令を送信することができる。例えば、コンピューティングインスタンスのタイプに応じて、サービスA制御プレーン112は、サービスBコンピューティングインスタンス132とサービスAコンピューティングインスタンス131との間の通信を可能にする機能(例えば、チャットボットコンピューティングインスタンスのスキル)をサービスBコンピューティングインスタンス132にインストールすることができる。
【0153】
S618において、
図2のステップS218と同一または類似であり得、サービスA制御プレーン112(すなわち、ドミナント制御プレーン)は、サービスB制御プレーン122(すなわち、パッシブ制御プレーン)からの接続応答を受信したことに応答して、コンピューティングインスタンスを接続するための処理を実行する。例えば、サービスA制御プレーン112は、接続情報をドミナント制御プレーンに保持するために、任意の適切な情報を記録に記憶することができる。これには、サービスB制御プレーン122によって示されるサービスBコンピューティングインスタンス132のコンパートメントID(例えば、顧客テナント130内)を記憶することが含まれ得る。さらに、サービスA制御プレーン112は、どのような許可される動作がサービスB制御プレーン122によって同意され、および/または提供されたかを識別することができる。いくつかの実施形態では、S618で実行される処理の一部として、サービスA制御プレーン112は、サービスAコンピューティングインスタンス131とサービスBコンピューティングインスタンス132が相互に通信できるようにID配線を実行することができる。いくつかの実施形態では、S618で実行される処理の一部として、サービスA制御プレーン112は、サービスAコンピューティングインスタンス131および/またはサービスBコンピューティングインスタンス132を構成して、接続を示すことができる。
【0154】
この時点で、両方の制御プレーンは接続に同意し、接続に関連する情報の記憶や、ある許可、所有権、および構成の変更など、接続を完了するための処理を実行する。サービスB制御プレーン122(すなわち、パッシブ制御プレーン)は、サービスBコンピューティングインスタンス132(すなわち、パッシブコンピューティングインスタンス)の制御および所有権をサービスA制御プレーン112(すなわち、ドミナント制御プレーン)に与えている。その結果、サービスA制御プレーン112(ドミナント制御プレーン)は現在、サービスAコンピューティングインスタンス131(すなわち、ドミナントコンピューティングインスタンス)とサービスBコンピューティングインスタンス132(すなわち、パッシブコンピューティングインスタンス)の両方の制御と所有権を有する。サービスAコンピューティングインスタンス131と接続されるサービスBコンピューティングインスタンス132は両方とも、顧客テナント130内に引き続き存在する。
【0155】
S620において、
図2のステップS220と同一または類似であり得、サービスA制御プレーンワークフロー114は、接続が正常に確立されたことを示す(または、失敗した場合)完了メッセージをサービスA制御プレーンフロントエンド113に送り返すことができる。次に、S622において、
図2のステップS222と同一または類似であり得るが、サービスA制御プレーンフロントエンド113は、接続が正常に確立されたことを示す(または失敗を示す)完了メッセージをユーザ105に(例えば、コンソール106などのユーザデバイスを介して)送り返すことができる。
【0156】
図6に示す処理の結果、2つの異なるサービステナントで動作する2つの異なるサービスからの2つのコンピューティングインスタンスは、通常は別個で独立しており、依存関係または接続なしでユーザ105の希望に応じて、接続して相互に通信できるようになる。
【0157】
いくつかの実施形態では、埋め込みコンピューティングインスタンスは、ユーザの命令またはユーザの関与なしに自動的に接続され得る。例えば、
図2に示されるプロセスは、ステップS202なしで実行することができる。換言すれば、サービスBコンピューティングインスタンス132は、特定のユーザ要求なしに自動的にサービスAコンピューティングインスタンス131に自動接続することができる。この自動接続プロセスは、サービスB制御プレーン122および/またはサービスBコンピューティングインスタンス132がユーザデバイス(例えば、コンソール106)から隠される実施形態で行われてもよいため、ユーザデバイス(例えば、コンソール106)は、サービスB制御プレーン122および/またはサービスBコンピューティングインスタンス132を閲覧またはそれにアクセスすることができない。この場合、サービスBコンピューティングインスタンス132は、ユーザの顧客テナント130の外部に作成されてもよく、代わりにサービスB制御プレーン122内に作成されてもよい。
【0158】
上述したように、ある実施形態では、接続により、パッシブコンピューティングインスタンス上で実行できる動作に制限が設けられる。
【0159】
図7は、ある実施形態による、動作が許可されるかどうかを決定するためのプロセス700を示す。
図7に示される処理は、それぞれのシステムの1つまたは複数の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)で、ハードウェアを使用して、またはそれらの組み合わせで、実装され得る。ソフトウェアは、非一時的な記憶媒体(例えば、メモリデバイス)に記憶されてもよい。
図7に示され、以下に説明される方法は、例示的であり、非限定的であることを意図したものである。
図7は、特定のシーケンスまたは順序で発生するさまざまな処理動作を示しているが、これに限定することを意図したものではない。ある代替実施形態では、処理は何らかの異なる順序で実行されてもよく、またはいくつかのステップが並行して実行されてもよい。
図7に記載の処理では、サービスAコンピューティングインスタンス131がドミナントコンピューティングインスタンスであり、サービスAコンピューティングインスタンス131に接続されているサービスBコンピューティングインスタンス132がパッシブコンピューティングインスタンスであると仮定される。したがって、サービスA制御プレーン112はドミナント制御プレーンであり、サービスB制御プレーン122はパッシブ制御プレーンである。
【0160】
例えば、
図1を参照すると、ドミナント制御プレーン以外のユーザ105は、顧客テナント130内にあるパッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)上で動作を実行したい場合がある。一例として、ユーザ105は、顧客テナント130内のパッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)を削除したい場合がある。したがって、ユーザデバイス(例えば、コンソール106)は、パッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)上で動作(例えば、削除)を実行するための要求を送信することができる。
【0161】
いくつかの実施形態では、この要求は、パッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)を所有するサービス制御プレーンにより受信される。上述したように、接続により、パッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)の所有者が、ドミナント制御プレーン(例えば、サービスA制御プレーン112)となり得る。
【0162】
したがって、
図7の処理がステップS705で、ドミナント制御プレーン(例えば、サービスA制御プレーン112)が、顧客テナント130内のパッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)上で動作を実行するための要求を受信したときに開始される。例として、この要求は、顧客テナント130内のパッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)を削除するための削除要求である。要求を受信した後、ドミナント制御プレーン(例えば、サービスA制御プレーン112)は、IDMAS140を呼び出して、動作が許可されるかどうかを決定するためにいくつかのチェックを実行する。
【0163】
パッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)は顧客テナント130内にあり、ドミナントテナント(例えば、サービスAテナント115)によっても所有され、これは、ドミナント制御プレーン(例えば、サービスA制御プレーン112)が接続後のパッシブインスタンスを所有しているためである。第1の認可チェックは、パッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)上で要求される動作が、顧客テナント130に関連付けられるポリシーに基づいて許可されているかどうかを確認するために実行される。したがって、ステップS710で、ドミナント制御プレーン(例えば、サービスA制御プレーン112)はIDMAS140を呼び出し、IDMAS140は、顧客コンパートメントに関連付けられる、または顧客コンパートメントに対して構成されるポリシーおよび許可に基づいて、要求される動作(例えば、パッシブインスタンスの削除)が認可されるかどうかを決定する。
【0164】
ある実装では、S710の処理の一部として、パッシブコンピューティングインスタンス(例えば、サービスBコンピューティングインスタンス132)に関連付けられる顧客テナントコンパートメント識別子は、特定の顧客テナントコンパートメントおよびそのコンパートメントに関連付けられる1つまたは複数のポリシーを識別するために使用される。次に、ポリシーが評価されて、要求される動作がコンパートメントポリシーによって認可されているかどうかが決定される。例えば、ユーザの顧客テナント130のコンパートメントは、そのコンパートメント内のコンピューティングインスタンスに対して実行できる認可される動作のリストを識別する1つまたは複数のポリシーを関連付けることができる。要求される動作が認可される動作のリストで許可される動作として指定されている場合、要求される動作は認可されているとみなされ、それ以外の場合は認可されていないとみなされる。
【0165】
いくつかの実施形態では、顧客テナント130は、コンパートメントを表すノードの階層を備えることができ、この階層は、ルートコンパートメントがツリーの先頭に位置する階層ツリーによって表すことができる。ある実装形態では、階層は包含関係を表し得る。このような実装形態では、1つまたは複数のポリシーを階層内の個々のコンパートメントに関連付けることができる。S710においてIDMAS140によって実行される処理は、まず、パッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)を含む階層内の特定のコンパートメントを識別し、そのコンパートメントに関連付けられる任意のポリシーを識別することを含み得る。次に、パッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)を含む特定のコンパートメントから開始して、階層ツリーはルートコンパートメントノードまでウォークアップされる。ルートコンパートメントまでのウォークアップに含まれる、コンパートメントに関連付けられるすべてのポリシーが決定される。S710の処理の一部として、パッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)を含む特定のコンパートメントに関連付けられている1つまたは複数のポリシー(存在する場合)、および特定のコンパートメントからルートコンパートメントまで階層ツリーをウォーク/横断することで識別されるポリシーを分析して、S705で受信した要求で要求される動作が認可されているかどうかを決定する。
【0166】
それにより、IDMAS140は、要求される動作(例えば、パッシブインスタンスの削除)が認可されるかまたは許可されるかを決定し、その結果とともにドミナント制御プレーン(例えば、サービスA制御プレーン112)に応答を送信することができる。
【0167】
ドミナント制御プレーン(例えば、サービスA制御プレーン112)が、要求される動作(例えば、パッシブインスタンスの削除)が認可または許可される(すなわち、認可チェックに合格した)ことを知らされる場合、ドミナント制御プレーン(例えば、サービスA制御プレーン112)は、追加の処理のためにステップS715に進むことができる。ドミナント制御プレーン(例えば、サービスA制御プレーン112)が、要求される動作(例えば、パッシブインスタンスの削除)が許可されない(つまり、認可チェックが失敗した)ことを知らされる場合、次いで、ドミナント制御プレーン(例えば、サービスA制御プレーン112)は、ステップS712で動作の実行を拒否することができ、プロセスは、動作の実行要求が拒否されて終了することができる。
【0168】
ステップS715で、ドミナント制御プレーン(例えば、サービスA制御プレーン112)は、パッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)が別のコンピューティングインスタンスに接続されているかどうかを決定する。接続がある場合は、追加の認可チェックが実行される。
【0169】
したがって、ドミナント制御プレーン(例えば、サービスA制御プレーン112)が、S715において、パッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)が接続の一部である、すなわち、別のコンピューティングインスタンスに接続されていると決定した場合、その後、処理はS720に進み、追加のチェックが実行される。ドミナント制御プレーン(例えば、サービスA制御プレーン112)がS715において、パッシブインスタンスと別のコンピューティングインスタンスとの間に接続が存在しない(すなわち、パッシブインスタンスが接続に関与していない)と決定した場合、その後、処理はS717に進み、要求される動作がパッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)上で実行されることが許可され、処理は終了する。例えば、要求される動作がパッシブインスタンスを削除することである場合、パッシブインスタンスは削除される。
【0170】
したがって、ステップS720で、ドミナント制御プレーン(例えば、サービスA制御プレーン112)は、要求される動作(例えば、パッシブインスタンスの削除)が、接続に関連付けられる許可される顧客動作の記憶されるリストに基づいて制限されているかどうかを決定する。これらの許可される顧客動作は、接続に関連付けられるドミナント制御プレーン(例えば、サービスA制御プレーン112)および/またはパッシブ制御プレーン(例えば、サービスB制御プレーン122)に記憶され得る。許可される顧客動作リストは、二重認可リストと呼ぶことができる。これは、動作がリストに含まれている場合、それは二重認可を必要とする制限される動作であるためである。動作がリストに含まれていない場合、二重認可は必要なく、制限される動作ではなく、最初の認可(例えば、ステップS710)で十分であるとみなされる。リストをチェックするために、ドミナント制御プレーン(例えば、サービスA制御プレーン112)は、パッシブ制御プレーン(例えば、サービスB制御プレーン122)を呼び出し、次に、その動作のリストをチェックし、結果をドミナント制御プレーン(例えば、サービスA制御プレーン112)に返す。
【0171】
ドミナント制御プレーン(例えば、サービスA制御プレーン112)が、S720においてパッシブ制御プレーン(例えば、サービスB制御プレーン122)から、その動作がリストに含まれており、したがって制限される動作であることを通知される場合、その後、処理はS725に進み、追加のチェックが実行される。ドミナント制御プレーン(例えば、サービスA制御プレーン112)が、S720においてパッシブ制御プレーン(例えば、サービスB制御プレーン122)から、その動作がリストに含まれておらず、したがって制限される動作ではないことを通知される場合、処理はS717に進み、要求される動作がパッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)上で実行されることが許可され、処理は終了する。例えば、要求される動作がパッシブインスタンスを削除することである場合、パッシブインスタンスは削除される。
【0172】
上述したように、顧客テナント130の両方に存在する接続されるパッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)は、ドミナントテナントテナント(例えば、サービスAテナント115)によっても所有される。次に、要求側ユーザが、ドミナントテナント(例えば、サービスAテナント115)に関連付けられるポリシーに基づいて、パッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)上で要求される動作を実行することが許可されているかどうかを確認するための処理が実行される。
【0173】
したがって、ステップS725で、ドミナント制御プレーン(例えば、サービスA制御プレーン112)はIDMAS140を呼び出し、IDMAS140は、ドミナントテナント(例えば、サービスAテナント115)に関連付けられるポリシーに基づいて、または、パッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)上で認可される動作を識別する、ドミナントテナントもしくは制御プレーンに対して記憶される接続関連のメタデータに基づいて、要求される動作(例えば、パッシブインスタンスの削除)が許可または認可されているかどうかを決定する。
【0174】
例えば、上述したように、接続を実行する場合、ドミナント制御プレーン(例えば、サービスA制御プレーン112)とパッシブ制御プレーン(例えば、サービスB制御プレーン122)の両方が、接続に関する情報(例えば、ドミナントインスタンスとパッシブインスタンスの接続に関する情報)を保持または記憶する。この記憶される情報または記録には、顧客がパッシブコンピューティングインスタンス上で実行できる動作のリストおよび接続が存在する間に所有者(例えばドミナント制御プレーン)がパッシブコンピューティングインスタンス上で実行できる動作のリストが含まれ得る。動作がこのリストに含まれていない場合、その動作は許可されず、要求側ユーザは実行できない。ある実装形態では、動作の許可リストを識別する情報は、ユーザがリソースに対してどのようなアクセス権を持っているかを記述するアクセス制御リスト(ACL)の形式で記憶できる。
【0175】
S725の一部として、IDMAS140は、要求側ユーザによってパッシブコンピューティングインスタンス上で実行されるように要求される動作が、ドミナント制御プレーンにより記憶される情報に基づいて動作の許可リストに含まれるかどうかをチェックする。例えば、
図1に示される実施形態では、IDMAS140はパッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)上で要求側ユーザによって要求される動作は、ドミナント制御プレーン(例えば、サービスA制御プレーン112)によって記憶される情報に基づいて、所有者(例えば、ドミナント制御プレーン)が実行できる動作の許可リストに含まれるか否かをチェックする。
【0176】
それにより、IDMAS140は、第2の認可を実行して、要求される動作(例えば、パッシブインスタンスの削除)が、ドミナントテナント(例えば、サービスAテナント115)に関連付けられるポリシーに基づいて認可されるかまたは許可されるかを決定することができる。次いで、IDMAS140は、第2の認可の結果を伴う応答をドミナント制御プレーン(例えば、サービスA制御プレーン112)に送信することができる。
【0177】
ドミナント制御プレーン(例えば、サービスA制御プレーン112)は、要求された動作(例えば、パッシブインスタンスの削除)が、ドミナント制御プレーンによって記憶されている接続関連情報および/またはACL内の認可された動作のリストに基づいて認可されていることが通知され、その後、処理はS730に進み、要求される動作はパッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)上での実行が許可され、処理は終了する。例えば、要求される動作がパッシブインスタンスを削除することである場合、パッシブインスタンスは削除される。
【0178】
ドミナント制御プレーン(例えば、サービスA制御プレーン112)は、要求される動作(例えば、パッシブインスタンスの削除)が、ドミナント制御プレーンおよび/またはドミナント制御プレーンに関連付けられるACLによって記憶されている接続関連情報に示されている認可される動作のリストにないことを通知される場合、次いで、ドミナント制御プレーン(例えば、サービスA制御プレーン112)は、ステップS727で動作の実行を拒否することができ、プロセスは、動作の実行要求が拒否されて終了することができる。
【0179】
いくつかの実施形態では、
図7のステップは、接続が存在する間に、ある動作が行われないように意図的に設計することができる。例えば、接続により、パッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)がドミナント制御プレーン(例えば、サービスA制御プレーン112)の所有権下に置かれ得るが、ドミナント制御プレーン(例えば、サービスA制御プレーン112)が1つまたは複数の動作を実行できるようにすることは望ましくない場合がある。ドミナント制御プレーン(例えば、サービスA制御プレーン112)がパッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)上で、ある動作を実行するのを防ぐ1つの方法は、明示的に許可されない動作のリストを含めることである。しかし、現在のシステムは許可される動作のリストを使用しており(リストされていない動作は許可されない)、これらの既存のフレームワークと連携することが好ましい。したがって、
図7に関して上で説明したように、階層化ポリシーを利用することができる。第1のポリシーは、動作を許可してもよい(例えば、ステップS710の顧客コンパートメントポリシー)が、接続が存在する場合、第2のポリシーがチェックされることになり、第2のポリシーでは動作が許可されない可能性がある(例えば、ステップS725の所有者コンパートメントポリシー)。所有者コンパートメントポリシーは、ある動作要求が失敗するように、限定されるセット動作を含むように設計することができる(例えば、ステップS725で所有者コンパートメントポリシーをチェックするとき)。例えば、削除動作を禁止することが望まれ得、パッシブインスタンス(例えば、サービスBコンピューティングインスタンス132)を削除する要求はステップS725で失敗する。
【0180】
上で述べたように、サービスとしてのインフラストラクチャ(IaaS)は、クラウドコンピューティングの特定のタイプの1つである。IaaSは、パブリックネットワーク(例えば、インターネット)経由で仮想化されるコンピューティングリソースを提供するように構成できる。IaaSモデルでは、クラウドコンピューティングプロバイダがインフラストラクチャ構成要素をホストできる(例えば、サーバ、記憶デバイス、ネットワークノード(例えば、ハードウェア)、展開ソフトウェア、プラットフォーム仮想化(例えば、ハイパーバイザー層)など)。場合によっては、IaaSプロバイダは、これらのインフラストラクチャ構成要素に付随するさまざまなサービス(例えば、請求、監視、ロギング、ロード分散、クラスタリングなど)を供給することもできる。したがって、これらのサービスはポリシー駆動型であり得るため、IaaSユーザはロード分散を推進するポリシーを実装して、アプリケーションの可用性と性能を維持できる可能性がある。
【0181】
場合によっては、IaaS顧客は、インターネットなどのワイドエリアネットワーク(WAN)を介してリソースおよびサービスにアクセスすることができ、クラウドプロバイダのサービスを使用してアプリケーションスタックの残りの要素をインストールすることができる。例えば、ユーザはIaaSプラットフォームにログインし、仮想マシン(VM)を作成し、各VMに動作システム(OS)をインストールし、データベースなどのミドルウェアを展開し、ワークロードとバックアップ用の記憶バケットを作成し、そのVMに企業ソフトウェアをインストールすることもできる。その後、顧客はプロバイダのサービスを使用して、ネットワークトラフィックのバランス、アプリケーションの問題のトラブルシューティング、性能の監視、災害復旧の管理などを含む、さまざまな機能を実行できる。
【0182】
ほとんどの場合、クラウドコンピューティングモデルはクラウドプロバイダの参加を必要とする。クラウドプロバイダは、IaaSの提供(例えば、提供、レンタル、販売)を専門とするサードパーティサービスであってもかまわないが、そうである必要はない。企業はプライベートクラウドを展開して、独自のインフラストラクチャサービスプロバイダになることも選択できる。
【0183】
いくつかの例では、IaaS展開は、新しいアプリケーション、またはアプリケーションの新しいバージョンを、準備されるアプリケーションサーバなどに配置するプロセスである。これには、サーバを準備するプロセス(例えば、ライブラリ、デーモンなどのインストール)も含まれ得る。これは多くの場合、ハイパーバイザー層(例えば、サーバ、記憶装置、ネットワークハードウェア、および仮想化)の下のクラウドプロバイダによって管理される。したがって、顧客は、処理(OS)、ミドルウェア、および/またはアプリケーション展開(例えば、セルフサービス仮想マシン(例えば、要求に応じてスピンアップできる)などに責任を負うことができる。
【0184】
いくつかの例では、IaaSプロビジョニングは、使用するコンピュータまたは仮想ホストを取得し、それらに必要なライブラリまたはサービスをインストールすることさえも指し得る。ほとんどの場合、展開にはプロビジョニングが含まれていないため、最初にプロビジョニングを実行する必要があり得る。
【0185】
場合によっては、IaaSプロビジョニングには2つの異なる課題がある。第1に、何かを実行する前にインフラストラクチャの初期セットをプロビジョニングするという最初の課題がある。第2に、すべてがプロビジョニングされた後に、既存のインフラストラクチャを進化させるという課題がある(例えば、新しいサービスの追加、サービスの変更、サービスの除去など)。場合によっては、インフラストラクチャの構成を宣言的に定義できるようにすることで、これら2つの課題に対処できる。言い換えれば、インフラストラクチャ(例えば、どの構成要素が必要か、どのように対話するか)は1つまたは複数の構成ファイルによって定義できる。したがって、インフラストラクチャの全体的なトポロジ(例えば、どのリソースがどのリソースに依存するか、および各々がどのように連携するか)を宣言的に記述することができる。場合によっては、トポロジが定義されると、構成ファイルに記述されているさまざまな構成要素を作成および/または管理するワークフローを生成できる。
【0186】
いくつかの例では、インフラストラクチャは、相互接続される多くの要素を有し得る。例えば、コアネットワークとしても知られる、1つまたは複数の仮想プライベートクラウド(VPC)(例えば、構成可能および/または共有コンピューティングリソースの潜在的に要求に応じたプール)が存在し得る。一部の例では、ネットワークの受信トラフィックおよび/または送信トラフィックがどのようにセットアップされるかを定義するためにプロビジョニングされる1つまたは複数の受信/送信トラフィックグループルールと1つまたは複数の仮想マシン(VM)が存在する場合もある。ロードバランサ、データベースなどの他のインフラストラクチャ要素もプロビジョニングできる。より多くのインフラストラクチャ要素が望まれおよび/または追加されるにつれて、インフラストラクチャは段階的に進化し得る。
【0187】
場合によっては、継続的展開技術を使用して、さまざまな仮想コンピューティング環境全体にわたってインフラストラクチャコードの展開を可能にすることができる。さらに、説明されている技術により、これらの環境内でのインフラストラクチャ管理が可能になり得る。いくつかの例では、サービスチームは、1つまたは複数の、しかし多くの場合、多くの、異なる本番環境(例えば、さまざまな異なる地理的位置にまたがり、場合によっては全世界に及ぶ)に展開することが望ましいコードを書き込むことができる。しかし、いくつかの例では、コードを展開するインフラストラクチャを最初にセットアップする必要がある。場合によっては、プロビジョニングは手動で行うことができ、プロビジョニングツールを利用してリソースをプロビジョニングすることができ、および/または展開ツールを利用して、インフラストラクチャがプロビジョニングされた後にコードを展開することができる。
【0188】
図8は、少なくとも1つの実施形態による、IaaSアーキテクチャのパターン例を示すブロック
図800である。サービスオペレータ802は、仮想クラウドネットワーク(VCN)806およびセキュアホストサブネット808を含むことができるセキュアホストテナント804に通信可能に結合することができる。いくつかの例では、サービスオペレータ802は、1つまたは複数のクライアントコンピューティングデバイスを使用していてもよく、これは、ポータブルハンドヘルドデバイス(例えば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))またはウェアラブルデバイス(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、Microsoft Windows Mobile(登録商標)などの実行ソフトウェア、および/またはiOS、Windows Phone、Android、BlackBerry8、Palm OSなどのさまざまなモバイル動作システム、およびインターネット、電子メール、ショートメッセージサービス(SMS)、Blackberry(登録商標)、または有効なその他の通信プロトコルであり得る。あるいは、クライアントコンピューティングデバイスは、例えば、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinux(登録商標)動作システムを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む汎用パーソナルコンピュータであってもよい。クライアントコンピューティングデバイスは、例えばGoogle Chrome OSなどのさまざまなGNU/Linux動作システムを含むがこれらに限定されない、さまざまな市販のUNIX(登録商標)またはUNIX類似の動作システムのいずれかを実行するワークステーションコンピュータであり得る。代替として、または追加として、クライアントコンピューティングデバイスは任意の他の電子デバイスであってもよく、例えば、シンクライアントコンピュータ、インターネット対応ゲームシステム(例えば、Kinect(登録商標)ジェスチャ入力デバイスの有無にかかわらずMicrosoft Xboxゲームコンソール)、ならびに/またはVCN806および/もしくはインターネットにアクセスできるネットワークを介して通信できるパーソナルメッセージングデバイスなどである。
【0189】
VCN806は、SSH VCN812に含まれるLPG810を介してセキュアシェル(SSH)VCN812に通信可能に結合することができるローカルピアリングゲートウェイ(LPG)810を含むことができる。SSH VCN812は、SSHサブネット814を含むことができ、SSH VCN812は、制御プレーンVCN816に含まれるLPG810を介して制御プレーンVCN816に通信可能に結合することができる。また、SSH VCN812は、LPG810を介してデータプレーンVCN818に通信可能に結合することができる。制御プレーンVCN816およびデータプレーンVCN818は、IaaSプロバイダによって所有および/または動作され得るサービステナント819に含まれ得る。
【0190】
制御プレーン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を含むことができる。
【0191】
制御プレーンVCN816は、アプリサブネット826を含むことができるデータプレーンミラーアプリ層840を含むことができる。データプレーンミラーアプリ層840に含まれるアプリサブネット826は、コンピューティングインスタンス844を実行できる仮想ネットワークインターフェイスコントローラ(VNIC)842を含むことができる。コンピューティングインスタンス844は、データプレーンミラーアプリ層840のアプリサブネット826を、データプレーンアプリ層846に含めることができるアプリサブネット826に通信可能に結合することができる。
【0192】
データプレーンVCN818は、データプレーンアプリ層846、データプレーンDMZ層848、およびデータプレーンデータ層850を含むことができる。データプレーンDMZ層848は、データプレーンアプリ層846のアプリサブネット826およびデータプレーンVCN818のインターネットゲートウェイ834に通信可能に結合され得るLBサブネット822を含むことができる。アプリサブネット826は、データプレーンVCN818のサービスゲートウェイ836およびデータプレーンVCN818のNATゲートウェイ838に通信可能に結合することができる。データプレーンデータ層850は、データプレーンアプリ層846のアプリサブネット826に通信可能に結合できるDBサブネット830を含むこともできる。
【0193】
制御プレーンVCN816およびデータプレーンVCN818のインターネットゲートウェイ834は、パブリックインターネット854に通信可能に結合され得るメタデータ管理サービス852に通信可能に結合され得る。パブリックインターネット854は、制御プレーンVCN816およびデータプレーンVCN818のNATゲートウェイ838に通信可能に結合することができる。制御プレーンVCN816およびデータプレーンVCN818のサービスゲートウェイ836は、クラウドサービス856に通信可能に結合することができる。
【0194】
いくつかの例では、制御プレーンVCN816またはデータプレーンVCN818のサービスゲートウェイ836は、パブリックインターネット854を経由せずに、クラウドサービス856へのアプリケーションプログラミングインターフェイス(API)呼び出しを行うことができる。サービスゲートウェイ836からクラウドサービス856へのAPI呼び出しは一方向であり得る:サービスゲートウェイ836はクラウドサービス856へのAPI呼び出しを行うことができ、クラウドサービス856は要求されるデータをサービスゲートウェイ836に送信することができる。しかし、クラウドサービス856は、サービスゲートウェイ836へのAPI呼び出しを開始しない場合がある。
【0195】
いくつかの例では、セキュアホストテナント804は、サービステナント819に直接接続することができ、そうでなければ分離され得る。セキュアホストサブネット808は、LPG810を介してSSHサブネット814と通信することができ、LPG810は、そうでなければ分離されるシステムを介した双方向通信を可能にすることができる。セキュアホストサブネット808をSSHサブネット814に接続すると、セキュアホストサブネット808にサービステナント819内の他のエンティティへのアクセスを与えることができる。
【0196】
制御プレーンVCN816は、サービステナント819のユーザが所望のリソースをセットアップまたはそうでなければプロビジョニングできるようにすることができる。制御プレーンVCN816内にプロビジョニングされる所望のリソースは、データプレーンVCN818内に展開またはそうでなければ使用され得る。いくつかの例では、制御プレーンVCN816はデータプレーンVCN818から分離することができ、制御プレーンVCN816のデータプレーンミラーアプリ層840は、データプレーンミラーアプリ層840およびデータプレーンアプリ層846に含まれ得るVNIC842を介して、データプレーンVCN818のデータプレーンアプリ層846と通信することができる。
【0197】
いくつかの例では、システムのユーザまたは顧客は、要求をメタデータ管理サービス852に通信することができるパブリックインターネット854を介して、例えば、作成、読み取り、更新、または削除(CRUD)動作などの要求を行うことができる。メタデータ管理サービス852は、インターネットゲートウェイ834を介して要求を制御プレーンVCN816に通信することができる。この要求は、制御プレーンDMZ層820に含まれるLBサブネット822によって受信され得る。LBサブネット822は、要求が有効であると決定することができ、この決定に応答して、LBサブネット822は、制御プレーンアプリ層824に含まれるアプリサブネット826に要求を送信することができる。要求が検証され、パブリックインターネット854への呼び出しが必要な場合、パブリックインターネット854への呼び出しは、パブリックインターネット854への呼び出しを行うことができるNATゲートウェイ838に送信され得る。要求によって記憶されることが望ましい場合があるメモリは、DBサブネット830に記憶できる。
【0198】
いくつかの例では、データプレーンミラーアプリ層840は、制御プレーンVCN816とデータプレーンVCN818との間の直接通信を容易にすることができる。例えば、構成に対する変更、更新、または他の適切な修正を、データプレーンVCN818に含まれるリソースに適用することが望ましい場合がある。VNIC842を介して、制御プレーンVCN816は、データプレーンVCN818に含まれるリソースと直接通信することができ、それにより、データプレーンVCN818に含まれるリソースに対する構成の変更、更新、または他の適切な修正を実行することができる。
【0199】
いくつかの実施形態では、制御プレーンVCN816およびデータプレーンVCN818は、サービステナント819に含めることができる。この場合、システムのユーザまたは顧客は、制御プレーンVCN816またはデータプレーンVCN818のいずれも所有しないまたは動作させない可能性がある。代わりに、IaaSプロバイダは、制御プレーンVCN816およびデータプレーンVCN818を所有するまたは動作させることができ、これらは両方ともサービステナント819に含まれ得る。この実施形態は、ユーザまたは顧客が他のユーザまたは他の顧客のリソースと対話することを防止し得るネットワークの分離を可能にすることができる。また、この実施形態により、システムのユーザまたは顧客は、記憶装置として所望のレベルの脅威防止を持たない可能性があるパブリックインターネット854に依存する必要なく、データベースをプライベートに記憶することが可能となり得る。
【0200】
他の実施形態では、制御プレーンVCN816に含まれるLBサブネット822は、サービスゲートウェイ836から信号を受信するように構成され得る。この実施形態では、制御プレーンVCN816およびデータプレーンVCN818は、パブリックインターネット854を呼び出すことなく、IaaSプロバイダの顧客によって呼び出されるように構成され得る。顧客が使用するデータベースはIaaSプロバイダによって制御され得、パブリックインターネット854から分離され得るサービステナント819に記憶され得るため、IaaSプロバイダの顧客は、この実施形態を望む可能性がある。
【0201】
図9は、少なくとも1つの実施形態による、IaaSアーキテクチャの別のパターン例を示すブロック
図900である。サービスオペレータ902(例えば、
図8のサービスオペレータ802)は、仮想クラウドネットワーク(VCN)906(例えば、
図8のVCN806)を含むことができるセキュアホストテナント904(例えば、
図8のセキュアホストテナント804)およびセキュアホストサブネット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に含めることができる。
【0202】
制御プレーン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を含むことができる。
【0203】
制御プレーンVCN916は、アプリサブネット926を含むことができるデータプレーンミラーアプリ層940(例えば、
図8のデータプレーンミラーアプリ層840)を含むことができる。データプレーンミラーアプリ層940に含まれるアプリサブネット926は、コンピューティングインスタンス944(例えば、
図8のコンピューティングインスタンス844と同様)を実行できる仮想ネットワークインターフェイスコントローラ(VNIC)942(例えば、842のVNIC)を含むことができる。コンピューティングインスタンス944はデータプレーンミラーアプリ層940に含まれるVNIC942とデータプレーンアプリ層946に含まれるVNIC942を経由したデータプレーンミラーアプリ層940のアプリサブネット926と、データプレーンアプリ層946(例えば、
図8のデータプレーンアプリ層846)に含めることができるアプリサブネット926との間の通信を容易にすることができる。
【0204】
制御プレーンVCN916に含まれるインターネットゲートウェイ934は、メタデータ管理サービス952(例えば、
図8のメタデータ管理サービス852)に通信可能に結合することができ、メタデータ管理サービス952は、パブリックインターネット954(例えば、
図8のパブリックインターネット854)に通信可能に結合することができる。パブリックインターネット954は、制御プレーンVCN916に含まれるNATゲートウェイ938に通信可能に結合することができる。制御プレーンVCN916に含まれるサービスゲートウェイ936は、クラウドサービス956(例えば、
図8のクラウドサービス856)に通信可能に結合することができる。
【0205】
いくつかの例では、データプレーンVCN918は、顧客テナント921に含まれ得る。この場合、IaaSプロバイダは、各顧客に対して制御プレーンVCN916を提供することができ、IaaSプロバイダは、各顧客に対して、サービステナント919に含まれる一意のコンピューティングインスタンス944をセットアップすることができる。各コンピューティングインスタンス944は、サービステナント919に含まれる制御プレーンVCN916と、顧客テナント921に含まれるデータプレーンVCN918との間の通信を可能にすることができる。コンピューティングインスタンス944は、サービステナント919に含まれる制御プレーンVCN916内にプロビジョニングされるリソースが、顧客テナント921に含まれるデータプレーンVCN918内に展開されるか、さもなければ使用されることを可能にし得る。
【0206】
他の例では、IaaSプロバイダの顧客は、顧客テナント921内に存在するデータベースを有し得る。この例では、制御プレーンVCN916は、アプリサブネット926を含むことができるデータプレーンミラーアプリ層940を含むことができる。データプレーンミラーアプリ層940はデータプレーンVCN918内に存在することができるが、データプレーンミラーアプリ層940はデータプレーンVCN918内に存在しなくてもよい。つまり、データプレーンミラーアプリ層940は、顧客テナント921にアクセスできるが、データプレーンミラーアプリ層940は、データプレーンVCN918に存在しないか、IaaSプロバイダの顧客によって所有または動作されない可能性がある。データプレーンミラーアプリ層940は、データプレーンVCN918への呼び出しを行うように構成されてもよいが、制御プレーンVCN916に含まれる任意のエンティティへの呼び出しを行うように構成されなくてもよい。顧客は、制御プレーンVCN916内にプロビジョニングされるデータプレーンVCN918内のリソースを展開またはそうでなければ使用することを望む場合があり、データプレーンミラーアプリ層940は、顧客のリソースの所望の展開または他の使用を容易にすることができる。
【0207】
いくつかの実施形態では、IaaSプロバイダの顧客は、データプレーンVCN918にフィルタを適用することができる。この実施形態では、顧客はデータプレーンVCN918が何にアクセスできるかを決定することができ、顧客はデータプレーンVCN918からパブリックインターネット954へのアクセスを制限することができる。IaaSプロバイダは、フィルタを適用するか、さもなければ任意の外部ネットワークまたはデータベースへのデータプレーンVCN918のアクセスを制御することができない場合がある。顧客によるフィルタおよび制御を顧客テナント921に含まれるデータプレーンVCN918に適用すると、データプレーンVCN918を他の顧客およびパブリックインターネット954から分離するのに役立ち得る。
【0208】
いくつかの実施形態では、クラウドサービス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に通信可能に結合されていない、またはそうでなければ通信していない可能性がある。
【0209】
図10は、少なくとも1つの実施形態による、IaaSアーキテクチャの別のパターン例を示すブロック
図1000である。サービスオペレータ1002(例えば、
図8のサービスオペレータ802)は、仮想クラウドネットワーク(VCN)1006(例えば、
図8のVCN806)を含むことができるセキュアホストテナント1004(例えば、
図8のセキュアホストテナント804)およびセキュアホストサブネット1008(例えば、
図8のセキュアホストサブネット808)に通信可能に結合することができる。VCN1006は、SSH VCN1012に含まれるLPG1010を介してSSH VCN1012(例えば、
図8のSSH VCN812)に通信可能に結合され得るLPG1010(例えば、
図8のLPG810)を含むことができる。SSH VCN1012は、SSHサブネット1014(例えば、
図8のSSHサブネット814)を含むことができ、SSH VCN1012は、制御プレーンVCN1016に含まれるLPG1010を介して、制御プレーンVCN1016(例えば、
図8の制御プレーンVCN816)およびデータプレーンVCN1018に含まれるLPG1010を介して、データプレーンVCN1018(例えば、
図8のデータプレーン818)に通信可能に結合することができる。制御プレーンVCN1016およびデータプレーンVCN1018は、サービステナント1019(例えば、
図8のサービステナント819)に含めることができる。
【0210】
制御プレーン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を含むことができる。
【0211】
データプレーンVCN1018は、データプレーンアプリ層1046(例えば、
図8のデータプレーンアプリ層846)、データプレーンDMZ層1048(例えば、
図8のデータプレーンDMZ層848)、およびデータプレーンデータ層1050(例えば、
図8のデータプレーンデータ層850)を含むことができる。データプレーンDMZ層1048は、LBサブネット1022を含むことができ、これは、データプレーンアプリ層1046の信頼できるアプリサブネット1060と信頼できないアプリサブネット1062、およびデータプレーンVCN1018に含まれるインターネットゲートウェイ1034に通信可能に結合することができる。信頼できるアプリサブネット1060は、データプレーンVCN1018に含まれるサービスゲートウェイ1036、データプレーンVCN1018に含まれるNATゲートウェイ1038、およびデータプレーンデータ層1050に含まれるDBサブネット1030に通信可能に結合することができる。信頼できないアプリサブネット1062は、データプレーンVCN1018に含まれるサービスゲートウェイ1036およびデータプレーンデータ層1050に含まれるDBサブネット1030に通信可能に結合することができる。データプレーンデータ層1050は、データプレーンVCN1018に含まれるサービスゲートウェイ1036に通信可能に結合できるDBサブネット1030を含むことができる。
【0212】
信頼できないアプリサブネット1062は、テナント仮想マシン(VM)1066(1)~(N)に通信可能に結合できる1つまたは複数のプライマリVNIC1064(1)~(N)を含むことができる。各テナントVM1066(1)~(N)は、それぞれの顧客テナント1070(1)~(N)に含めることができるそれぞれのコンテナ出口VCN1068(1)~(N)に含めることができるそれぞれのアプリサブネット1067(1)~(N)に通信可能に結合することができる。それぞれのセカンダリVNIC1072(1)~(N)は、データプレーンVCN1018に含まれる信頼できないアプリサブネット1062と、コンテナ出口VCN1068(1)~(N)に含まれるアプリサブネットとの間の通信を容易にすることができる。各コンテナ出口VCN1068(1)~(N)は、パブリックインターネット1054(例えば、
図8のパブリックインターネット854)に通信可能に結合できるNATゲートウェイ1038を含むことができる。
【0213】
制御プレーンVCN1016に含まれ、データプレーンVCN1018に含まれるインターネットゲートウェイ1034は、パブリックインターネット1054に通信可能に結合できるメタデータ管理サービス1052(例えば、
図8のメタデータ管理システム852)に通信可能に結合することができる。パブリックインターネット1054は、制御プレーンVCN1016に含まれデータプレーンVCN1018に含まれるNATゲートウェイ1038に通信可能に結合することができる。制御プレーンVCN1016に含まれ、データプレーンVCN1018に含まれるサービスゲートウェイ1036は、クラウドサービス1056に通信可能に結合することができる。
【0214】
いくつかの実施形態では、データプレーンVCN1018は、顧客テナント1070と統合することができる。この統合は、コード実行時のサポートが必要な場合など、IaaSプロバイダの顧客にとって有益または望ましい場合があり得る。顧客は、破壊的な可能性がある実行コード、他の顧客リソースと通信する可能性のある実行コード、またはその他の望ましくない影響を引き起こす可能性のある実行コードを提供し得る。これに応答して、IaaSプロバイダは、顧客からIaaSプロバイダに提供されるコードを実行するかどうかを決定できる。
【0215】
いくつかの例では、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)を強制終了するか、その他の方法で廃棄することができる。
【0216】
いくつかの実施形態では、信頼できるアプリサブネット1060は、IaaSプロバイダによって所有または動作され得るコードを実行し得る。この実施形態では、信頼できるアプリサブネット1060は、DBサブネット1030に通信可能に結合され、DBサブネット1030においてCRUD動作を実行するように構成され得る。信頼できないアプリサブネット1062は、DBサブネット1030に通信可能に結合され得るが、この実施形態では、信頼できないアプリサブネットは、DBサブネット1030において読み取り動作を実行するように構成され得る。各顧客のVM1066(1)~(N)に含めることができ、顧客からのコードを実行することができるコンテナ1071(1)~(N)は、DBサブネット1030と通信可能に結合されなくてもよい。
【0217】
他の実施形態では、制御プレーンVCN1016とデータプレーンVCN1018は、直接通信可能に結合されていなくてもよい。この実施形態では、制御プレーンVCN1016とデータプレーンVCN1018との間に直接通信はなくてもよい。しかし、通信は少なくとも1つの方法を通じて間接的に行うことができる。LPG1010は、制御プレーンVCN1016とデータプレーンVCN1018との間の通信を容易にすることができるIaaSプロバイダによって確立され得る。別の例では、制御プレーンVCN1016またはデータプレーンVCN1018は、サービスゲートウェイ1036を介してクラウドサービス1056への呼び出しを行うことができる。例えば、制御プレーンVCN1016からクラウドサービス1056への呼び出しは、データプレーンVCN1018と通信できるサービスに対する要求を含むことができる。
【0218】
図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)に含めることができる。
【0219】
制御プレーン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を含むことができる。
【0220】
データプレーン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を含むことができる。
【0221】
信頼できないアプリサブネット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を含むことができる。
【0222】
制御プレーンVCN1116に含まれ、データプレーンVCN1118に含まれるインターネットゲートウェイ1134は、パブリックインターネット1154に通信可能に結合できるメタデータ管理サービス1152(例えば、
図8のメタデータ管理システム852)に通信可能に結合することができる。パブリックインターネット1154は、制御プレーンVCN1116に含まれデータプレーンVCN1118に含まれるNATゲートウェイ1138に通信可能に結合することができる。制御プレーンVCN1116に含まれ、データプレーンVCN1118に含まれるサービスゲートウェイ1136は、クラウドサービス1156に通信可能に結合することができる。
【0223】
いくつかの例では、
図11のブロック
図1100のアーキテクチャによって示されるパターンは、
図10のブロック
図1000のアーキテクチャによって示されるパターンの例外とみなされてもよく、IaaSプロバイダが顧客と直接通信できない場合(例えば、切断される領域)、IaaSプロバイダの顧客にとって望ましい可能性がある。各顧客のVM1166(1)~(N)に含まれるそれぞれのコンテナ1167(1)~(N)は、顧客によってリアルタイムでアクセスできる。コンテナ1167(1)~(N)は、コンテナ出口VCN1168に含めることができるデータプレーンアプリ層1146のアプリサブネット1126に含まれるそれぞれのセカンダリVNIC1172(1)~(N)への呼び出しを行うように構成され得る。セカンダリVNIC1172(1)~(N)は、呼び出しをパブリックインターネット1154に送信することができるNATゲートウェイ1138に呼び出しを送信することができる。この例では、顧客がリアルタイムでアクセスできるコンテナ1167(1)~(N)は、制御プレーンVCN1116から分離することができ、データプレーンVCN1118に含まれる他のエンティティから分離することができる。コンテナ1167(1)~(N)はまた、他の顧客からのリソースから分離されてもよい。
【0224】
他の例では、顧客は、コンテナ1167(1)~(N)を使用して、クラウドサービス1156を呼び出すことができる。この例では、顧客は、クラウドサービス1156からサービスを要求するコードをコンテナ1167(1)~(N)内で実行することができる。コンテナ1167(1)~(N)は、この要求を、パブリックインターネット1154に要求を送信できるNATゲートウェイに要求を送信できるセカンダリVNIC1172(1)~(N)に送信することができる。パブリックインターネット1154は、インターネットゲートウェイ1134を介して、制御プレーンVCN1116に含まれるLBサブネット1122に要求を送信することができる。要求が有効であると決定したことに応答して、LBサブネットは、サービスゲートウェイ1136を介してクラウドサービス1156に要求を送信できるアプリサブネット1126に要求を送信することができる。
【0225】
図に示されるIaaSアーキテクチャ800、900、1000、1100は、示されるもの以外の構成要素を有し得ることを理解されたい。さらに、図に示される実施形態は、本開示の実施形態を組み込むことができるクラウドインフラストラクチャシステムのいくつかの例にすぎない。他のいくつかの実施形態では、IaaSシステムは、図に示されているよりも多いまたは少ない構成要素を有してもよく、2つ以上の構成要素を組み合わせてもよく、または構成要素の異なる構成もしくは配置を有してもよい。
【0226】
ある実施形態では、本明細書で説明されるIaaSシステムは、セルフサービス、加入ベース、弾力的に拡張可能で、信頼性が高く、可用性が高く、安全な方法で顧客に提供されるアプリケーション、ミドルウェア、およびデータベースサービス製品の一式を含むことができる。このようなIaaSシステムの一例として、本譲受人が提供するOracle Cloud Infrastructure(OCI)がある。
【0227】
図12は、さまざまな実施形態が実装され得る例示的なコンピュータシステム1200を示す。システム1200は、上述のコンピュータシステムのいずれかを実装するために使用することができる。図に示すように、コンピュータシステム1200は、バスサブシステム1202を介して多くの周辺サブシステムと通信する処理ユニット1204を含む。これらの周辺サブシステムは、処理加速ユニット1206、I/Oサブシステム1208、記憶サブシステム1218、および通信サブシステム1224を含み得る。記憶サブシステム1218は、有形のコンピュータ可読記憶媒体1222およびシステムメモリ1210を含む。
【0228】
バスサブシステム1202は、コンピュータシステム1200のさまざまな構成要素およびサブシステムが意図したとおりに相互に通信できるようにする機構を提供する。バスサブシステム1202は単一のバスとして概略的に示されているが、バスサブシステムの代替実施形態では複数のバスを利用することができる。バスサブシステム1202は、さまざまなバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のいずれであってもよい。例えば、そのようなアーキテクチャには、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびPeripheral Component InterConnect(PCI)バスが含まれ得る。これは、IEEE P1386.1規格に従って製造されるメザニンバスとして実装できる。
【0229】
処理ユニット1204は、1つまたは複数の集積回路(例えば、従来のマイクロプロセッサまたはマイクロコントローラ)として実装することができ、コンピュータシステム1200の動作を制御する。1つまたは複数のプロセッサが処理ユニット1204に含まれてもよい。これらのプロセッサには、単一コアプロセッサまたはマルチコアプロセッサが含まれ得る。ある実施形態では、処理ユニット1204は、各処理ユニットに含まれる単一プロセッサまたはマルチコアプロセッサを有する1つまたは複数の独立した処理ユニット1232および/または1234として実装され得る。他の実施形態では、処理ユニット1204はまた、2つの二重コアプロセッサを単一のチップに統合することによって形成されるクアッドコア処理ユニットとして実装されてもよい。
【0230】
さまざまな実施形態において、処理ユニット1204は、プログラムコードに応答してさまざまなプログラムを実行することができ、複数の同時実行プログラムまたはプロセスを維持することができる。いつでも、実行されるプログラムコードの一部またはすべては、プロセッサ1204および/または記憶サブシステム1218に載置することができる。適切なプログラミングを通じて、プロセッサ1204は上述のさまざまな機能を提供することができる。コンピュータシステム1200は、デジタル信号プロセッサ(DSP)、専用プロセッサ等を含むことができる処理加速ユニット1206をさらに含むことができる。
【0231】
I/Oサブシステム1208は、ユーザインターフェイス入力デバイスおよびユーザインターフェイス出力デバイスを含むことができる。ユーザインターフェイス入力デバイスは、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを備えたオーディオ入力デバイス、マイク、およびその他のタイプの入力デバイスを含み得る。ユーザインターフェイス入力デバイスには、例えば、ユーザが、Microsoft Xbox(登録商標)360ゲームコントローラなどの、ジェスチャや音声コマンドを使用した自然なユーザインターフェイスを介した入力デバイスを制御および入力デバイスと対話できるようにするMicrosoft Kinect(登録商標)モーションセンサーなどのモーションセンシングおよび/またはジェスチャ認識デバイスが含まれ得る。ユーザインターフェイス入力デバイスには、アイジェスチャ認識デバイスも含まれ得、例えば、Google Glass(登録商標)点滅検出器は、ユーザの目のアクティビティ(例えば、写真を撮るとき、および/または、メニューを選択しているときの「点滅」など)を検出し、目のジェスチャを入力デバイス(例えば、Google Glass(登録商標))への入力として変換する。さらに、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを通じて音声認識システム(例えば、Siri(登録商標)ナビゲータ)と対話できるようにする音声認識センシングデバイスを含んでもよい。
【0232】
ユーザインターフェイス入力デバイスにはまた、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、およびスピーカー、デジタルカメラ、デジタルビデオカメラ、ポータブル媒体プレーヤー、Webカメラ、イメージスキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザー距離計、視線追跡デバイスなどのオーディオ/ビジュアルデバイスが含まれ得る。さらに、ユーザインターフェイス入力デバイスには、例えば、コンピュータ断層撮影法、磁気共鳴画像法、位置放射断層撮影法、医療用超音波検査デバイスなどの医療用画像入力デバイスが含まれてもよい。ユーザインターフェイス入力デバイスには、例えば、MIDIキーボード、デジタル楽器などのオーディオ入力デバイスも含まれ得る。
【0233】
ユーザインターフェイス出力デバイスには、ディスプレイサブシステム、インジケータライト、またはオーディオ出力デバイスなどの非視覚的ディスプレイが含まれてもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するものなどのフラットパネルデバイス、投影デバイス、タッチスクリーンなどであってもよい。一般に、「出力デバイス」という用語の使用は、コンピュータシステム1200からユーザまたは他のコンピュータに情報を出力するためのあらゆる可能なタイプのデバイスおよび機構を含むことを意図している。例えば、ユーザインターフェイス出力デバイスには、テキスト、グラフィックスおよびオーディオ/ビデオ情報を視覚的に伝えるさまざまな表示デバイス、例えば、モニター、プリンタ、スピーカー、ヘッドフォン、カーナビゲーションシステム、プロッター、音声出力デバイスおよびモデムが含まれるが、これらに限定されない。
【0234】
コンピュータシステム1200は、システムメモリ1210内に現在配置されているように示されるソフトウェア要素を備える記憶サブシステム1218を備えることができる。システムメモリ1210は、処理ユニット1204上でロード可能および実行可能なプログラム命令、ならびにこれらのプログラムの実行中に生成されるデータを記憶することができる。
【0235】
コンピュータシステム1200の構成およびタイプに応じて、システムメモリ1210は、揮発性(例えば、ランダムアクセスメモリ(RAM))および/または不揮発性(読み取り専用メモリ(ROM)、フラッシュメモリなど)であってもよい。RAMは通常、処理ユニット1204に即座にアクセス可能な、および/または処理ユニット1204によって現在動作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実装形態では、システムメモリ1210は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)などの複数の異なるタイプのメモリを含み得る。いくつかの実装形態では、起動中など、コンピュータシステム1200内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム(BIOS)は、通常、ROMに記憶され得る。限定ではなく例として、システムメモリ1210は、アプリケーションプログラム1212も示し、これには、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などが含まれてもよく、プログラムデータ1214、および動作システム1216も示す。例として、動作システム1216には、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinux動作システム、さまざまな市販のUNIX(登録商標)またはUNIX系動作システム(さまざまなGNU/Linux動作システム、Google Chrome(登録商標)OSなどを含むが、これらに限定されない)および/またはiOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)12OS、Palm(登録商標)OS動作システムなどのモバイル動作システムが含まれ得る。
【0236】
記憶サブシステム1218はまた、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を記憶するための有形のコンピュータ可読記憶媒体を提供することもできる。プロセッサによって実行されると、上述の機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、記憶サブシステム1218に記憶され得る。これらのソフトウェアモジュールまたは命令は、処理ユニット1204によって実行され得る。記憶サブシステム1218は、本開示に従って使用されるデータを記憶するためのリポジトリを提供することもできる。
【0237】
記憶サブシステム1200はまた、コンピュータ可読記憶媒体1222にさらに接続できるコンピュータ可読記憶媒体リーダ1220を含んでもよい。コンピュータ可読記憶媒体1222は、システムメモリ1210と一緒に、任意に、システムメモリ1210と組み合わせて、リモート、ローカル、固定、および/または取り外し可能記憶デバイスと記憶媒体を包括的に表し得、コンピュータ可読情報を一時的および/またはより永続的に収容、記憶、送信、および取得する。
【0238】
コードまたはコードの一部を含むコンピュータ可読記憶媒体1222には、当技術分野で知られている、または使用されている任意の適切な媒体も含まれ得、これには、情報の記憶および/または送信のための任意の方法または技術で実装される揮発性および不揮発性、取り外し可能および非取り外し可能媒体などの記憶媒体および通信媒体が含まれるが、これらに限定されない。これには、有形のコンピュータ可読記憶媒体が含まれ得、例えば、RAM、ROM、電子的に消去可能なプログラマブルROM(EEPROM)、フラッシュメモリまたはその他のメモリ技術、CD-ROM、デジタルバーサタイルディスク(DVD)またはその他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、またはその他の磁気記憶デバイス、またはその他の有形のコンピュータ可読媒体などである。これには、データ信号、データ送信、または所望の情報を送信するために使用でき、コンピューティングシステム1200によってアクセスできる任意の他の媒体などの、無形のコンピュータ可読媒体も含まれ得る。
【0239】
例として、コンピュータ可読記憶媒体1222は、取り外し不可能な不揮発性磁気媒体に対して読み取りまたは書き込みを行うハードディスクドライブ、取り外し可能な不揮発性磁気ディスクに対して読み取りまたは書き込みを行う磁気ディスクドライブ、ならびにCDROM、DVD、およびBlu-Ray(登録商標)ディスクなどの取り外し可能な不揮発性光ディスク、またはその他の光媒体に対して読み取りまたは書き込みを行う光ディスクドライブを含むことができる。コンピュータ可読記憶媒体1222には、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどが含まれてもよいが、これらに限定されない。コンピュータ可読記憶媒体1222には、フラッシュメモリベースのSSDなどの不揮発性メモリに基づくソリッドステートドライブ(SSD)、企業フラッシュドライブ、ソリッドステートROMなど、ソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSDなどの揮発性メモリをベースにしたSSD、およびDRAMとフラッシュメモリベースのSSDを組み合わせて使用するハイブリッドSSDも含まれ得る。ディスクドライブおよびそれらに関連するコンピュータ可読媒体は、コンピュータシステム1200のためのコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶装置を提供し得る。
【0240】
通信サブシステム1224は、他のコンピュータシステムおよびネットワークへのインターフェイスを提供する。通信サブシステム1224は、コンピュータシステム1200から他のシステムとの間でデータを送受信するためのインターフェイスとして機能する。例えば、通信サブシステム1224は、コンピュータシステム1200がインターネットを介して1つまたは複数のデバイスに接続できるようにすることができる。いくつかの実施形態では、通信サブシステム1224は、無線音声ネットワークおよび/またはデータネットワークにアクセスするための無線周波数(RF)トランシーバ構成要素、(例えば、携帯電話技術、3G、4G、またはEDGE(世界的な進化のための強化されるデータ速度)などの高度なデータネットワーク技術の使用、WiFi(IEEE802.11ファミリ規格、またはその他のモバイル通信技術、またはそれらの任意の組み合わせ)、全地球測位システム(GPS)受信機構成要素、および/または他の構成要素を含むことができる。いくつかの実施形態では、通信サブシステム1224は、無線インターフェイスに加えて、またはその代わりに、有線ネットワーク接続(例えば、イーサネット)を提供することができる。
【0241】
いくつかの実施形態では、通信サブシステム1224は、コンピュータシステム1200を使用することができる1人または複数のユーザに代わって、構造化および/または非構造化データフィード1226、イベントストリーム1228、イベント更新1230などの形式で入力通信を受信することもできる。
【0242】
例として、通信サブシステム1224は、ソーシャルネットワークおよび/もしくはツイッター(登録商標)フィード、フェイスブック(登録商標)更新情報、リッチサイトサマリー(RSS)フィードなどのウェブフィードなどの他の通信サービスのユーザからデータフィード1226をリアルタイムでならびに/または1つもしくは複数のサードパーティ情報ソースからのリアルタイム更新を受信するように構成され得る。
【0243】
さらに、通信サブシステム1224はまた、連続データストリームの形式でデータを受信するように構成されてもよく、これには、リアルタイムイベントおよび/またはイベント更新1230のイベントストリーム1228が含まれ得るが、これらは、本質的に連続的であるか、または明示的な終了のない無制限であり得る。連続データを生成するアプリケーションの例には、例えば、センサーデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などが含まれ得る。
【0244】
通信サブシステム1224は、構造化および/または非構造化データフィード1226、イベントストリーム1228、イベント更新1230などを、コンピュータシステム1200に結合される1つまたは複数のストリーミングデータソースコンピュータと通信中であり得る1つまたは複数のデータベースに出力するように構成されてもよい。
【0245】
コンピュータシステム1200は、さまざまなタイプのうちの1つであり得、ハンドヘルドポータブルデバイス(例えば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または任意の他のデータ処理システムを含む。
【0246】
コンピュータおよびネットワークの絶え間なく変化する性質のため、図に示されるコンピュータシステム1200の説明は、特定の例としてのみ意図されている。図に示されているシステムよりも多くの、または少ない構成要素を備えた他の多くの構成が可能である。例えばまた、カスタマイズされるハードウェアが使用されることがあり得、および/または、特定の要素がハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、もしくは組み合わせで実装されることがあり得る。さらに、ネットワーク入出力デバイスなどの他のコンピューティングデバイスへの接続が使用されてもよい。本明細書で提供される開示および教示に基づいて、当業者であれば、さまざまな実施形態を実装するための他の様式および/または方法を理解するであろう。
【0247】
特定の実施形態について説明してきたが、さまざまな修正、変更、代替構造、および均等物も本開示の範囲内に包含される。実施形態は、ある特定のデータ処理環境内での動作に限定されず、複数のデータ処理環境内で自由に動作することができる。さらに、特定の一連のトランザクションおよびステップを使用して実施形態を説明したが、本開示の範囲が説明した一連のトランザクションおよびステップに限定されないことは当業者には明らかである。上述の実施形態のさまざまな特徴および態様は、個別にまたは組み合わせて使用することができる。
【0248】
さらに、ハードウェアとソフトウェアの特定の組み合わせを使用して実施形態を説明したが、ハードウェアとソフトウェアの他の組み合わせも本開示の範囲内であることを認識されたい。実施形態は、ハードウェアのみで、またはソフトウェアのみで、またはそれらの組み合わせを使用して実装することができる。本明細書で説明するさまざまなプロセスは、同じプロセッサ上で実装することも、異なるプロセッサを任意に組み合わせて実装することもできる。したがって、構成要素またはモジュールがある動作を実行するように構成されていると説明されている場合、このような構成は、例えば、動作を実行する電子回路を設計することによって、動作を実行するようにプログラマブル電子回路(例えば、マイクロプロセッサ)をプログラムすることによって、またはそれらの任意の組み合わせによって達成することができる。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信することができ、プロセスの異なるペアが異なる技術を使用することができ、または同じプロセスのペアが異なる時点で異なる技術を使用することができる。
【0249】
したがって、明細書および図面は、限定的な意味ではなく、例示的な意味としてみなされるべきである。しかし、特許請求の範囲に記載のより広範な趣旨および範囲から逸脱することなく、追加、減算、削除、およびその他の修正および変更を行うことができることは明らかである。したがって、特定の開示実施形態について説明してきたが、これらは限定することを意図したものではない。さまざまな修正および均等物は、以下の特許請求の範囲内に含まれる。
【0250】
開示される実施形態を説明する文脈における(特に、以下の特許請求の範囲の文脈において)用語「a」、「an」、「the」、および同様の指示対象の使用は、本明細書で別途指示するか、文脈と明らかに矛盾しない限り、単数形と複数形の両方をカバーすると解釈されるべきである。「含む(comprising)」、「有する」、「含む(including)」、および「含有する」という用語は、特に断りのない限り、無制限の用語(すなわち、「含むがこれらに限定されない」を意味する)として解釈されるべきである。「接続されている」という用語は、たとえ何かが介在している場合でも、部分的または全体的に内部に含まれている、取り付けられている、または結合されていると解釈される。本明細書における値の範囲の記載は、本明細書に別段の指示がない限り、その範囲内にある各々の個別の値を個々に参照する簡略的な方法として機能することを単に意図しており、個別の各値は、あたかも本明細書に個々に記載されているかのように本明細書に組み込まれる。本明細書に記載されるすべての方法は、本明細書に別段の指示がない限り、またはそうでなければ文脈と明らかに矛盾しない限り、任意の適切な順序で実行することができる。本明細書で提供されるあらゆる例、または例示的な文言(例えば、「など」)の使用は、単に実施形態をより良く説明することを意図しており、別段の請求がない限り、本開示の範囲に制限を課すものではない。本明細書のいかなる文言も、特許請求されていない任意の要素が本開示の実施に必須であることを示すものとして解釈されるべきではない。
【0251】
特に別段明記されていない限り、「X、Y、またはZの少なくとも1つ」というフレーズなどの選言的な文言は、項目、用語などがX、Y、またはZのいずれか、またはそれらの任意の組み合わせ(例えば、X、Y、および/またはZ)であり得ることを示すために一般に使用される文脈内で理解されることを意図している。したがって、そのような選言的な文言は、一般に、ある実施形態が、Xの少なくとも1つ、Yの少なくとも1つ、またはZの少なくとも1つが各々存在することを必要とすることを意味することを意図したものではなく、また、意味するべきではない。
【0252】
本開示の好ましい実施形態が、本開示を実施するための既知の最良のモードを含めて、本明細書に記載される。これらの好ましい実施形態の変形は、前述の説明を読めば当業者には明らかになり得る。当業者であれば、そのような変形を必要に応じて採用することができるはずであり、本開示は、本明細書に具体的に記載される以外の方法で実施することもできる。したがって、本開示には、適用可能な法律によって許可される、本明細書に添付の特許請求の範囲に記載される主題のすべての修正および均等物が含まれる。さらに、本明細書で別段の指示がない限り、それらの可能なすべての変形における上述の要素の任意の組み合わせが本開示に包含される。
【0253】
本明細書に引用される出版物、特許出願、および特許を含むすべての参考文献は、各参考文献が参照により組み込まれることが個別かつ具体的に示され、その全体が本明細書に記載されたのと同じ程度に、参照により本明細書に組み込まれる。
【0254】
前述の明細書では、本開示の態様は、その特定の実施形態を参照して説明されているが、当業者は、本開示がそれに限定されないことを認識するであろう。上述の開示のさまざまな特徴および態様は、個別にまたは組み合わせて使用することができる。さらに、実施形態は、本明細書のより広範な趣旨および範囲から逸脱することなく、本明細書に記載されるものを超える任意の数の環境および用途において利用することができる。したがって、本明細書および図面は、限定的なものではなく、例示的なものとみなされるべきである。
【国際調査報告】