IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ セールスフォース ドット コム インコーポレイティッドの特許一覧

特表2023-548550クラウドプラットフォーム上でデータセンタをプロビジョニング及びデプロイするための宣言型言語及びコンパイラ
<>
  • 特表-クラウドプラットフォーム上でデータセンタをプロビジョニング及びデプロイするための宣言型言語及びコンパイラ 図1
  • 特表-クラウドプラットフォーム上でデータセンタをプロビジョニング及びデプロイするための宣言型言語及びコンパイラ 図2
  • 特表-クラウドプラットフォーム上でデータセンタをプロビジョニング及びデプロイするための宣言型言語及びコンパイラ 図3
  • 特表-クラウドプラットフォーム上でデータセンタをプロビジョニング及びデプロイするための宣言型言語及びコンパイラ 図4
  • 特表-クラウドプラットフォーム上でデータセンタをプロビジョニング及びデプロイするための宣言型言語及びコンパイラ 図5
  • 特表-クラウドプラットフォーム上でデータセンタをプロビジョニング及びデプロイするための宣言型言語及びコンパイラ 図6
  • 特表-クラウドプラットフォーム上でデータセンタをプロビジョニング及びデプロイするための宣言型言語及びコンパイラ 図7
  • 特表-クラウドプラットフォーム上でデータセンタをプロビジョニング及びデプロイするための宣言型言語及びコンパイラ 図8
  • 特表-クラウドプラットフォーム上でデータセンタをプロビジョニング及びデプロイするための宣言型言語及びコンパイラ 図9
  • 特表-クラウドプラットフォーム上でデータセンタをプロビジョニング及びデプロイするための宣言型言語及びコンパイラ 図10A
  • 特表-クラウドプラットフォーム上でデータセンタをプロビジョニング及びデプロイするための宣言型言語及びコンパイラ 図10B
  • 特表-クラウドプラットフォーム上でデータセンタをプロビジョニング及びデプロイするための宣言型言語及びコンパイラ 図10C
  • 特表-クラウドプラットフォーム上でデータセンタをプロビジョニング及びデプロイするための宣言型言語及びコンパイラ 図11
  • 特表-クラウドプラットフォーム上でデータセンタをプロビジョニング及びデプロイするための宣言型言語及びコンパイラ 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-11-17
(54)【発明の名称】クラウドプラットフォーム上でデータセンタをプロビジョニング及びデプロイするための宣言型言語及びコンパイラ
(51)【国際特許分類】
   G06F 8/60 20180101AFI20231110BHJP
【FI】
G06F8/60
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023526999
(86)(22)【出願日】2021-01-28
(85)【翻訳文提出日】2023-06-22
(86)【国際出願番号】 US2021015525
(87)【国際公開番号】W WO2022098382
(87)【国際公開日】2022-05-12
(31)【優先権主張番号】17/091,982
(32)【優先日】2020-11-06
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/091,988
(32)【優先日】2020-11-06
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.OS X
2.JAVASCRIPT
3.KUBERNETES
4.AWS
(71)【出願人】
【識別番号】506332063
【氏名又は名称】セールスフォース インコーポレイテッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】マイアー,ジョシュ
(72)【発明者】
【氏名】グプタ,ヴァルン
(72)【発明者】
【氏名】ドゥールヴァクマール,スリニヴァス
(72)【発明者】
【氏名】モイス,クリス
(72)【発明者】
【氏名】チャッカラパニ,マヤクリシュナン
(72)【発明者】
【氏名】ブラジーウ,ジェレミア
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AA07
5B376AB01
5B376AB12
5B376DA11
(57)【要約】
コンピューティングシステム、例えば、マルチテナントシステムは、クラウドプラットフォームに依存しないクラウドプラットフォームインフラストラクチャ言語を使用して、クラウドプラットフォーム内にデータセンタを作成する。システムは、作成される新しいデータセンタ、又はクラウドプラットフォーム上にデプロイされた既存のデータセンタに対する修正を記述するプラットフォームに依存しない宣言型仕様を受信する。システムは、クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、データセンタのメタデータ表現を生成する。データセンタが存在する場合、システムは、所望のデータセンタを取得するためにデータセンタに対する修正を表すメタデータ表現を生成する。システムは、メタデータ表現と、ターゲットクラウドプラットフォーム上で実行するための命令のセットを送信する。ターゲットクラウドプラットフォームは、データセンタを構成する命令を実行する。本システムは、ターゲットクラウドプラットフォームによって構成されたデータセンタのコンピューティングリソースへのアクセスをユーザに提供する。
【特許請求の範囲】
【請求項1】
クラウドプラットフォーム内にデータセンタを構成するためのコンピュータ実装方法であって、
マルチテナントシステムのテナントのためのデータセンタのクラウドプラットフォームに依存しない宣言型仕様を受信することであって、前記データセンタは、前記テナントに関連付けられたユーザのセットによって使用されるコンピューティングリソースのセットを表し、前記クラウドプラットフォームに依存しない宣言型仕様は、複数のクラウドプラットフォームのいずれか上で前記データセンタを生成するように構成されており、クラウドプラットフォームインフラストラクチャ言語を用いて指定される、ことと、
前記クラウドプラットフォームに依存しない宣言型仕様に基づいて、前記データセンタを作成するためにターゲットクラウドプラットフォームを識別する情報を受信することと、
前記クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、前記ターゲットクラウドプラットフォーム上に前記データセンタを作成するためにクラウドプラットフォーム固有のデータセンタ表現を生成することと、
前記クラウドプラットフォーム固有のデータセンタ表現と、前記ターゲットクラウドプラットフォーム上で実行するための命令のセットとを送信することであって、前記ターゲットクラウドプラットフォームは、前記命令を実行して、前記クラウドプラットフォーム固有のデータセンタ表現を使用して前記データセンタを構成する、ことと、
前記マルチテナントシステムによって、前記テナントのユーザに、前記ターゲットクラウドプラットフォームによって構成された前記データセンタのコンピューティングリソースへのアクセスを提供することと、を含む、コンピュータ実装方法。
【請求項2】
前記クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成することは、
前記クラウドプラットフォームに依存しない宣言型仕様から前記データセンタのクラウドプラットフォームに依存しない詳細メタデータ表現を生成することを含み、前記クラウドプラットフォームに依存しない詳細メタデータ表現は、前記クラウドプラットフォームに依存しない宣言型仕様において規定されたデータセンタエンティティのインスタンスの識別子を含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成することは、
前記クラウドプラットフォームに依存しない詳細メタデータ表現に基づいて、前記ターゲットクラウドプラットフォームに対するプラットフォーム固有の詳細メタデータ表現を生成することと、
前記プラットフォーム固有の詳細なメタデータ表現に基づいて、前記ターゲットクラウドプラットフォーム上に前記データセンタをデプロイすることと、をさらに含む、請求項2に記載のコンピュータ実装方法。
【請求項4】
前記ターゲットクラウドプラットフォームに対するプラットフォーム固有の詳細メタデータ表現を生成することは、
前記ターゲットクラウドプラットフォーム上に1つ以上のユーザアカウントを作成することと、
前記生成されたユーザアカウントを前記プラットフォーム固有の詳細メタデータ表現に含めることと、を含む、請求項3に記載のコンピュータ実装方法。
【請求項5】
前記ターゲットクラウドプラットフォームに対するプラットフォーム固有の詳細メタデータ表現を生成することは、
前記クラウドプラットフォームに依存しない宣言型仕様で定義されたサービスのアウトバウンドアクセス属性に基づいて、前記ターゲットクラウドプラットフォーム上に1つ以上のネットワークポリシーを作成することを含む、請求項3に記載のコンピュータ実装方法。
【請求項6】
前記ターゲットクラウドプラットフォームに対するプラットフォーム固有の詳細メタデータ表現を生成することは、
前記ターゲットクラウドプラットフォーム上に1つ以上のコンピューティングリソースを作成することと、
前記ターゲットクラウドプラットフォームから前記1つ以上のコンピューティングリソースの識別子を受信することと、
前記識別子を前記プラットフォーム固有の詳細メタデータ表現に含めることと、を含む、請求項3に記載のコンピュータ実装方法。
【請求項7】
前記クラウドプラットフォームに依存しない宣言型仕様は、1つ以上のデータセンタインスタンスの定義を含み、各データセンタインスタンスは、1つ以上のサービスグループを含み、各サービスグループは、サービスのセットを含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
サービスグループは、コンピューティングノードのクラスタのセットをさらに規定し、1つ以上のサービスは、コンピューティングノードのクラスタに関連付けられ、前記ターゲットクラウドプラットフォーム上にデプロイされる前記データセンタは、前記コンピューティングノードのクラスタを含み、前記クラウドプラットフォームに依存しない宣言型仕様で規定されるように前記コンピューティングノードに対して前記サービスを実行する、請求項7に記載のコンピュータ実装方法。
【請求項9】
ステージのセットを含む1つ以上のパイプラインを生成することをさらに含み、各ステージは、前記クラウドプラットフォーム上に前記データセンタを作成するためのアクションを実行する、請求項1に記載のコンピュータ実装方法。
【請求項10】
前記1つ以上のパイプラインは、前記ターゲットクラウドプラットフォーム上に前記データセンタを作成するためのリソースをプロビジョニングするためのプロビジョニングパイプラインを含む、請求項9に記載のコンピュータ実装方法。
【請求項11】
前記1つ以上のパイプラインは、前記プロビジョニングパイプラインによってプロビジョニングされるリソース上にアプリケーションをデプロイするためのデプロイパイプラインを含む、請求項10に記載のコンピュータ実装方法。
【請求項12】
前記1つ以上のパイプラインは、前記プロビジョニングパイプライン及び前記デプロイパイプラインを含むオーケストレーションパイプラインを含む、請求項10に記載のコンピュータ実装方法。
【請求項13】
前記ターゲットクラウドプラットフォームは、第1のターゲットクラウドプラットフォームであり、前記クラウドプラットフォーム固有のデータセンタは、第1のクラウドプラットフォーム固有のデータセンタ表現であり、前記方法は、
第2のターゲットクラウドプラットフォームを識別する情報を受信することと、
前記クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、前記第2のターゲットクラウドプラットフォーム上に前記データセンタを作成するために第2のクラウドプラットフォーム固有のデータセンタ表現を生成することと、
前記第2のクラウドプラットフォーム固有のデータセンタ表現と、前記第2のターゲットクラウドプラットフォーム上で実行するための命令のセットとを送信することであって、前記第1のターゲットクラウドプラットフォームは、前記命令を実行して、前記第2のクラウドプラットフォーム固有のデータセンタ表現を使用して前記データセンタを構成する、ことと、をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項14】
コンピュータプロセッサによって実行されるときに、前記コンピュータプロセッサに、クラウドプラットフォーム内にデータセンタを構成するためのステップを実行させる命令を記憶するための非一時的なコンピュータ可読記憶媒体であって、前記ステップは、
マルチテナントシステムのテナントのためのデータセンタのクラウドプラットフォームに依存しない宣言型仕様を受信することであって、前記データセンタは、前記テナントに関連付けられたユーザのセットによって使用されるコンピューティングリソースのセットを表し、前記クラウドプラットフォームに依存しない宣言型仕様は、複数のクラウドプラットフォームのいずれか上で前記データセンタを生成するように構成されており、クラウドプラットフォームインフラストラクチャ言語を用いて指定される、ことと、
前記クラウドプラットフォームに依存しない宣言型仕様に基づいて、前記データセンタを作成するためにターゲットクラウドプラットフォームを識別する情報を受信することと、
前記クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、前記ターゲットクラウドプラットフォーム上に前記データセンタを作成するためにクラウドプラットフォーム固有のデータセンタ表現を生成することと、
前記クラウドプラットフォーム固有のデータセンタ表現と、前記ターゲットクラウドプラットフォーム上で実行するための命令のセットとを送信することであって、前記ターゲットクラウドプラットフォームは、前記命令を実行して、前記クラウドプラットフォーム固有のデータセンタ表現を使用して前記データセンタを構成する、ことと、
前記マルチテナントシステムによって、前記テナントのユーザに、前記ターゲットクラウドプラットフォームによって構成された前記データセンタのコンピューティングリソースへのアクセスを提供することと、を含む、非一時的なコンピュータ可読記憶媒体。
【請求項15】
前記クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成することは、
前記クラウドプラットフォームに依存しない宣言型仕様から前記データセンタのクラウドプラットフォームに依存しない詳細メタデータ表現を生成することを含み、前記クラウドプラットフォームに依存しない詳細メタデータ表現は、前記クラウドプラットフォームに依存しない宣言型仕様において規定されたデータセンタエンティティのインスタンスの識別子を含む、請求項14に記載の非一時的なコンピュータ可読記憶媒体。
【請求項16】
前記クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成することは、
前記クラウドプラットフォームに依存しない詳細メタデータ表現に基づいて、前記ターゲットクラウドプラットフォームに対するプラットフォーム固有の詳細メタデータ表現を生成することと、
前記プラットフォーム固有の詳細なメタデータ表現に基づいて、前記ターゲットクラウドプラットフォーム上に前記データセンタをデプロイすることと、をさらに含む、請求項15に記載の非一時的なコンピュータ可読記憶媒体。
【請求項17】
前記クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成することは、
前記ターゲットクラウドプラットフォーム上に1つ以上のコンピューティングリソースを作成することと、
前記ターゲットクラウドプラットフォームから前記1つ以上のコンピューティングリソースの識別子を受信することと、
前記識別子を前記プラットフォーム固有の詳細メタデータ表現に含めることと、を含む、請求項15に記載の非一時的なコンピュータ可読記憶媒体。
【請求項18】
前記1つ以上のパイプラインは、
前記ターゲットクラウドプラットフォーム上に前記データセンタを作成するためのリソースをプロビジョニングするためのプロビジョニングパイプラインと、
前記プロビジョニングパイプラインによってプロビジョニングされたリソース上にアプリケーションをデプロイするためのデプロイパイプラインと、を含む、請求項14に記載の非一時的なコンピュータ可読記憶媒体。
【請求項19】
前記ターゲットクラウドプラットフォームは、第1のターゲットクラウドプラットフォームであり、前記クラウドプラットフォーム固有のデータセンタは、第1のクラウドプラットフォーム固有のデータセンタ表現であり、前記命令は、前記プロセッサに、
第2のターゲットクラウドプラットフォームを識別する情報を受信することと、
前記クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、前記第2のターゲットクラウドプラットフォーム上に前記データセンタを作成するために第2のクラウドプラットフォーム固有のデータセンタ表現を生成することと、
前記第2のクラウドプラットフォーム固有のデータセンタ表現と、前記第2のターゲットクラウドプラットフォーム上で実行するための命令のセットとを送信することであって、前記第1のターゲットクラウドプラットフォームは、前記命令を実行して、前記第2のクラウドプラットフォーム固有のデータセンタ表現を使用して前記データセンタを構成する、ことと、を含むステップをさらに実行させる、請求項14に記載の非一時的なコンピュータ可読記憶媒体。
【請求項20】
コンピュータシステムであって、
コンピュータプロセッサと、
コンピュータプロセッサによって実行されるときに、前記コンピュータプロセッサに、クラウドプラットフォーム内にデータセンタを構成するためのステップを実行させる命令を記憶するための非一時的なコンピュータ可読記憶媒体であって、前記ステップは、
マルチテナントシステムのテナントのためのデータセンタのクラウドプラットフォームに依存しない宣言型仕様を受信することであって、前記データセンタは、前記テナントに関連付けられたユーザのセットによって使用されるコンピューティングリソースのセットを表し、前記クラウドプラットフォームに依存しない宣言型仕様は、複数のクラウドプラットフォームのいずれか上で前記データセンタを生成するように構成されており、クラウドプラットフォームインフラストラクチャ言語を用いて指定される、ことと、
前記クラウドプラットフォームに依存しない宣言型仕様に基づいて、前記データセンタを作成するためにターゲットクラウドプラットフォームを識別する情報を受信することと、
前記クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、前記ターゲットクラウドプラットフォーム上に前記データセンタを作成するためにクラウドプラットフォーム固有のデータセンタ表現を生成することと、
前記クラウドプラットフォーム固有のデータセンタ表現と、前記ターゲットクラウドプラットフォーム上で実行するための命令のセットとを送信することであって、前記ターゲットクラウドプラットフォームは、前記命令を実行して、前記クラウドプラットフォーム固有のデータセンタ表現を使用して前記データセンタを構成する、ことと、
前記マルチテナントシステムによって、前記テナントのユーザに、前記ターゲットクラウドプラットフォームによって構成された前記データセンタのコンピューティングリソースへのアクセスを提供することと、を含む、コンピュータシステム。
【請求項21】
クラウドプラットフォーム内に作成されたデータセンタを修正するためのコンピュータ実装方法であって、
データセンタのオリジナル宣言型仕様を受信することであって、前記データセンタは、マルチテナントシステムのテナントに関連付けられたユーザのセットによって使用されるコンピューティングリソースのセットを表し、前記オリジナル宣言型仕様は、クラウドプラットフォームインフラストラクチャ言語を使用して規定され、複数のクラウドプラットフォームのいずれか上に前記データセンタのオリジナルバージョンを生成するように構成されている、ことと、
前記オリジナル宣言型仕様に準拠する前記データセンタの前記オリジナルバージョンを、ターゲットクラウドプラットフォーム上にデプロイすることと、
前記データセンタの修正された宣言型仕様を受信することと、
前記オリジナル宣言型仕様に基づくデータセンタの前記オリジナルバージョンと、前記修正された宣言型仕様に基づく前記データセンタの前記修正されたバージョンとの間の差を表すデルタメタデータ表現を生成することと、
前記デルタメタデータ表現に基づいて、前記データセンタに対する修正計画を生成することであって、前記修正計画は、前記ターゲットクラウドプラットフォーム上の前記データセンタを修正して、前記データセンタの前記修正されたバージョンを取得する命令を含む、ことと、
実行のために前記生成された命令を前記ターゲットクラウドプラットフォームに送信することであって、前記ターゲットクラウドプラットフォームは前記生成された命令を実行して、前記データセンタの前記オリジナルバージョンから前記データセンタの前記修正バージョンを取得する、ことと、
前記マルチテナントシステムのテナントに関連付けられたユーザのセットに、前記ターゲットクラウドプラットフォーム上にデプロイされた前記データセンタの前記修正バージョンのコンピューティングリソースへのアクセスを提供することと、を含む、コンピュータ実装方法。
【請求項22】
前記変更は、
新しいデータセンタエンティティの作成、
データセンタエンティティの削除、又は
データセンタエンティティの更新のうちの1つ以上を含む、請求項21に記載のコンピュータ実装方法。
【請求項23】
前記クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成することをさらに含み、前記コンパイルすることは、
前記オリジナル宣言型仕様から前記データセンタの前記クラウドプラットフォームに依存しないメタデータ表現の第1のバージョンを生成することと、
前記修正された宣言型仕様から前記データセンタの前記クラウドプラットフォームに依存しないメタデータ表現の第2のバージョンを生成することと、を含む、請求項21に記載のコンピュータ実装方法。
【請求項24】
前記クラウドプラットフォームに依存しない詳細メタデータ表現の前記第1のバージョンに基づいて、前記ターゲットクラウドプラットフォームに対するプラットフォーム固有の詳細メタデータ表現を生成することと、
前記プラットフォーム固有の詳細なメタデータ表現に基づいて、前記ターゲットクラウドプラットフォーム上に前記データセンタをデプロイすることと、をさらに含む、請求項23に記載のコンピュータ実装方法。
【請求項25】
前記デルタメタデータ表現は、前記クラウドプラットフォーム依存しない詳細メタデータ表現の前記第1のバージョンと前記クラウドプラットフォーム依存しない詳細メタデータ表現の前記第2のバージョンとの間の差を表す、請求項24に記載のコンピュータ実装方法。
【請求項26】
前記クラウドプラットフォームに依存しない宣言型仕様は、1つ以上のデータセンタインスタンスの定義を含み、各データセンタインスタンスは、1つ以上のサービスグループを含み、各サービスグループは、サービスのセットを含む、請求項21に記載のコンピュータ実装方法。
【請求項27】
前記生成された命令は、1つ以上のパイプラインを含み、各パイプラインは、一連のステージを含み、各ステージは、前記クラウドプラットフォーム上に前記データセンタを作成するための1つ以上のアクションを実行する、請求項21に記載のコンピュータ実装方法。
【請求項28】
前記修正計画を生成することは、前記データセンタを修正するために再開始する必要があるサービスの最小セットを判定することと、前記再開始の動作を前記サービスの最小セットに制限する命令を生成することと、含む、請求項21に記載のコンピュータ実装方法。
【請求項29】
前記デルタメタデータ表現は、前記データセンタに追加される新しいデータセンタエンティティを含み、前記方法は、
前記データセンタエンティティが開始依存関係を有するデータセンタエンティティのセットを判定することをさらに含み、
前記修正計画は、前記データセンタエンティティを開始する前に前記セットのうちの前記データセンタエンティティを開始する命令を含む、請求項21に記載のコンピュータ実装方法。
【請求項30】
前記デルタメタデータ表現は、前記データセンタから削除されるデータセンタエンティティを含み、前記方法は、
前記データセンタエンティティが開始依存関係を有するデータセンタエンティティのセットを判定することをさらに含み、
前記修正計画は、前記セットのうちの前記データセンタエンティティの前に前記データセンタエンティティを削除する命令を含む、請求項21に記載のコンピュータ実装方法。
【請求項31】
前記デルタメタデータ表現は、第1のアウトバウンドアクセスの代わりに第2のアウトバウンドアクセスを有するように更新される前記データセンタのサービスを含み、前記第1のアウトバウンドアクセス及び前記第2のアウトバウンドアクセスの各々は、URL(uniform resource locator)を規定し、前記修正計画は、前記サービスが前記第2のアウトバウンドアクセスの前記URLにアクセスすることを可能にし、かつ前記第1のアウトバウンドアクセスの前記URLへの前記サービスのアクセスを不可能にするように前記ターゲットクラウドプラットフォーム内のネットワークポリシーを更新する命令を含む、請求項21に記載のコンピュータ実装方法。
【請求項32】
前記デルタメタデータ表現は、第2のサービスへのアクセスを追加する第1のサービスを含み、前記修正計画は、前記第2のサービスが前記第1のサービスと対話することを可能にするために前記ターゲットクラウドプラットフォーム内のネットワークポリシーを更新する命令を含む、請求項21に記載のコンピュータ実装方法。
【請求項33】
コンピュータプロセッサによって実行されるときに、前記コンピュータプロセッサにステップを実行させる命令を記憶するための非一時的なコンピュータ可読記憶媒体であって、前記ステップは、
データセンタのオリジナル宣言型仕様を受信することであって、前記データセンタは、マルチテナントシステムのテナントに関連付けられたユーザのセットによって使用されるコンピューティングリソースのセットを表し、前記オリジナル宣言型仕様は、クラウドプラットフォームインフラストラクチャ言語を使用して規定され、複数のクラウドプラットフォームのいずれか上に前記データセンタのオリジナルバージョンを生成するように構成されている、ことと、
前記オリジナル宣言型仕様に準拠する前記データセンタの前記オリジナルバージョンを、ターゲットクラウドプラットフォーム上にデプロイすることと、
前記データセンタの修正された宣言型仕様を受信することと、
前記オリジナル宣言型仕様に基づくデータセンタの前記オリジナルバージョンと、前記修正された宣言型仕様に基づく前記データセンタの前記修正されたバージョンとの間の差を表すデルタメタデータ表現を生成することと、
前記デルタメタデータ表現に基づいて、前記データセンタに対する修正計画を生成することであって、前記修正計画は、前記ターゲットクラウドプラットフォーム上の前記データセンタを修正して、前記データセンタの前記修正されたバージョンを取得する命令を含む、ことと、
実行のために前記生成された命令を前記ターゲットクラウドプラットフォームに送信することであって、前記ターゲットクラウドプラットフォームは前記生成された命令を実行して、前記データセンタの前記オリジナルバージョンから前記データセンタの前記修正バージョンを取得する、ことと、
前記マルチテナントシステムのテナントに関連付けられたユーザのセットに、前記ターゲットクラウドプラットフォーム上にデプロイされた前記データセンタの前記修正バージョンのコンピューティングリソースへのアクセスを提供することと、を含む、非一時的なコンピュータ可読記憶媒体。
【請求項34】
前記クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成することをさらに含み、前記コンパイルすることは、
前記オリジナル宣言型仕様から前記データセンタの前記クラウドプラットフォームに依存しないメタデータ表現の第1のバージョンを生成することと、
前記修正された宣言型仕様から前記データセンタの前記クラウドプラットフォームに依存しないメタデータ表現の第2のバージョンを生成することと、を含む、請求項33に記載の非一時的なコンピュータ可読記憶媒体。
【請求項35】
前記クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成することは、
前記クラウドプラットフォームに依存しない詳細メタデータ表現に基づいて、前記ターゲットクラウドプラットフォームに対するプラットフォーム固有の詳細メタデータ表現を生成することと、
前記プラットフォーム固有の詳細なメタデータ表現に基づいて、前記ターゲットクラウドプラットフォーム上に前記データセンタをデプロイすることと、をさらに含む、請求項34に記載の非一時的なコンピュータ可読記憶媒体。
【請求項36】
前記修正計画を生成することは、前記データセンタを修正するために再開始する必要があるサービスの最小セットを判定することと、前記再開始の動作を前記判定されたサービスの最小セットに制限することを含む、請求項33に記載の非一時的なコンピュータ可読記憶媒体。
【請求項37】
前記デルタメタデータ表現は、前記データセンタに追加される新しいデータセンタエンティティを含み、前記命令は、前記プロセッサに、
前記データセンタエンティティが開始依存関係を有するデータセンタエンティティのセットを判定することを含むステップをさらに実行させ、
前記修正計画は、前記データセンタエンティティを開始する前に前記セットのうちの前記データセンタエンティティを開始する命令を含む、請求項33に記載の非一時的なコンピュータ可読記憶媒体。
【請求項38】
前記デルタメタデータ表現は、前記データセンタから削除されるデータセンタエンティティを含み、前記命令は、前記プロセッサに、
前記データセンタエンティティが開始依存関係を有するデータセンタエンティティのセットを判定することを含むステップをさらに実行させ、
前記修正計画は、前記セットのうちの前記データセンタエンティティの前に前記データセンタエンティティを削除する命令を含む、請求項33に記載の非一時的なコンピュータ可読記憶媒体。
【請求項39】
前記デルタメタデータ表現は、第1のアウトバウンドアクセスの代わりに第2のアウトバウンドアクセスを有するように更新される前記データセンタのサービスを含み、前記第1のアウトバウンドアクセス及び前記第2のアウトバウンドアクセスの各々は、URL(uniform resource locator)を規定し、前記修正計画は、前記サービスが前記第2のアウトバウンドアクセスの前記URLにアクセスすることを可能にし、かつ前記第1のアウトバウンドアクセスの前記URLへの前記サービスのアクセスを不可能にするように前記ターゲットクラウドプラットフォーム内のネットワークポリシーを更新する命令を含む、請求項33に非一時的なコンピュータ可読記憶媒体。
【請求項40】
コンピュータシステムであって、
コンピュータプロセッサと、
コンピュータプロセッサによって実行されるときに、前記コンピュータプロセッサに、クラウドプラットフォーム内にデータセンタを構成するためのステップを実行させる命令を記憶するための非一時的なコンピュータ可読記憶媒体であって、前記ステップは、
データセンタのオリジナル宣言型仕様を受信することであって、前記データセンタは、マルチテナントシステムのテナントに関連付けられたユーザのセットによって使用されるコンピューティングリソースのセットを表し、前記オリジナル宣言型仕様は、クラウドプラットフォームインフラストラクチャ言語を使用して規定され、複数のクラウドプラットフォームのいずれか上に前記データセンタのオリジナルバージョンを生成するように構成されている、ことと、
前記オリジナル宣言型仕様に準拠する前記データセンタの前記オリジナルバージョンを、ターゲットクラウドプラットフォーム上にデプロイすることと、
前記データセンタの修正された宣言型仕様を受信することと、
前記オリジナル宣言型仕様に基づくデータセンタの前記オリジナルバージョンと、前記修正された宣言型仕様に基づく前記データセンタの前記修正されたバージョンとの間の差を表すデルタメタデータ表現を生成することと、
前記デルタメタデータ表現に基づいて、前記データセンタに対する修正計画を生成することであって、前記修正計画は、前記ターゲットクラウドプラットフォーム上の前記データセンタを修正して、前記データセンタの前記修正されたバージョンを取得する命令を含む、ことと、
実行のために前記生成された命令を前記ターゲットクラウドプラットフォームに送信することであって、前記ターゲットクラウドプラットフォームは前記生成された命令を実行して、前記データセンタの前記オリジナルバージョンから前記データセンタの前記修正バージョンを取得する、ことと、
前記マルチテナントシステムのテナントに関連付けられたユーザのセットに、前記ターゲットクラウドプラットフォーム上にデプロイされた前記データセンタの前記修正バージョンのコンピューティングリソースへのアクセスを提供することと、を含む、コンピュータシステム。
【請求項41】
前記クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成することは、
前記クラウドプラットフォームに依存しない詳細メタデータ表現に基づいて、前記ターゲットクラウドプラットフォームに対するプラットフォーム固有の詳細メタデータ表現を生成することと、
前記プラットフォーム固有の詳細なメタデータ表現に基づいて、前記ターゲットクラウドプラットフォーム上に前記データセンタをデプロイすることと、をさらに含む、請求項1~2のいずれか一項に記載のコンピュータ実装方法。
【請求項42】
前記ターゲットクラウドプラットフォームに対するプラットフォーム固有の詳細メタデータ表現を生成することは、
前記ターゲットクラウドプラットフォーム上に1つ以上のユーザアカウントを作成することと、
前記生成されたユーザアカウントを前記プラットフォーム固有の詳細メタデータ表現に含めることと、を含む、請求項1~2、41のいずれか一項に記載のコンピュータ実装方法。
【請求項43】
前記ターゲットクラウドプラットフォームに対するプラットフォーム固有の詳細メタデータ表現を生成することは、
前記クラウドプラットフォームに依存しない宣言型仕様で定義されたサービスのアウトバウンドアクセス属性に基づいて、前記ターゲットクラウドプラットフォーム上に1つ以上のネットワークポリシーを作成することを含む、請求項1~2、41~42のいずれか一項に記載のコンピュータ実装方法。
【請求項44】
前記ターゲットクラウドプラットフォームに対するプラットフォーム固有の詳細メタデータ表現を生成することは、
前記ターゲットクラウドプラットフォーム上に1つ以上のコンピューティングリソースを作成することと、
前記ターゲットクラウドプラットフォームから前記1つ以上のコンピューティングリソースの識別子を受信することと、
前記識別子を前記プラットフォーム固有の詳細メタデータ表現に含めることと、を含む、請求項1~2、41~43のいずれか一項に記載のコンピュータ実装方法。
【請求項45】
前記クラウドプラットフォームに依存しない宣言型仕様は、1つ以上のデータセンタインスタンスの定義を含み、各データセンタインスタンスは、1つ以上のサービスグループを含み、各サービスグループは、サービスのセットを含む、請求項1~2、41~44のいずれか一項に記載のコンピュータ実装方法。
【請求項46】
サービスグループは、コンピューティングノードのクラスタのセットをさらに規定し、1つ以上のサービスは、コンピューティングノードのクラスタに関連付けられ、前記ターゲットクラウドプラットフォーム上にデプロイされる前記データセンタは、前記コンピューティングノードのクラスタを含み、前記クラウドプラットフォームに依存しない宣言型仕様で規定されるように前記コンピューティングノードに対して前記サービスを実行する、請求項1~2、41~45のいずれか一項に記載のコンピュータ実装方法。
【請求項47】
ステージのセットを含む1つ以上のパイプラインを生成することをさらに含み、各ステージは、前記クラウドプラットフォーム上に前記データセンタを作成するためのアクションを実行する、請求項1~2、41~46のいずれか一項に記載のコンピュータ実装方法。
【請求項48】
前記1つ以上のパイプラインは、前記ターゲットクラウドプラットフォーム上に前記データセンタを作成するためのリソースをプロビジョニングするためのプロビジョニングパイプラインを含む、請求項1~2、41~47のいずれか一項に記載のコンピュータ実装方法。
【請求項49】
前記1つ以上のパイプラインは、前記プロビジョニングパイプラインによってプロビジョニングされるリソース上にアプリケーションをデプロイするためのデプロイパイプラインを含む、請求項1~2、41~48のいずれか一項に記載のコンピュータ実装方法。
【請求項50】
前記1つ以上のパイプラインは、前記プロビジョニングパイプライン及び前記デプロイパイプラインを含むオーケストレーションパイプラインを含む、請求項1~2、41~49のいずれか一項に記載のコンピュータ実装方法。
【請求項51】
前記ターゲットクラウドプラットフォームは、第1のターゲットクラウドプラットフォームであり、前記クラウドプラットフォーム固有のデータセンタは、第1のクラウドプラットフォーム固有のデータセンタ表現であり、前記方法は、
第2のターゲットクラウドプラットフォームを識別する情報を受信することと、
前記クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、前記第2のターゲットクラウドプラットフォーム上に前記データセンタを作成するために第2のクラウドプラットフォーム固有のデータセンタ表現を生成することと、
前記第2のクラウドプラットフォーム固有のデータセンタ表現と、前記第2のターゲットクラウドプラットフォーム上で実行するための命令のセットとを送信することであって、前記第1のターゲットクラウドプラットフォームは、前記命令を実行して、前記第2のクラウドプラットフォーム固有のデータセンタ表現を使用して前記データセンタを構成する、ことと、をさらに含む、請求項1~2、41~50のいずれか一項に記載のコンピュータ実装方法。
【請求項52】
前記クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成することをさらに含み、前記コンパイルすることは、
前記オリジナル宣言型仕様から前記データセンタの前記クラウドプラットフォームに依存しないメタデータ表現の第1のバージョンを生成することと、
前記修正された宣言型仕様から前記データセンタの前記クラウドプラットフォームに依存しないメタデータ表現の第2のバージョンを生成することと、を含む、請求項21~22のいずれか一項に記載のコンピュータ実装方法。
【請求項53】
前記クラウドプラットフォームに依存しない詳細メタデータ表現の前記第1のバージョンに基づいて、前記ターゲットクラウドプラットフォームに対するプラットフォーム固有の詳細メタデータ表現を生成することと、
前記プラットフォーム固有の詳細なメタデータ表現に基づいて、前記ターゲットクラウドプラットフォーム上に前記データセンタをデプロイすることと、をさらに含む、請求項21~22、52のいずれか一項に記載のコンピュータ実装方法。
【請求項54】
前記デルタメタデータ表現は、前記クラウドプラットフォームに依存しない詳細メタデータ表現の前記第1のバージョンと前記クラウドプラットフォーム依存しない詳細メタデータ表現の前記第2のバージョンとの間の差を表す、請求項21~22、52~53のいずれか一項に記載のコンピュータ実装方法。
【請求項55】
前記クラウドプラットフォームに依存しない宣言型仕様は、1つ以上のデータセンタインスタンスの定義を含み、各データセンタインスタンスは、1つ以上のサービスグループを含み、各サービスグループは、サービスのセットを含む、請求項21~22、52~54のいずれか一項に記載のコンピュータ実装方法。
【請求項56】
前記生成された命令は、1つ以上のパイプラインを含み、各パイプラインは、一連のステージを含み、各ステージは、前記クラウドプラットフォーム上に前記データセンタを作成するための1つ以上のアクションを実行する、請求項21~22、52~55のいずれか一項に記載のコンピュータ実装方法。
【請求項57】
前記修正計画を生成することは、前記データセンタを修正するために再開始する必要があるサービスの最小セットを判定することと、前記再開始の動作を前記サービスの最小セットに制限する命令を生成することと、含む、請求項21~22、52~56のいずれか一項に記載のコンピュータ実装方法。
【請求項58】
前記デルタメタデータ表現は、前記データセンタに追加される新しいデータセンタエンティティを含み、前記方法は、
前記データセンタエンティティが開始依存関係を有するデータセンタエンティティのセットを判定することをさらに含み、
前記修正計画は、前記データセンタエンティティを開始する前に前記セットのうちの前記データセンタエンティティを開始する命令を含む、請求項21~22、52~57のいずれかに記載のコンピュータ実装方法。
【請求項59】
前記デルタメタデータ表現は、前記データセンタから削除される新しいデータセンタエンティティを含み、前記方法は、
前記データセンタエンティティが開始依存関係を有するデータセンタエンティティのセットを判定することをさらに含み、
前記修正計画は、前記セットのうちの前記データセンタエンティティの前に前記データセンタエンティティを削除する命令を含む、請求項21~22、52~58のいずれか一項に記載のコンピュータ実装方法。
【請求項60】
前記デルタメタデータ表現は、第1のアウトバウンドアクセスの代わりに第2のアウトバウンドアクセスを有するように更新される前記データセンタのサービスを含み、前記第1のアウトバウンドアクセス及び前記第2のアウトバウンドアクセスの各々は、URL(uniform resource locator)を規定し、前記修正計画は、前記サービスが前記第2のアウトバウンドアクセスの前記URLにアクセスすることを可能にし、かつ前記第1のアウトバウンドアクセスの前記URLへの前記サービスのアクセスを不可能にするように前記ターゲットクラウドプラットフォーム内のネットワークポリシーを更新する命令を含む、請求項21~22、52~59のいずれか一項に記載のコンピュータ実装方法。
【請求項61】
前記デルタメタデータ表現は、第2のサービスへのアクセスを追加する第1のサービスを含み、前記修正計画は、前記第2のサービスが前記第1のサービスと対話することを可能にするために前記ターゲットクラウドプラットフォーム内のネットワークポリシーを更新する命令を含む、請求項21~22、52~60のいずれか一項に記載のコンピュータ実装方法。
【請求項62】
コンピュータプロセッサによって実行されるときに、前記コンピュータプロセッサに請求項1~13、21~32、41~61のいずれか一項に記載のステップを実行させる命令を記憶するための非一時的なコンピュータ可読記憶媒体。
【請求項63】
コンピュータシステムであって、
コンピュータプロセッサと、
コンピュータプロセッサによって実行されるときに、前記コンピュータプロセッサに請求項1~13、21~32、41~61のいずれか一項に記載のステップを実行させる命令を記憶するための非一時的なコンピュータ可読記憶媒体と、を含む、コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、クラウドコンピューティングプラットフォームに関し、特に、クラウドコンピューティングプラットフォームにおいてデータセンタを作成するための宣言型言語及びコンパイラに関する。
【背景技術】
【0002】
組織は、AWS(AMAZON WEB SERVICES)、GOOGLEクラウドプラットフォーム、MICROSOFT AZUREなどのクラウドコンピューティングプラットフォーム(又はクラウドプラットフォーム)について、インフラストラクチャのニーズに対してますます回答するようになっている。クラウドプラットフォームは、サーバ、ストレージ、データベース、ネットワーキング、ソフトウェアなどをインターネット経由で組織に提供する。従来、組織は、組織によって使用されるハードウェア及びソフトウェアを収容するデータセンタを維持していた。しかしながら、データセンタを維持することで、メンテナンス、人員などの面で著しいオーバーヘッドが生じる可能性がある。結果として、組織はデータセンタをコンピューティングリソースのスケーラビリティ及び弾力性を提供するクラウドプラットフォームに移行しつつある。
【0003】
組織は、クラウドプラットフォーム上でアプリケーションを管理及びデプロイできる継続的送達プラットフォームを使用して、クラウドプラットフォーム上でクラウドインフラストラクチャを維持する。このような継続的送達プラットフォームにより、組織はソフトウェアデプロイメントプロセスを簡略化し、アプリケーション、ファイアウォール、クラスタ、サーバ、ロードバランサ、他のクラウドプラットフォーム上のコンピューティングインフラストラクチャを管理することが可能となる。しかし、継続的送達プラットフォームを使用してクラウドプラットフォーム上に大規模なデータセンタを維持することは複雑である可能性がある。このような大規模なデータセンタでは、このようなプラットフォームの数百万行の命令を維持する必要があることがある。さらに、マルチテナントシステムは、マルチテナントシステムのテナントを表す多数の組織のデータ及びアプリケーションを管理する。
【0004】
マルチテナントシステムでは、クラウドプラットフォーム上に数千のデータセンタを維持しなければならないことがある。各データセンタは数百万行のコードを必要とすることがあるので、そのようなデータセンタを維持することは複雑なタスクとなることがある。さらに、各クラウドプラットフォームによってサポートされるソフトウェア、言語、機能は異なることがある。例えば、異なるクラウドプラットフォームは、ネットワークポリシー又はアクセス制御を実装するために異なるメカニズムをサポートすることがある。さらに、特定のクラウドプラットフォームによってサポートされているネットワークポリシーが、別のクラウドプラットフォームによってサポートされていないことがある。結果として、マルチテナントシステムは、データセンタに対してサポートされているクラウドプラットフォームの数に応じて、異なるデータセンタの実装を維持しなくてはならない。その結果、複数のクラウドプラットフォームにまたがるデータセンタをサポートするためのマルチテナントシステムでは、メンテナンスコストが高くなる。
【図面の簡単な説明】
【0005】
図1】一実施形態による、クラウドプラットフォーム上にデータセンタを構成するマルチテナントシステムを例示するシステム環境のブロック図である。
【0006】
図2】一実施形態による、データセンタ生成モジュールのシステムアーキテクチャを例示するブロック図である。
【0007】
図3】一実施形態による、コンパイルモジュールのアーキテクチャを例示するブロック図である。
【0008】
図4】一実施形態による、データセンタ宣言型仕様の一例を例示する。
【0009】
図5】一実施形態による、宣言型仕様に基づいてクラウドプラットフォーム上に作成された例示的なデータセンタを例示する。
【0010】
図6】一実施形態による、宣言型仕様に基づいてクラウドプラットフォーム上にデータセンタを作成するプロセスを例示するフローチャートである。
【0011】
図7】一実施形態による、宣言型仕様に基づくクラウドプラットフォーム上のデータセンタの生成を例示するブロック図である。
【0012】
図8】一実施形態による、クラウドプラットフォーム上にデータセンタをデプロイするプロセスを例示するフローチャートである。
【0013】
図9】一実施形態による、データセンタ修正モジュールのシステムアーキテクチャを例示するブロック図である。
【0014】
図10A】一実施形態による、データセンタのメタデータ表現を示す。
【0015】
図10B】一実施形態による、図10Aのデータセンタの修正されたメタデータ表現を示す。
【0016】
図10C】一実施形態による、図10A及び図10Bのメタデータ表現間の差に基づくデルタメタデータ表現を示す。
【0017】
図11】一実施形態による、クラウドプラットフォーム上にデプロイされたデータセンタを修正するためのプロセスを例示するフローチャートである。
【0018】
図12】一実施形態による、図1の環境で使用するための典型的なコンピュータシステムの機能図を例示するブロック図である。
【0019】
図面は、例示のみを目的として様々な実施形態を描写する。当業者は、以下の議論から、本明細書に記載された実施形態の原理から逸脱することなく、本明細書に例示された構造及び方法の代替的な実施形態を採用してもよいことを容易に認識するであろう。
【0020】
図は、同様の要素を識別するために、同様の参照番号を使用する。「115a」のような参照番号の後の文字は、本文がその特定の参照番号を有する要素を特に参照していることを示す。「115」のような後続の文字を伴わない本文中の参照番号は、その参照番号を有する図中の要素のいずれか又は全てを指す。
【発明を実施するための形態】
【0021】
クラウドプラットフォームは、ストレージ、コンピューティングリソース、アプリケーションなどのコンピューティングリソースを、インターネットなどのパブリックネットワークを介してオンデマンドベースでコンピューティングシステムに提供する。クラウドプラットフォームは、企業はコンピューティングインフラストラクチャをセットアップするための初期費用を最小限に抑えることが可能となり、企業はより少ないメンテナンスオーバーヘッドでアプリケーションを迅速に立ち上げて実行することが可能となる。また、クラウドプラットフォームは、企業はコンピューティングリソースを、急激に変動する予測不可能な需要に調整することが可能となる。 企業は、企業のユーザが使用するためのクラウドプラットフォームを使用してデータセンタを作成することができる。しかしながら、各クラウドプラットフォームにデータセンタを実装することは、クラウドプラットフォームの技術に関する専門知識が必要となる。
【0022】
実施形態は、コンピューティングシステム(又はシステム)が、クラウドプラットフォームに依存しないクラウドプラットフォームインフラストラクチャ言語を使用して、クラウドプラットフォーム内にデータセンタを作成することが可能となる。システムは、クラウドプラットフォームに依存しないデータセンタの宣言型仕様を受信する。宣言型仕様はデータセンタを記述し、データセンタを作成するための命令を提供しなくてもよい。クラウドプラットフォームに依存しない宣言型仕様は、複数のクラウドプラットフォームのいずれかでデータセンタを生成するように構成され、クラウドプラットフォームインフラストラクチャ言語を使用して指定される。システムは、データセンタを作成するためのターゲットクラウドプラットフォームを識別する情報を受信する。システムは、クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成する。システムは、プラットフォーム固有のデータセンタ表現と、ターゲットクラウドプラットフォーム上で実行するための命令のセットを送信する。ターゲットクラウドプラットフォームは、プラットフォーム固有のデータセンタ表現を使用してデータセンタを設定する命令を実行する。このシステムは、クラウドプラットフォームによって構成されたデータセンタのコンピューティングリソースへのアクセスをユーザに提供する。
【0023】
一実施形態では、システムは、データセンタを記述する宣言型仕様に対する修正に基づいて、クラウドプラットフォーム上にデプロイされたデータセンタの修正を可能にする。このシステムは、宣言型仕様のオリジナルバージョンに基づいて、クラウドプラットフォームにデータセンタを作成する。システムは、修正された宣言型仕様に指定された記述に対応するようにデータセンタを修正する命令と共に、修正された宣言型仕様を受信する。システムは、オリジナル宣言型仕様に基づくデータセンタのオリジナルバージョンと、修正された宣言型仕様に基づくデータセンタの修正されたバージョンとの間の差を表すデルタメタデータ表現を生成する。システムは、デルタメタデータ表現に基づいて、ターゲットクラウドプラットフォーム上のデータセンタを修正して、データセンタの修正されたバージョンを取得するための命令を含む修正計画を生成する。システムは、生成された実行命令をターゲットクラウドプラットフォームに送信する。ターゲットクラウドプラットフォームは、生成された命令を実行して、データセンタのオリジナルバージョンからデータセンタの修正されたバージョンを取得する。このシステムは、ユーザのセットに対して、ターゲットクラウドプラットフォーム上にデプロイされたデータセンタの修正されたバージョンのコンピューティングリソースへのアクセスを提供する。データセンタは、マルチテナントシステムのテナントに関連付けられたユーザのセットに対して作成されてもよい。代替的には、ユーザのセットは、任意のユーザ、例えば、データセンタの作成を要求した企業のユーザ、又はデータセンタの作成を要求した任意のコンピューティングシステムに関連付けられたユーザであってもよい。
【0024】
一実施形態では、デルタメタデータ表現は、データセンタエンティティに関連付けられた動作のタイプ、例えば、作成動作、削除動作、又は更新動作で注釈が付けられたデータセンタエンティティを表すノードを含む。修正計画は、デルタメタデータ表現で指定された開始依存関係に基づいて判定された順序でデータセンタエンティティを開始する命令を含んでもよい。修正計画がデータセンタエンティティを削除又は廃止する指示を含む場合、修正計画は、このデータセンタエンティティに依存する他のデータセンタエンティティが、依存関係グラフに基づいて判定された順序で廃止される順序を指定する。
【0025】
クラウドプラットフォームは、本明細書ではサブストレイトとも呼ばれる。データセンタの宣言型仕様は、サブストレイトに依存しない、又はサブストレイトに関知しないが、クラウドプラットフォーム固有のデータセンタ表現は、サブストレイトに固有である。従来の手法でデータセンタを作成する場合、ユーザは、各データセンタエンティティを作成するためのクラウドプラットフォーム固有の命令を提供しなくてならない。したがって、ユーザはクラウドプラットフォームのための各データセンタエンティティを作成する方法について知っている必要がある。さらに、命令はクラウドプラットフォーム固有であり、複数のプラットフォームにわたって移植可能ではない。例えば、AWSクラウドプラットフォーム上にデータセンタ又はデータセンタエンティティを作成するための命令は、GCPクラウドプラットフォーム上に同じデータセンタ又はデータセンタエンティティを作成するための命令とは異なる。各クラウドプラットフォーム上にデータセンタを作成する開発者は、各データセンタエンティティ及び機能がその特定のクラウドプラットフォーム上でどのように実装されているかに対する詳細を理解しなければならない。開示されたシステムは、複数のクラウドプラットフォームから選択された任意のクラウドプラットフォームにおいてユーザが作成したいデータセンタを記述することを可能にするクラウドプラットフォームインフラストラクチャ言語を提供する。クラウドプラットフォームインフラストラクチャ言語のコンパイラは、データセンタのクラウドプラットフォーム固有の詳細なメタデータ表現を生成し、ターゲットクラウドプラットフォーム上にデータセンタを作成する。
【0026】
クラウドプラットフォームインフラストラクチャ言語は、データセンタを作成するためのドメイン固有言語(DSL)と呼ばれることがある。システムはマルチテナントシステムを表してもよいが、マルチテナントシステムに限定されず、任意のオンラインシステム又はクラウドプラットフォームへのネットワークアクセスを有する任意のコンピューティングシステムであってもよい。全体的なシステム環境
【0027】
図1は、一実施形態による、クラウドプラットフォーム上にデータセンタを構成するマルチテナントシステムを例示するシステム環境のブロック図である。システム環境100は、マルチテナントシステム110、1つ以上のクラウドプラットフォーム120、及び1つ以上のクライアントデバイス105を含む。他の実施形態では、システム環境100は、より多くの又はより少ないコンポーネントを含んでもよい。
【0028】
マルチテナントシステム110は、1つ以上のテナント115の情報を記憶する。各テナントは、マルチテナントシステム110の顧客を表す企業に関連付けられてもよい。各テナントは、クライアントデバイス105を介してマルチテナントシステムと対話する複数のユーザを有してもよい。マルチテナントシステム110では、複数のテナントのためのデータが同じ物理データベースに記憶されてもよい。しかしながら、1つのテナントが、別のテナントのデータに対して、そのようなデータが明示的に共有されない限りアクセスを有さないように、1つのテナントのデータが他のテナントのデータとは論理的に分離して保持されるように構成されてもよい。テナントのデータが他の顧客のデータと共有されるテーブルに記憶されることがあることは、テナントに対して透過的である。データベーステーブルは、複数のテナントに対する行を記憶してもよい。したがって、マルチテナントシステムでは、システムのハードウェア及びソフトウェアの様々な要素が、1つ以上のテナントによって共有されることがある。例えば、マルチテナントシステム110は、多数のテナントに対する要求を同時に処理するアプリケーションサーバを実行してもよい。しかしながら、マルチテナントシステムでは、テナントレベルのデータ隔離を実施して、1つのテナントのジョブが他のテナントのデータにアクセスしないことを保証する。
【0029】
クラウドプラットフォームはまた、クラウドコンピューティングプラットフォーム又はパブリッククラウド環境とも呼ばれる。テナントは、クラウドプラットフォームインフラストラクチャ言語を使用して、ターゲットクラウドプラットフォーム120上に作成されるデータセンタの宣言型仕様を提供してもよい。テナント115は、クラウドプラットフォーム120上に1つ以上のデータセンタを作成してもよい。データセンタとは、ユーザ、例えば、テナントに関連付けられたユーザによって使用され得る、サーバ、アプリケーション、ストレージ、メモリなどを含むコンピューティングリソースのセットを表す。
【0030】
データセンタのコンピューティングリソースは安全であり、それらにアクセスすることを認可されていないユーザがアクセスすることができない。例えば、テナント115aのユーザのために作成されるデータセンタ125aは、アクセスが明示的に許可されない限り、テナント115bのユーザがアクセスすることができない。同様に、テナント115bのユーザのために作成されたデータセンタ125bは、アクセスが明示的に許可されない限り、テナント115aのユーザがアクセスすることができない。 さらに、データセンタによって提供されるサービスは、データセンタの宣言型仕様に従ってコンピューティングシステムにアクセスが許可された場合にのみ、データセンタ外部のコンピューティングシステムによってアクセスされてもよい。
【0031】
クラウドプラットフォームの例としては、AWS(Amazon Web Services)、GOOGLEクラウドプラットフォーム、又はMICROSOFT AZUREを含む。クラウドプラットフォーム120は、テナント115によって、又はクラウドプラットフォーム120外部の任意のコンピューティングシステムによってオンデマンドで使用されてもよいコンピューティングインフラストラクチャサービスを提供する。クラウドプラットフォームによって提供されるコンピューティングインフラストラクチャサービスの例としては、サーバ、ストレージ、データベース、ネットワーキング、セキュリティ、ロードバランシング、ソフトウェア、分析、インテリジェンス、及び他のインフラストラクチャサービス機能を含む。これらのインフラストラクチャサービスをテナント115が使用して、スケーラブルかつ安全な方法でアプリケーションを構築し、デプロイし、管理してもよい。
【0032】
マルチテナントシステム110は、マルチテナントストアの様々なテナントに関するデータを記憶するテナントデータストアを含んでもよい。テナントデータストアは、例えば、別個のデータベーステーブル又は別個のデータベースである別個の物理的構造内の異なるテナントに対するデータを記憶してもよい。代替的には、テナントデータストアは、共有構造で複数のテナントのデータを記憶してもよい。例えば、すべてのテナントのユーザアカウントが同じデータベーステーブルを共有することがある。しかしながら、マルチテナントシステムは、異なるテナントのデータを論理的に分離するための追加情報を記憶する。
【0033】
図1に示す各コンポーネントは、1つ以上のコンピューティングデバイスを表す。コンピューティングデバイスは、例えば、Microsoft(登録商標)Windows(登録商標)互換オペレーティングシステム(OS)、Apple(登録商標)OS X、及び/又はLinux(登録商標)ディストリビューションを実行する従来のコンピュータシステムであり得る。コンピューティングデバイスは、パーソナルデジタルアシスタント(PDA)、携帯電話、ビデオゲームシステムなどのコンピュータ機能を有するクライアントデバイスであり得る。各コンピューティングデバイスは、命令を格納するソフトウェアモジュールを記憶する。
【0034】
システム環境100の様々なコンポーネント間の対話は、典型的には、図1に示さないネットワークを介して実行される。一実施形態では、ネットワークは標準的な通信技術及び/又はプロトコルを使用する。別の実施形態では、エンティティは、上述したものの代わりに、又はこれに加えて、カスタム及び/又は専用データ通信技術を使用することができる。
【0035】
本明細書に開示される技術は、マルチテナントシステムに関連して記載されるが、これらの技術は、マルチテナントシステムではないことがある他のシステムを使用して実装され得る。例えば、単一の組織又は企業によって使用されるオンラインシステムが、本明細書に開示される技術を私用して、1つ以上のクラウドプラットフォーム120上に1つ以上のデータセンタを作成してもよい。システムアーキテクチャ
【0036】
図2は、一実施形態による、データセンタ生成モジュールのシステムアーキテクチャを例示するブロック図である。データセンタ生成モジュール210は、バージョン管理システム220、コンパイルモジュール230、及びデプロイモジュール240を含む。他の実施形態は、本明細書で記載されたものとは異なる及び/又は他のコンポーネントを有することができ、機能が、異なる方法でコンポーネント間で分散され得る。
【0037】
バージョン制御システム220は、データセンタのプラットフォームに依存しない宣言型仕様225の1つ以上のバージョンを記憶する。データセンタのプラットフォームに依存しない宣言型仕様225は、データセンタで利用可能なサービス及びそれらの対話を含むデータセンタの様々なエンティティを規定する。エキスパートユーザは、例えば、クライアントデバイス105上で実行されるアプリケーションを使用して、プラットフォームに依存しない宣言型仕様を修正してもよい。プラットフォームに依存しない宣言型仕様に対する修正は、バージョン制御システム220のコミット要求を介して提出されてもよい。バージョン制御システム220は、ユーザが様々な修正ステージでプラットフォームに依存しない宣言型仕様のスナップショットを作成することを可能にし、それによってユーザが特定の変更をロールバックし、プラットフォームに依存しない宣言型仕様の以前のバージョンを適用することを可能にする。
【0038】
コンパイルモジュール230は、プラットフォームに依存しない宣言型仕様225及びターゲットクラウドプラットフォームを入力として受信し、ターゲットクラウドプラットフォームのためのクラウドプラットフォーム固有のメタデータ表現235を生成する。コンパイルモジュール230のアーキテクチャ及びコンパイルモジュール230によって実行されるプロセスは、本明細書において、例えば図3の説明において、さらに詳細に記載される。デプロイモジュール240は、生成されたクラウドプラットフォーム固有のメタデータ表現235をターゲットクラウドプラットフォーム上にデプロイして、宣言型仕様225に従って、ターゲットクラウドプラットフォーム上にデータセンタを作成する。
【0039】
図3は、一実施形態による、コンパイルモジュールのアーキテクチャを例示するブロック図である。コンパイルモジュール230は、仕様解析モジュール310と、セキュリティモジュール320と、ユーザアカウント処理モジュール330と、メタデータストア340と、プロビジョニングモジュール350と、を含む。他の実施形態は、本明細書において図3に例示するモジュールよりも多くの、少ない、又は異なるモジュールを含んでもよい。
【0040】
仕様解析モジュール310は、コンパイルモジュール230によって入力として受信されたデータセンタの宣言型仕様225を解析する。仕様解析モジュール310は、データセンタの宣言型仕様225内に表現された個々のデータセンタエンティティを識別する。仕様解析モジュール310は、データセンタエンティティのデータ構造及びメタデータ表現を生成し、生成されたデータ構造及びメタデータ表現を、さらなる処理のために、コンパイルモジュール230の他のモジュールに提供する。
【0041】
セキュリティモジュール320は、データセンタの宣言型仕様225で規定された様々なデータセンタエンティティのセキュリティ態様を処理する。例えば、セキュリティモジュール320は、様々なデータセンタエンティティ内の対話、データセンタエンティティと生成されたデータセンタの外部システムとの対話が、データセンタの宣言型仕様225内で規定されたセキュリティポリシーに適合することを保証する。セキュリティポリシーは、どのデータセンタエンティティが外部システムによってアクセスされ得るか、どの外部システムが特定のデータセンタエンティティによってアクセスされ得るか、サービスが他のサービスと対話することができるかどうか、サービスグループが別のサービスグループと対話することができるかどうか、サービスがクラウドプラットフォームによってサポートされる特定の機能又はAPI(アプリケーションプログラミングインターフェース)にアクセスすることができるかどうかなどを規定してもよい。外部システムは、IPアドレス又はドメイン名を使用して識別されてもよい。
【0042】
ユーザアカウント処理モジュール330は、データセンタが作成されているクラウドプラットフォームにおけるユーザアカウントを作成する。これらのユーザアカウントは、デバッグ、データセンタのシミュレーション、チームメンバとの対話など、様々な目的で使用される。
【0043】
メタデータストア340は、コンパイルモジュール230によって生成されるデータセンタの様々な変換されたメタデータ表現を記憶する。変換されたメタデータ表現は、データセンタの現在のバージョンで問題が発生した場合に、以前のバージョンへのロールバックを実行するために使用されてもよい。変換されたメタデータ表現は、変換プロセスの様々なステージにおいて、検証、監査、ガバナンスなどのために使用されてもよい。
【0044】
プロビジョニングモジュール350は、ターゲットクラウドシステム上にリソースをプロビジョニングするための命令を作成し、データセンタをデプロイするためにそれらを実行する。一実施形態では、プロビジョニングシステムは、クラウドプラットフォーム上で実行するためのパイプラインを作成する。パイプラインは、データセンタを記述した宣言型仕様に従って、クラウドプラットフォーム上で様々なサービスをプロビジョニングするか、又は様々なサービスを作成するためのアプリケーションをデプロイするための命令を含むステージを含む。
【0045】
図4は、一実施形態による、データセンタの宣言型仕様の一例を例示する。宣言型仕様410は、複数のデータセンタエンティティを含む。データセンタエンティティは、データセンタエンティティタイプのインスタンスであり、各データセンタエンティティタイプに複数のインスタンスがあり得る。データセンタエンティティの例としては、データセンタ、サービスグループ、サービス、チーム、環境、及びスキーマを含む。
【0046】
宣言型仕様410は、サービスグループ、サービス、チーム、環境、及びスキーマを含む様々なタイプのデータセンタエンティティの定義を含む。宣言型仕様は、データセンタの1つ以上のインスタンスを含む。以下は、様々なタイプのデータセンタエンティティとそれらの例について説明する。例は例示的であり、データセンタエンティティの属性のうちのいくつかを示している。他の実施形態は、異なる属性を含んでもよく、同じ機能を有する属性には、本明細書に示すものとは異なる名前が与えられてもよい。一実施形態では、宣言型仕様は、予め定義されたスキーマに準拠する階層オブジェクト、例えばJSON(Javascript object notation)を使用して規定される。
【0047】
サービスグループ420は、一実施形態に従って、独立して構築及び提供され得る1つ以上のコンピューティングシステムによって提供される能力、特徴及びサービスのセットを表す。サービスグループは、論理サービスグループ、機能ユニット、又は境界のあるコンテキストとも呼ばれてもよい。サービスグループ420は、1つ以上のコンピューティングシステムによって提供される、包括的な技術ユースケース機能のセットのサービスのセットと捉えてもよい。サービスグループ420は、セキュリティ境界を実施する。サービスグループ420は、修正の範囲を定義する。したがって、サービスグループ420内の1つ以上のコンピューティングシステムによって提供される能力、特徴、サービスなどのエンティティに対するいかなる変更も、サービスグループ420内のエンティティに対して必要に応じて、又は好適に伝播してもよいが、サービスグループ420の境界のある定義の外部に存在するエンティティには伝播しない。データセンタは、複数のサービスグループ420を含んでもよい。サービスグループ定義は、名前、説明、識別子、スキーマバージョン、サービスインスタンスのセットなどの属性を規定する。サービスグループの一例としては、ブロックチェーン機能の提供に使用されるサービスのセットを含むブロックチェーンサービスグループである。同様に、セキュリティサービスグループは、セキュリティ特徴を提供する。ユーザインターフェースサービスグループは、特定のユーザインターフェース特徴の機能を提供する。共有ドキュメントサービスグループは、ユーザにわたってドキュメントを共有する機能を提供する。同様に、複数の他のサービスグループがある可能性がある。
【0048】
サービスグループは、データセンタの開発に関心のあるテナント又はユーザが、簡単に使用することができるサービスグループのライブラリを有することができるように仕様の再利用性をサポートする。サービスグループのサービスの境界は、とりわけ、セキュリティ上の懸念及びネットワーク上の懸念に基づく。サービスグループは、サービスグループとの対話を実行するためのプロトコルに関連付けられている。一実施形態では、サービスグループは、API(アプリケーションプログラミングインターフェース)の集合と、それらのAPIを実装するサービスと、を提供する。さらに、サービスグループはサブストレイトに依存しない。サービスグループは、サービスグループ内のサービスの任意の障害が、サービスグループ内のサービスに影響が限定され、サービスグループの外部の影響が最小限に抑えられるようにサービスグループ内のサービスに対する爆風半径範囲を提供する。
【0049】
以下は、サービスグループの仕様を一例である。サービスグループは、サービスグループのメタデータを表す様々な属性を指定し、サービスグループ内のサービスのセットを含む。本明細書で示されていないサービスグループに対して規定される他のタイプのメタデータがあってもよい。
【数1】
【0050】
上記の例に示すように、サービスグループはクラスタのセットを規定してもよい。クラスタは、コンピューティングノードのセット、例えば、サーバのセット、仮想マシンのセット、又はコンテナのセット(KUBERNETESコンテナなど)を表す。物理サーバは、複数のコンテナを実行してもよく、各コンテナは、ファイルシステム、CPU、メモリ、プロセス空間などの自己の共有を有する。
【0051】
サービスグループは、サービスのセットを指定する。サービスグループは、クラウドプラットフォーム上にデプロイされたデータセンタがコンピューティングノードのクラスタを実行し、宣言型仕様に含まれている場合には指定されたマッピングに基づいてサービスをクラスタにマッピングするように、サービスに対してクラスタを規定してもよい。例えば、上記のサービスグループの例では、サービスインスタンスserviceinstance0002が、クラスタインスタンスcluster1上で実行されるように規定されている。
【0052】
サービスグループは、セキュリティグループを規定してもよく、各セキュリティグループは、相互に対話することを可能にされるサービスのセットを規定する。セキュリティグループの外部のサービスは、セキュリティグループ内のサービスと通信するために追加の認証を通過することが必要とされる。代替的には、セキュリティグループ内のサービスは、互いに対話するために1つのプロトコルを使用し、セキュリティグループの外部のサービスは、セキュリティグループ内のサービスと対話するために拡張認証を必要とする異なるプロトコルを使用する。したがって、セキュリティグループは、どのようにサービスが互いに対話することができるかを判定するポリシーを規定する。セキュリティポリシーは、どのセキュリティポリシーが適用可能であるかについての1つ以上の環境を規定してもよい。例えば、セキュリティポリシーpolicy1は、特定の環境env1(例えば、プロダクション環境)に適用されてもよく、別のセキュリティポリシーpolicy2は、別の環境env2(例えば、開発環境)に適用されてもよい。セキュリティポリシーは、サービスグループタイプ又は特定のサービスタイプに対して規定されてもよい。
【0053】
一実施形態では、セキュリティポリシーは、セキュリティポリシーがフィルタリングされたサービスグループのセットに適用可能であるように、様々な属性に基づいてサービスグループをフィルタリングするための表現を規定する。例えば、セキュリティポリシーは、フィルタリングされたセットによって識別されるサービスグループのセットに対してホワイトリストされるIP(インターネットプロトコル)アドレスのリストを指定してもよく、したがって、これらのコンピューティングシステムは、サービスグループへのアクセス、又はサービスグループ内の特定のサービスのセットへのアクセスが可能となる。
【0054】
一実施形態では、セキュリティポリシーは、サービスグループ、ソースサービスのセット、及び宛先サービスのセットに対して規定されてもよい。特定のサービスに対するソースサービスは、この特定のサービスとの接続が可能となるセキュリティグループの外部のサービスを規定する。特定のサービスに対する宛先サービスは、この特定のサービスが接続する必要があるセキュリティグループの外部のサービスを規定する。プロビジョニング及びデプロイ中に、データセンタ生成モジュールは、クラウドプラットフォーム固有の機能及びネットワーク機能を使用して特定のネットワークポリシーを実装するクラウドプラットフォームのための命令を生成し、その結果、ネットワークポリシーが宣言型仕様で規定されたセキュリティポリシーを実装する。
【0055】
セルと呼ばれるデータセンタエンティティは、垂直方式で互いに対話するサービスのセットを表し、セルの追加インスタンス又はコピー、すなわちサービスのセットのコピーによってスケーリングされ得る。セルの複数のインスタンスを作成することにより、システムは互いに対話するサービスのセットをスケーリングすることが可能となる。データセンタインスタンスには、1つ以上のセルを含んでもよい。各セルは、1つ以上のサービスを含んでもよい。データセンタは、サービスグループ又はセルのインスタンスを含んでもよい。
【0056】
サービス定義は、例えば、データベースサービス、ロードバランササービスなどのサービスのタイプに対するメタデータを規定する。メタデータには、サービスの名前、サービスの説明、サービスのドキュメントの場所、サービスに関連付けられた任意のサブサービス、サービスの所有者、サービスに関連付けられたチーム、構築時にこのサービスが依存する他のサービスを規定するサービスの構築依存関係、この特定のサービスが開始されるときに実行すべき他のサービスを規定するサービスの開始依存関係、認可クライアント、サービスに関連付けられたDNS(domain name server)名、サービスステータス、サービスのサポートレベルなどを含むサービスの様々な属性が記述される。サービス定義は、サービスが異なる通信プロトコルに対してリスンできるポートを規定するリスニングポート属性を指定し、例えば、サービスは、UDPプロトコルに対してポートp1、TCPプロトコルに対してポートp2でリスンしてもよい。データセンタ内の他のサービスは、サービスによって指定されたポートを介してサービスと対話することができる。
【0057】
サービス定義は、宛先エンドポイントを指定する属性アウトバウンドアクセス、例えば、サービスが規定された外部URL(uniform resource locator)へのアクセスを必要とすることを規定する外部URLを規定する。デプロイ中、データセンタ生成モジュールは、このサービスタイプのインスタンスに外部URLへの要求されたアクセスを提供するように、クラウドプラットフォームがアクセスポリシーを実装することを保証する。
【0058】
アウトバウンドアクセス仕様は、アウトバウンドアクセスが適用可能なサービスに対する1つ以上の環境タイプを識別してもよい。例えば、エンドポイントS1のセットに対するアウトバウンドアクセスは、特定の環境env1(例えば、プロダクション環境)に適用されてもよく、エンドポイントS2のセットに対するアウトバウンドアクセスは、別の環境env2(例えば、開発環境)に適用されてもよい。
【0059】
以下、サービス定義の一例である。
【数2】
【0060】
チーム定義450は、チームメンバ名及びチームの他の属性、例えば、名前、電子メール、通信チャネルなどを含む。以下、チーム定義の一例である。サービスは、そのサービスに対して行われる修正を担当する1つ以上のチームに関連付けられてもよい。したがって、そのサービスに行われた任意の修正は、チームによって承認されます。サービスは、クラウドプラットフォーム内にデプロイされた後、サービスのメンテナンスを担当するチームにサービスを関連付けられてもよい。チームは、サービスグループに関連付けられてもよく、それに応じてそのサービスグループのすべてのサービスに関連付けられる。例えば、チームは、サービスグループに対する任意の変更、例えば、サービスグループの一部であるサービスに対する任意の変更を承認する。チームは、データセンタに関連付けられ、それに従ってデータセンタ内のすべてのサービスグループに関連付けられる。データセンタレベルで規定されたチーム関連付けは、データセンタ内のすべてのサービスグループに対してデフォルトチームを提供し、サービスグループ内のすべてのサービスに対してデフォルトチームをさらに提供する。
【0061】
一実施形態によれば、機能レベルで指定されるチーム関連付けは、データセンタレベルで提供されるチーム関連付けをオーバーライドする。同様に、サービスレベルで指定されるチーム関連付けは、サービスグループレベル又はデータセンタレベルで指定されるチーム関連付けによって提供され得るデフォルトをオーバーライドする。チームは、チームに関連付けられたデータセンタエンティティに対してどのように特定のアクションが取られるかを決定することができる。チーム関連付けはまた、コンパイラによるクラウドプラットフォームのためのデータセンタの最終メタデータ表現を生成し、クラウドプラットフォーム上でのデータセンタをプロビジョニング及びデプロイするために作成される、クラウドプラットフォーム上のアカウントの数を判定する。データセンタ生成モジュール210は、クラウドプラットフォーム内に1つ以上のユーザアカウントを作成し、チームメンバにユーザアカウントへのアクセスを提供する。したがって、チームメンバは、チームに関連付けられたデータセンタエンティティに関連付けられた特定のアクションを実行することが可能となり、例えば、データセンタエンティティに対して特定され得るデバッグ及びテストの問題を含め、デプロイされるときに、データセンタエンティティに対する構造的変更又はデータセンタエンティティのメンテナンスを行うか、又は承認する。
【0062】
従来の技術では、設計プロセスを通じて同じチームをデータセンタに関連付けているため、それによってConwoyの法則によって述べられているように、データセンタやサービスグループの設計に影響を及ぼす組織構造をもたらす。Conwoyの法則は、システムを設計する組織は、その組織のコミュニケーション構造のコピーである設計を生成するように制約されると述べている。実施形態は、データセンタエンティティを定義する構成からチーム定義を結合解除し、それによってチームがデータセンタエンティティの設計及びアーキテクチャに及ぼす影響を低減する。
【数3】
【0063】
環境定義460は、データセンタによって提示されるシステム環境のタイプ、例えば、開発環境、ステージング環境、テスト環境、本番環境を規定する。スキーマ定義470は、特定のデータセンタエンティティ定義の構文を規定するスキーマを規定する。スキーマ定義470は、様々なデータセンタエンティティ定義を検証するために使用される。データセンタ生成モジュールは、環境に基づいて、クラウドプラットフォーム固有のメタデータ表現235におけるデータセンタのセキュリティポリシーを判定する。例えば、セキュリティポリシーの特定のセットが環境env1に適用可能であり、セキュリティポリシーの異なるセットが環境env2に適用可能であってもよい。例えば、セキュリティポリシーは、開発環境と比較して、本番環境においてはるかに制限されたアクセスを提供する。セキュリティポリシーは、セキュリティトークンが特定の目的のために存在することが可能とされる時間の長さを規定してもよい。例えば、長いアクセストークン(例えば、1週間にわたるアクセストークン)は、開発環境では可能とされるが、本番環境では、はるかに短い寿命(例えば、数時間)を有するアクセストークンが使用される。アクセストークンは、ユーザ又はサービスの特定のクラウドプラットフォームリソースへのアクセスを可能にしてもよい。
【0064】
データセンタ定義420は、データセンタインスタンスの属性及びコンポーネントを規定する。宣言型仕様は、複数のデータセンタインスタンスを規定してもよい。データセンタ定義420は、名前、説明、環境のタイプ、サービスグループのセット、チーム、データセンタのためのドメインネームサーバなどを含む属性を規定する。データセンタ定義は、スキーマ定義を規定してもよく、データセンタ定義から生成された任意のメタデータ表現は、規定されたスキーマ定義に対して検証される。データセンタは、他のサービスがデータセンタ内で機能することを有効にするコアサービス及び能力のセットを含む。データセンタのインスタンスは特定のクラウドプラットフォームでデプロイされ、特定の開発タイプ、例えば、開発、テスト、ステージング、本番などに関連付けられてもよい。
【0065】
以下、データセンタインスタンスの定義である。データセンタインスタンス定義は、データセンタインスタンスに含まれるサービスグループのリストと、データセンタの環境、データセンタ識別子、名前、地理的領域を表す領域、データセンタに関連付けられた1つ以上のチーム、及びスキーマバージョンを含む他の属性と、を含む。
【数4】
【0066】
図5は、一実施形態による宣言型仕様に基づいてクラウドプラットフォーム上に作成されたいくつかの例示的なデータセンタを例示する。データセンタ510は、データセンタ生成モジュール210によって処理された宣言型仕様に基づいて作成されてもよい。図5に示すように、複数のデータセンタが、クラウドプラットフォーム120内に構成されてもよい。各データセンタ510は、マルチテナントシステム110のテナント115に対応してもよい。テナント115は、1つ以上のデータセンタ510を作成してもよい。代替的には、データセンタ510は、任意のコンピューティングシステムによって作成されてもよい。各データセンタには、1つ以上のサービスグループを含む。例えば、データセンタ510aは、サービスグループ520a及び520bを含み、データセンタ510bはサービスグループ520cを含む。データセンタは、特定のタイプのサービスグループの複数のインスタンスを含んでもよい。各サービスグループは、サービスのセットを含む。例えば、サービスグループ520aは、サービス530a及び530bを含み、サービスグループ520bは、サービス530a、530b及び530cを含み、サービスグループ520cは、サービス530e、530f及び530gを含む。サービスグループは、同じサービスタイプのサービスの複数のインスタンスを含んでもよい。プロセス全体
【0067】
図7は、一実施形態による、宣言型仕様に基づいてクラウドプラットフォーム上にデータセンタを作成するプロセスを例示するフローチャートである。他の実施形態は、図7のステップを異なる順序で実行することができる。さらに、他の実施形態は、本明細書で記載されたものとは異なるステップ及び/又は追加のステップを含むことができる。
【0068】
データセンタ生成モジュール210は、データセンタのクラウドプラットフォームに依存しない宣言型仕様を受信する(610)。クラウドプラットフォームに依存しない宣言型仕様は、マルチテナントシステムのテナントのためのものか、又は任意の他のコンピューティングシステム、例えば、オンラインシステムのためのものであってもよい。クラウドプラットフォームに依存しない宣言型仕様は、クラウドプラットフォームインフラストラクチャ言語を使用して規定される。データセンタのクラウドプラットフォームに依存しない宣言型仕様は、複数のクラウドプラットフォームのいずれか上でデータセンタを生成するように構成されている。
【0069】
データセンタ生成モジュール210は、クラウドプラットフォームに依存しない宣言型仕様に基づいて、データセンタを作成するためにターゲットクラウドプラットフォームを識別する情報を受信する(620)。ターゲットクラウドプラットフォームは、複数のクラウドプラットフォームのいずれか、例えば、AWS、AZURE、GCPなどとすることができる。データセンタ生成モジュール210は、ターゲットクラウドプラットフォームと接続するための情報、例えば、ターゲットクラウドプラットフォームとの接続を作成するためのクレデンシャルをさらに受信する。クラウドプラットフォームはまた、クラウドコンピューティングプラットフォームとも呼ばれてもよい。
【0070】
データセンタ生成モジュール210は、クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、ターゲットクラウドプラットフォーム上にデータセンタを作成するためにクラウドプラットフォーム固有のデータセンタ表現を生成する(630)。例えば、クラウドプラットフォーム固有のデータセンタ表現は、ターゲットクラウドコンピューティングプラットフォームに固有のユーザアカウント、ネットワークアドレスなどを指してもよい。
【0071】
データセンタ生成モジュール210は、ターゲットクラウドコンピューティングプラットフォーム上にデータセンタをデプロイするための命令と共に、プラットフォーム固有のデータセンタ表現を送信する(640)。ターゲットクラウドコンピューティングプラットフォームは、命令を実行して、ターゲットクラウドコンピューティングプラットフォームのコンピューティングリソースを構成して、プラットフォーム固有のデータセンタ表現に従ってデータセンタを生成する(650)。データセンタ生成モジュール210は、ユーザに、クラウドコンピューティングプラットフォームによって構成されたデータセンタのコンピューティングリソースへのアクセスを提供する(660)。例えば、データセンタがマルチテナントシステムのテナントのために作成された場合、そのテナントに関連付けられたユーザにデータセンタへのアクセスが提供される。
【0072】
図7は、一実施形態による、宣言型仕様に基づくクラウドプラットフォーム上のデータセンタの生成を例示するブロック図である。データセンタ生成モジュール210は、入力として、クラウドプラットフォームに依存しない宣言型仕様710(図2の宣言型仕様225として表される)を受信する。クラウドプラットフォームに依存しない宣言型仕様710は、ユーザによって増分的に修正される宣言型仕様のバージョンであってもよい。データセンタ生成モジュール210は、クラウドプラットフォームに依存しない宣言型仕様710の特定のバージョンを処理する。クラウドプラットフォームに依存しない宣言型仕様710は、いかなる特定のターゲットクラウドプラットフォームに対して規定されていないため、データセンタ生成モジュール210は、クラウドプラットフォームに依存しない宣言型仕様710に基づいて、任意のターゲットクラウドプラットフォーム上にデータセンタを構成することができる。
【0073】
データセンタ生成モジュール210は、クラウドプラットフォーム依存しない宣言型仕様710を処理して、データセンタのためのクラウドプラットフォームに依存しない詳細メタデータ表現720を生成する。クラウドプラットフォームに依存しない詳細メタデータ表現720は、クラウドプラットフォームに依存しない宣言型仕様710で規定されたデータセンタエンティティの各インスタンスの詳細を定義する。データセンタ生成モジュール210は、データセンタエンティティインスタンス、例えばサービスインスタンスに対して一意の識別子を作成する。
【0074】
一実施形態では、クラウドプラットフォームに依存しない詳細メタデータ表現720は、データセンタエンティティタイプのインスタンスのアレイ、例えば、特定のサービスグループタイプのサービスグループインスタンスのアレイを含む。各サービスグループインスタンスは、サービスインスタンスのアレイを含む。サービスインスタンスは、サービスインスタンスに関連付けられた特定のアクションを実行することが可能とされたユーザのチームの詳細をさらに含んでもよい。チームの詳細は、データセンタ生成モジュール210によるプロビジョニング及びデプロイ中に、例えば、サービスインスタンスのためのユーザアカウントを作成し、チームのメンバがユーザアカウントにアクセスすることを可能にするために使用される。
【0075】
クラウドプラットフォームに依存しない詳細メタデータ表現720は、データセンタエンティティの各インスタンスの属性を含む。したがって、データセンタエンティティの各インスタンスの説明は、すべての詳細を含むように拡張される。結果として、データセンタのクラウドプラットフォームに依存しない詳細メタデータ表現720は、クラウドプラットフォームに依存しない宣言型仕様710よりも有意に大きくてもよい。例えば、クラウドプラットフォームに依存しない宣言型仕様710は、数千行の仕様であってもよいが、一方、クラウドプラットフォームに依存しない詳細データセンタ表現320は、数百万行の生成コードであってもよい。結果として、データセンタ生成モジュール210は、クラウドプラットフォームに依存しない詳細メタデータ表現720を不変として維持する、すなわち、一度表現が確定されると、表現に対する修正は実行されない。例えば、データセンタエンティティの任意の更新、削除又は追加を実行する必要がある場合、それらは、クラウドプラットフォーム依存しない宣言型仕様710に対して実行される。
【0076】
データセンタ生成モジュール210は、データセンタがプロビジョニング及びデプロイされることが期待されるターゲットクラウドプラットフォームを受信し、データセンタのクラウドプラットフォーム固有の詳細メタデータ表現730を生成する。例えば、データセンタ生成モジュール210は、ターゲットクラウドプラットフォームと対話して、特定のエンティティ(又はリソース)、例えば、ユーザアカウント、仮想プライベートクラウド(VPC)、及びVPC上のサブネット、クラウドプラットフォーム内のエンティティ間の様々な接続などのネットワーキングリソースを生成する。データセンタ生成モジュール210は、ターゲットクラウドプラットフォーム内で作成されたリソースのリソース識別子、例えば、ユーザアカウント名、VPC IDなどを受信し、これらをクラウドプラットフォーム依存しない詳細メタデータ表現720に組み込んで、データセンタのクラウドプラットフォーム固有のメタデータ表現730を取得する。一実施形態では、データセンタ生成モジュール210は、サービスグループ及びサービスの所与の組み合わせに対して、各チームに対してクラウドプラットフォーム上に1つの一意なユーザアカウントを作成する。ユーザアカウントは、そのサービスグループに対するその特定のサービスとの対話を実行するため、例えば、デバッグすること、アラートを受信することなどのためにチームによって使用される。
【0077】
データセンタ生成モジュール210は、クラウドプラットフォーム固有のメタデータ表現730を、表現が生成された特定のターゲットクラウドプラットフォーム上にデプロイする。データセンタ生成モジュール210は、生成されたメタデータ表現を使用して、ポリシー検証、フォーマット検証などを含む様々な検証を実行してもよい。
【0078】
クラウドプラットフォームに依存しない宣言型仕様710は、宣言されたデータセンタ表現と呼ばれ、クラウドプラットフォームに依存しない詳細メタデータ表現720は、データセンタの導出されたメタデータ表現と呼ばれ、クラウドプラットフォーム固有のメタデータ表現730は、データセンタのハイドレートメタデータ表現と呼ばれる。クラウドプラットフォーム上のデータセンタのデプロイ
【0079】
ターゲットクラウドプラットフォームは、クラウドプラットフォーム固有の詳細メタデータ表現730を処理して、データセンタを作成(又は構成)する。データセンタ生成モジュール210は、クラウドプラットフォーム固有の詳細メタデータ表現730をターゲットクラウドプラットフォーム上にデプロイするための命令を生成する。命令は、ステージを含むパイプラインとして表されてもよく、各ステージはデータセンタのデプロイに関連する特定の動作を実行する。例えば、パイプラインは、SPINNAKERのような連続送達プラットフォームの命令を表わしてもよい。
【0080】
ターゲットクラウドプラットフォームは、いくつかのステップを実行して、クラウドプラットフォーム固有の詳細メタデータ表現730を処理してもよい。例えば、クラウドプラットフォームに依存しない宣言型仕様は、サービス間の許可された対話を規定してもよい。これらの許可された対話は、クラウドプラットフォーム固有の詳細メタデータ表現730で指定され、クラウドプラットフォームのネットワークポリシーとして実装される。クラウドプラットフォームはさらに、宣言型仕様に従ってデータセンタを実装するためのネットワーク戦略を実装するセキュリティグループを作成してもよい。
【0081】
クラウドプラットフォームに依存しない宣言型仕様は、サービス間の依存関係を規定する。例えば、各サービスのための開始依存関係は、特定のサービスが開始されるときに実行すべきすべてのサービスをリストにする。コンパイルモジュール230は、これらの依存関係を記述する情報を含むデータセンタのクラウドプラットフォーム固有の詳細メタデータ表現を生成し、その結果、サービスをデプロイするための命令は、依存関係によって指定された順序でクラウドプラットフォームがサービスを開始することを保証し、その結果、それらのサービスが、各サービスに対して、サービスが開始されるときにサービスが実行される前に開始されることが必要とされる。したがって、サービス間の依存関係は依存関係グラフを表し、依存関係グラフに基づいて決定される順序でサービスの実行を開始し、その結果、サービスAがサービスBに依存する場合、サービスBは、サービスAが開始される前に開始される。
【0082】
データセンタ生成モジュール230は、サービスが安全な通信チャネルを介して他のサービスにアクセスすることを可能にするユーザアカウント間の信頼関係を作成する。これらの信頼関係は、宣言型仕様に基づいて、例えば、サービスに対して指定されたアウトバウンドアクセス属性に基づいて生成されたサブストレイト固有の命令を使用して生成される。データセンタ生成モジュール230は、例えば、アウトバウンドアクセス、セキュリティグループ、セキュリティポリシーなどの宣言型仕様の構成体によって指定されるように、サービスグループ及びサービスにわたる対話及びアクセスを制御するクラウドプラットフォーム固有のメカニズムに基づいてネットワークポリシーを作成するための命令をクラウドプラットフォームに送信する。
【0083】
データセンタ生成モジュール230は、命令、例えば、サービスがデプロイにおいて開始される順序を決定するステージを規定するサービスをデプロイするためのパイプラインを生成する。
【0084】
図8は、一実施形態による、クラウドプラットフォーム上にデータセンタをデプロイするプロセスを例示するフローチャートである。データセンタ生成モジュール210は、データセンタのクラウドプラットフォーム固有の詳細メタデータ表現730にアクセスする(810)。クラウドプラットフォーム固有の詳細メタデータ表現730は、例えば図7に示すように、クラウドプラットフォーム依存しない宣言型仕様710から生成される。
【0085】
データセンタ生成モジュール210は、データセンタのデータセンタエンティティに対してマスタパイプラインを構成する(820)。マスタパイプラインは、複数のパイプライン、例えば、ターゲットクラウドプラットフォームのリソースをプロビジョニングするためのプロビジョニングパイプラインと、プロビジョニングされたリソースを使用してデータセンタエンティティをデプロイするためのデプロイパイプラインと、を含む。各パイプラインは一連のステージを含み、各ステージは、データセンタのプロビジョニングとデプロイに向けてターゲットクラウドプラットフォームによって実行される必要がある1つ以上のアクションを表している。データセンタ生成モジュール210は、クラウドプラットフォーム固有の詳細メタデータ表現730によって規定されるように、特定のサービスを生成するための詳細パイプラインを生成する(830)。
【0086】
一実施形態では、詳細パイプラインは、変数を含むパイプラインテンプレートから生成される。パイプラインテンプレートは、パイプラインに変数の特定の値を提供することによってパイプラインに変換される。テンプレートからパイプラインを生成するプロセスは、パイプラインテンプレートのハイドレートと呼ばれる。パイプラインテンプレートは、デプロイで使用される実際の値のプレースホルダとして使用されるテンプレート式を含む。例えば、テンプレート表現は、ターゲット固有のパラメータ値又は表現によって置き換えられてもよい。複数のパイプラインインスタンスは、異なるターゲットに対してパイプラインテンプレートをハイドレートすることによって生成されてもよい。テンプレート変数は、所与のターゲットに対する特定の値で置き換えられて、そのターゲットに固有のパイプラインインスタンスを生成し得るパラメータを表す。例えば、テンプレート変数「account_id」は、ハイドレート中に「account_id」の実際の値、例えば「12345」で置き換えられてもよい。
【0087】
テンプレートハイドレートジュールは、データソース、例えば、設定ファイル又はデータベースにアクセスして、表現をテンプレート化する際に使用されるパラメータの実際の値を識別してもよい。例えば、テンプレート変数は、クラスタのコンピューティングシステムのセットを表してもよい。データセンタ生成モジュール230は、生成されたパイプラインをターゲットクラウドプラットフォーム上で実行する(840)。例えば、プロビジョニングパイプラインを最初に実行して、クラウドプラットフォーム上にリソースをプロビジョニングし、次いで、デプロイパイプラインを実行して、ターゲットコンピューティングプラットフォーム上にデータセンタを作成するためにプロビジョニングされたリソース上にアプリケーションをデプロイしてもよい。
【0088】
一実施形態によるパイプラインを生成するためのプロセスは、以下のようである。データセンタ生成モジュール210は、データセンタのデータセンタエンティティの階層に基づいて階層方式でパイプラインを生成する。例えば、データセンタは、データセンタ、サービスグループ、サービスなどを含む異なるタイプのデータセンタエンティティを含む。データセンタエンティティは、1つ以上の子データセンタエンティティを含んでもよい。例えば、データセンタは、1つ以上のサービスグループを子データセンタエンティティとして含む。サービスグループは、1つ以上のサービスを子データセンタエンティティとして含む。したがって、データセンタ生成モジュール210は、階層のレベルのデータセンタエンティティで開始し、そのレベルより下のデータセンタエンティティのパイプラインを生成する。例えば、データセンタ生成モジュール210は、データセンタで開始し、データセンタ内のサービスグループに対するパイプラインを生成する。各サービスグループに対して、データセンタ生成モジュール210は、サービスグループ内のサービスに対するパイプラインを生成する。
【0089】
子データセンタエンティティのセットを有する入力データセンタエンティティに対するパイプラインの生成は、以下のようである。データセンタ生成モジュール210は、入力データセンタエンティティに対する子データセンタエンティティのセットを識別する。データセンタ生成モジュール210は、子データセンタエンティティのセットに対する依存関係グラフを生成する。例えば、子データセンタエンティティがサービスを表す場合、データセンタ生成モジュール210は、クラウドプラットフォーム依存しない宣言型仕様710から取得されるクラウドプラットフォーム固有の詳細メタデータ表現730で指定された依存関係を識別する。データセンタ生成モジュール210は、例えば、依存関係グラフ内のサイクルをチェックするために、依存関係グラフを分析する。データセンタ生成モジュール210が依存関係グラフ内のサイクルを識別する場合、データセンタ生成モジュール210はエラーを報告する。依存グラフ内にサイクルがない場合、データセンタ生成モジュール210は、依存関係グラフのトポロジソートを実行することにより、依存関係グラフをさらに処理する。データセンタ生成モジュール210は、トポロジソートに基づいて、子データセンタエンティティの順序を判定する。データセンタ生成モジュール210は、依存関係グラフのソート順に基づいて、子データセンタエンティティを順序付ける。データセンタ生成モジュール210は、子データセンタエンティティに対して判定された順序で配列された各子データセンタエンティティに対してパイプライン中にステージを作成する。このステージは、プロビジョニングパイプラインを生成する間に子データセンタエンティティのためにリソースをプロビジョニングするためのものであってもよいし、このステージは、デプロイメントパイプラインが生成されている場合、子データセンタエンティティをデプロイするためのものであってもよい。
【0090】
一実施形態によるパイプラインを実行するためのプロセスは、以下のようである。データセンタ生成モジュール210は、ターゲットクラウドプラットフォーム内にデータセンタをデプロイする要求を受信する。データセンタ生成モジュール210は、データセンタの各データセンタエンティティに対して集約パイプラインを実行する。集約パイプラインは、サービスグループ内のサービスに対するパイプラインを含む。各サービスグループ内の各サービスに対して、パイプラインのすべてのステージを実行することによってパイプラインが実行される。プロビジョニングパイプラインを実行すると、サービスに対するリソースのプロビジョニング、及びデプロイメントパイプラインが、ターゲットクラウドプラットフォーム内のサービスのデプロイを発生させる。クラウドプラットフォーム上にデプロイされたデータセンタの修正
【0091】
実施形態は、最小のダウンタイムでクラウドプラットフォーム内にデプロイされたデータセンタの修正を実行する。データセンタの修正は、任意のデータセンタエンティティに対して実行されてもよく、例えば、サービスグループが修正されること、サービスが修正されること、チームが修正されることなどが行われてもよい。データセンタの修正は、新しいサービスの追加、既存サービスの廃止、既存サービスの構成の修正などを含む。
【0092】
クラウドプラットフォーム内にデプロイされた既存のデータセンタに対する修正は、いくつかの理由で実行されることがある。例えば、マルチテナントシステムのテナントがデータセンタを増分的に構築することがある。最初にデプロイされるデータセンタは、サービスグループとサービスのセットが最小限のセットを有する小さいものであることがある。データセンタが動作可能であり、一定期間使用されると、サービスグループ又はサービスを追加してデータセンタが拡張されることがある。このプロセスは、データセンタを反復的に構築するために経時的に継続されてもよい。
【0093】
既存のデータセンタに対する修正は、データセンタを使用する企業又はテナントのニーズの変更によって実行されることがある。例えば、テナントは、新しいサービスのインストールを必要とする新しい機能を導入することがある。季節的又は永続的な変更がありうるロードに対する変更があってもよい。クラウドプラットフォームの使用は、使用するリソースに弾力性を持たせることが可能となるため、テナント又は企業は、使用されるクラウドコンピューティングリソースを増加又は減少させることにより、ロードの変更に基づいてデータセンタを修正してもよい。
【0094】
既存のデータセンタに対する修正は、テナント又は企業のポリシーの変更によって実行されることがある。例えば、テナントはセキュリティを強化することを決定し、それによって新しいセキュリティポリシーを導入してもよい。テナントは、ネットワークポリシーを変更して、様々なサービスへのアクセスを制限又は修正する。テナントは、セキュリティ上の懸念や組織のポリシーの変更に基づいて、特定のサービスに対するアウトバウンドアクセスを制限又は修正してもよい。テナントは、組織の変更に応じて、様々なデータセンタエンティティを担当するチームを修正してもよい。テナントは、サービスの使用のモニタリングに基づいてサービスを追加又は廃止する必要があってもよい。例えば、サービスの利用が閾値期間より長い期間にわたって閾値未満であると判定される場合、テナントは、そのサービスを廃止するか、又はロードの変更を考慮するためにサービスの構成を修正することを決定してもよい。
【0095】
したがって、クラウドプラットフォームに現在デプロイされているデータセンタを修正するための理由はいくつかあってもよい。実施形態は、現在実行されているサービスへの中断を最小限に抑えながら、クラウドプラットフォーム内にデプロイされている既存のデータセンタに対するそのような動的な修正を可能にする。
【0096】
図9は、一実施形態による、データセンタ修正モジュールのシステムアーキテクチャを例示するブロック図である。データセンタ修正モジュール900は、メタデータ差分モジュール910と、修正計画生成モジュール920と、CRUD動作モジュール930と、を含む。他の実施形態は、より多く又はより少ないモジュールを有してもよく、モジュールによって実行されるものとして示された機能は、本明細書に示されたもの以外の他のモジュールによって実行されてもよい。
【0097】
メタデータ差分モジュール910は、データセンタの2つのメタデータ表現間の差分を判定する。一実施形態では、メタデータ差分モジュール910は、クラウドプラットフォーム上に現在デプロイされているデータセンタのメタデータ表現と、デプロイが計画されている修正されたデータセンタのメタデータ表現とを受信し、2つのメタデータ表現間の差分を表すデルタメタデータ表現を生成する。メタデータ差分モジュール910は、デルタメタデータ表現を修正計画生成モジュールに提供して、クラウドプラットフォームに現在デプロイされているデータセンタを計画されたデータセンタに修正するための修正計画を生成する。一実施形態では、入力メタデータ表現は、クラウドプラットフォーム固有の詳細メタデータ表現730であるが、クラウドプラットフォームに依存しない詳細メタデータ表現720又はクラウドプラットフォームに依存しない宣言型仕様710であってもよい。一実施形態では、メタデータ差分モジュール910は、トップダウン階層方式で2つのメタデータ表現を同時にトラバースし、メタデータ表現のノードを比較して、各レベルで利用可能な一致ノードがあるかどうかを判定する。メタデータ差分モジュール910が、メタデータ表現のノードにおける不一致を判定する場合、メタデータ差分モジュール910は、差を表すデルタメタデータ表現にノードを追加する。特定のレベルでノードN1に差がある場合、メタデータ差分モジュール910は、生成されるデルタメタデータ表現において、ルートノードからノードN1まで延びる完全な分岐を追加する。メタデータ差分モジュール910はまた、差を特徴付ける情報でデルタメタデータ表現のノードにマーク付け又は注釈付けを行う。デルタメタデータ表現内のノードは、変更されていない、新しい、修正された、又は削除されたとしてマーク付けされてもよい。
【0098】
CRUD動作モジュール930は、データセンタに対して特定の修正を実行するための命令を含む。CRUD動作モジュール930によってサポートされる動作は、作成動作、読み出し動作、更新動作、及び削除動作である。作成動作は、データセンタ内にデータセンタエンティティを作成する。読み出し動作は、データセンタ又はデータセンタの一部の表現を返す。更新動作は、データセンタからの既存のデータセンタエンティティを修正する。削除動作は、データセンタエンティティを削除又は廃止する。
【0099】
修正計画生成モジュール920は、クラウドプラットフォームに現在デプロイされているデータセンタのメタデータ表現と計画されたデータセンタ構成のメタデータ表現との差を表すデータセンタのデルタメタデータ表現を受信し、クラウドプラットフォームに現在デプロイされているデータセンタを計画されたデータセンタ構成に変更するための修正計画を生成する。一実施形態では、修正計画生成モジュール920は、ノードの注釈を使用して、修正計画に追加された命令を判定する。したがって、修正計画生成モジュール920は、(1)デルタメタデータ表現内のノードが新しいとしてマーク付けされている場合にデータセンタエンティティを追加する命令、(2)デルタメタデータ表現内のノードが削除としてマーク付けされている場合にデータセンタエンティティを削除する命令、及び(3)デルタメタデータ表現内のノードが更新のためにマーク付けされている場合にデータセンタエンティティを更新する命令を生成する。修正計画生成モジュール920は、サービスの中断を可能な限り最小限に抑える計画を生成する。例えば、データセンタエンティティD1を更新することがデータセンタエンティティD2に影響を及ぼさない場合、修正計画は、データセンタエンティティD1が修正されている間、そのデータセンタエンティティの修正なし及び実行を維持する。
【0100】
図10A図10Cは、一実施形態による、データセンタに対して要求された変更のデルタメタデータ表現の判定を例示する。図10Aは、クラウドプラットフォームに現在デプロイされているデータセンタのメタデータ表現1010aを示す。図10Aに示すように、データセンタDCは、2つのサービスグループSG1及びSG2を含み、サービスグループSG1は、2つのセルCELL1及びCELL2を含み、CELL1は、サービスSVCA、…、SVCZを含み、CELL2は、サービスSVCBを含み、サービスグループSG2は、2つのサービスSVCA及びSVCBを含む。
【0101】
図10Bは、データセンタDCの修正されたメタデータ表現1010bを含む。例えば、ユーザは、図10Aのメタデータ表現に対応する宣言型仕様の以前のバージョンを修正することによって、修正された宣言型仕様を構築してもよい。変更メタデータ表現1010bは、メタデータ表現1010aのノードに加えて、以下のノード、すなわち、セルCELL2のSVCFのノードと、セルCELL1及びサービスSVCEを含む新たなサービスグループSG3と、を含む。
【0102】
図10Cは、メタデータ表現1010aと1010bとの間の差を表すデルタメタデータ表現1010cを示す。デルタメタデータ表現1010cは、ノードDCの下にサービスグループSG1及びSG3を有するノードDCと、ノードSG1の下のノードCELL2と、ノードCELL2の下のノードSVCFと、ノードDCの下にノードSG3と、ノードSG3の下のノードCELL1と、ノードCELL1の下のノードSVCEと、を含む。1010aと比較して1010bにおいて異なるSVCFに対するノードなどのノードN1が下位レベル、例えばリーフレベルで現れる場合、デルタメタデータ表現1010cは、ルートノードDCから開始するノードN1を含むブランチ全体を含む。したがって、ノードSVCFより上のノードDC、SG1、及びCELL2は、メタデータ表現1010a及び1010bにおいて異なっていなくても含まれている。さらに、デルタメタデータ表現1010cは、ノードDCの下にSG3、CELL1、及びSVCEを含むブランチを含む。
【0103】
メタデータ差分モジュール910は、メタデータ表現1010a及び1010bのトップダウントラバースを同時に実行することによってデルタメタデータ表現1010cを取得してもよい。2つのメタデータ表現1010a及び1010bにおいて一致する各ノードについて、メタデータ差分モジュール910は、対応する子ノードを比較する。ノードの子ノードに差がある場合、メタデータ差分モジュール910は、差を判定し、対応するノードをデルタメタデータ表現1010cに追加する。
【0104】
例えば、メタデータ差分モジュール910は、メタデータ表現1010a及び1010bが両方とも単一ノードDCを有するので、ルートノードにおいて同一であることに留意する。メタデータ差分モジュール910は、メタデータ表現1010a及び1010bの両方においてルートノードの子ノードをチェックする。メタデータ表現1010bは、ルートノードDCの下に3つのノードSG1、SG2、及びSG3を含み、メタデータ表現1010aは、ルートノードDCの下に2つのノードSG1、及びSG2を含む。したがって、ルートノードの下の子ノードに差がある。メタデータ差分モジュール910は、差をノードSG3として判定し、デルタメタデータ表現1010cにおいてノードDCの下にノードSG3を追加する。
【0105】
以下、サービスグループSG1及びSG2を有するデータセンタが、新しいサービスグループSG3を追加するように修正されるときのデルタメタデータ表現1010cの一部分の一例である。
【数5】
【0106】
以下は、3つのサービスSVCA、SVCB、及びSVCCを有するサービスグループSG1を有するデータセンタが、サービスグループSG1が4つのサービスSVCA、SVCB、SVCC、及びSVCDを有するように修正されるときの、ルタメタデータ表現1010cの一部分の一例である。デルタメタデータ表現1010cは、追加される新しいサービスSVCDに対するノードと、サービスSVCDに関連する他のメタデータ、例えばサービスSVCDに対するチームのためのメタデータと、を含む。
【数6】
【0107】
図11は、一実施形態による、クラウドプラットフォーム上にデプロイされたデータセンタを修正するためのプロセスを例示するフローチャートである。データセンタ修正モジュール900は、データセンタの修正されたメタデータ表現、例えば、以前に作成されたデータセンタのクラウドプラットフォームに依存しない宣言型仕様の修正されたバージョンを受信する(110)。コンパイルモジュール1210は、クラウドプラットフォームに依存しない宣言型仕様をコンパイルして、クラウドプラットフォーム固有の詳細なデータセンタ表現を生成する。データセンタ修正モジュール900は、クラウドプラットフォームに現在デプロイされているデータセンタのクラウドプラットフォーム固有の詳細データセンタ表現にアクセスする(1130)。
【0108】
データセンタ修正モジュール900は、デルタメタデータ表現を、2つのクラウドプラットフォーム固有の詳細データセンタ表現間の差として判定する(1140)。一実施形態では、データセンタのメタデータ表現は、例えばJSONオブジェクトとして規定されるネストされたオブジェクト構造として受信される。データセンタ修正モジュール900は、受信した構造をグラフとして処理する。各データセンタエンティティは、JSONオブジェクトとして表される。JSONオブジェクトの特定の属性は、データセンタエンティティのメタデータ属性を表す。いくつかの属性は、オブジェクトのセット、例えば、JSONオブジェクトの子オブジェクトに対応する辞書表現を表してもよい。メタデータ差分モジュール910は、データセンタエンティティを表す各ネストされたオブジェクトのメタデータ属性を比較し、各子オブジェクトに対して差分プロセスを再帰的に実行することによってデルタメタデータを判定する。
【0109】
データセンタ修正モジュール900は、デルタメタデータ表現に従ってデータセンタを修正するための命令を生成する(1150)。デルタメタデータ表現1010cが、新しいデータセンタエンティティとしてマーク付けされたノードを含む場合、データセンタ修正モジュール900は、新しいデータセンタエンティティを作成する命令を生成する。デルタメタデータ表現が、削除されるデータセンタエンティティとしてマーク付けされたノードを含む場合、データセンタ修正モジュール900は、既存のデータセンタエンティティを削除する命令を生成する。デルタメタデータ表現が、更新されるデータセンタエンティティとしてマーク付けされたノードを含む場合、データセンタ修正モジュール900は、既存のデータセンタエンティティを更新する命令を生成する。一実施形態では、命令は、クラウドプラットフォーム上で実行するためのパイプラインを含む。
【0110】
データセンタ修正モジュール900は、生成された命令をクラウドプラットフォームで実行するために送信する。この命令によって、データセンタは、クラウドプラットフォームに依存しない宣言型仕様の修正バージョンに対応するように修正される。データセンタ修正モジュール900は、修正の結果としてデータセンタに追加された任意の新しいサービスへのアクセスをユーザに提供する。
【0111】
図11に示すプロセスは、データセンタの2つのクラウドプラットフォーム固有の詳細データセンタ表現間の差を判定するが、このプロセスは、データセンタの他の任意のメタデータ表現、例えば、データセンタのクラウドプラットフォームに依存しない詳細データセンタ表現間の差を判定することによって実行され得る。
【0112】
デルタメタデータ表現が、更新されるデータセンタエンティティとしてマーク付けされたノードを含む場合、データセンタ修正モジュール900は、データセンタエンティティに実行される変更を判定し、それに従って命令を生成する。例えば、更新動作がサービスのセキュリティポリシーを修正する場合、データセンタ修正モジュール900は、セキュリティポリシーを修正するための適切な命令を生成する。更新動作がサービスのネットワークポリシーを修正する場合、データセンタ修正モジュール900は、セキュリティポリシーを修正するための適切な命令を生成する。
【0113】
SVCAメタデータ表現が2つのサービスSVCAとSVCBとの間の新しい関係を含む場合、データセンタ修正モジュール900は、セキュリティグループ定義を修正して、SVCAとSVCBとの間の対話を可能にし、セキュリティグループ定義を再適用する命令を生成する。
【0114】
デルタメタデータ表現がP1からP2へのサービスのポートに対する変更を指定する場合、データセンタ修正モジュール900は、ポートP1がもはや機能していないので、ポートP1に基づいてネットワークポリシー及び信頼関係を削除する命令を生成する。データセンタ修正モジュール900は、デルタメタデータ表現で指定されているように、ポートP2に基づいてネットワークポリシー及び信頼関係を追加する命令を生成する。
【0115】
デルタメタデータ表現が、サービスへのアウトバウンドアクセスがURL1からURL2に変更されることを規定する場合、データセンタ修正モジュール900は、URL1へのアクセスを削除し、そのサービスに対するURL2へのアクセスを追加する命令を生成する。
【0116】
データセンタ修正モジュール900は、更新を行うときにデータセンタのサービスの供給停止を最小限に抑え、データセンタに対するセキュリティリスクを最小限に抑えるような命令を生成する。例えば、アウトバウンド又はインバウンドアクセスが修正される場合、生成された命令は、最初に必要のないアクセスを除去し、次いで、新しいアクセスを追加し、それによって無許可アクセスの機会が最小限に抑えられることを保証する。一実施形態では、データセンタ修正モジュール900はデータセンタ表現を階層的にトラバースして、更新動作を実行するためにシャットダウン及び再開始する必要があるサービスの最小数を判定する。更新を実行するためにサービスを変更する必要がない場合、データセンタ修正モジュール900は、いかなる変更もなしにサービスを残す。
【0117】
データセンタ修正モジュール900は、デルタメタデータ表現におけるサービスの依存関係を分析して、データセンタエンティティに対して実行する必要がある動作のタイプに応じて、サービスが開始又は廃棄される順序を判定する。
【0118】
一実施形態では、データセンタエンティティは、宣言型仕様における開始依存関係情報、例えば、このデータセンタエンティティが依存する他のデータセンタエンティティのセットを規定する。データセンタエンティティE1がデータセンタエンティティE2に開始依存関係を有する場合、データセンタエンティティE2は、データセンタエンティティE1が開始される前に開始されなければならない。データセンタ修正モジュール900は、デルタメタデータ表現におけるすべてのデータセンタエンティティの開始依存関係を分析する。データセンタ修正モジュール900は、デルタメタデータ表現のデータセンタエンティティで規定された開始依存関係情報に基づいて依存関係グラフを構築する。データセンタ修正モジュール900は、依存関係グラフに基づいて修正計画を生成する。一実施形態では、データセンタ修正モジュール900は、依存関係グラフに基づいて判定された順序でデータセンタエンティティを開始するためのパイプラインを生成する。
【0119】
デルタメタデータ表現がデータセンタ内で作成される必要があるデータセンタエンティティE1を含む場合、データセンタ修正モジュール900は、セットS1のデータセンタがデータセンタエンティティE1より先に開始されるように、データセンタエンティティE1が依存するデータセンタエンティティのセットS1を依存関係グラフに基づいて判定された順序で開始する修正計画を生成する。セットS1内のデータセンタエンティティも、データセンタエンティティExがデータセンタエンティティEyに依存する場合、データセンタエンティティEyがデータセンタエンティティExより先に開始されるような順序で開始される。
【0120】
デルタメタデータ表現がデータセンタ内で削除又は廃棄される必要があるデータセンタエンティティE1を含む場合、データセンタ修正モジュール900は、セットS1のデータセンタがデータセンタエンティティE1の後に廃棄されるように、データセンタエンティティE1が依存するデータセンタエンティティのセットS1を依存関係グラフに基づいて判定された順序で廃棄する修正計画を生成する。セットS1内のデータセンタエンティティも、データセンタエンティティExがデータセンタエンティティEyに依存する場合、データセンタエンティティEyがデータセンタエンティティExより後に廃棄されるような順序で廃棄される。クラウドプラットフォームが、例えば他の目的で使用するために、データセンタエンティティによって使用されたコンピューティングリソースを回収するときに、データセンタエンティティは廃棄される。クラウドプラットフォームは、データセンタエンティティへのアクセスも除去する。データセンタエンティティがサービスである場合、クラウドプラットフォームは、サービスへのアクセスを除去し、サービスの命令を実行するプロセスを停止することによって、サービスを廃棄する。コンピュータアーキテクチャ
【0121】
図12は、一実施形態による、図1の環境100で例示されるエンティティの1つとして使用するための典型的なコンピュータシステムの機能図を例示する高レベルブロック図である。チップセット1204に結合された少なくとも1つのプロセッサ1202が例示されている。チップセット1204には、メモリ1206、記憶デバイス1208、キーボード1210、グラフィックアダプタ1212、ポインティングデバイス1214、及びネットワークアダプタ1216も結合されている。ディスプレイ1218は、グラフィックアダプタ1212に結合されている。一実施形態では、チップセット1204の機能は、メモリコントローラハブ1220及びI/Oコントローラハブ1222によって提供される。別の実施形態では、メモリ1206は、チップセット1204の代わりにプロセッサ1202に直接結合される。
【0122】
記憶デバイス1208は、ハードドライブ、コンパクトディスクリードオンリーメモリ(CD-ROM)、DVD、又は固体メモリデバイスなどの非一時的なコンピュータ可読記憶媒体である。メモリ1206は、プロセッサ1202によって使用される命令及びデータを保持する。ポインティングデバイス1214は、マウス、トラックボール、又は他のタイプのポインティングデバイスであってもよく、コンピュータシステム200にデータを入力するためにキーボード1210と組み合わせて使用される。グラフィックアダプタ1212は、ディスプレイ1218上に画像及び他の情報を表示する。ネットワークアダプタ1216は、コンピュータシステム1200をネットワークに結合する。
【0123】
本技術分野で知られているように、コンピュータ1200は、図12に示したものとは異なる及び/又は他のコンポーネントを有することができる。追加的に、コンピュータ1200は、特定の例示されたコンポーネントを欠いていることがある。例えば、マルチテナントシステム110として動作するコンピュータシステム1200は、キーボード1210及びポインティングデバイス1214を欠いていることがある。さらに、記憶デバイス1208は、コンピュータ1200からローカル及び/又はリモートである可能性がある(例えば、ストレージエリアネットワーク(SAN)内に具現化される)。
【0124】
コンピュータ1200は、本明細書で記載される機能を提供するためのコンピュータモジュールを実行するように適合されている。本明細書で使用される「モジュール」という用語は、特定の機能を提供するためのコンピュータプログラム命令及び他のロジックを指す。モジュールは、ハードウェア、ファームウェア、及び/又はソフトウェアで実装され得る。モジュールは、1つ以上のプロセスを含むことができ、及び/又はプロセスの一部のみによって提供され得る。モジュールは、典型的には、記憶デバイス1208上に記憶され、メモリ1206にロードされ、プロセッサ1202によって実行される。
【0125】
図1のエンティティによって使用されるコンピュータシステム1200のタイプは、実施形態及びエンティティによって使用される処理パワーに応じて変化する可能性がある。例えば、クライアントデバイス105は、限定された処理パワーを有する携帯電話、小型ディスプレイ1218であることがあり、ポインティングデバイス1214がないことがある。対照的に、マルチテナントシステム110及びクラウドプラットフォーム120は、本明細書で記載される機能を提供するために協働する複数のブレードサーバを含んでもよい。追加的な考慮事項
【0126】
コンポーネントの特定の名前付け、用語の大文字化、属性、データ構造、又は他のプログラミング又は構造的態様は、必須でも重要でもなく、記載された実施形態を実装するメカニズムが、異なる名前、フォーマット、又はプロトコルを有してもよい。さらに、システムは、記載されるように、ハードウェアとソフトウェアの組み合わせを介して、又は完全にハードウェア要素で実装されてもよい。また、本明細書で記載される様々なシステムコンポーネント間の特定の機能分割は単なる例示であり、必須ではなく、単一のシステムコンポーネントによって実行される機能は、代わりに複数のコンポーネントによって実行されてもよく、複数のコンポーネントによって実行される機能は、代わりに単一のコンポーネントによって実行されてもよい。
【0127】
上記の説明のいくつかの部分は、情報に対する動作のアルゴリズム及び記号表現の観点から特徴を提示する。これらのアルゴリズム記述及び表現は、データ処理技術の当業者によって、その研究の実体を他の当業者に最も効果的に伝達するために使用される手段である。これらの動作は、機能的又は論理的に記載されているが、コンピュータプログラムによって実装されるものと理解される。さらに、一般性を失うことなく、これらの動作の配置をモジュールとしてか、又は機能名により参照することが時に便利であることも証明されている。
【0128】
上記の説明から明らかなように特に他に述べない限り、本明細書全体を通して、「処理」、「コンピューティング」、「計算」、「判定」、「表示」などの用語を利用する説明は、コンピュータシステムメモリ若しくはレジスタ、又は他のそのような情報記憶、伝送若しくは表示デバイス内の物理的(電子的)量として表されるデータを操作及び変換するコンピュータシステム又は同様の電子コンピューティングデバイスのアクション及びプロセスを指すことが理解される。
【0129】
本明細書で記載される特定の実施形態は、アルゴリズムの形態で記載されるプロセスステップ及び命令を含む。実施形態のプロセスステップ及び命令は、ソフトウェア、ファームウェア又はハードウェアで具現化され得、ソフトウェアで具現化されるときに、ダウンロードされてリアルタイムネットワークオペレーティングシステムによって使用される異なるプラットフォーム上に存在させ、そこから動作させることができることに留意されたい。
【0130】
記載される実施形態はまた、本明細書における動作を実行するための装置に関する。装置は、要求された目的のために特別に構成されてもよいし、コンピュータによってアクセスされ得るコンピュータ可読媒体上に記憶されたコンピュータプログラムによって選択的に開始又は再構成される汎用コンピュータを含んでもよい。このようなコンピュータプログラムは、フロッピーディスク、光ディスク、CD-ROM、光磁気ディスク、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気若しくは光カード、特定用途向け集積回路(ASIC)、又は電子命令を記憶するのに好適な任意のタイプの媒体を含む任意のタイプのディスクなどのこれらに限定されない非一時的なコンピュータ可読記憶媒体に記憶されてもよく、各々がコンピュータシステムバスに結合される。さらに、本明細書で言及されるコンピュータは、単一プロセッサを含んでもよいし、計算能力を向上させるために複数のプロセッサ設計を採用するアーキテクチャであってもよい。
【0131】
本明細書に提示されるアルゴリズム及び動作は、本質的には、特定のコンピュータ又は他の装置に関するものではない。様々な汎用システムも、本明細書の教示に従ったプログラムと共に使用されてもよいし、必要とされる方法ステップを実行するためにより特別な装置を構築することが便利であってもよい。様々なこれらのシステムに必要な構造は、同等の変形と共に当業者には明らかであろう。追加的に、本実施形態は、任意の特定のプログラミング言語を参照して記載されていない。様々なプログラミング言語を使用して、本明細書で記載されるような実施形態の教示を実装してもよいことが理解される。
【0132】
実施形態は、多数のトポロジにわたる多種多様なコンピュータネットワークシステムに良好に好適である。この分野では、大規模ネットワークの構成及び管理は、インターネットなどのネットワークを介して似ていないコンピュータ及び記憶デバイスに通信可能に結合された記憶デバイス及びコンピュータを含む。
【0133】
最後に、本明細書で使用される言語は、主に読みやすさ及び教育的な目的のために選択されており、発明の主題の輪郭を描くか、又は境界線を引くために選択されたものではないことに留意されたい。したがって、実施形態の開示は、例示的であることを意図しているが、限定的なものではない。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10A
図10B
図10C
図11
図12
【国際調査報告】