(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-15
(54)【発明の名称】クラウドコンピューティングプラットフォーム上のデータセンタビルドのマルチサブストレートフォールトトレラント継続的配信
(51)【国際特許分類】
G06F 8/20 20180101AFI20240207BHJP
【FI】
G06F8/20
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023545874
(86)(22)【出願日】2022-01-28
(85)【翻訳文提出日】2023-09-25
(86)【国際出願番号】 US2022014438
(87)【国際公開番号】W WO2022165269
(87)【国際公開日】2022-08-04
(32)【優先日】2021-01-28
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】506332063
【氏名又は名称】セールスフォース インコーポレイテッド
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】マガナ ペルドモ,エドガー,フランシスコ
(72)【発明者】
【氏名】バーラムシャーリー,アーミン
(72)【発明者】
【氏名】レーン ザ・セカンド,チャールズ,エム.
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376BC01
5B376DA01
5B376DA14
(57)【要約】
コンピューティングシステム、例えばマルチテナントシステムは、クラウドプラットフォーム非依存であるクラウドプラットフォームインフラストラクチャ言語を使用してクラウドプラットフォームにおいて作成されたデータセンタにソフトウェアアーチファクトを配備する。システムは、他のデータセンタを構成するため、例えば、他のデータセンタのためのソフトウェアアーチファクトの継続的配信を実行するために使用されるサービスグループのセットを有する制御データセンタを使用する。システムは、プライマリ制御データセンタ及びセカンダリ制御データセンタを使用する。プライマリ制御データセンタは、例えば、テナントデータセンタの宣言的仕様に従ってテナントデータセンタのためのクラウドプラットフォーム内のコンピューティングリソースを構成することにより、テナントデータセンタのインフラストラクチャを構成する。セカンダリ制御データセンタは、例えば、プライマリ制御データセンタの障害がある場合に、テナントデータセンタを構成するプロセスの制御を効率的に行う。
【特許請求の範囲】
【請求項1】
クラウドプラットフォーム上にデータセンタを構成する、コンピュータにより実施される方法であって、
前記クラウドプラットフォーム上に、プライマリ制御データセンタ及びセカンダリ制御データセンタを構成するステップと、
クラウドプラットフォーム上にテナントデータセンタを構成する要求を受信するステップであり、前記テナントデータセンタは、マルチテナントシステムのテナントに関連づけられる、ステップと、
前記テナントデータセンタを構成するための命令を前記プライマリ制御データセンタに送信するステップであり、前記命令は、前記プライマリ制御データセンタに、
前記クラウドプラットフォーム上に前記テナントデータセンタのためのインフラストラクチャを構成することと、
前記テナントデータセンタのために構成されたインフラストラクチャの状態を前記セカンダリ制御データセンタに周期的に送信することと、
を含むステップを実行させる、ステップと、
前記プライマリ制御データセンタから前記セカンダリ制御データセンタに前記クラウドプラットフォーム上の前記テナントデータセンタの構成の制御を移転する要求を受信するステップと、
制御を移転する前記要求を受信したことに応答して、前記プライマリ制御データセンタから前記セカンダリ制御データセンタに前記テナントデータセンタの構成に関連づけられた要求をリダイレクトするステップと、
を含む、コンピュータにより実施される方法。
【請求項2】
前記セカンダリ制御データセンタに命令を送信するステップであり、前記命令は、前記セカンダリ制御データセンタに、前記プライマリ制御データセンタにより構成された前記テナントデータセンタの前記インフラストラクチャを検証させる、ステップ、
をさらに含む、請求項1に記載のコンピュータにより実施される方法。
【請求項3】
制御を移転する要求を受信したことに応答して、前記セカンダリ制御データセンタは、前記プライマリ制御データセンタから前記セカンダリ制御データセンタにより受信された現在の状態から、前記テナントデータセンタの前記インフラストラクチャの構成を再開する、請求項1に記載のコンピュータにより実施される方法。
【請求項4】
前記現在の状態から1つ以上のテナントデータセンタの前記インフラストラクチャの構成を再開することは、前記セカンダリ制御データセンタに、前記プライマリ制御データセンタにより前に実行された動作を実行させる、請求項3に記載のコンピュータにより実施される方法。
【請求項5】
各テナントデータセンタを構成することは、
前記テナントデータセンタのためのクラウドプラットフォーム非依存の宣言的仕様を受信することと、
前記クラウドプラットフォーム非依存の宣言的仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成することと、
を含む、請求項1に記載のコンピュータにより実施される方法。
【請求項6】
1つ以上のテナントデータセンタのインフラストラクチャを構成することは、クラウドプラットフォーム上に複数のアカウントを作成することを含み、各アカウントは、前記テナントデータセンタの宣言的仕様に従って構成される、請求項1に記載のコンピュータにより実施される方法。
【請求項7】
1つ以上のテナントデータセンタのインフラストラクチャを構成することは、1つ以上のパイプラインを作成することを含み、各パイプラインは、前記テナントデータセンタのための1つ以上のデータセンタエンティティを構成するためのステージを含む、請求項1に記載のコンピュータにより実施される方法。
【請求項8】
テナントデータセンタは、1つ以上のサービスグループを含み、各サービスグループは、サービスのセットを含む、請求項1に記載のコンピュータにより実施される方法。
【請求項9】
テナントデータセンタは、データセンタエンティティの階層を含み、データセンタエンティティは、サービス又はサービスグループを含み、各サービスグループは、サービスのセットを含む、請求項1に記載のコンピュータにより実施される方法。
【請求項10】
前記セカンダリ制御データセンタにより1つ以上のテナントデータセンタの前記インフラストラクチャの構成を再開したことに応答して、前記セカンダリ制御データセンタにより前記テナントデータセンタのために構成されたインフラストラクチャの状態を前記プライマリ制御データセンタに周期的に送信する、請求項1に記載のコンピュータにより実施される方法。
【請求項11】
前記プライマリ制御データセンタから前記セカンダリ制御データセンタに前記クラウドプラットフォーム上の1つ以上のデータセンタの構成の制御を移転する前記要求は、
前記プライマリ制御データセンタの1つ以上のサービスの障害、
前記プライマリ制御データセンタの1つ以上のサービスの計画された保守、
前記プライマリ制御データセンタのデータストアのデータ破損、又は
前記プライマリ制御データセンタにおけるセキュリティ侵害
のうちの1つ以上に応答して受信される、請求項1に記載のコンピュータにより実施される方法。
【請求項12】
前記プライマリ制御データセンタは第1のクラウドプラットフォーム内にあり、前記セカンダリ制御データセンタは第2のクラウドプラットフォーム内にある、請求項1に記載のコンピュータにより実施される方法。
【請求項13】
命令を記憶するための非一時的コンピュータ読取可能記憶媒体であって、前記命令は、1つ以上のコンピュータプロセッサにより実行されたときに、前記1つ以上のコンピュータプロセッサにクラウドプラットフォーム上にデータセンタを構成するためのステップを実行させ、前記ステップは、
前記クラウドプラットフォーム上に、プライマリ制御データセンタ及びセカンダリ制御データセンタを構成することと、
クラウドプラットフォーム上にテナントデータセンタを構成する要求を受信することであり、前記テナントデータセンタは、マルチテナントシステムのテナントに関連づけられる、ことと、
前記テナントデータセンタを構成するための命令を前記プライマリ制御データセンタに送信することであり、前記命令は、前記プライマリ制御データセンタに、
前記クラウドプラットフォーム上に前記テナントデータセンタのためのインフラストラクチャを構成することと、
前記テナントデータセンタのために構成されたインフラストラクチャの状態を前記セカンダリ制御データセンタに周期的に送信することと、
を含むステップを実行させる、ことと、
前記プライマリ制御データセンタから前記セカンダリ制御データセンタに前記クラウドプラットフォーム上の前記テナントデータセンタの構成の制御を移転する要求を受信することと、
制御を移転する前記要求を受信したことに応答して、前記プライマリ制御データセンタから前記セカンダリ制御データセンタに前記テナントデータセンタの構成に関連づけられた要求をリダイレクトすることと、
を含む、非一時的コンピュータ読取可能記憶媒体。
【請求項14】
前記命令はさらに、前記1つ以上のコンピュータプロセッサに、
前記セカンダリ制御データセンタに命令を送信することであり、前記命令は、前記セカンダリ制御データセンタに、前記プライマリ制御データセンタにより構成された前記テナントデータセンタの前記インフラストラクチャを検証させる、こと、
を含むステップを実行させる、請求項13に記載の非一時的コンピュータ読取可能記憶媒体。
【請求項15】
制御を移転する要求を受信したことに応答して、前記セカンダリ制御データセンタは、前記プライマリ制御データセンタから前記セカンダリ制御データセンタにより受信された現在の状態から、前記テナントデータセンタの前記インフラストラクチャの構成を再開する、請求項13に記載の非一時的コンピュータ読取可能記憶媒体。
【請求項16】
前記現在の状態から1つ以上のテナントデータセンタの前記インフラストラクチャの構成を再開することは、前記セカンダリ制御データセンタに、前記プライマリ制御データセンタにより前に実行された動作を実行させる、請求項15に記載の非一時的コンピュータ読取可能記憶媒体。
【請求項17】
1つ以上のテナントデータセンタのインフラストラクチャを構成することは、クラウドプラットフォーム上に複数のアカウントを作成することを含み、各アカウントは、前記テナントデータセンタの宣言的仕様に従って構成される、請求項13に記載の非一時的コンピュータ読取可能記憶媒体。
【請求項18】
前記セカンダリ制御データセンタにより1つ以上のテナントデータセンタの前記インフラストラクチャの構成を再開したことに応答して、前記セカンダリ制御データセンタにより前記テナントデータセンタのために構成されたインフラストラクチャの状態を前記プライマリ制御データセンタに周期的に送信する、請求項13に記載の非一時的コンピュータ読取可能記憶媒体。
【請求項19】
前記プライマリ制御データセンタから前記セカンダリ制御データセンタに前記クラウドプラットフォーム上の1つ以上のデータセンタの構成の制御を移転する前記要求は、
前記プライマリ制御データセンタの1つ以上のサービスの障害、
前記プライマリ制御データセンタの1つ以上のサービスの計画された保守、
前記プライマリ制御データセンタのデータストアのデータ破損、又は
前記プライマリ制御データセンタにおけるセキュリティ侵害
のうちの1つ以上に応答して受信される、請求項13に記載の非一時的コンピュータ読取可能記憶媒体。
【請求項20】
コンピューティングシステムであって、
1つ以上のコンピュータプロセッサと、
命令を記憶するための非一時的コンピュータ読取可能記憶媒体であり、前記命令は、前記1つ以上のコンピュータプロセッサにより実行されたときに、前記1つ以上のコンピュータプロセッサにクラウドプラットフォーム上にデータセンタを構成するためのステップを実行させる、非一時的コンピュータ読取可能記憶媒体と、
を含み、前記ステップは、
前記クラウドプラットフォーム上に、プライマリ制御データセンタ及びセカンダリ制御データセンタを構成することと、
クラウドプラットフォーム上にテナントデータセンタを構成する要求を受信することであり、前記テナントデータセンタは、マルチテナントシステムのテナントに関連づけられる、ことと、
前記テナントデータセンタを構成するための命令を前記プライマリ制御データセンタに送信することであり、前記命令は、前記プライマリ制御データセンタに、
前記クラウドプラットフォーム上に前記テナントデータセンタのためのインフラストラクチャを構成することと、
前記テナントデータセンタのために構成されたインフラストラクチャの状態を前記セカンダリ制御データセンタに周期的に送信することと、
を含むステップを実行させる、ことと、
前記プライマリ制御データセンタから前記セカンダリ制御データセンタに前記クラウドプラットフォーム上の前記テナントデータセンタの構成の制御を移転する要求を受信することと、
制御を移転する前記要求を受信したことに応答して、前記プライマリ制御データセンタから前記セカンダリ制御データセンタに前記テナントデータセンタの構成に関連づけられた要求をリダイレクトすることと、
を含む、コンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、クラウドコンピューティングプラットフォームにおけるソフトウェアリリースの継続的配信に関し、特に、クラウドコンピューティングプラットフォーム上のデータセンタビルドのマルチサブストレートフォールトトレラント継続的配信に関する。
【背景技術】
【0002】
組織は、それらのインフラストラクチャニーズのために、AWS(AMAZON(登録商標) WEB SERVICES)、GOOGLE(登録商標)クラウドプラットフォーム、MICROSOFT(登録商標) AZUREなどのクラウドプラットフォーム(又は、クラウドコンピューティングプラットフォーム)にますます応答している。クラウドプラットフォームは、サーバ、ストレージ、データベース、ネットワーキング、ソフトウェアなどを、インターネットを通じて組織に提供する。従来、組織は、組織により使用されるハードウェア及びソフトウェアをハウジングするデータセンタを保守していた。しかしながら、データセンタを保守することは、保守、人員などに関して大幅なオーバーヘッドを結果としてもたらす可能性がある。結果として、組織は、それらのサービスを、コンピューティングリソースのスケーラビリティ及び順応性を提供するクラウドプラットフォームにシフトしている。
【0003】
組織は、クラウドプラットフォーム上でアプリケーションを管理及び配備することができる継続的配信プラットフォームを使用して、クラウドプラットフォーム上のコンピューティングインフラストラクチャを保守する。そのような継続的配信プラットフォームは、組織がソフトウェア配備プロセスを簡素化し、クラウドプラットフォーム上のアプリケーション、ファイアウォール、クラスタ、サーバ、ロードバランサ、及び他のコンピューティングインフラストラクチャを管理することを可能にする。しかしながら、継続的配信プラットフォームを使用してクラウドプラットフォーム上で提供されるサービスのためのソフトウェアリリースを配備することは、複雑な可能性がある。例えば、ソフトウェアの異なるバージョンが、異なるクラウドコンピューティングリソース上で実行している異なるサービス上に配備される必要があり得る。さらに、各クラウドプラットフォームは、リソースを管理するために異なるツールを使用する。
【0004】
マルチテナントシステムなどの大規模システムは、マルチテナントシステムのテナントを表す多数の組織のためのサービスを管理することができ、複数のクラウドプラットフォームと対話することができる。さらに、複数のテナントのためのサービスを保守することは、クラウドプラットフォーム内の異なるテナントのデータ及びアプリケーションにわたる境界を強制することを必要とする。クラウドプラットフォーム上のサービスを保守するシステムは、さらに、新しいリリースのいかなる継続的配信も中断なく実行されることを保証する必要がある。ソフトウェアアーチファクトの継続的配信を実行するために使用されるインフラストラクチャにおける障害は、システムがマルチテナントシステムである場合、全てのテナントに対して実行している全てのサービスを管理する能力を制限する可能性がある。そのような障害は、新しい特徴のインストールと、既存のサービスの欠陥又は障害に起因する任意の修正とを中断することになる。インフラストラクチャのそのような障害を効果的に処理しない従来のシステムは、サービスの長い中断を引き起こす可能性がある。継続的配信のための従来の技法は、単一の組織により管理及び運用される従来のデータセンタに適している。パブリッククラウド環境上の継続的配信は、権限を与えられていないデータアクセスの可能性、共有リソース、組織によるコンピューティングリソースに対する直接制御の欠如などの、いくつかのさらなる考慮事項を伴う。継続的配信のための従来の技法は、パブリッククラウド環境上でソフトウェアアーチファクトを配備するには不十分である。
【図面の簡単な説明】
【0005】
【
図1】一実施形態による、クラウドプラットフォーム上にデータセンタを構成するマルチテナントシステムを示すシステム環境のブロック図である。
【
図2A】一実施形態による、配備モジュール210のシステムアーキテクチャを示すブロック図である。
【
図2B】一実施形態による、データセンタにソフトウェアアーチファクトを配備するための全体的なプロセスを示す。
【
図3】1つの実施形態による、ソフトウェアリリース管理モジュールのアーキテクチャを示すブロック図である。
【
図4】1つの実施形態による、データセンタ宣言的仕様の一例を示す。
【
図5】1つの実施形態による、宣言的仕様に基づいてクラウドプラットフォーム上に作成された例示的なデータセンタを示す。
【
図6】1つの実施形態による、宣言的仕様に基づくクラウドプラットフォーム上のデータセンタの生成を示すブロック図である。
【
図7】一実施形態による、クラウドプラットフォーム上に構成されたデータセンタ上のソフトウェアアーチファクトの配備のためのパイプラインを生成するための全体的なプロセスを示す。
【
図8】一実施形態による、例示的なマスタパイプラインを示す。
【
図9】一実施形態による、クラウドプラットフォーム上のマスタパイプラインの環境のためのステージにより実行される全体的なプロセスを示す。
【
図10】一実施形態による、例示的なマスタパイプラインを示す。
【
図11】一実施形態による、クラウドプラットフォーム上に構成されたデータセンタ上のソフトウェアアーチファクトの配備のための全体的なプロセスを示す。
【
図12】1つの実施形態による、フォールトトレラント継続的配信モジュールのアーキテクチャを示すブロック図である。
【
図13】1つの実施形態による制御データセンタのアーキテクチャを示すブロック図である。
【
図14A】1つの実施形態による、クラウドプラットフォーム内に構成されたデータセンタへのソフトウェアアーチファクトの継続的配信のための制御データセンタのフォールトトレラントアーキテクチャのアーキテクチャを示す。
【
図14B】1つの実施形態による、クラウドプラットフォーム内に構成されたデータセンタへのソフトウェアアーチファクトの継続的配信のための制御データセンタのフォールトトレラントアーキテクチャのアーキテクチャを示す。
【
図15】一実施形態による、
図14に示される制御データセンタのフォールトトレラントアーキテクチャを使用してクラウドプラットフォーム上でデータセンタを構成するためのプロセスを示す。
【
図16】一実施形態による、プライマリ制御データセンタ内の障害を処理するためのプロセスを示す。
【
図17】1つの実施形態による、
図1の環境における使用のための典型的なコンピュータシステムの機能図を示すブロック図である。
【0006】
図面は、例示のみを目的として様々な実施形態を示す。当業者は、以下の議論から、本明細書に記載される実施形態の原理から逸脱することなく、本明細書に示される構造及び方法の代替的な実施形態が採用され得ることを容易に認識するであろう。
【0007】
図面は、同様の要素を識別するために同様の参照番号を使用している。「115a」などの、参照番号の後の文字は、そのテキストがその特定の参照番号を有する要素を具体的に指すことを示す。「115」などの、後続の文字のないテキスト中の参照番号は、その参照番号を有する図中の要素のいずれか又は全てを指す。
【発明を実施するための形態】
【0008】
クラウドプラットフォームは、ストレージ、コンピューティングリソース、アプリケーションなどのコンピューティングリソースを、インターネットなどのパブリックネットワークを介してオンデマンドベースでコンピューティングシステムに提供する。クラウドプラットフォームは、企業が、コンピューティングインフラストラクチャをセットアップするための事前コストを最小限にすることを可能にし、また、企業が、より少ない保守オーバーヘッドでより迅速にアプリケーションを立ち上げ、実行することを可能にする。クラウドプラットフォームはまた、企業が、急速に変動する予測不可能な需要に対してコンピューティングリソースを調整することを可能にする。企業は、企業のユーザによる使用のためにクラウドプラットフォームを使用してデータセンタを作成することができる。しかしながら、各クラウドプラットフォーム上にデータセンタを実装することは、クラウドプラットフォームの技術における専門知識を必要とする。
【0009】
実施形態は、クラウドプラットフォーム非依存であるクラウドプラットフォームインフラストラクチャ言語を使用して、クラウドプラットフォーム内にデータセンタ(data centers)を作成する。システムは、データセンタの、クラウドプラットフォーム非依存の(cloud platform independent)宣言的仕様(declarative specification)を受信する。宣言的仕様は、データセンタの構造を記述しており、データセンタをどのように作成するかを指定する命令を提供しなくてもよい。クラウドプラットフォーム非依存の宣言的仕様は、複数のクラウドプラットフォームのうちのいずれかの上にデータセンタを生成するように構成され、クラウドプラットフォームインフラストラクチャ言語を使用して指定される。システムは、データセンタを作成するためのターゲットクラウドプラットフォームを識別する情報を受信し、クラウドプラットフォーム非依存の宣言的仕様をコンパイルし(compiles)て、クラウドプラットフォーム固有のデータセンタ表現を生成する。システムは、クラウドプラットフォーム固有のデータセンタ表現と、ターゲットクラウドプラットフォームにおける実行のための命令のセットとを送信する。ターゲットクラウドプラットフォームは、命令を実行して、プラットフォーム固有のデータセンタ表現を使用してデータセンタを構成する。システムは、クラウドプラットフォームにより構成されたデータセンタのコンピューティングリソースへのアクセスをユーザに提供する。
【0010】
1つの実施形態において、システムは、クラウドプラットフォーム上に構成されたデータセンタ上のソフトウェアリリースに関連する動作、例えば、ソフトウェアリリースを配備すること(deploying)、リソースをプロビジョニングすること、ソフトウェアリリースのロールバックを実行することなどを実行する。システムは、ターゲットクラウドプラットフォーム上に構成されたデータセンタにアクセスする。データセンタは、データセンタエンティティの階層を含むクラウドプラットフォーム非依存の宣言的仕様に基づいて生成される。各データセンタエンティティは、(1)サービス、又は(2)1つ以上の他のデータセンタエンティティ、のうちの1つ以上を含む。システムは、(1)ソフトウェアアーチファクトの配備のためのステージのシーケンス、例えば、開発ステージ、テストステージ、及び本番(production)ステージと、(2)ソフトウェアアーチファクトをステージのシーケンスのうちの1つのステージから後続のステージに昇格させる(promoting)ための基準と、を含むクラウドプラットフォーム非依存のマスタパイプラインを生成する。システムは、クラウドプラットフォーム非依存のマスタパイプラインをコンパイルして、宣言的仕様により定義されたデータセンタのレイアウトに従ってサービスに関連する動作を実行するための命令を用いてターゲットクラウドプラットフォームのためのクラウドプラットフォーム依存の詳細なパイプラインを生成する。システムは、ターゲットクラウドプラットフォーム上でクラウドプラットフォーム依存の詳細なパイプラインを実行して、例えば、データセンタのデータセンタエンティティ上にソフトウェアリリースを配備する。
【0011】
1つの実施形態において、システムは、データセンタのデータセンタエンティティをデータセンタエンティティ上での配備のターゲットにされるソフトウェアアーチファクトのバージョンに関連づける、クラウドプラットフォーム非依存のアーチファクトバージョンマップを受信する。各ソフトウェアアーチファクトは、1つ以上のクラウドプラットフォーム上での実行のために構成されたサービスに関連づけられた実行可能命令を含む。システムは、クラウドプラットフォーム非依存のアーチファクトバージョンマップに基づいてターゲットクラウドプラットフォームのためのクラウドプラットフォーム固有のマスタパイプラインを生成する。クラウドプラットフォーム固有のマスタパイプラインは、クラウドプラットフォーム非依存のバージョンマップに従ってデータセンタエンティティ上のサービスのための配備アーチファクトの適切なバージョンを構築及び配備するなどの動作を実行する命令を含む。システムは、クラウドプラットフォーム固有の配備パイプラインを、実行のためにターゲットクラウドプラットフォームに送信する。アーチファクトバージョンマップ及びマスタパイプラインは、サービスの配備、サービスを破棄すること、サービスのためのリソースをプロビジョニングすること、サービスのためのリソースを破棄することなどを含む、サービスに関連する様々なアクションを実行するために使用することができる。
【0012】
1つの実施形態において、システムは、クラウドプラットフォーム上でデータセンタビルドのフォールトトレラントな(fault tolerant)継続的配信(continuous delivery)を実行する。データセンタビルドは、データセンタを構成する、データセンタ内のサービス又はサービスグループを構成する、データセンタのサービスに関連づけられたソフトウェアアーチファクトを配備する、などを行うことができる。データセンタビルドは、変更のセット、例えば、データセンタ又はデータセンタ上で実行しているサービスに関連づけられた、コード変更又は構成変更に関連づけられる場合がある。データセンタは、クラウドプラットフォーム上に構成される。システムは、他のデータセンタ、例えば、特定のテナントによる使用のために作成されたテナントデータセンタを構成するために使用される、サービスグループの特定のセットを有する制御データセンタを使用する。制御データセンタは、テナントデータセンタのためのソフトウェアアーチファクトの継続的配信を実行するためにも使用される。システムは、制御データセンタのためのフォールトトレラントアーキテクチャを含む。したがって、システムは、プライマリ制御データセンタ及びセカンダリ制御データセンタを使用する。ソフトウェアアーチファクトの継続的配信に関連する任意の要求は、プライマリ制御データセンタに向けられる。プライマリ制御データセンタは、例えば、テナントデータセンタの宣言的仕様に従ってテナントデータセンタのためのクラウドプラットフォーム内のコンピューティングリソースを構成することにより、テナントデータセンタのインフラストラクチャを構成する。プライマリ制御データセンタは、構成されたインフラストラクチャの状態を記述する情報をセカンダリ制御データセンタに送信し、この状態は、テナントデータセンタのためにこれまでに構成されたインフラストラクチャを示す。構成されたインフラストラクチャの状態を記述する情報は、例えば、プライマリ制御データセンタの障害がある場合に、セカンダリ制御データセンタが、任意の時点におけるテナントデータセンタを構成するプロセスの制御を効率的に再開することを可能にする。セカンダリ制御データセンタが、テナントデータセンタを構成するプロセスの制御を行う場合、セカンダリ制御データセンタは、構成されたインフラストラクチャの状態を記述する情報をセカンダリ制御データセンタに転送し始め、それにより、プライマリ及びセカンダリ制御データセンタの役割を逆転させる。
【0013】
クラウドプラットフォームは、本明細書においてサブストレート(substrate)とも呼ばれる。データセンタの宣言的仕様は、サブストレート非依存であり、あるいはサブストレートに依存しない(agnostic)。システムは、マルチテナントシステムを表し得るが、マルチテナントシステムに限定されず、クラウドプラットフォームへのネットワークアクセスを有する任意のオンラインシステム又は任意のコンピューティングシステムとすることができる。
【0014】
システム環境
図1は、一実施形態による、クラウドプラットフォーム上にデータセンタを構成するマルチテナントシステムを示すシステム環境のブロック図である。システム環境100は、マルチテナントシステム110、1つ以上のクラウドプラットフォーム120、及び1つ以上のクライアントデバイス105を含む。他の実施形態において、システム環境100は、より多くの又はより少ないコンポーネントを含んでもよい。
【0015】
マルチテナントシステム110は、1つ以上のテナント115の情報を記憶する。各テナントは、マルチテナントシステム110の顧客を表す企業に関連づけることができる。各テナントは、クライアントデバイス105を介してマルチテナントシステムと対話する複数のユーザを有することができる。
【0016】
クラウドプラットフォームは、クラウドコンピューティングプラットフォーム又はパブリッククラウド環境と呼ばれることもある。テナントは、クラウドプラットフォームインフラストラクチャ言語を使用して、ターゲットクラウドプラットフォーム120上に作成されるデータセンタの宣言的仕様を提供し、データセンタを使用して動作を実行することができ、例えば、リソースをプロビジョニングする、ソフトウェアリリースを実行するなどを行うことができる。テナント115は、クラウドプラットフォーム120上に1つ以上のデータセンタを作成することができる。データセンタは、ユーザ、例えば、テナントに関連づけられたユーザにより使用され得るサーバ、アプリケーション、ストレージ、メモリなどを含むコンピューティングリソースのセットを表す。各テナントは、テナントのユーザに対して異なる機能を提供することができる。したがって、各テナントは、テナントのために構成されたデータセンタ上で異なるサービスを実行することができる。マルチテナントシステムは、各テナントのためのソフトウェアのリリース及び配備のために異なるメカニズムを実現することができる。テナントはさらに、データセンタ内で実行している様々なサービスのための命令を含むソフトウェアのバージョンを取得又は開発することができる。実施形態は、テナントが、データセンタの異なるコンピューティングリソース上で実行している異なるサービスのためのソフトウェアリリースの特定のバージョンを配備することを可能にする。
【0017】
データセンタのコンピューティングリソースは、セキュアであり、それらにアクセスする権限を与えられていないユーザによりアクセスされ得ない。例えば、テナント115aのユーザのために作成されたデータセンタ125aは、アクセスが明示的に承諾されない限り、テナント115bのユーザによりアクセスされ得ない。同様に、テナント115bのユーザのために作成されたデータセンタ125bは、アクセスが明示的に承諾されない限り、テナント115aのユーザによりアクセスされ得ない。さらに、データセンタにより提供されるサービスは、データセンタの宣言的仕様に従ってコンピューティングシステムに対してアクセスが承諾されている場合のみ、データセンタの外部のコンピューティングシステムによりアクセスされ得る。システムは、複数のセキュリティ層を使用して、これらのリソースにアクセスするユーザを識別し、権限を与える。
【0018】
マルチテナントシステム110では、複数のテナントのためのデータが同じ物理データベースに記憶される場合がある。しかしながら、データベースは、1つのテナントのデータが他のテナントのデータから論理的に別個に保持されるように構成され、それにより、1つのテナントは、別のテナントのデータが明示的に共有されない限り、そのようなデータへのアクセスを有さない。テナントにとって、それらのデータが他の顧客のデータと共有されているテーブルに記憶され得ることは、透過的である。データベーステーブルは、複数のテナントのための行を記憶することができる。したがって、マルチテナントシステムでは、システムのハードウェア及びソフトウェアの様々な要素が、1つ以上のテナントにより共有され得る。例えば、マルチテナントシステム110は、いくつかのテナントの要求を同時に処理するアプリケーションサーバを実行することができる。しかしながら、マルチテナントシステムは、テナントレベルのデータ分離を強制して、1つのテナントのジョブが他のテナントのデータにアクセスしないことを保証する。
【0019】
クラウドプラットフォームの例には、AWS(AMAZONウェブサービス)、GOOGLEクラウドプラットフォーム、又はMICROSOFT AZUREが含まれる。クラウドプラットフォーム120は、テナント115により、又はクラウドプラットフォーム120の外部の任意のコンピューティングシステムによりオンデマンドで使用され得るコンピューティングインフラストラクチャサービスを提供する。クラウドプラットフォームにより提供されるコンピューティングインフラストラクチャサービスの例には、サーバ、ストレージ、データベース、ネットワーキング、セキュリティ、ロードバランシング、ソフトウェア、分析、インテリジェンス、及び他のインフラストラクチャサービス機能が含まれる。これらのインフラストラクチャサービスは、アプリケーションをスケーラブルかつ安全な方法で構築、配備、及び管理するためにテナント115により使用され得る。
【0020】
マルチテナントシステム110は、マルチテナントストアの様々なテナントのためのデータを記憶するテナントデータストアを含むことができる。テナントデータストアは、異なるテナントのためのデータを別個の物理的構造、例えば、別個のデータベーステーブル又は別個のデータベースに記憶することができる。代替的に、テナントデータストアは、複数のテナントのデータを共有構造に記憶してもよい。例えば、全てのテナントのユーザアカウントが、同じデータベーステーブルを共有してもよい。しかしながら、マルチテナントシステムは、異なるテナントのデータを論理的に分離するためにさらなる情報を記憶する。
【0021】
図1に示される各コンポーネントは、1つ以上のコンピューティングデバイスを表す。コンピューティングデバイスは、例えば、Microsoft
TM Windows(登録商標)
TM 互換オペレーティングシステム(OS)、Apple
TM OS X、及び/又はLinux(登録商標)ディストリビューションを実行する従来のコンピュータシステムとすることができる。コンピューティングデバイスは、パーソナルデジタルアシスタント(PDA)、携帯電話、ビデオゲームシステムなどのコンピュータ機能を有するクライアントデバイスとすることもできる。各コンピューティングデバイスは、命令を記憶するソフトウェアモジュールを記憶する。
【0022】
システム環境100の様々なコンポーネント間の対話は、通常、
図1に示されていないネットワークを介して実行される。1つの実施形態において、ネットワークは、標準の通信技術及び/又はプロトコルを使用する。別の実施形態において、エンティティは、上述したものの代わりに、又はそれに加えて、カスタム及び/又は専用のデータ通信技術を使用することができる。
【0023】
本明細書に開示される技法はマルチテナントシステムの文脈で説明されるが、これらの技法は、マルチテナントシステムでない可能性がある他のシステムを使用して実施することができる。例えば、単一の組織又は企業により使用されるオンラインシステムが、本明細書で開示される技法を使用して、1つ以上のクラウドプラットフォーム120上に1つ以上のデータセンタを作成してもよい。
【0024】
システムアーキテクチャ
マルチテナントシステム110は、クラウドプラットフォーム上にソフトウェアアーチファクトを配備するための配備モジュールを含む。配備モジュールは、ソフトウェアリリースに関連づけられた様々な動作、例えば、クラウドプラットフォーム上にリソースをプロビジョニングすること、ソフトウェアリリースを配備すること、データセンタエンティティ上にインストールされたソフトウェアアーチファクトのロールバックを実行することなどを実行することができる。
図2は、一実施形態による、配備モジュール210のシステムアーキテクチャを示すブロック図である。配備モジュール210は、データセンタ生成モジュール220及びソフトウェアリリース管理モジュール230を含む。他の実施形態は、本明細書に記載されるものと異なる及び/又は他のコンポーネントを有することができ、機能は、コンポーネント間に異なる方法で分散させることができる。
【0025】
データセンタ生成モジュール220は、クラウドプラットフォーム上にデータセンタを作成するための命令を含む。ソフトウェアリリース管理モジュール230は、データセンタ生成モジュール220により作成されたデータセンタ上で実行している様々なサービス又はアプリケーションのためのソフトウェアリリース又はソフトウェアアーチファクトを配備するための命令を含む。
【0026】
データセンタ生成モジュール220は、ユーザ、例えばテナントのユーザから、データセンタのクラウドプラットフォーム非依存の宣言的仕様を受信する。データセンタのクラウドプラットフォーム非依存の宣言的仕様は、データセンタの様々なエンティティを指定する。一実施形態において、データセンタのクラウドプラットフォーム非依存の宣言的仕様は、データセンタエンティティの階層組織を含み、これにおいて、各データセンタエンティティは、1つ以上のサービス、1つ以上の他のデータセンタエンティティ、又は双方の組み合わせを含むことができる。
図4は、様々なタイプのデータセンタエンティティについてさらに詳細に説明する。データセンタ生成モジュール220は、プラットフォーム非依存の宣言的仕様及びターゲットクラウドプラットフォームを入力として受信し、ターゲットクラウドプラットフォームのためのクラウドプラットフォーム固有のメタデータ表現を生成する。データセンタ生成モジュール220は、生成されたクラウドプラットフォーム固有のメタデータ表現をターゲットクラウドプラットフォーム上に配備して、宣言的仕様に従ってターゲットクラウドプラットフォーム上にデータセンタを作成する。
【0027】
ソフトウェアリリース管理モジュール230は、入力として、(1)アーチファクトバージョンマップ225、及び(2)マスタパイプライン235を受信する。アーチファクトバージョンマップ225は、特定のデータセンタエンティティ上で配備のターゲットにされるソフトウェアリリース又は配備アーチファクトの特定のバージョンを識別する。アーチファクトバージョンマップ225は、データセンタエンティティを、データセンタエンティティ上に配備されるようターゲットにされるソフトウェアリリースバージョンにマッピングする。マスタパイプライン235は、データセンタ上のソフトウェアリリースに関連する動作、例えば、サービスの配備、サービスを破棄すること、サービスのためのリソースをプロビジョニングすること、サービスのためのリソースを破棄することなどのための命令を含む。
【0028】
マスタパイプライン235は、開発環境、テスト環境、カナリア環境、及び本番環境などの異なる環境のためのソフトウェアリリースに関連する動作を実行するための命令と、ソフトウェアリリースがある環境から別の環境にいつ昇格されるかを決定するための命令とを含むことができる。例えば、開発環境におけるソフトウェアリリースの配備が閾値を超える数のテストケースを実行した場合、ソフトウェアリリースは、さらなるテスト、例えば、システムレベル及び統合テストのためのテスト環境に昇格される。テスト環境におけるソフトウェアリリースがテストカバレッジの閾値をパスした場合、ソフトウェアリリースは、ソフトウェアリリースがトライアルベースでユーザの小さいサブセットに提供されるカナリア環境に昇格される。カナリア環境におけるソフトウェアリリースが閾値時間の間エラーなしで実行された場合、ソフトウェアリリースは、ソフトウェアリリースが全てのユーザに提供される本番環境に昇格される。
【0029】
ソフトウェアリリース管理モジュール230は、入力されたアーチファクトバージョンマップ225及びマスタパイプライン235をコンパイルして、ターゲットクラウドプラットフォームに送信されるクラウドプラットフォーム固有の詳細なパイプライン255を生成する。クラウドプラットフォーム固有の詳細なパイプライン255は、アーチファクトバージョンマップ225において指定されるとおり、データセンタエンティティ上にソフトウェアリリース又は配備アーチファクトの適切なバージョンを配備するための命令を含む。ソフトウェアリリース管理モジュール230は、入力のうちの1つに対する修正を受信することができる。例えば、ユーザは、入力のアーチファクトバージョンマップ225を修正し、同じマスタパイプライン235を提供してもよい。したがって、同じマスタパイプラインが使用されているが、異なるソフトウェアリリースがデータセンタエンティティ上に配備されている。ソフトウェアリリース管理モジュール230は、入力を再コンパイルして、新しいアーチファクトバージョンマップ225に従ってソフトウェアリリースのバージョンを配備する新しいクラウドプラットフォーム固有の詳細なパイプライン255を生成する。
【0030】
アーチファクトバージョンマップは、配備マニフェスト、バージョンマニフェスト、ソフトウェアリリースマップ、又はソフトウェアアーチファクトバージョンマップと呼ばれることもある。マスタパイプラインは、マスタ配備パイプライン又はマスタオーケストレーション(orchestration)パイプラインと呼ばれることもある。
【0031】
図2Bは、一実施形態による、データセンタにソフトウェアアーチファクトを配備するための全体的なプロセスを示す。
図2Bは、様々なデータセンタエンティティを含むデータセンタ265のレイアウトを示す。
図2Bに示されるように、アーチファクトバージョンマップ225は、データセンタ265の異なるデータセンタエンティティ275上でリリースのターゲットにされるソフトウェアの異なるバージョンを識別する。マスタパイプラインは、データセンタの様々な環境を通じての配備アーチファクトのフローを表す。ソフトウェアリリース管理モジュール230は、マスタパイプライン235内の情報をアーチファクトバージョンマップ225と組み合わせて、アーチファクトバージョンマップ225に従ってデータセンタエンティティ上のソフトウェアアーチファクトの適切なバージョンをマッピングするクラウドプラットフォーム固有の詳細なパイプライン255を決定する。
【0032】
図3は、1つの実施形態による、ソフトウェアリリース管理モジュール230のアーキテクチャを示すブロック図である。ソフトウェアリリース管理モジュール230は、解析モジュール310、パイプライン生成器モジュール320、アーチファクトバージョンマップストア330、パイプラインストア340、フォールトトレラント継続的配信モジュール350、及びパイプライン実行エンジン360を含む。他の実施形態が、本明細書で
図3に示されるものより多くの、少ない、又は異なるモジュールを含んでもよい。
【0033】
解析モジュール310は、データセンタの宣言的仕様、アーチファクトバージョンマップ225、及びマスタパイプライン235を含む様々なタイプのユーザ入力を解析する。解析モジュール310は、処理された入力のデータ構造及びメタデータ表現を生成し、生成されたデータ構造及びメタデータ表現を、さらなる処理のためにソフトウェアリリース管理モジュール230の他のモジュールに提供する。
【0034】
メタデータストア340は、ソフトウェアリリース管理モジュール230により生成されるデータセンタの様々な変換されたメタデータ表現を記憶する。変換されたメタデータ表現は、データセンタの現在のバージョンにおいて問題に直面した場合に、前のバージョンへのロールバックを実行するために使用され得る。変換されたメタデータ表現は、変換プロセスの様々なステージにおいて、検証、監査、統制などのために使用されてもよい。
【0035】
パイプライン生成器モジュール320は、入力として受信したアーチファクトバージョンマップと共にマスタパイプラインを処理して、ターゲットクラウドプラットフォームのための詳細なパイプラインを生成する。パイプラインは、アーチファクトバージョンマップに従ってクラウドプラットフォーム上に様々なサービスのためのソフトウェアリリースのバージョンを配備するために、サービスをプロビジョニングし又はアプリケーションを配備するための命令を含むステージを含む。アーチファクトバージョンマップストア330は、ユーザから受信したアーチファクトバージョンマップを記憶し、パイプラインストア340は、マスタパイプラインと、パイプライン生成器モジュール320により生成されたパイプラインとを記憶する。
【0036】
フォールトトレラント継続的配信モジュール350は、フォールトトレラント方式でクラウドプラットフォーム内に構成されたデータセンタへのソフトウェアアーチファクトの継続的配信を管理する。フォールトトレラント継続的配信モジュール350の詳細は、
図12にさらに示され、
図12に関連して説明される。
【0037】
パイプライン実行エンジン360は、パイプライン生成器モジュール320により生成された詳細なパイプラインを実行する。一実施形態において、パイプライン実行エンジン360は、ソフトウェアをリリース/配備するためのパイプラインを実行するSPINNAKERなどのシステムである。パイプライン実行エンジン360は、パイプラインを解析し、ターゲットクラウドコンピューティングプラットフォーム上でパイプラインの各ステージを実行する。
【0038】
クラウドプラットフォームベースのデータセンタ生成
図4は、1つの実施形態による、データセンタの宣言的仕様の一例を示す。宣言的仕様410は、複数のデータセンタエンティティを含む。データセンタエンティティは、あるデータセンタエンティティタイプのインスタンスであり、各データセンタエンティティタイプの複数のインスタンスが存在することができる。データセンタエンティティの例には、データセンタ、サービスグループ、サービス、チーム、環境、及びスキーマが含まれる。
【0039】
宣言的仕様410は、サービスグループ、サービス、チーム、環境、及びスキーマを含む様々なタイプのデータセンタエンティティの定義を含む。宣言的仕様は、データセンタの1つ以上のインスタンスを含む。以下は、様々なタイプのデータセンタエンティティ及びそれらの例の説明である。これらの例は例示的なものであり、データセンタエンティティの属性のいくつかを示している。他の実施形態が、異なる属性を含んでもよく、同じ機能を有する属性が、本明細書に示されるものと異なる名前を与えられてもよい。一実施形態において、宣言的仕様は、階層オブジェクト、例えば、所定のスキーマに準拠するJSON(Javascript(登録商標) object notation)を使用して指定される。
【0040】
サービスグループ520は、1つの実施形態によれば、独立して構築及び配信され得る1つ以上のコンピューティングシステムにより提供される能力及び特徴及びサービスのセットを表す。サービスグループは、論理サービスグループ、機能ユニット、又は有界コンテキストと呼ばれることもある。サービスグループ520はまた、1つ以上のコンピューティングシステムにより提供されるまとまりのある(cohesive)技術的ユースケース機能のセットの、サービスのセットと見なされる場合がある。サービスグループ520は、セキュリティ境界を強制する。サービスグループ520は、修正のための範囲を定義する。したがって、サービスグループ520内の1つ以上のコンピューティングシステムにより提供される能力、特徴、又はサービスなどのエンティティに対する任意の修正は、必要に応じて又は適切に、サービスグループ内のエンティティに伝搬することができるが、サービスグループ520の有界定義の外側に存在するエンティティには伝搬しない。データセンタは、複数のサービスグループ520を含むことができる。サービスグループ定義は、名前と、記述と、識別子と、スキーマバージョンと、サービスインスタンスのセットとを含む属性を指定する。サービスグループの一例は、ブロックチェーン機能を提供することに使用されるサービスのセットを含むブロックチェーンサービスグループである。同様に、セキュリティサービスグループは、セキュリティ特徴を提供する。ユーザインターフェースサービスグループは、特定のユーザインターフェース特徴の機能を提供する。共有文書サービスグループは、ユーザにわたって文書を共有する機能を提供する。同様に、いくつかの他のサービスグループがあってもよい。
【0041】
サービスグループは、データセンタを開発することに関心のあるテナント又はユーザが、それらが容易に使用することができるサービスグループのライブラリを有するように、仕様の再利用性をサポートする。サービスグループのサービスの周りの境界は、とりわけ、セキュリティ懸念及びネットワーク懸念に基づく。サービスグループは、サービスグループとの対話を実行するためのプロトコルに関連づけられる。一実施形態において、サービスグループは、API(アプリケーションプログラミングインターフェース)及びそれらのAPIを実装するサービスの集合を提供する。さらに、サービスグループは、サブストレート非依存である。サービスグループは、サービスグループ内のサービスに対して被害半径範囲(blast radius scope)を提供し、それにより、サービスグループ内のサービスのいかなる障害もサービスグループ内のサービスに限定された影響を有し、サービスグループ外には最小限の影響を有する。
【0042】
以下は、サービスグループの仕様の一例である。サービスグループは、サービスグループのメタデータを表す様々な属性を指定し、サービスグループ内のサービスのセットを含む。本明細書では示されていない、サービスグループに対して指定される他のタイプのメタデータがあってもよい。
【表1】
【0043】
上記の例に示すように、サービスグループは、クラスタのセットを指定することができる。クラスタは、コンピューティングノードのセット、例えば、サーバのセット、仮想マシンのセット、又はコンテナ(KUBERNETESコンテナなど)のセットを表す。物理サーバは、複数のコンテナを実行することができ、これにおいて、各コンテナは、ファイルシステム、CPU、メモリ、プロセス空間などの、その独自の持ち分を有する。
【0044】
サービスグループは、サービスのセットを指定する。サービスグループは、サービスのためのクラスタを指定することができ、それにより、クラウドプラットフォーム上に配備されたデータセンタは、コンピューティングノードのクラスタを実行し、宣言的仕様に含まれる場合に、指定されたマッピングに基づいてサービスをクラスタにマッピングする。例えば、上に示したサービスグループの例では、サービスインスタンスserviceinstance0002は、クラスタインスタンスcluster1上で動作するように指定されている。
【0045】
サービスグループは、セキュリティグループを指定することができ、各セキュリティグループは、互いに対話することを許可されているサービスのセットを指定する。セキュリティグループ外のサービスは、セキュリティグループ内のサービスと通信するために、さらなる認証をパスすることを要求される。代替的に、セキュリティグループ内のサービスは、互いに対話するために1つのプロトコルを使用し、セキュリティグループ外のサービスは、セキュリティグループ内のサービスと対話するために強化された認証を必要とする異なるプロトコルを使用する。したがって、セキュリティグループは、サービスが互いにどのように対話することができるかを決定するポリシーを指定する。セキュリティポリシーは、セキュリティポリシーが適用可能である1つ以上の環境を指定することができる。例えば、セキュリティポリシーpolicy1は、特定の環境env1(例えば、本番環境)に適用することができ、別のセキュリティポリシーpolicy2は、別の環境env2(例えば、開発環境)に適用することができる。セキュリティポリシーは、サービスグループタイプに対して、又は特定のサービスタイプに対して指定されてもよい。
【0046】
一実施形態において、セキュリティポリシーは、様々な属性に基づいてサービスグループをフィルタリングするための表現を指定し、それにより、セキュリティポリシーは、サービスグループのフィルタリングされたセットに適用可能である。例えば、セキュリティポリシーは、フィルタリングされたセットにより識別されるサービスグループのセットについて、ホワイトリスト化されているIP(インターネットプロトコル)アドレスのリストを指定することができ、したがって、これらのコンピューティングシステムは、サービスグループ、又はサービスグループ内のサービスの特定のセットへのアクセスを許可される。
【0047】
一実施形態において、セキュリティポリシーは、サービスグループについて、ソースサービスのセット及び宛先サービスのセットを指定することができる。特定のサービスに対するソースサービスは、この特定のサービスと接続することを許可されているセキュリティグループ外のサービスを指定する。特定のサービスに対する宛先サービスは、この特定のサービスが接続する必要があるセキュリティグループ外のサービスを指定する。プロビジョニング及び配備の間、データセンタ生成モジュールは、クラウドプラットフォーム固有の特徴及びネットワーク機能を使用して特定のネットワークポリシーを実装するクラウドプラットフォームのための命令を生成し、それにより、ネットワークポリシーは、宣言的仕様において指定されたセキュリティポリシーを実装する。
【0048】
セルと呼ばれるデータセンタエンティティは、垂直方式で互いに対話するサービスのセットを表し、セルのさらなるインスタンス又はコピー、すなわちサービスのセットのコピーによりスケーリングすることができる。セルの複数のインスタンスを作成することは、システムが、互いに対話するサービスのセットをスケーリングすることを可能にする。データセンタインスタンスは、1つ以上のセルを含むことができる。各セルは、1つ以上のサービスを含むことができる。データセンタは、サービスグループ又はセルのインスタンスを含むことができる。
【0049】
サービス定義は、サービスのタイプ、例えば、データベースサービス、ロードバランササービスなどのメタデータを指定する。メタデータは、サービスの名前、サービスの記述、サービスのドキュメンテーションの場所、サービスに関連づけられた任意のサブサービス、サービスの所有者、サービスに関連づけられたチーム、構築時にこのサービスが依存した他のサービスを指定する、サービスの構築依存関係、この特定のサービスが開始されるときに実行されているべき他のサービスを指定する、サービスの開始依存関係、権限を与えられたクライアント、サービスに関連づけられたDNS(ドメインネームサーバ)名、サービスステータス、サービスのサポートレベルなどを含む、サービスの様々な属性を記述する。サービス定義は、異なる通信プロトコルのためにサービスがリッスンすることができるポートを指定するリッスンポート属性を指定し、例えば、サービスは、UDPプロトコルについてポートp1、TCPプロトコルについてポートp2上でリッスンすることができる。データセンタ内の他のサービスは、サービスにより指定されたポートを介してサービスと対話することができる。
【0050】
サービス定義は、宛先エンドポイント、例えば、サービスが指定された外部URL(ユニフォームリソースロケータ)へのアクセスを必要とすることを指定する外部URLを指定する、属性アウトバウンドアクセスを指定する。配備の間、データセンタ生成モジュールは、このサービスタイプのインスタンスが外部URLへの要求されたアクセスと共に提供されるように、クラウドプラットフォームがアクセスポリシーを実装することを保証する。
【0051】
アウトバウンドアクセス仕様は、アウトバウンドアクセスが適用可能であるサービスのための1つ以上の環境タイプを識別することができる。例えば、エンドポイントのセットS1に対するアウトバウンドアクセスは、特定の環境env1(例えば、本番環境)に適用することができ、エンドポイントのセットS2に対するアウトバウンドアクセスは、別の環境env2(例えば、開発環境)に適用することができる。
【0052】
【0053】
チーム定義450は、チームメンバ名及びチームの他の属性、例えば、名前、電子メール、通信チャネルなどを含む。以下は、チーム定義の一例である。サービスは、そのサービスに対して行われる修正を担当する1つ以上のチームに関連づけることができる。したがって、そのサービスに対して行われるいかなる修正も、チームにより承認される。サービスは、クラウドプラットフォームに配備された後にサービスの保守を担当するチームに関連づけられてもよい。チームが、サービスグループに関連づけられてもよく、対応して、そのサービスグループの全てのサービスに関連づけられる。例えば、チームは、サービスグループに対する任意の変更、例えば、サービスグループの一部であるサービスを承認する。チームは、データセンタに関連づけられてもよく、したがって、データセンタ内の全てのサービスグループに関連づけられる。データセンタレベルで指定されたチーム関連づけは、データセンタ内の全てのサービスグループにデフォルトチームを提供し、さらに、サービスグループ内の全てのサービスにデフォルトチームを提供する。
【0054】
一実施形態によれば、機能レベルで指定されたチーム関連づけは、データセンタレベルで提供されたチーム関連づけをオーバーライドする。同様に、サービスレベルで指定されたチーム関連づけは、サービスグループレベル又はデータセンタレベルで指定されたチーム関連づけにより提供されている可能性のあるデフォルトをオーバーライドする。チームは、チームに関連づけられたデータセンタエンティティに対して特定のアクションがどのように取られるかを決定することができる。チーム関連づけは、さらに、コンパイラによりクラウドプラットフォームに対するデータセンタの最終的なメタデータ表現を生成するため、及びクラウドプラットフォーム上にデータセンタをプロビジョニング及び配備するために作成される、クラウドプラットフォーム上のアカウントの数を決定する。データセンタ生成モジュール210は、クラウドプラットフォームにおける1つ以上のユーザアカウントを作成し、チームメンバへのアクセスをユーザアカウントに提供する。したがって、チームメンバは、チームに関連づけられたデータセンタエンティティに関連づけられた特定のアクション、例えば、データセンタエンティティに対して識別され得る問題をデバッグ及びテストすることを含む、データセンタエンティティへの構造的変更、又はそれが配備されているときのデータセンタエンティティの保守を行い又は承認することを、実行することを許可される。
【0055】
従来の技法は、設計プロセス全体を通して同じチームをデータセンタに関連づけ、それにより、組織構造がデータセンタ又はサービスグループの設計への影響を有する結果をもたらす。実施形態は、データセンタエンティティを定義する構成からチーム定義を切り離し、それにより、データセンタエンティティの設計及びアーキテクチャに対するチームの影響を低減させる。
【表3】
【0056】
環境定義460は、データセンタにより表されるシステム環境のタイプ、例えば、開発環境、ステージング環境、テスト環境、又は本番環境を指定する。スキーマ定義470は、特定のデータセンタエンティティ定義のシンタックスを指定するスキーマを指定する。スキーマ定義470は、様々なデータセンタエンティティ定義を検証するために使用される。データセンタ生成モジュールは、環境に基づいてクラウドプラットフォーム固有のメタデータ表現におけるデータセンタのセキュリティポリシーを決定する。例えば、セキュリティポリシーの特定のセットが環境env1に適用可能であり得、セキュリティポリシーの異なるセットが環境env2に適用可能であり得る。例えば、セキュリティポリシーは、開発環境と比較して、本番環境においてより一層制限されたアクセスを提供する。セキュリティポリシーは、セキュリティトークンが特定の目的のために存在することを許可される時間の長さを指定することができる。例えば、長いアクセストークン(例えば、1週間にわたるアクセストークン)が開発環境において許可され得るが、より一層短い寿命(例えば、数時間)を有するアクセストークンが本番環境において使用され得る。アクセストークンは、ユーザ又はサービスに特定のクラウドプラットフォームリソースへのアクセスを許可することができる。
【0057】
データセンタ定義420は、データセンタインスタンスの属性及びコンポーネントを指定する。宣言的仕様は、複数のデータセンタインスタンスを指定することができる。データセンタ定義420は、データセンタの名前、記述、環境のタイプ、サービスグループのセット、チーム、ドメインネームサーバなどを含む属性を指定する。データセンタ定義は、スキーマ定義を指定することができ、データセンタ定義から生成された任意のメタデータ表現が、指定されたスキーマ定義に対して検証される。データセンタは、他のサービスがデータセンタ内で機能することを可能にするコアサービス及び能力のセットを含む。データセンタのインスタンスは、特定のクラウドプラットフォーム内に配備され、特定の環境タイプ、例えば、開発、テスト、ステージング、本番などに関連づけられ得る。
【0058】
以下は、データセンタインスタンスの一定義である。データセンタインスタンス定義は、データセンタインスタンスに含まれるサービスグループのリストと、データセンタの環境、データセンタ識別子、名前、地理的領域を表す領域、データセンタに関連づけられた1つ以上のチーム、及びスキーマバージョンを含む他の属性とを含む。
【表4】
【0059】
図5は、1つの実施形態による、宣言的仕様に基づいてクラウドプラットフォーム上に作成されたいくつかの例示的なデータセンタを示す。データセンタ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を含む。サービスグループは、同じサービスタイプのサービスの複数のインスタンスを含むことができる。
【0060】
データセンタ生成モジュール220は、以下のステップを使用して宣言的仕様に基づいてクラウドプラットフォーム上にデータセンタを作成する。データセンタ生成モジュール210は、データセンタの、クラウドプラットフォーム非依存の宣言的仕様を受信する。クラウドプラットフォーム非依存の宣言的仕様は、マルチテナントシステムのテナントのためのものでもよく、あるいは任意の他のコンピューティングシステム、例えばオンラインシステムのためのものでもよい。クラウドプラットフォーム非依存の宣言的仕様は、クラウドプラットフォームインフラストラクチャ言語を使用して指定される。データセンタのクラウドプラットフォーム非依存の宣言的仕様は、複数のクラウドプラットフォームのうちのいずれかにデータセンタを生成するように構成される。
【0061】
データセンタ生成モジュール210は、クラウドプラットフォーム非依存の宣言的仕様に基づいてデータセンタを作成するためのターゲットクラウドプラットフォームを識別する情報を受信する。ターゲットクラウドプラットフォームは、複数のクラウドプラットフォーム、例えば、AWS、AZURE、GCP等のうちのいずれかとすることができる。データセンタ生成モジュール210は、ターゲットクラウドプラットフォームに接続するための情報、例えば、ターゲットクラウドプラットフォームとの接続を作成するためのクレデンシャルをさらに受信する。クラウドプラットフォームは、クラウドコンピューティングプラットフォームと呼ばれることもある。
【0062】
データセンタ生成モジュール210は、クラウドプラットフォーム非依存の宣言的仕様をコンパイルして、ターゲットクラウドコンピューティングプラットフォーム上にデータセンタを作成するためのクラウドプラットフォーム固有のデータセンタ表現を生成する。例えば、クラウドプラットフォーム固有のデータセンタ表現は、ターゲットクラウドコンピューティングプラットフォームに固有であるユーザアカウント、ネットワークアドレスなどを指すことができる。
【0063】
データセンタ生成モジュール210は、ターゲットクラウドコンピューティングプラットフォーム上にデータセンタを配備するための命令とともに、プラットフォーム固有のデータセンタ表現を送信する。ターゲットクラウドコンピューティングプラットフォームは、プラットフォーム固有のデータセンタ表現に従ってデータセンタを生成するために、ターゲットクラウドコンピューティングプラットフォームのコンピューティングリソースを構成するための命令を実行する。データセンタ生成モジュール210は、クラウドコンピューティングプラットフォームにより構成されたデータセンタのコンピューティングリソースへのアクセスをユーザに提供する。例えば、データセンタがマルチテナントシステムのテナントのために作成された場合、テナントに関連づけられたユーザはデータセンタへのアクセスを提供される。
【0064】
図6は、1つの実施形態による、宣言的仕様に基づくクラウドプラットフォーム上のデータセンタの生成を示すブロック図である。データセンタ生成モジュール210は、入力として、クラウドプラットフォーム非依存の宣言的仕様610を受信する。クラウドプラットフォーム非依存の宣言的仕様610は、ユーザにより増分的に修正されている宣言的仕様の一バージョンでもよい。データセンタ生成モジュール210は、クラウドプラットフォーム非依存の宣言的仕様610の特定のバージョンを処理する。クラウドプラットフォーム非依存の宣言的仕様610は、いかなる特定のターゲットクラウドプラットフォームに対しても指定されていないため、データセンタ生成モジュール210は、クラウドプラットフォーム非依存の宣言的仕様610に基づいて任意のターゲットクラウドプラットフォーム上にデータセンタを構成することができる。
【0065】
データセンタ生成モジュール210は、クラウドプラットフォーム非依存の宣言的仕様610を処理して、データセンタのためのクラウドプラットフォーム非依存の詳細なメタデータ表現620を生成する。クラウドプラットフォーム非依存の詳細なメタデータ表現620は、クラウドプラットフォーム非依存の宣言的仕様610において指定されたデータセンタエンティティの各インスタンスの詳細を定義する。データセンタ生成モジュール210は、データセンタエンティティインスタンス、例えば、サービスインスタンスのための一意の識別子を作成する。
【0066】
一実施形態において、クラウドプラットフォーム非依存の詳細なメタデータ表現620は、データセンタエンティティタイプのインスタンスの配列、例えば、特定のサービスグループタイプのサービスグループインスタンスの配列を含む。各サービスグループインスタンスは、サービスインスタンスの配列を含む。サービスインスタンスは、サービスインスタンスに関連づけられた特定のアクションを実行することを許可されているユーザのチームの詳細をさらに含むことができる。チームの詳細は、データセンタ生成モジュール210によるプロビジョニング及び配備の間に、例えば、サービスインスタンスのためのユーザアカウントを作成し、チームのメンバがユーザアカウントにアクセスすることを可能にするために使用される。
【0067】
クラウドプラットフォーム非依存の詳細なメタデータ表現620は、データセンタエンティティの各インスタンスの属性を含む。したがって、データセンタエンティティの各インスタンスの記述は、全ての詳細を含むように拡張される。結果として、データセンタのクラウドプラットフォーム非依存の詳細なメタデータ表現620は、クラウドプラットフォーム非依存の宣言的仕様610より大幅に大きい可能性がある。例えば、クラウドプラットフォーム非依存の宣言的仕様610は数千行の仕様であり得、一方、クラウドプラットフォーム非依存の詳細なデータセンタ表現620は数百万行の生成されたコードであり得る。結果として、データセンタ生成モジュール210は、クラウドプラットフォーム非依存の詳細なメタデータ表現620を不変(immutable)として保持し、すなわち、ひとたび表現が完成されると、表現に対して修正は実行されない。例えば、データセンタエンティティの任意の更新、削除、又は追加が実行される必要がある場合、それらはクラウドプラットフォーム非依存の宣言的仕様610に対して実行される。
【0068】
データセンタ生成モジュール210は、データセンタがプロビジョニング及び配備されることを予期されたターゲットクラウドプラットフォームを受信し、データセンタの、クラウドプラットフォーム固有の詳細なメタデータ表現630を生成する。例えば、データセンタ生成モジュール210は、ターゲットクラウドプラットフォームと対話して、特定のエンティティ(又は、リソース)、例えば、ユーザアカウント、仮想プライベートクラウド(VPC)、及びVPC上のサブネットなどのネットワーキングリソース、クラウドプラットフォーム内のエンティティ間の様々な接続などを生成する。データセンタ生成モジュール210は、ターゲットクラウドプラットフォームにおいて作成されるリソースのリソース識別子、例えば、ユーザアカウント名、VPC ID等を受信し、これらをクラウドプラットフォーム非依存の詳細なメタデータ表現620に組み込んで、データセンタの、クラウドプラットフォーム固有のメタデータ表現630を得る。一実施形態において、データセンタ生成モジュール210は、サービスグループとサービスとの所与の組み合わせについて、各チームに対してクラウドプラットフォーム上に1つの一意のユーザアカウントを作成する。ユーザアカウントは、そのサービスグループのその特定のサービスとの対話を実行するため、例えば、デバッグするため、アラートを受信するためなどで、チームにより使用される。
【0069】
ターゲットクラウドプラットフォームは、クラウドプラットフォーム固有の詳細なメタデータ表現630を処理するためにいくつかのステップを実行することができる。例えば、クラウドプラットフォーム非依存の宣言的仕様は、サービス間の許可された対話を指定することができる。これらの許可された対話は、クラウドプラットフォーム固有の詳細なメタデータ表現630において指定され、クラウドプラットフォームのネットワークポリシーとして実装される。クラウドプラットフォームはさらに、宣言的仕様に従ってデータセンタを実装するために、ネットワークストラテジを実装するためのセキュリティグループを作成してもよい。
【0070】
クラウドプラットフォーム非依存の宣言的仕様は、サービス間の依存関係、例えば、特定のサービスが開始されるときに実行されているべき全てのサービスを列挙する各サービスの開始依存関係を指定する。データセンタ生成モジュール220は、これらの依存関係を記述する情報を含むデータセンタのクラウドプラットフォーム固有の詳細なメタデータ表現を生成し、それにより、サービスを配備するための命令は、クラウドプラットフォームが依存関係により指定された順序でサービスを開始することを保証し、それにより、各サービスについて、このサービスが開始されるとき、このサービスの前に開始される必要があるサービスは実行されている。したがって、サービス間の依存関係は依存関係グラフを表し、クラウドプラットフォームは、依存関係グラフに基づいて決定された順序でサービスの実行を開始し、それにより、サービスAがサービスBに依存する場合、サービスAが開始される前にサービスBが開始される。
【0071】
データセンタ生成モジュール220は、サービスが安全な通信チャネルを介して他のサービスにアクセスすることを可能にするユーザアカウント間の信頼関係を作成する。これらの信頼関係は、宣言的仕様に基づいて、例えば、サービスに対して指定されたアウトバウンドアクセス属性に基づいて生成された、サブストレート固有の命令を使用して生成される。データセンタ生成モジュール220は、例えば、アウトバウンドアクセス、セキュリティグループ、セキュリティポリシーなどの宣言的仕様の構成により指定されるように、サービスグループ及びサービスにわたる対話及びアクセスを制御するクラウドプラットフォーム固有のメカニズムに基づくネットワークポリシーを作成するために、クラウドプラットフォームに命令を送信する。
【0072】
データセンタ生成モジュール210は、クラウドプラットフォーム固有のメタデータ表現630を、表現が生成された特定のターゲットクラウドプラットフォーム上に配備する。データセンタ生成モジュール210は、生成されたメタデータ表現を使用して、ポリシー検証、フォーマット検証などを含む様々な検証を実行することができる。
【0073】
クラウドプラットフォーム非依存の宣言的仕様610は、宣言されたデータセンタ表現と呼ばれてもよく、クラウドプラットフォーム非依存の詳細なメタデータ表現620は、データセンタの導出されたメタデータ表現と呼ばれてもよく、クラウドプラットフォーム固有のメタデータ表現630は、データセンタのハイドレートされた(hydrated)メタデータ表現と呼ばれてもよい。
【0074】
データセンタにおけるソフトウェアアーチファクトの配備のための全体的なプロセス
図7は、一実施形態による、クラウドプラットフォーム上に構成されたデータセンタ上のソフトウェアアーチファクトの配備のためのパイプラインを生成するための全体的なプロセスを示す。データセンタ生成モジュールは、ターゲットクラウドプラットフォーム上に1つ以上のデータセンタを生成する(710)。各データセンタは、クラウドプラットフォーム非依存の宣言的仕様から生成され、データセンタエンティティの階層を有する。
【0075】
ソフトウェアリリース管理モジュール230は、クラウドプラットフォーム非依存のマスタパイプラインを生成する(720)。一実施形態において、クラウドプラットフォーム非依存のマスタパイプラインは、データセンタの環境、例えば、開発環境、テスト環境、カナリア環境、及び本番環境に対応するステージを含む。マスタパイプラインは、開発環境、テスト環境、ステージング環境、又は本番環境などの様々な環境にわたる漸進的な及び/又は条件付きの配備のシーケンスを構成する。マスタパイプラインは、ソフトウェアアーチファクトのイメージの配信によりトリガされてもよく、タイプ開発の環境におけるビルドを配備するためのステージ又は命令を含む。構築されたソフトウェアアーチファクトは、最終的に本番環境に配備される前に、1つ以上のテスト環境、続いて1つ以上のカナリア環境に、条件付きで昇格される。マスタパイプラインは、環境にわたる特定のオーケストレーションを表すために、ユーザ、例えばサービス所有者によりカスタマイズされてもよい。マスタパイプラインは、1つのステージから次のステージに移動するための特定の昇格基準を捕捉するためにカスタマイズされてもよい。例えば、マルチテナントシステムの異なるテナントは、異なる方法でマスタパイプラインをカスタマイズすることができる。一実施形態において、マスタパイプラインは、デフォルトで、サービスのためのソフトウェアアーチファクトについて、ソフトウェアの最新バージョンを使用し、このバージョンを様々な環境にわたって構築及び配備する。ユーザは、アーチファクトバージョンマップを使用して、ソフトウェアアーチファクトの特定のバージョンが特定のデータセンタエンティティ上に配備されることを保証することができる。
【0076】
一実施形態において、データセンタ内に配備された各サービスは、データセンタの宣言的仕様により定義されるように、データセンタエンティティから生成されたクラウドプラットフォーム非依存のマスタパイプライン、例えば、データセンタインスタンスのためのマスタパイプライン、サービスグループのためのマスタパイプライン、セルのためのマスタパイプライン、サービスのためのマスタパイプラインなどを有する。マスタパイプラインは、ソフトウェアアーチファクトのイメージの配信でトリガされ得る。マスタパイプラインは、サービス所有者により制御される継続的配備を実装することができる。マスタパイプラインは、データセンタインスタンス所有者により所有され又はリリース所有者により所有されるオンデマンド配備を実装してもよい。
【0077】
マスタパイプラインの特定の部分が、ユーザにより、例えば、データセンタ上にサービスを配備しているマルチテナントシステムのテナントによりカスタマイズされてもよい。例えば、昇格決定パイプラインが、どのテストケースが実行されるか及び閾値は何かを決定するために、テナントによりカスタマイズされてもよい。ソフトウェアリリース管理モジュール230は、クラウドプラットフォーム非依存のマスタパイプラインの1つのステージから別のステージへソフトウェアアーチファクトを昇格させるためのロジックに対するカスタマイズを受信する(730)。
【0078】
ソフトウェアリリース管理モジュール230は、クラウドプラットフォーム非依存のマスタパイプラインをコンパイルして、データセンタのためのクラウドプラットフォーム非依存の宣言的仕様により指定されるとおりの各データセンタのデータセンタエンティティの階層に固有であるクラウドプラットフォーム固有の詳細な配備パイプラインを生成する(740)。
【0079】
ソフトウェアリリース管理モジュール230はさらに、データセンタ上に配備されたサービスの1つ以上の特徴をリリースするためのコードを受信する(750)。ソフトウェアリリース管理モジュール230は、クラウドプラットフォーム固有の詳細な配備パイプラインを実行して、受信したコードに基づいてソフトウェアアーチファクトを配備する(760)。
【0080】
図8は、一実施形態による、例示的なマスタパイプライン800を示す。マスタパイプラインは、様々なデータセンタ環境にわたる漸進的な条件付き配備を表すステージのシーケンスを表す。
図8は、開発環境、テスト環境、カナリア環境、及び本番環境を含むデータセンタの異なる環境のステージを示す。各ステージはさらに、そのステージのために実行されるパイプラインを表す。したがって、マスタパイプライン800は、開発環境パイプライン810を含み、該開発環境パイプラインはテスト環境パイプライン820に供給し(feeds into)、該テスト環境パイプラインはカナリア環境パイプライン830に供給し、該カナリア環境パイプラインは本番環境パイプライン840に供給する。
【0081】
各ステージにおけるパイプラインは、より低いレベルのパイプラインを含む階層パイプラインである。例えば、開発環境パイプライン810は、データセンタの宣言的仕様において開発環境を有するものとして指定されたデータセンタの数に応じてデータセンタパイプラインD11、D12、・・・に供給する開発マスタパイプラインを含む。
【0082】
テスト環境パイプライン820は、データセンタの宣言的仕様においてテスト環境を有するものとして指定されたデータセンタの数に応じてデータセンタパイプラインD21、D22、・・・に供給するテストマスタパイプラインを含む。
【0083】
カナリア環境パイプライン820は、データセンタの宣言的仕様においてカナリア環境を有するものとして指定されたデータセンタの数に応じてデータセンタパイプラインD31、D32、・・・に供給するカナリアマスタパイプラインを含む。
【0084】
本番環境パイプライン820は、データセンタの宣言的仕様においてテスト環境を有するものとして指定されたデータセンタの数に応じてデータセンタパイプラインD21、D22、・・・に供給する本番マスタパイプラインを含む。
【0085】
各環境パイプライン810、820、830は、昇格決定パイプライン815a、815b、815cをそれぞれ含む。環境パイプラインのデータセンタパイプラインの出力は、ソフトウェアアーチファクトが次のステージへの昇格の準備ができているかどうかを判断する昇格決定パイプライン815により収集される。昇格決定パイプライン815は、データセンタにより取得されたテストケース結果に基づいて、サービスのためのソフトウェアアーチファクトが次のステージに昇格されるかどうかを判断することができる。例えば、閾値を超えるテストケースにパスした場合、昇格決定パイプライン815は、ソフトウェアアーチファクトを次のステージに昇格させる。最後の環境ステージ、例えば、本番環境パイプラインは、ソフトウェアアーチファクトが昇格される必要がある後続のステージがないため、昇格決定パイプラインを有しなくてもよい。
図8に示すように、開発環境パイプラインの昇格決定パイプライン815aは、ソフトウェアアーチファクトを開発ステージからテストステージに昇格させるかどうかを判断し、テスト環境パイプラインの昇格決定パイプライン815bは、ソフトウェアアーチファクトをテストステージからカナリアステージに昇格させるかどうかを判断し、カナリア環境パイプラインの昇格決定パイプライン815cは、ソフトウェアアーチファクトをカナリアステージから本番ステージに昇格させるかどうかを判断する。
【0086】
マスタパイプラインは、複数のパイプライン、例えば、ターゲットクラウドプラットフォームのリソースをプロビジョニングするためのプロビジョニングパイプラインと、データセンタエンティティ上にソフトウェアアーチファクトを配備するための配備パイプラインとを含む。各パイプラインは、ステージのシーケンスを含み、各ステージは、データセンタのプロビジョニング及び配備に向けてターゲットクラウドプラットフォームにより実行される必要がある1つ以上のアクションを表す。データセンタ生成モジュール210は、データセンタエンティティ上にソフトウェアアーチファクトのバージョンを配備するための詳細なパイプラインを生成する。
【0087】
一実施形態において、パイプライン生成器モジュール320は、変数を含むパイプラインテンプレートを使用して詳細なパイプラインを生成する。パイプラインテンプレートは、パイプライン内の変数の特定の値を提供することによりパイプラインに変換される。テンプレートからパイプラインを生成する処理は、パイプラインテンプレートのハイドレーション(hydration)と呼ばれる。パイプラインテンプレートは、配備において使用される実際の値のためのプレースホルダとして使用されるテンプレート表現を含む。例えば、テンプレート表現は、ターゲット固有のパラメータ値又は表現により置換され得る。パイプラインテンプレートを異なるターゲットに対してハイドレートすることにより、複数のパイプラインインスタンスを生成することができる。テンプレート変数は、所与のターゲットに固有のパイプラインインスタンスを生成するためにそのターゲットのための特定の値で置換され得るパラメータを表す。例えば、テンプレート変数「account_id」は、ハイドレーションの間、account_idの実際の値、例えば「12345」で置換される場合がある。
【0088】
1つの実施形態において、パイプライン生成器モジュール320は、データセンタのデータセンタエンティティの階層に基づいて階層方式でパイプラインを生成する。例えば、データセンタは、データセンタ、サービスグループ、サービスなどを含む異なるタイプのデータセンタエンティティを含む。データセンタエンティティは、1つ以上の子データセンタエンティティを含むことができる。例えば、データセンタは、子データセンタエンティティとして1つ以上のサービスグループを含む。サービスグループは、子データセンタエンティティとして1つ以上のサービスを含む。したがって、データセンタ生成モジュール210は、階層のあるレベルにおけるデータセンタエンティティで開始し、そのレベルの下のデータセンタエンティティのパイプラインを生成する。例えば、パイプライン生成器モジュール320は、データセンタレベルで開始し、データセンタ内のサービスグループのためのパイプラインを生成する。各サービスグループについて、パイプライン生成器モジュール320は、サービスグループ内のサービスのためのパイプラインを生成する。
【0089】
1つの実施形態によるパイプラインを実行するプロセスは、以下のとおりである。ソフトウェアリリース配備モジュール230は、ターゲットクラウドプラットフォーム内のデータセンタエンティティのセット上にソフトウェアアーチファクトを配備する要求を受信する。ソフトウェアリリース配備モジュール230は、1つ以上のデータセンタのためのマスタパイプラインを実行する。ソフトウェアリリース配備モジュール230は、各データセンタの各サービスグループのための集約パイプラインを実行する。集約パイプラインは、サービスグループ内のサービスのためのパイプラインを含む。各サービスグループ内の各サービスについて、パイプラインは、パイプラインの全てのステージを実行することにより実行される。プロビジョニングパイプラインの実行は、サービスのためのリソースのプロビジョニングを結果としてもたらし、配備パイプラインは、ターゲットクラウドプラットフォームにおけるサービスの配備をもたらす。
【0090】
図9は、一実施形態による、クラウドプラットフォーム上のマスタパイプラインの環境のためのステージにより実行される全体的なプロセスを示す。ステップ910、920、930、940、及び950は、各環境パイプライン810、820、830により実行され得る。本番環境パイプライン3は、ステップ910及び920のみを実行してもよい。
図9に示されるステップは、マニフェストファイルを使用して指定される1つのサービスに対して、又は複数のサービスに対して実行することができる。
【0091】
環境Eのための環境パイプラインは、データセンタエンティティのセット、例えば、環境Eを有するものとして指定されたデータセンタエンティティのセットにソフトウェアを配備する(910)ための命令を含む。一実施形態において、ソフトウェアアーチファクトは、サービスのためのソースコードをコンパイルすることにより生成される。ソースコードは、バージョン制御ソフトウェアから取得することができる。データセンタエンティティのセットは、データセンタインスタンス、サービスグループ、セル、サービス、又はこれらの任意の組み合わせを含んでもよい。
【0092】
環境Eのための環境パイプラインは、データセンタエンティティのセット上に配備されたソフトウェアアーチファクトをテストするためのテストを実行する(920)ための命令をさらに含む。環境Eのための環境パイプラインは、例えば、昇格決定パイプライン815を使用して、昇格基準に対してテスト結果を評価する(930)ための命令をさらに含む。昇格基準が満たされない場合、ステップ910、920、930、及び940は、改訂されたソフトウェアアーチファクト、例えば、テストする(920)間に識別された特定の欠陥に対する修正を含むソースコードから生成されたソフトウェアアーチファクトを使用して繰り返されてもよい。環境Eのための環境パイプラインは、昇格基準が満たされた場合に次のステージに進む(950)ための命令をさらに含む。
【0093】
一実施形態において、マスタパイプラインはパイプラインの階層を含む。階層は複数のレベルを含み、特定のレベルにおけるパイプラインは、子パイプラインとして次に低いレベルのパイプラインを含む。例えば、階層の最も高いレベルにおいて、マスタパイプラインは、製品に関連するサービスのセットを配備するリリースマスタパイプラインを含む。階層の次のレベルは、様々な環境にわたる特定のサービスの全ての配備を表すサービスマスタパイプラインを含む。階層の次のレベルは、サービスグループマスタパイプラインと、それに続くサービスマスタパイプラインとを含むことができる。
【0094】
図10は、一実施形態による、例示的なマスタパイプラインを示す。マスタパイプラインは階層パイプラインであり、これにおいて、パイプラインの各ステージは、ステージを実行するための詳細な命令を有するパイプラインを含むことができる。マスタパイプライン階層は、データセンタ階層をミラーリングすることができる。例えば、マスタパイプラインのトップレベルは、異なる環境のためのステージのシーケンスを表す。各環境は、1つ以上の、データセンタインスタンスのためのパイプライン、又は他のタイプのデータセンタエンティティのためのパイプラインを含むことができる。データセンタインスタンスパイプライン1010は、サービスグループパイプライン1020を含むことができる。各サービスグループパイプライン1020は、1つ以上のサービスパイプライン1030を含むことができる。データセンタインスタンスパイプライン1010は、セルパイプライン1025を含むことができ、各セルパイプライン1025は、1つ以上のサービスパイプライン1030を含む。サービスパイプライン1030は、ステージを含むことができ、各ステージは、特定の環境に対してサービスを配備するための命令を表すパイプラインを表す。階層内の最も低いレベルのパイプライン又はリーフレベルパイプラインは、ユニットパイプラインと呼ばれ、サービスに関連する動作を実行するための詳細なサービス固有の命令を含むことができる。例えば、サービスの配備は、配備前ステップ、配備ステップ、配備後ステップ、並びに配備後テスト及び検証ステップを含むことができる。リーフレベルパイプラインでなく、1つ以上の子パイプラインを有するパイプラインは、子パイプラインの実行をオーケストレーションする集約パイプラインである。
【0095】
マスタパイプラインは、ソフトウェアのバージョン制御システムに、外部リポジトリにコミットされた変更をプロジェクトのメインリポジトリに含めることについて考慮する要求を受信させる、プル要求により駆動され得る。したがって、マスタパイプラインは、プル要求が受信されたときに自動的にトリガされ、プル要求が受信された最新のソフトウェアバージョンに基づいてソフトウェアアーチファクトを配備する。マスタパイプラインは、プル要求に基づいてソフトウェアアーチファクトの継続的配信を実行する。マスタパイプラインは、オンデマンド方式に基づいて、例えば、配備モジュール210のアプリケーションプログラミングインターフェース(API)を使用して要求を呼び出すことにより、駆動されてもよい。マスタパイプラインに基づくオンデマンド配備は、APIを使用して指定されたサービスの任意のセットに対して、及び所与のサービスの任意のバージョンに対して要求され得る。マスタパイプラインは、現在のバージョンから前のバージョンへのロールバック、又は現在配備されているバージョンからより最近のバージョンへのロールフォワードを要求するために呼び出されてもよい。
【0096】
一実施形態において、配備モジュール210は、各サービスのためのサービスマスタパイプラインを作成する。これらのパイプラインは、ソフトウェアのリポジトリに対してプル要求が受信されたときにトリガされる。配備モジュール210は、特定のサービスについて、ユーザからパイプラインテンプレートを受信する。これらのパイプラインテンプレートは、特定のサービスに対するテスト、検証、構築などのための詳細な命令を含む。データセンタ生成モジュール220は、1つ以上のデータセンタのためのクラウドプラットフォーム非依存の宣言的仕様を受信する。データセンタ生成モジュール220は、受信したクラウドプラットフォーム非依存の宣言的仕様に従ってデータセンタを生成する(あるいは構成する)。配備モジュール210は、昇格決定815パイプラインを受信する。昇格決定815パイプラインは、全体的なマスタパイプラインに統合される。
【0097】
パイプライン生成器は、テンプレートから各データセンタのための全てのパイプラインを作成し、例えば
図10に示されるように、階層方式でマスタパイプラインを介してそれらを組み合わせる。一実施形態において、パイプライン生成器は、個々のサービスのためのサービスパイプラインを生成し、パイプライン生成器は、サービスパイプラインを呼び出すためにセルマスタパイプラインを生成し、パイプライン生成器は、セルマスタパイプラインを呼び出すためにサービスグループマスタパイプラインを生成し、パイプライン生成器は、サービスグループパイプラインを呼び出すためにデータセンタインスタンスマスタパイプラインを生成し、パイプライン生成器は、データセンタインスタンスマスタパイプラインを呼び出すためにサービスマスタパイプラインを生成する。
【0098】
以下は、様々なステージを示すマスタパイプラインのスニペットである。各ステージは、ステージ名、パイプラインのタイプ、ステージタイプ(例えば、マスタ配備パイプライン又は昇格パイプライン)、前のステージなどを含む属性を指定することができる。
【表5】
【0099】
検査者マスタパイプラインに示されるように、第1のステージはアーチファクトバージョンマップである。次のステージは、開発環境に配備するためのマスタ配備パイプラインである。次のステージは、ソフトウェアアーチファクトが次のステージに昇格できるかどうかを判断するための昇格パイプラインである。次のステージは、テスト環境に配備するためのマスタ配備パイプラインである。次のステージは、ソフトウェアアーチファクトがステージング環境である次のステージに昇格できるかどうかを判断するための昇格パイプラインである。
【0100】
ソフトウェアアーチファクトバージョンマップ
一実施形態において、配備モジュール210は、様々なソフトウェアアーチファクト及びそれらのバージョンをデータセンタエンティティに関連づけるアーチファクトバージョンマップを受信する。アーチファクトバージョンマップは、異なるデータセンタエンティティにおけるサービスのために配備される必要があるソフトウェアアーチファクトの特定のバージョンの宣言的仕様を提供する。各データセンタエンティティは、データセンタの宣言的仕様により指定されたデータセンタ階層内のその位置に基づいて一意に識別され得る。例えば、サービスについて、ソフトウェアライブラリがソフトウェアアーチファクトとして機能してもよい。ソフトウェアアーチファクトは、複数のバージョン、例えば、V1、V2、V3などを有することがある。アーチファクトバージョンマップは、バージョンV1がデータセンタエンティティC1及びC2に配備される必要があり、バージョンV2がデータセンタエンティティC3及びC4に配備される必要があることを指定することができる。配備モジュール210は、アーチファクトバージョンマップで指定されたとおりに適切なソフトウェアアーチファクトバージョンがデータセンタエンティティに配備されることを保証するマスタパイプライン及び命令を生成する。
【0101】
一実施形態において、アーチファクトバージョンマップは、JSON(Javascript object notation)ファイル、YAMLファイル、又はネスト化されたオブジェクトを表すための任意の他のシンタックスを使用するファイルとして指定される。アーチファクトバージョンマップは、データセンタの階層にわたって分散された様々なデータセンタエンティティに関連づけられる<service>:<version>キーペアのセットを含むことができる。アーチファクトバージョンマップキーペアは、対応するパイプラインのホワイトリストとして機能する。サービスに対するキーがアーチファクトバージョンマップに含まれていない場合、そのサービスに対する全てのパイプラインは、パイプラインの実行の間、除外される。異なるアーチファクトバージョンマップが同じマスタパイプラインに適用されてもよく、その結果、マスタパイプラインの実行の間、異なるサービスが含まれる/除外される。
【0102】
以下は、一例示的なアーチファクトバージョンマップである。アーチファクトバージョンマップは、属性「env_types」を使用して環境タイプを指定する。以下の例では、環境タイプ開発が指定されている。環境タイプは、1つ以上のデータセンタインスタンスを含むことができ、データセンタインスタンスは、1つ以上のサービスグループを含むことができ、サービスグループは、1つ以上のサービスを含むことができる。以下の例では、ソフトウェアアーチファクト名はlibrary1として指定され、バージョンはversion1として指定され、サービスインスタンスinstance001に関連づけられている。しかしながら、ソフトウェアアーチファクト名及びバージョンは、階層内のデータセンタエンティティの任意のレベルに関連づけられてもよい。例えば、ソフトウェアアーチファクト名及びバージョンが指定され又はサービスグループのうち、ソフトウェアアーチファクト名及びバージョンは、サービスグループ内の特定のサービスインスタンスに対して指定されたソフトウェアアーチファクト名及びバージョンの異なる値でソフトウェアアーチファクト名及びバージョンがオーバーライドされない限り、サービスグループ内の全てのサービスに適用可能である。同様に、ソフトウェアアーチファクト名及びバージョンは、データセンタインスタンスに対して指定することができ、サービスグループに対してオーバーライド値が指定されない限り、データセンタインスタンス内の全てのサービスグループ又はセルに適用可能である。
【表6】
【0103】
一実施形態において、アーチファクトバージョンマップは、データセンタエンティティのフルパス、例えば、「stagger_group1/datacenter1/service_group2/service1」を使用してデータセンタエンティティを指定する。一実施形態において、アーチファクトバージョンマップは、データセンタエンティティのフルパス内に正規表現を使用してデータセンタエンティティのセットを指定する。例えば、service_group[?]を含むフルパスは、service_group1、service_group2、service_group3などを含む。
【0104】
以下は、サービスのセットを定義するための正規表現を指定するアーチファクトバージョンマップの一例である。環境タイプはdev及びtestとして指定され、データセンタインスタンス及びサービスグループを含むフルパス内のデータセンタエンティティはワイルドカードとして指定され、サービスインスタンスは「service*」として指定されている。したがって、dev及びtest環境のための全てのデータセンタインスタンスについて、全てのサービスグループについて、service*にマッチするサービス名について、アプリケーションapp1のバージョンV1が配備される。
【表7】
【0105】
いくつかの実施形態において、アーチファクトバージョンマップは、パイプラインにより使用されるパラメータを指定することができる。したがって、指定されたパラメータは、パラメータが指定されたスタッガ(stagger)グループに適用可能である。
【0106】
図11は、一実施形態による、クラウドプラットフォーム上に構成されたデータセンタ上のソフトウェアアーチファクトの配備のための全体的なプロセスを示す。データセンタ生成モジュールは、ターゲットクラウドプラットフォーム上に1つ以上のデータセンタを生成する(1110)。各データセンタは、クラウドプラットフォーム非依存の宣言的仕様から生成され、データセンタエンティティの階層を有する。
【0107】
ソフトウェアリリース管理モジュール230は、入力として、データセンタエンティティをソフトウェアアーチファクトのバージョンにマッピングするアーチファクトバージョンマップを受信する(1120)。ソフトウェアリリース管理モジュール230は、入力として、クラウドプラットフォーム非依存のマスタパイプラインをさらに受信する(1130)。
【0108】
ソフトウェアリリース管理モジュール230は、アーチファクトバージョンマップと関連してクラウドプラットフォーム非依存のマスタパイプラインをコンパイルして、クラウドプラットフォーム固有の詳細なパイプラインを生成する(1140)。一実施形態において、生成されたクラウドプラットフォーム固有の詳細なパイプラインは、アーチファクトバージョンマップに従って特定のステージが有効にされるべきか又は無効にされるべきかを判断するために、特定のステージの前にアーチファクトバージョンマップフィルタを含む。
【0109】
ソフトウェアリリース管理モジュール230は、データセンタ上に配備されたサービスの1つ以上の特徴をリリースするためのコードをさらに受信する(1150)。例えば、コードは、開発者により変更がサブミットされるソースコードリポジトリを記憶するバージョン制御管理システムから取得されたソースコードを表すことができる。ソフトウェアリリース管理モジュール230は、クラウドプラットフォーム固有の配備パイプラインを実行して、受信したコードに基づいてソフトウェアアーチファクトを配備する(1160)。
【0110】
アーチファクトバージョンマップ及びマスタパイプラインは、クラウドベースのデータセンタにおけるソフトウェアアーチファクトの継続的配信に関連する様々なタイプの動作をオーケストレーションするために使用され得る。アーチファクトバージョンマップ及びマスタパイプラインは、サービス又はサービスグループ又は任意のデータセンタエンティティに対して集約再試行動作を実行するように構成することができる。アーチファクトバージョンマップは、再試行ストラテジ、パイプラインのステージを実行するのに失敗した場合に実行する再試行の閾値数、再試行する前にユーザからの確認が必要とされるか又は再試行が自動的に実行されるか等を含む、データセンタエンティティのための再試行動作の構成を含む。例えば、再試行ストラテジは、再試行する前に固定期間の間、実行を休止する固定バックオフストラテジでもよい。他の再試行ストラテジが、アーチファクトバージョンマップ及びマスタパイプラインを使用して構成されてもよい。一実施形態において、パイプライン生成器は、前のパイプラインステージが失敗した場合に再試行ストラテジをトリガするために、集約パイプライン内に再試行器呼び出し(invoke retrier)ステージを導入する。データセンタエンティティに対して指定された再試行ストラテジ及び構成パラメータは、ネスト化されたデータセンタエンティティに対して値がオーバーライドされない限り、全てのデータセンタエンティティ及びデータセンタエンティティ内のサービスに適用される。
【0111】
フォールトトレラント継続的配信のためのシステムアーキテクチャ
図12は、一実施形態によるフォールトトレラント継続的配信モジュールのアーキテクチャを示すブロック図である。フォールトトレラント継続的配信モジュールは、データセンタ構成モジュール1210、継続的配信要求ルータ1220、及び制御データセンタメタデータストア1230を含む。他の実施形態が、
図12に示されるよりも多くの又は少ないモジュールを含んでもよい。本明細書で示される特定のモジュールにより実行される機能は、示されたモジュール以外のモジュールにより実行されてもよい。
【0112】
一実施形態において、フォールトトレラント継続的配信モジュールは、クラウドプラットフォーム上にプライマリ制御データセンタ及びセカンダリ制御データセンタを構成する。プライマリ制御データセンタは、アクティブ制御データセンタ又はアクティブ制御プレーンと呼ばれることもある。セカンダリ制御データセンタは、スタンバイ制御データセンタ又はスタンバイ制御プレーンと呼ばれることもある。制御データセンタは、本明細書においてブートストラップデータセンタと呼ばれることもあり、例えば、アクティブ制御データセンタはアクティブブートストラップデータセンタと呼ばれ、スタンバイ制御データセンタはスタンバイブートストラップデータセンタと呼ばれる。制御データセンタは、他のデータセンタを構成するため、及びデータセンタの構成に変更を行うため、例えば、データセンタ上にインストールされたサービスを再構成する、データセンタ上のサービスに関連づけられたソフトウェアアーチファクトを構成する等のために、必要とされるサービスの最小限のセットを含む。
【0113】
データセンタ構成モジュール1210は、ターゲットクラウドプラットフォーム上に1つ以上の制御データセンタを構成する。一実施形態において、データセンタ構成モジュール1210は、ターゲットクラウドプラットフォーム上にプライマリ制御データセンタ及びセカンダリ制御データセンタを構成する。プライマリ制御データセンタは、データセンタ又はデータセンタ上のサービスを構成する要求を処理するために使用され、セカンダリ制御データセンタは、プライマリ制御データセンタの代わりに、例えば、スタンバイ制御データセンタとして使用される。セカンダリ制御データセンタは、プライマリ制御データセンタの1つ以上のサービスの障害、プライマリ制御データセンタの1つ以上のサービスの計画された保守、プライマリ制御データセンタのデータストアのデータ破損、プライマリデータセンタにおけるセキュリティ侵害、又は他の理由の場合に、プライマリ制御データセンタの代わりに使用され得る。2つの制御データセンタの使用は、双方の制御データセンタが同時に障害を起こし又は利用不可能である可能性が、単一の制御データセンタが障害を起こし又は利用不可能である可能性より大幅に低いため、フォールトトレランスを提供する。
【0114】
データセンタ構成モジュール1210は、1つのターゲットクラウドプラットフォーム上のプライマリ制御データセンタ、及び異なるターゲットクラウドプラットフォーム上のセカンダリ制御データセンタを構成することができる。これは、クラウドプラットフォームに障害がある場合にさらなるフォールトトレランスを提供する。例えば、双方の制御データセンタが同じクラウドプラットフォーム上で動作しており、何らかの理由でクラウドプラットフォームに障害があり、又はクラウドプラットフォームが到達不可能である場合、双方の制御データセンタが使用できなくなり、任意のサービスが構成又は再構成される必要がある場合にダウンタイムを結果としてもたらす。異なるクラウドプラットフォーム内で2つの制御データセンタを実行することは、双方のクラウドプラットフォームが利用不可能である見込みが極めて小さいことを保証し、それにより、継続的配信プラットフォームのダウンタイムの可能性を大幅に低減させる。他の実施形態が、さらなるフォールトトレランスのために2つより多くの制御データセンタを含んでもよい。
【0115】
継続的配信要求ルータ1220は、テナントデータセンタの構成に対する要求、テナントデータセンタ上の構成又はサービスグループ又はサービスに対する要求などを監視し、それらを制御データセンタに送信する。一実施形態において、プライマリ制御データセンタが機能している場合、継続的配信要求ルータ1220は、構成要求をプライマリ制御データセンタに送信し続ける。継続的配信要求ルータ1220は、制御がプライマリ制御データセンタから別の制御データセンタ、例えばセカンダリ制御データセンタに移転されるべきであるという指標を受信することができる。指標は、本明細書で説明される様々な状況、例えば、プライマリ制御データセンタの障害、プライマリ制御データセンタのスケジュールされたダウンタイムなどの場合に受信され得る。そのような指標が受信された場合、継続的配信要求ルータ1220は、構成要求を他の制御データセンタ、例えばセカンダリ制御データセンタにルーティングし始める。一実施形態において、継続的配信要求ルータ1220は、要求をルーティングするドメインネームサービス(DNS)を含む。
【0116】
制御データセンタメタデータストア1230は、任意の制御データセンタ、例えば、プライマリ制御データセンタ及びセカンダリ制御データセンタを構成するためのメタデータを記憶する。制御センタを記述するメタデータは、宣言的仕様、例えば、本明細書でさらに説明されているサービスグループ又はサービスインスタンスの特定のセットを含む、
図4に示される宣言的仕様を使用して受信され得る。データセンタ構成モジュール1210は、ソフトウェアリリース管理モジュールを呼び出して、制御データセンタを構成するためのクラウドプラットフォーム固有の詳細なパイプライン255を生成し、クラウドプラットフォーム固有の詳細なパイプライン255を実行のために送信して、ターゲットクラウドプラットフォーム上に制御データセンタを作成又は構成する。
【0117】
図13は、1つの実施形態による、制御データセンタのアーキテクチャを示すブロック図である。制御データセンタは、
図13に示されるようなサービスグループのセットを含む。これらのサービスグループは、クラウドプラットフォームにおいてデータセンタを構成することを実行し、データセンタ上でソフトウェアアーチファクトの継続的配信を実行するために必要とされる。一実施形態によれば、制御データセンタは、プロダクションサービス(production service)グループ1310、機能統合及びテストサービスグループ1320、基礎サービスグループ1330、アクセス制御サービスグループ1340、暗号サービスグループ1350、及びサイトブリッジサービスグループ1360を含むサービスグループを含む。他の実施形態が、より多くの又はより少ないサービスグループを含んでもよい。制御データセンタのサービスグループは、制御データセンタメタデータストア1230に記憶されたメタデータを使用して定義され、制御データセンタのための宣言的仕様を使用して指定される。
【0118】
プロダクションサービスグループ1310は、パイプライン生成、パイプライン実行などを含むソフトウェアアーチファクトを配備するために必要とされるサービスを提供する。機能統合及びテストサービスグループ1320は、ソフトウェアアーチファクトが1つの環境から別の環境に昇格できるかどうかを判断するために、ソフトウェアアーチファクトの機能テスト及び統合テストを実行するサービスを提供する。基礎サービスグループ1330は、ネットワークタイムプロトコル(NTP)、ドメインネームシステム(DNS)、及び他のコアインフラストラクチャサービスなどの基礎的なサービスを含む。アクセス制御サービスグループ1340は、パスワード及びクレデンシャルを管理し、コンピューティングリソースへのユーザアクセスを管理する。暗号サービスグループ1350は、移行中及び記憶されるときのデータの暗号化を管理する。サイトブリッジサービスグループ1360は、組織ネットワーク(例えば、マルチテナントシステムのテナントである組織)と、クラウドプラットフォーム内のエンドポイントとして機能するコンピューティングシステムとの間の接続性を提供する。したがって、制御データセンタは、継続的配信を実行するために必要とされるサービスを含む。コンピューティングシステムは、制御データセンタにアクセスして、クラウドプラットフォーム内のデータセンタを構成し、クラウドプラットフォーム内に配備されたデータセンタ内にソフトウェアアーチファクトを配備する。
【0119】
制御データセンタは、継続的配信のために組織又はマルチテナントシステムの全てのシステムにより使用され、制御データセンタの障害が継続的配信のために制御データセンタを使用する全てのエンティティに影響を及ぼすため、障害点である可能性がある。したがって、実施形態は、
図14A~
図14Bに示されるようにフォールトトレラントアーキテクチャを使用する。
【0120】
図14A~
図14Bは、1つの実施形態による、クラウドプラットフォーム内に構成されたデータセンタに対するソフトウェアアーチファクトの継続的配信のための制御データセンタのフォールトトレラントアーキテクチャのアーキテクチャを示す。
図14A~
図14Bの双方が、プライマリ制御データセンタ1410、セカンダリ制御データセンタ1420、及びテナントデータセンタ1430を示す。プライマリ制御データセンタ1410及びセカンダリ制御データセンタ1420は、2つの別個の地理的領域、例えば、2つの異なる州にあってもよい。これは、1つの制御センタに影響を及ぼし得る任意の災害が、他の制御データセンタに影響を及ぼす可能性が低いことを保証する。
【0121】
データセンタ構成モジュール1210は、テナントデータセンタを記述するメタデータをプライマリ制御データセンタ1410及びセカンダリ制御データセンタ1420に送信する(1415)。プライマリ制御データセンタ1410は、受信した(1415)メタデータに基づいてテナントデータセンタを構成するためのパイプラインを生成する。
【0122】
図14Aに示されるように、プライマリ制御データセンタ1410は、テナントデータセンタ1430の構成のプロセスを制御する。したがって、プライマリ制御データセンタ1410は、生成されたパイプラインを実行し、テナントデータセンタ1430のインフラストラクチャ構成1435を実行する。例えば、プライマリ制御データセンタ1410は、テナントデータセンタの宣言的仕様において定義された様々なチームによるアクセスのためのユーザアカウントを作成し、テナントデータセンタの宣言的仕様に従って、作成されたユーザアカウントによりアクセスされ得るコンピューティングリソースを構成することができ、それにより、ユーザアカウントは、宣言的仕様において指定された特定のタスクを実行することができる。制御データセンタは、テナントデータセンタを記述するメタデータ、サービスを記述するメタデータ、サービスグループを記述するメタデータなどに基づいて、継続的配信プロセスの一部として、動的にユーザアカウントを作成し、クラウドプラットフォーム内のインフラストラクチャを構成する。制御データセンタは、メタデータに従ってアカウントが必要とされない場合、例えば、もはや使用されていないより古いアカウントをガベージコレクションするために、ユーザアカウントを削除することができる。
【0123】
一実施形態によれば、制御データセンタによるユーザアカウントの作成は、以下のステップを含む。制御データセンタは、テナントデータセンタのための宣言的仕様にアクセスする。宣言的仕様は、テナントデータセンタを記述するメタデータとして記憶され得る。制御データセンタは、テナントデータセンタの宣言的仕様内のサービス定義を処理する。例えば、テナントデータセンタの宣言的仕様において新しいサービス定義が識別された場合、制御データセンタは、新しいサービスを構成するために必要なユーザアカウントを決定し、新しいユーザアカウントを作成する。ユーザアカウントは、コンピューティングリソース、例えば、データベース、ネットワーキングリソース、ファイルシステム、処理リソース、ロードバランサ、Kubernetesクラスタなどにアクセスするために必要とされ得る。制御データセンタは、要求された機能をユーザアカウントに提供するために、テナントデータセンタのクラウドプラットフォームの関連コンピューティングリソースを構成する。例えば、サービスがデータベースアクセスを必要とする場合、制御データセンタは、データベース内にユーザアカウントを作成し、この新しいユーザアカウントがデータベース内にデータを記憶できるようにデータベース内の1つ以上のテーブル空間を構成することができる。制御データセンタは、任意の生成されたパイプラインを実行してサービスを配備し、テナントデータセンタ上のサービス及び関連インフラストラクチャを構成し、管理する。
【0124】
作成されたユーザアカウントは、プライマリ制御データセンタに登録される。ユーザアカウントを登録することは、それらをデータストアに記憶することを含み、該データストアから、プライマリ制御データセンタはユーザアカウント情報にアクセスし、それらをテナントデータセンタのためのソフトウェアアーチファクトの継続的配信に関連するタスクに使用することができる。ユーザアカウントの登録は、サービスに関連づけられた様々なアクション、例えば、構成を変更すること、ソフトウェアアーチファクトをインストールすることなどを実行するための情報を、制御データセンタに提供する。制御データセンタが、サービスに関連づけられた要求を受信したとき、制御データセンタは、ユーザアカウント情報にアクセスしてサービスに関連づけられたユーザアカウントを識別し、ユーザアカウントを使用してアップグレード、パッチなどの任意の必要なアクションを実行する。
【0125】
プライマリ制御データセンタ1410は、テナントデータセンタ1430の構成の状態を記述する情報の、セカンダリ制御データセンタ1420への転送1425を実行する。これは、プライマリ制御データセンタにより作成されたユーザアカウントを、セカンダリ制御データセンタ内にさらに登録させる。例えば、プライマリ制御データセンタ1410は、テナントデータセンタ1430において作成された各ユーザアカウントを記述する情報と、ユーザアカウントにアクセスするためのクレデンシャルとを、セカンダリ制御データセンタ1420に送信する。大規模組織又はマルチテナントシステムは、クラウドプラットフォーム内にデータセンタを作成するとき、数千のユーザアカウントを作成する場合がある。
【0126】
セカンダリ制御データセンタ1420は、データセンタ構成モジュール1210からテナントデータセンタを記述するメタデータを受信する(1415b)。セカンダリ制御データセンタ1420は、テナントデータセンタの構成のためのパイプラインを生成するが、それらを実行しない。セカンダリ制御データセンタ1420は、単に、生成されたパイプラインを記憶し、プライマリ制御データセンタ1410から受信した状態情報に基づいてパイプラインの実行を追跡する。セカンダリ制御データセンタ1420は、受信した状態情報に基づいてインフラストラクチャ検証1445を実行する。例えば、セカンダリ制御データセンタ1420は、状態転送1425を介して受信される、プライマリ制御データセンタ1410により作成された各ユーザアカウントにアクセスし、ユーザアカウントが、テナントデータセンタの宣言的仕様により指定される任意のコンピューティングリソースへのアクセスを有するかどうか、及び適切なコンピューティングリソースがテナントデータセンタ内で構成されているかどうかを検証する。
【0127】
図14Bは、セカンダリ制御データセンタが、テナントデータセンタ1430の構成のプロセスを実行する制御を行っている構成を示す。したがって、
図14Bでは、セカンダリ制御データセンタ1420は、パイプラインを実行し、インフラストラクチャ構成1455を実行している。セカンダリ制御データセンタ1420は、状態情報、例えば、作成された任意のユーザアカウントをプライマリ制御データセンタ1410に転送しており(1475)、プライマリ制御データセンタ1410は、インフラストラクチャ検証1465を実行して、セカンダリ制御データセンタ1420により作成されているユーザアカウントがテナントデータセンタ1420の宣言的仕様により指定されたコンピューティングリソースへのアクセスを有することを確認している。したがって、プライマリ制御データセンタ1410及びセカンダリ制御データセンタ1420の役割は、
図14Aと比較して、
図14Bでは逆にされている。
図14Aから
図14Bへの構成のこの変化は、プライマリ制御データセンタ1410の何らかの障害に起因して生じた可能性がある。セカンダリ制御データセンタ1420は、状態情報をプライマリ制御データセンタ1410に送信する(1475)前に、プライマリ制御データセンタ1410の障害が是正されるのを待つことができる。セカンダリ制御データセンタ1420は、プライマリ制御データセンタ1410が利用可能でない持続時間の間、状態情報を収集する。セカンダリ制御データセンタ1420は、プライマリ制御データセンタ1410が利用可能であるかどうか、すなわち、任意の障害が修正(すなわち、修理)されたかどうか、又はスケジュールされたダウンタイムが終了したかどうかを周期的にチェックする。プライマリ制御データセンタ1410が利用可能になると、セカンダリ制御データセンタ1420は、収集された状態情報をバッチとしてプライマリ制御データセンタ1410に送信する。その後、セカンダリ制御データセンタ1420は、インフラストラクチャ構成がセカンダリ制御データセンタ1420により実行される(1455)限り、状態情報を送信し続ける。
【0128】
プライマリ制御データセンタが完全に動作可能になると、フォールトトレラント継続的配信モジュール350は、
図14Aに示されるように、テナントデータセンタの構成の全体的なプロセスの制御をプライマリ制御データセンタ1410に切り替えて、それをアクティブ制御データセンタにし、セカンダリ制御データセンタ1420をスタンバイ制御データセンタにすることができる。
【0129】
一実施形態において、プライマリ制御データセンタからセカンダリ制御データセンタへの切り替えを実行するために、様々なステップが実行される。フォールトトレラント継続的配信モジュール351は、最初に、プライマリ制御データセンタにおける実行のために新しいパイプラインがトリガされないことを保証する。フォールトトレラント継続的配信モジュール350は、次に、現在実行している全てのパイプラインを完了するための命令をプライマリ制御データセンタに送信する。具体的には、フォールトトレラント継続的配信モジュール350は、実行状態にある全てのパイプラインを識別し、それらの実行を完了するための命令を送信する。フォールトトレラント継続的配信モジュール350は、継続的配信要求ルータ1220の構成を変更して、クラウドプラットフォーム内のデータセンタの継続的配信及び構成に関連づけられた全ての要求を、プライマリ制御データセンタの代わりにセカンダリ制御データセンタに向け始める。
【0130】
プライマリ制御データセンタにおいて、プライマリデータセンタがパイプラインの実行を完了することを妨げる障害が発生した場合、フォールトトレラント継続的配信モジュール350は、パイプライン全体をアトミックに(atomically)失敗させる。フォールトトレラント継続的配信モジュール350は、セカンダリ制御データセンタに、プライマリ制御データセンタにおいて実行を完了するのに失敗した全てのパイプラインを実行させる。パイプライン実行の間に実行される動作は、冪等(idempotent)である。したがって、動作が複数回実行された場合、システムに対する動作の実行の効果は、動作を1回実行するのと同じである。例えば、ユーザアカウントを作成する動作は、アカウントが既に存在し、テナントデータセンタのメタデータにおいて指定されたシステムリソースへの必要なアクセスを有するかどうかをチェックする。アカウントが既に存在し、必要なアクセスを有する場合、制御データセンタはさらなるアクションを行わない。アカウントが存在しない場合、制御データセンタはアカウントを作成する。同様に、システムがサービスを構成するためのアクションを実行する場合、システムは、構成が前に実行されたかをチェックする。構成が前に実行された場合、制御データセンタは残りのステップをスキップする。構成が前に実行されなかった場合、制御データセンタは、構成を実行するためのステップを実行する。
【0131】
フォールトトレラント継続的配信のためのプロセス
図15は、一実施形態による、
図14に示される制御データセンタのフォールトトレラントアーキテクチャを使用してクラウドプラットフォーム上でデータセンタを構成するためのプロセスを示す。
【0132】
フォールトトレラント継続的配信モジュール350は、クラウドプラットフォーム上に、プライマリ制御データセンタ1410及びセカンダリ制御データセンタ1420を構成する(1510)。フォールトトレラント継続的配信モジュール350は、プライマリ制御データセンタ1410及びセカンダリ制御データセンタ1420のための宣言的仕様にアクセスし、それらをクラウドプラットフォーム上に構成する。プライマリ制御データセンタ1410及びセカンダリ制御データセンタ1420は、2つの異なるクラウドプラットフォーム上に構成され得る。
【0133】
フォールトトレラント継続的配信モジュール350は、クラウドプラットフォーム上にテナントデータセンタ1430を構成する要求を受信する(1520)。テナントデータセンタは、マルチテナントシステムのテナントに関連づけられる。
図15で説明されるプロセスはマルチテナントシステムに関連して示されるが、本技法は、任意のオンラインシステム、例えば、単一組織のオンラインシステムに適用されてもよい。
【0134】
フォールトトレラント継続的配信モジュール350は、テナントデータセンタを構成するための命令をプライマリ制御データセンタ1410に送信する(1530)。プライマリ制御データセンタ1410に送信された命令は、プライマリ制御データセンタ1410に以下のステップを実行させる。プライマリ制御データセンタ1410は、例えば、宣言的仕様に従ってユーザアカウントを作成することと、宣言的仕様に従ってユーザアカウントによるアクセスのためにクラウドプラットフォームのコンピューティングリソースを構成することにより、クラウドプラットフォーム上にテナントデータセンタのためのインフラストラクチャを構成する。プライマリ制御データセンタ1410は、テナントデータセンタのために構成されたインフラストラクチャの状態をセカンダリ制御データセンタに周期的に送信し(1540)、例えば、プライマリ制御データセンタ1410は、作成されたユーザアカウント及び関連づけられたクレデンシャルを記述する情報をセカンダリ制御データセンタ1420に周期的に伝達する。
【0135】
フォールトトレラント継続的配信モジュール350は、プライマリ制御データセンタにより構成されたテナントデータセンタのインフラストラクチャをセカンダリ制御データセンタに検証させる(1540)送信命令を、セカンダリ制御データセンタ1420に送信する。例えば、セカンダリ制御データセンタ1420は、プライマリ制御データセンタ1410により作成され、セカンダリ制御データセンタ1420に送信された(1540)任意のユーザアカウントが、アクセス可能であり、クラウドプラットフォームの必要なコンピューティングリソースへのアクセスを有するかどうかを検証する。
【0136】
図16は、一実施形態による、プライマリ制御データセンタ内の障害を処理するためのプロセスを示す。
【0137】
フォールトトレラント継続的配信モジュール350は、プライマリ制御データセンタからセカンダリ制御データセンタにクラウドプラットフォーム上のテナントデータセンタの構成の制御を移転する要求を受信する(1610)。制御を移転する要求を受信したことに応答して、フォールトトレラント継続的配信モジュール350は、プライマリ制御データセンタからセカンダリ制御データセンタにテナントデータセンタの構成に関連づけられた要求をリダイレクトする(redirects)(1620)。
【0138】
フォールトトレラント継続的配信モジュール350は、テナントデータセンタの構成のプロセスを引き継ぐための命令をセカンダリ制御データセンタ1420に送信する(1630)。したがって、セカンダリ制御データセンタ1420は、例えば、テナントデータセンタの宣言的仕様に従って、ユーザアカウントを作成することと、クラウドプラットフォームのコンピューティングリソースを構成することにより、テナントデータセンタの構成を実行する。セカンダリ制御データセンタ1420は、テナントデータセンタの構成の状態をプライマリ制御データセンタ1410に送信する(1640)。プライマリ制御データセンタ1410は、作成されたユーザアカウントがテナントデータセンタの宣言的仕様に従ってクラウドプラットフォームのコンピューティングリソースへの必要なアクセスを有することを保証するために、セカンダリ制御データセンタ1420によりテナントデータセンタ上に構成されたインフラストラクチャを検証する(1640)。
【0139】
一方の制御データセンタD1の構成の状態の、他方の制御データセンタD2への転送は、他方の制御データセンタD2が制御データセンタD1により既に実行された処理を繰り返す必要がないため、制御データセンタD1から他方の制御データセンタD2に制御を移転するプロセスを効率的にする。他方の制御データセンタD2は、第1の制御データセンタがプロセスを停止したところから構成プロセスを再開することができる。
【0140】
コンピュータアーキテクチャ
図17は、一実施形態による、
図1の環境100に示されたエンティティの1つとしての使用のための典型的なコンピュータシステムの機能図を示す高レベルブロック図である。チップセット1704に結合された少なくとも1つのプロセッサ1702が示されている。チップセット1704にさらに結合されているのは、メモリ1706、記憶装置1708、キーボード1710、グラフィックスアダプタ1712、ポインティングデバイス1714、及びネットワークアダプタ1716である。ディスプレイ1718は、グラフィックスアダプタ1712に結合されている。1つの実施形態において、チップセット1704の機能は、メモリコントローラハブ1720及びI/Oコントローラハブ1722により提供される。別の実施形態において、メモリ1706は、チップセット1704の代わりにプロセッサ1702に直接結合される。
【0141】
記憶装置1708は、ハードドライブ、コンパクトディスク読取専用メモリ(CD-ROM)、DVD、又はソリッドステートメモリ装置などの非一時的コンピュータ読取可能記憶媒体である。メモリ1706は、プロセッサ1702により使用される命令及びデータを保持する。ポインティングデバイス1714は、マウス、トラックボール、又は他のタイプのポインティングデバイスでもよく、データをコンピュータシステム200に入力するためにキーボード1710と組み合わせて使用される。グラフィックスアダプタ1712は、ディスプレイ1718上に画像及び他の情報を表示する。ネットワークアダプタ1716は、コンピュータシステム1700をネットワークに結合する。
【0142】
当該分野で知られているように、コンピュータ1700は、
図17に示すコンポーネントとは異なる及び/又は他のコンポーネントを有することができる。さらに、コンピュータ1700は、特定の図示されたコンポーネントを欠いていてもよい。例えば、マルチテナントシステム110として動作するコンピュータシステム1700は、キーボード1710及びポインティングデバイス1714がなくてもよい。さらに、記憶装置1708は、コンピュータ1700からローカル及び/又はリモートとすることができる(ストレージエリアネットワーク(SAN)内に具現化されるなど)。
【0143】
コンピュータ1700は、本明細書で説明される機能を提供するためのコンピュータモジュールを実行するように適合される。本明細書で使用されるとき、用語「モジュール」は、指定された機能を提供するためのコンピュータプログラム命令及び他の論理を指す。モジュールは、ハードウェア、ファームウェア、及び/又はソフトウェアで実装することができる。モジュールは、1つ以上のプロセスを含むことができ、かつ/あるいはプロセスの一部のみにより提供することができる。モジュールは、典型的には、記憶装置1708に記憶され、メモリ1706にロードされ、プロセッサ1702により実行される。
【0144】
システム環境のエンティティにより使用されるコンピュータシステム1700のタイプは、実施形態及びエンティティにより使用される処理能力に応じて変化することができる。例えば、クライアントデバイスは、限られた処理能力、小さいディスプレイ1718を有するモバイルフォンでもよく、ポインティングデバイス1714がなくてもよい。対照的に、マルチテナントシステム又はクラウドプラットフォームは、本明細書で説明される機能を提供するために一緒に動作する複数のブレードサーバを含む場合がある。
【0145】
さらなる考慮事項
コンポーネントの特定の名前付け、用語の大文字使用、属性、データ構造、又は任意の他のプログラミング若しくは構造的態様は、必須又は重要でなく、説明された実施形態を実装するメカニズムは、異なる名前、フォーマット、又はプロトコルを有してもよい。さらに、システムは、説明されるようにハードウェア及びソフトウェアの組み合わせを介して、又は全体的にハードウェア要素において実装されてもよい。さらに、本明細書で説明される様々なシステムコンポーネント間の機能の特定の分割は単に例示的なものであり、必須ではない。単一のシステムコンポーネントにより実行される機能が、代わりに複数のコンポーネントにより実行されてもよく、複数のコンポーネントにより実行される機能が、代わりに単一のコンポーネントにより実行されてもよい。
【0146】
上記の説明のいくつかの部分は、情報に対する操作のアルゴリズム及び記号表現の観点で特徴を提示している。これらのアルゴリズム的な記述及び表現は、データ処理分野の当業者により、彼らの研究の内容を他の当業者に最も効果的に伝えるために使用される手段である。これらの操作は、機能的又は論理的に説明されているが、コンピュータプログラムにより実装されることが理解される。さらに、一般性を失うことなく、これらの操作の配置をモジュールとして又は機能名により参照することが時に便利であることも分かっている。
【0147】
上記議論から明らかなように、別段具体的に示されない限り、説明全体を通して、「処理する」又は「計算する」又は「算出する」又は「決定する」又は「表示する」などの用語を利用する議論は、コンピュータシステムのメモリ若しくはレジスタ、又は他のそのような情報記憶、送信、若しくは表示装置内の物理(電子)量として表されるデータを操作及び変換する、コンピュータシステム又は同様の電子コンピューティングデバイスのアクション及びプロセスを指すことが理解される。
【0148】
本明細書に記載される特定の実施形態は、アルゴリズムの形態で記載されるプロセスステップ及び命令を含む。実施形態のプロセスステップ及び命令は、ソフトウェア、ファームウェア、又はハードウェアで具現化することができ、ソフトウェアで具現化されるとき、リアルタイムネットワークオペレーティングシステムにより使用される異なるプラットフォーム上に存在し、該プラットフォームから操作されるようにダウンロードすることができることに留意されたい。
【0149】
説明される実施形態はまた、本明細書における動作を実行するための装置に関する。装置は、必要な目的のために特別に構築されてもよく、あるいはコンピュータによりアクセスできるコンピュータ読取可能媒体上に記憶されたコンピュータプログラムにより選択的にアクティブ化又は再構成される汎用コンピュータを含んでもよい。そのようなコンピュータプログラムは、これらに限られないが、フロッピーディスク、光ディスク、CD-ROM、磁気光ディスクを含む任意のタイプのディスク、読取専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気若しくは光カード、特定用途向け集積回路(ASIC)、又は電子命令を記憶するのに適した、コンピュータシステムバスに各々結合された任意のタイプの媒体などの、非一時的コンピュータ読取可能記憶媒体に記憶されてもよい。さらに、本明細書で参照されるコンピュータは、単一のプロセッサを含んでもよく、あるいは増大したコンピューティング能力のために複数プロセッサ設計を採用するアーキテクチャでもよい。
【0150】
本明細書で提示されるアルゴリズム及び動作は、任意の特定のコンピュータ又は他の装置に本質的に関連しない。様々な汎用システムもまた、本明細書における教示に従ってプログラムとともに使用されてもよく、あるいは、必要とされる方法ステップを実行するためにより特化された装置を構築することが、便利であることが分かっている場合がある。様々なこれらのシステムのために必要な構造は、同等の変形例とともに当業者には明らかであろう。さらに、本実施形態は、任意の特定のプログラミング言語を参照して説明されていない。本明細書で説明される実施形態の教示を実装するために、様々なプログラミング言語が使用され得ることが理解される。
【0151】
実施形態は、多数のトポロジにわたる幅広いコンピュータネットワークシステムに十分適している。この分野では、大規模ネットワークの構成及び管理は、インターネットなどのネットワークを通じて異種のコンピュータ及び記憶装置に通信上結合されている記憶装置及びコンピュータを含む。
【0152】
最後に、本明細書で使用される言語は、主に読みやすさ及び教示目的のために選択されており、発明対象事項を線引き又は制限するために選択されていない場合があることに留意されたい。したがって、実施形態の開示は、限定ではなく例示であることが意図される。
【国際調査報告】