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

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

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

特表2023-551963クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ
<>
  • 特表-クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ 図1
  • 特表-クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ 図2A
  • 特表-クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ 図2B
  • 特表-クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ 図3
  • 特表-クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ 図4
  • 特表-クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ 図5
  • 特表-クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ 図6
  • 特表-クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ 図7
  • 特表-クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ 図8
  • 特表-クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ 図9
  • 特表-クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ 図10
  • 特表-クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ 図11
  • 特表-クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ 図12
  • 特表-クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ 図13
  • 特表-クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-13
(54)【発明の名称】クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ
(51)【国際特許分類】
   G06F 8/60 20180101AFI20231206BHJP
【FI】
G06F8/60
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023534062
(86)(22)【出願日】2021-01-29
(85)【翻訳文提出日】2023-08-01
(86)【国際出願番号】 US2021015822
(87)【国際公開番号】W WO2022119588
(87)【国際公開日】2022-06-09
(31)【優先権主張番号】17/110,224
(32)【優先日】2020-12-02
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/112,974
(32)【優先日】2020-12-04
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVASCRIPT
2.AWS
3.KUBERNETES
(71)【出願人】
【識別番号】506332063
【氏名又は名称】セールスフォース インコーポレイテッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】キセリョフ,ディミトリー セルゲーエヴィチ
(72)【発明者】
【氏名】ベルガラ,ジーネス
(72)【発明者】
【氏名】マハヤン,アプールフ
(72)【発明者】
【氏名】パッタン,アリフラー カーン
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AB01
5B376AB14
(57)【要約】
コンピューティングシステム、例えば、マルチテナントシステムは、クラウドプラットフォーム非依存であるクラウドプラットフォームインフラストラクチャ言語を使用して、クラウドプラットフォームにおいて作成されたデータセンタにおいてソフトウェアアーティファクトをデプロイする。システムは、データセンタのデータセンタエンティティに対するソフトウェアアーティファクトのバージョンを識別するアーティファクトバージョンマップと、データセンタ上のサービスに関連する動作、例えば、ソフトウェアアーティファクトのデプロイ、コンピューティングリソースのプロビジョニングなどを実行するための命令を含むクラウドプラットフォーム非依存マスターパイプラインと、を受信する。システムは、アーティファクトバージョンマップと併せてクラウドプラットフォーム非依存マスターパイプラインをコンパイルして、アーティファクトバージョンマップに従ってデータセンタエンティティにデプロイアーティファクトの適切なバージョンをデプロイするクラウドプラットフォーム固有の詳細パイプラインを生成する。システムは、クラウドプラットフォーム固有の詳細パイプラインを実行のために目標のクラウドプラットフォームに送信する。
【特許請求の範囲】
【請求項1】
クラウドプラットフォームに構成されたデータセンタにおいて実行されるサービスのソフトウェアアーティファクトをデプロイするためのコンピュータ実装方法であって、
目標のクラウドプラットフォームに構成されたデータセンタにアクセスすることであって、前記データセンタは、データセンタエンティティの階層を含むクラウドプラットフォーム非依存宣言的仕様に基づいて生成され、各データセンタエンティティは、(1)サービス、又は(2)1つ以上の他のデータセンタエンティティのうちの1つ以上を含む、ことと、
前記データセンタのデータセンタエンティティを、前記データセンタエンティティにデプロイすることを目標とするソフトウェアアーティファクトのバージョンに関連付けるクラウドプラットフォーム非依存アーティファクトバージョンマップを受信することとであって、各ソフトウェアアーティファクトは、1つ以上のクラウドプラットフォーム上で実行するように構成されたサービスに関連付けられた実行可能な命令を含む、ことと、
クラウドプラットフォーム非依存アーティファクトバージョンマップに基づいて、目標のクラウドプラットフォームのためのクラウドプラットフォーム固有のデプロイパイプラインを生成することであって、前記クラウドプラットフォーム固有のデプロイパイプラインは、前記クラウドプラットフォーム非依存アーティファクトバージョンマップに従って、データセンタエンティティ上のサービスためのデプロイアーティファクトの適切なバージョンをビルド及びデプロイするための命令を含む、ことと、
前記クラウドプラットフォーム固有のデプロイパイプラインを実行のために前記目標のクラウドプラットフォームに送信することと、を含む、コンピュータ実装方法。
【請求項2】
前記データセンタにソフトウェアアーティファクトをビルド及びデプロイするための命令を含む、クラウドプラットフォーム非依存デプロイパイプラインを生成することと、
前記クラウドプラットフォーム非依存デプロイパイプラインを、前記クラウドプラットフォーム非依存アーティファクトバージョンマップと併せてコンパイルすることと、をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記クラウドプラットフォーム非依存デプロイパイプラインは、1つ以上のステージの前のバージョンマップフィルタを備え、前記マスターパイプラインの実行により、前記ソフトウェアアーティファクトのバージョンが、前記バージョンマップフィルタに基づいてデータセンタエンティティごとに選択されるようにする、請求項2に記載のコンピュータ実装方法。
【請求項4】
前記クラウドプラットフォーム非依存宣言的仕様を受信することと、
前記クラウドプラットフォーム非依存宣言的仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成することと、をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記クラウドプラットフォーム非依存宣言仕様をコンパイルすることは、
前記オリジナル宣言的仕様から前記データセンタの前記クラウドプラットフォーム非依存詳細メタデータ表現の第1のバージョンを生成することと、
前記修正された宣言的仕様から前記データセンタの前記クラウドプラットフォーム非依存詳細メタデータ表現の第2のバージョンを生成することと、を含む、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記クラウドプラットフォーム非依存詳細メタデータ表現の前記第1のバージョンに基づいて、前記目標のクラウドプラットフォームのためのプラットフォーム固有の詳細メタデータ表現を生成することと、
前記プラットフォーム固有の詳細メタデータ表現に基づいて、前記目標のクラウドプラットフォームに前記データセンタをデプロイすることと、をさらに含む、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記クラウドプラットフォーム非依存宣言的仕様は、1つ以上のデータセンタインスタンスの定義を含み、各データセンタインスタンスは、1つ以上のサービスグループを含み、各サービスグループは、サービスのセットを含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
前記生成された命令は、1つ以上のパイプラインを含み、各パイプラインは、ステージのシーケンスを含み、各ステージは、前記データセンタエンティティにソフトウェアアーティファクトをデプロイするための1つ以上のアクションを実行する、請求項1に記載のコンピュータ実装方法。
【請求項9】
コンピュータプロセッサによって実行されるときに、前記コンピュータプロセッサに、クラウドプラットフォーム内にデータセンタを構成するためのステップを実行させる命令を記憶するための非一時的なコンピュータ可読記憶媒体であって、前記ステップは、
目標のクラウドプラットフォームに構成されたデータセンタにアクセスすることであって、前記データセンタは、データセンタエンティティの階層を含むクラウドプラットフォーム非依存宣言的仕様に基づいて生成され、各データセンタエンティティは、(1)サービス、又は(2)1つ以上の他のデータセンタエンティティのうちの1つ以上を含む、ことと、
前記データセンタのデータセンタエンティティを、前記データセンタエンティティ上へのデプロイのターゲットであるソフトウェアアーティファクトのバージョンに関連付けるクラウドプラットフォーム非依存アーティファクトバージョンマップを受信することとであって、各ソフトウェアアーティファクトは、1つ以上のクラウドプラットフォーム上で実行するように構成されたサービスに関連付けられた実行可能な命令を含む、ことと、
クラウドプラットフォーム非依存アーティファクトバージョンマップに基づいて、前記目標のクラウドプラットフォームのためのクラウドプラットフォーム固有のデプロイパイプラインを生成することであって、前記クラウドプラットフォーム固有のデプロイパイプラインは、前記クラウドプラットフォーム非依存アーティファクトバージョンマップに従って、データセンタエンティティ上のサービスためのデプロイアーティファクトの適切なバージョンをビルド及びデプロイするための命令を含む、ことと、
前記クラウドプラットフォーム固有のデプロイパイプラインを実行のために前記目標のクラウドプラットフォームに送信することと、を含む、非一時的なコンピュータ可読記憶媒体。
【請求項10】
前記命令は、前記プロセッサに、さらに、
前記データセンタにソフトウェアアーティファクトをビルド及びデプロイするための命令を含む、クラウドプラットフォーム非依存デプロイパイプラインを生成することと、
前記クラウドプラットフォーム非依存デプロイパイプラインを、前記クラウドプラットフォーム非依存アーティファクトバージョンマップと併せてコンパイルすることと、を含むステップを実行させる、請求項9に記載の非一時的なコンピュータ可読記憶媒体。
【請求項11】
前記クラウドプラットフォーム非依存デプロイパイプラインは、1つ以上のステージの前のバージョンマップフィルタを備え、前記マスターパイプラインの実行により、前記ソフトウェアアーティファクトのバージョンが、前記バージョンマップフィルタに基づいてデータセンタエンティティごとに選択されるようにする、請求項10に記載の非一時的なコンピュータ可読記憶媒体。
【請求項12】
前記命令は、前記プロセッサに、さらに、
前記クラウドプラットフォーム非依存宣言的仕様を受信することと、
前記クラウドプラットフォーム非依存宣言的仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成することと、を含むステップを実行させる、請求項9に記載の非一時的なコンピュータ可読記憶媒体。
【請求項13】
前記クラウドプラットフォーム非依存宣言的仕様をコンパイルすることは、前記プロセッサに、
前記オリジナル宣言的仕様から前記データセンタの前記クラウドプラットフォーム非依存詳細メタデータ表現の第1のバージョンを生成することと、
前記修正された宣言的仕様から前記データセンタの前記クラウドプラットフォーム非依存詳細メタデータ表現の第2のバージョンを生成することと、を含むステップを実行させる、請求項9に記載の非一時的なコンピュータ可読記憶媒体。
【請求項14】
前記命令は、前記プロセッサに、さらに、
前記クラウドプラットフォーム非依存詳細メタデータ表現の前記第1のバージョンに基づいて、前記目標のクラウドプラットフォームのためのプラットフォーム固有の詳細メタデータ表現を生成することと、
前記プラットフォーム固有の詳細メタデータ表現に基づいて、前記目標のクラウドプラットフォームに前記データセンタをデプロイすることと、を含むステップを実行させる、請求項13に記載の非一時的なコンピュータ可読記憶媒体。
【請求項15】
前記クラウドプラットフォーム非依存宣言的仕様は、1つ以上のデータセンタインスタンスの定義を含み、各データセンタインスタンスは、1つ以上のサービスグループを含み、各サービスグループは、サービスのセットを含む、請求項9に記載の非一時的なコンピュータ可読記憶媒体。
【請求項16】
前記生成された命令は、1つ以上のパイプラインを含み、各パイプラインは、ステージのシーケンスを含み、各ステージは、データセンタエンティティにソフトウェアアーティファクトをデプロイするための1つ以上のアクションを実行する、請求項9に記載の非一時的なコンピュータ可読記憶媒体。
【請求項17】
コンピュータシステムであって、
コンピュータプロセッサと、
コンピュータプロセッサによって実行されるときに、前記コンピュータプロセッサに、クラウドプラットフォーム内にデータセンタを構成するためのステップを実行させる命令を記憶するための非一時的なコンピュータ可読記憶媒体であって、前記ステップは、
目標のクラウドプラットフォームに構成されたデータセンタにアクセスすることであって、前記データセンタは、データセンタエンティティの階層を含むクラウドプラットフォーム非依存宣言的仕様に基づいて生成され、各データセンタエンティティは、(1)サービス、又は(2)1つ以上の他のデータセンタエンティティのうちの1つ以上を含む、ことと、
前記データセンタのデータセンタエンティティを、前記データセンタエンティティにデプロイすることを目標とするソフトウェアアーティファクトのバージョンに関連付けるクラウドプラットフォーム非依存アーティファクトバージョンマップを受信することとであって、各ソフトウェアアーティファクトは、1つ以上のクラウドプラットフォーム上で実行するように構成されたサービスに関連付けられた実行可能な命令を含む、ことと、
クラウドプラットフォーム非依存アーティファクトバージョンマップに基づいて、前記目標のクラウドプラットフォームのためのクラウドプラットフォーム固有のデプロイパイプラインを生成することであって、前記クラウドプラットフォーム固有のデプロイパイプラインは、前記クラウドプラットフォーム非依存アーティファクトバージョンマップに従って、データセンタエンティティ上のサービスためのデプロイアーティファクトの適切なバージョンをビルド及びデプロイするための命令を含む、ことと、
前記クラウドプラットフォーム固有のデプロイパイプラインを実行のために前記目標のクラウドプラットフォームに送信することと、を含む、コンピュータシステム。
【請求項18】
前記命令は、前記プロセッサに、さらに、
前記データセンタにソフトウェアアーティファクトをビルド及びデプロイするための命令を含む、クラウドプラットフォーム非依存デプロイパイプラインを生成することと、
前記クラウドプラットフォーム非依存デプロイパイプラインを、前記クラウドプラットフォーム非依存アーティファクトバージョンマップと併せてコンパイルすることと、を含むステップを実行させる、請求項17に記載のコンピュータシステム。
【請求項19】
前記クラウドプラットフォーム非依存デプロイパイプラインは、1つ以上のステージの前のバージョンマップフィルタを備え、前記マスターパイプラインの実行により、前記ソフトウェアアーティファクトのバージョンが、前記バージョンマップフィルタに基づいてデータセンタエンティティごとに選択されるようにする、請求項18に記載のコンピュータシステム。
【請求項20】
前記命令は、前記プロセッサに、さらに、
前記クラウドプラットフォーム非依存宣言的仕様を受信することと、
前記クラウドプラットフォーム非依存宣言的仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成することと、を含むステップを実行させる、請求項17に記載のコンピュータシステム。
【請求項21】
クラウドプラットフォームに構成されたデータセンタにおいて実行されるサービスのソフトウェアアーティファクトをデプロイするためのコンピュータ実装方法であって、
目標のクラウドプラットフォームに構成されたデータセンタにアクセスすることであって、前記データセンタは、データセンタエンティティの階層を含むクラウドプラットフォーム非依存宣言的仕様に基づいて生成され、各データセンタエンティティは、(1)サービス、又は(2)1つ以上の他のデータセンタエンティティのうちの1つ以上を含む、ことと、
ソフトウェアアーティファクトをデプロイするためのステージのシーケンスを含むクラウドプラットフォーム非依存マスターパイプラインを生成することであって、前記ステージの前記シーケンスは、開発ステージ、テストステージ、及びプロダクションステージのうちの1つ以上を含み、前記シーケンスの前記ステージの少なくともいくつかは、前記ソフトウェアアーティファクトを前記シーケンスの前記ステージから前記シーケンスの後続のステージに促進するための基準を規定する、ことと、
前記クラウドプラットフォーム非依存マスターデプロイパイプラインをコンパイルして、前記クラウドプラットフォーム非依存宣言的仕様によって定義されたデータセンタのレイアウトに従ってサービスをデプロイするための命令と共に、前記目標のクラウドプラットフォームのためのクラウドプラットフォーム依存詳細デプロイパイプラインを生成することと、
前記クラウドプラットフォーム依存詳細パイプラインを前記目標のクラウドプラットフォーム上で実行することにより、1つ以上のサービスのためのソフトウェアアーティファクトをデプロイすることと、を含む、コンピュータ実装方法。
【請求項22】
前記クラウドプラットフォーム非依存マスターデプロイパイプラインをカスタマイズするための情報を受信することであって、前記目標のクラウドプラットフォームのための前記プラットフォーム依存詳細デプロイパイプラインは、前記カスタマイズされたクラウドプラットフォーム非依存マスターデプロイパイプラインに対して生成される、ことをさらに含む、請求項21に記載のコンピュータ実装方法。
【請求項23】
前記クラウドプラットフォーム非依存マスターデプロイパイプラインをカスタマイズするための前記情報は、前記ソフトウェアアーティファクトを前記シーケンスの第1のステージから前記シーケンスの第2のステージに促進するための前記基準を修正する、請求項22に記載のコンピュータ実装方法。
【請求項24】
特定のステージは、テストケースのセットを実行するための命令を含み、前記ソフトウェアアーティファクトを促進するための前記基準は、前記テストケースの実行の成功率を含む、請求項21に記載のコンピュータ実装方法。
【請求項25】
前記目標のクラウドプラットフォームにデプロイされたデータセンタにおいて実行されている前記サービスへのアクセスをユーザに提供することをさらに含む、請求項21に記載のコンピュータ実装方法。
【請求項26】
前記クラウドプラットフォーム非依存マスターデプロイパイプラインは、前記クラウドプラットフォーム非依存宣言仕様によって規定された前記データセンタエンティティの階層に対応する階層構造を有するパイプラインの階層を含む、請求項21に記載のコンピュータ実装方法。
【請求項27】
前記パイプラインの階層は、1つ以上のサービスグループパイプラインを含むデータセンタインスタンスパイプラインを含み、サービスグループパイプラインは、1つ以上のサービスパイプラインを含む、請求項26に記載のコンピュータ実装方法。
【請求項28】
前記クラウドプラットフォーム非依存宣言的仕様を受信することと、
前記クラウドプラットフォーム非依存宣言的仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成することと、をさらに含む、請求項21に記載のコンピュータ実装方法。
【請求項29】
前記クラウドプラットフォーム非依存宣言仕様をコンパイルことは、
前記オリジナル宣言的仕様から前記データセンタの前記クラウドプラットフォーム非依存詳細メタデータ表現の第1のバージョンを生成することと、
前記修正された宣言的仕様から前記データセンタの前記クラウドプラットフォーム非依存詳細メタデータ表現の第2のバージョンを生成することと、を含む、請求項21に記載のコンピュータ実装方法。
【請求項30】
前記クラウドプラットフォーム非依存詳細メタデータ表現の前記第1のバージョンに基づいて、前記目標のクラウドプラットフォームのためのプラットフォーム固有の詳細メタデータ表現を生成することと、
前記プラットフォーム固有の詳細メタデータ表現に基づいて、前記目標のクラウドプラットフォームに前記データセンタをデプロイすることと、をさらに含む、請求項29に記載のコンピュータ実装方法。
【請求項31】
前記クラウドプラットフォーム非依存宣言的仕様は、1つ以上のデータセンタインスタンスの定義を含み、各データセンタインスタンスは、1つ以上のサービスグループを含み、各サービスグループは、サービスのセットを含む、請求項21に記載のコンピュータ実装方法。
【請求項32】
コンピュータプロセッサによって実行されるときに、前記コンピュータプロセッサに、クラウドプラットフォームに構成されたデータセンタにおいて実行されるサービスのソフトウェアアーティファクトをデプロイするためのステップを実行させる命令を記憶するための非一時的なコンピュータ可読記憶媒体であって、前記ステップは、
目標のクラウドプラットフォームに構成されたデータセンタにアクセスすることであって、前記データセンタは、データセンタエンティティの階層を含むクラウドプラットフォーム非依存宣言的仕様に基づいて生成され、各データセンタエンティティは、(1)サービス、又は(2)1つ以上の他のデータセンタエンティティのうちの1つ以上を含む、ことと、
ソフトウェアアーティファクトをデプロイするためのステージのシーケンスを含むクラウドプラットフォーム非依存マスターパイプラインを生成することであって、前記ステージの前記シーケンスは、開発ステージ、テストステージ、及びプロダクションステージのうちの1つ以上を含み、前記シーケンスの前記ステージの少なくともいくつかは、前記ソフトウェアアーティファクトを前記シーケンスの前記ステージから前記シーケンスの後続のステージに促進するための基準を規定する、ことと、
前記クラウドプラットフォーム非依存マスターデプロイパイプラインをコンパイルして、前記クラウドプラットフォーム非依存宣言的仕様によって定義されたデータセンタのレイアウトに従ってサービスをデプロイするための命令と共に、前記目標のクラウドプラットフォームのためのクラウドプラットフォーム依存詳細デプロイパイプラインを生成することと、
前記クラウドプラットフォーム依存詳細パイプラインを前記目標のクラウドプラットフォーム上で実行することにより、1つ以上のサービスのためのソフトウェアアーティファクトをデプロイすることと、を含む、非一時的なコンピュータ可読記憶媒体。
【請求項33】
前記命令は、前記プロセッサに、さらに、
前記クラウドプラットフォーム非依存マスターデプロイパイプラインをカスタマイズするための情報を受信することであって、前記目標のクラウドプラットフォームのための前記プラットフォーム依存詳細デプロイパイプラインは、前記カスタマイズされたクラウドプラットフォーム非依存マスターデプロイパイプラインに対して生成される、ことを含むステップを実行させる、請求項32に記載の非一時的なコンピュータ可読記憶媒体。
【請求項34】
前記クラウドプラットフォーム非依存マスターデプロイパイプラインをカスタマイズするための前記情報は、前記ソフトウェアアーティファクトを前記シーケンスの第1のステージから前記シーケンスの第2のステージに促進するための前記基準を修正する、請求項33に記載の非一時的なコンピュータ可読記憶媒体。
【請求項35】
前記クラウドプラットフォーム非依存マスターデプロイパイプラインをカスタマイズするための前記情報は、前記ソフトウェアアーティファクトを前記シーケンスの第1のステージから前記シーケンスの第2のステージに促進するための前記基準を修正する、請求項32に記載の非一時的なコンピュータ可読記憶媒体。
【請求項36】
前記クラウドプラットフォーム非依存マスターデプロイパイプラインは、前記クラウドプラットフォーム非依存宣言仕様によって規定されたデータセンタエンティティの階層に対応する階層構造を有するパイプラインの階層を含む、請求項32に記載の非一時的なコンピュータ可読記憶媒体。
【請求項37】
前記パイプラインの階層は、1つ以上のサービスグループパイプラインを含むデータセンタインスタンスパイプラインを含み、サービスグループパイプラインは、1つ以上のサービスパイプラインを含む、請求項36に記載の非一時的なコンピュータ可読記憶媒体。
【請求項38】
前記命令は、前記プロセッサに、さらに、
前記クラウドプラットフォーム非依存宣言的仕様を受信することと、
前記クラウドプラットフォーム非依存宣言的仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成することと、を含むステップを実行させ、前記クラウドプラットフォーム非依存宣言的仕様をコンパイルすることは、前記プロセッサに、
前記オリジナル宣言的仕様から前記データセンタの前記クラウドプラットフォーム非依存詳細メタデータ表現の第1のバージョンを生成することと、
前記修正された宣言的仕様から前記データセンタの前記クラウドプラットフォーム非依存詳細メタデータ表現の第2のバージョンを生成することと、を含むステップを実行させる、請求項32に記載の非一時的なコンピュータ可読記憶媒体。
【請求項39】
前記クラウドプラットフォーム非依存宣言的仕様は、1つ以上のデータセンタインスタンスの定義を含み、各データセンタインスタンスは、1つ以上のサービスグループを含み、各サービスグループは、サービスのセットを含む、請求項32に記載の非一時的なコンピュータ可読記憶媒体。
【請求項40】
コンピュータシステムであって、
コンピュータプロセッサと、
コンピュータプロセッサによって実行されるときに、前記コンピュータプロセッサに、クラウドプラットフォーム内にデータセンタを構成するためのステップを実行させる命令を記憶するための非一時的なコンピュータ可読記憶媒体であって、前記ステップは、
目標のクラウドプラットフォームに構成されたデータセンタにアクセスすることであって、前記データセンタは、データセンタエンティティの階層を含むクラウドプラットフォーム非依存宣言的仕様に基づいて生成され、各データセンタエンティティは、(1)サービス、又は(2)1つ以上の他のデータセンタエンティティのうちの1つ以上を含む、ことと、
ソフトウェアアーティファクトをデプロイするためのステージのシーケンスを含むクラウドプラットフォーム非依存マスターパイプラインを生成することであって、前記ステージの前記シーケンスは、開発ステージ、テストステージ、及びプロダクションステージのうちの1つ以上を含み、前記シーケンスの前記ステージの少なくともいくつかは、前記ソフトウェアアーティファクトを前記シーケンスの前記ステージから前記シーケンスの後続のステージに促進するための基準を規定する、ことと、
前記クラウドプラットフォーム非依存マスターデプロイパイプラインをコンパイルして、前記クラウドプラットフォーム非依存宣言的仕様によって定義されたデータセンタのレイアウトに従ってサービスをデプロイするための命令と共に、前記目標のクラウドプラットフォームのためのクラウドプラットフォーム依存詳細デプロイパイプラインを生成することと、
前記クラウドプラットフォーム依存詳細パイプラインを前記目標のクラウドプラットフォーム上で実行することにより、1つ以上のサービスのためのソフトウェアアーティファクトをデプロイすることと、を含む、コンピュータシステム。
【請求項41】
前記クラウドプラットフォーム非依存デプロイパイプラインは、1つ以上のステージの前のバージョンマップフィルタを含み、前記マスターパイプラインの実行により、前記ソフトウェアアーティファクトのバージョンが、前記バージョンマップフィルタに基づいてデータセンタエンティティごとに選択されるようにする、請求項1~2のいずれか一項に記載のコンピュータ実装方法。
【請求項42】
前記クラウドプラットフォーム非依存宣言的仕様を受信することと、
前記クラウドプラットフォーム非依存宣言的仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成することと、をさらに含む、請求項1~2、41のいずれか一項に記載のコンピュータ実装方法。
【請求項43】
前記クラウドプラットフォーム非依存宣言仕様をコンパイルことは、
前記オリジナル宣言的仕様から前記データセンタの前記クラウドプラットフォーム非依存詳細メタデータ表現の第1のバージョンを生成することと、
前記修正された宣言的仕様から前記データセンタの前記クラウドプラットフォーム非依存詳細メタデータ表現の第2のバージョンを生成することと、を含む、請求項1~2、41~42のいずれか一項に記載のコンピュータ実装方法。
【請求項44】
前記クラウドプラットフォーム非依存詳細メタデータ表現の前記第1のバージョンに基づいて、前記目標のクラウドプラットフォームのためのプラットフォーム固有の詳細メタデータ表現を生成することと、
前記プラットフォーム固有の詳細メタデータ表現に基づいて、前記目標のクラウドプラットフォームに前記データセンタをデプロイすることと、をさらに含む、請求項1~2、41~43のいずれか一項に記載のコンピュータ実装方法。
【請求項45】
前記クラウドプラットフォーム非依存宣言的仕様は、1つ以上のデータセンタインスタンスの定義を含み、各データセンタインスタンスは、1つ以上のサービスグループを含み、各サービスグループは、サービスのセットを含む、請求項1~2、41~44のいずれか一項に記載のコンピュータ実装方法。
【請求項46】
前記生成された命令は、1つ以上のパイプラインを含み、各パイプラインは、ステージのシーケンスを含み、各ステージは、前記データセンタエンティティにソフトウェアアーティファクトをデプロイするための1つ以上のアクションを実行する、請求項1~2、41~45のいずれか一項に記載のコンピュータ実装方法。
【請求項47】
前記クラウドプラットフォーム非依存マスターデプロイパイプラインをカスタマイズするための前記情報は、前記ソフトウェアアーティファクトを前記シーケンスの第1のステージから前記シーケンスの第2のステージに促進するための前記基準を修正する、請求項21~22のいずれか一項に記載のコンピュータ実装方法。
【請求項48】
特定のステージは、テストケースのセットを実行するための命令を含み、前記ソフトウェアアーティファクトを促進するための前記基準は、前記テストケースの実行の成功率を含む、請求項21~22、47のいずれか一項に記載のコンピュータ実装方法。
【請求項49】
前記目標のクラウドプラットフォームにデプロイされたデータセンタにおいて実行されている前記サービスへのアクセスをユーザに提供することをさらに含む、請求項21~22、47~48のいずれか一項に記載のコンピュータ実装方法。
【請求項50】
前記クラウドプラットフォーム非依存マスターデプロイパイプラインは、前記クラウドプラットフォーム非依存宣言仕様によって規定されたデータセンタエンティティの階層に対応する階層構造を有するパイプラインの階層を含む、請求項21~22、47~49のいずれか一項に記載のコンピュータ実装方法。
【請求項51】
前記パイプラインの階層は、1つ以上のサービスグループパイプラインを含むデータセンタインスタンスパイプラインを含み、サービスグループパイプラインは、1つ以上のサービスパイプラインを含む、請求項21~22、47~50のいずれか一項に記載のコンピュータ実装方法。
【請求項52】
前記クラウドプラットフォーム非依存宣言的仕様を受信することと、
前記クラウドプラットフォーム非依存宣言的仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成することと、をさらに含む、請求項21~22、47~51のいずれか一項に記載のコンピュータ実装方法。
【請求項53】
前記クラウドプラットフォーム非依存宣言仕様をコンパイルことは、
前記オリジナル宣言的仕様から前記データセンタの前記クラウドプラットフォーム非依存詳細メタデータ表現の第1のバージョンを生成することと、
前記修正された宣言的仕様から前記データセンタの前記クラウドプラットフォーム非依存詳細メタデータ表現の第2のバージョンを生成することと、を含む、請求項21~22、47~52のいずれか一項に記載のコンピュータ実装方法。
【請求項54】
前記クラウドプラットフォーム非依存詳細メタデータ表現の前記第1のバージョンに基づいて、前記目標のクラウドプラットフォームのためのプラットフォーム固有の詳細メタデータ表現を生成することと、
前記プラットフォーム固有の詳細メタデータ表現に基づいて、前記目標のクラウドプラットフォームに前記データセンタをデプロイすることと、をさらに含む、請求項21~22、47~53のいずれか一項に記載のコンピュータ実装方法。
【請求項55】
前記クラウドプラットフォーム非依存宣言的仕様は、1つ以上のデータセンタインスタンスの定義を含み、各データセンタインスタンスは、1つ以上のサービスグループを含み、各サービスグループは、サービスのセットを含む、請求項21~22、47~54のいずれか一項に記載のコンピュータ実装方法。
【請求項56】
コンピュータプロセッサによって実行されるときに、前記コンピュータプロセッサに、請求項1~8、21~31、41~55のいずれか一項に記載のステップを実行させる命令を記憶するための非一時的なコンピュータ可読記憶媒体。
【請求項57】
コンピュータシステムであって、
コンピュータプロセッサと、
コンピュータプロセッサによって実行されるときに、前記コンピュータプロセッサに、請求項1~8、21~31、41~55のいずれか一項に記載のステップを実行させる命令を記憶するための非一時的なコンピュータ可読記憶媒体と、を含む、コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、クラウドコンピューティングプラットフォームにおけるソフトウェアリリースの管理に関連し、特に、クラウドコンピューティングプラットフォームにおいて構成されたデータセンタ上のソフトウェアリリースのデプロイに関連する。
【背景技術】
【0002】
組織は、AWS(AMAZON WEB SERVICES)、GOOGLEクラウドプラットフォーム、MICROSOFT AZUREなどのクラウドプラットフォーム(又はクラウドコンピューティングプラットフォーム)について、インフラストラクチャのニーズに対してますます回答するようになっている。クラウドプラットフォームは、サーバ、ストレージ、データベース、ネットワーキング、ソフトウェアなどをインターネット経由で組織に提供する。従来、組織は、組織によって使用されるハードウェア及びソフトウェアを収容するデータセンタを維持している。しかしながら、データセンタを維持することで、メンテナンス、人員などの面で著しいオーバーヘッドが生じる可能性がある。結果として、組織はデータセンタをコンピューティングリソースのスケーラビリティ及び弾力性を提供するクラウドプラットフォームに移行しつつある。
【0003】
組織は、クラウドプラットフォーム上でアプリケーションを管理及びデプロイできる継続的送達プラットフォームを使用して、クラウドプラットフォーム上でクラウドインフラストラクチャを維持する。このような継続的送達プラットフォームにより、組織はソフトウェアデプロイプロセスを簡略化し、アプリケーション、ファイアウォール、クラスタ、サーバ、ロードバランサ、他のクラウドプラットフォーム上のコンピューティングインフラストラクチャを管理することが可能となる。しかし、継続的送達プラットフォームを使用してクラウドプラットフォーム上に提供されるサービスのソフトウェアリリースをデプロイすることは複雑になることがある。例えば、異なるバージョンのソフトウェアを、異なるクラウドコンピューティングリソース上で実行されている異なるサービスにデプロイする必要があるかもしれない。さらに、各クラウドプラットフォームは、リソースを管理するために異なるツールを使用する。
【0004】
マルチテナントシステムなどの大規模なシステムは、マルチテナントシステムのテナントを表す多数の組織のサービスを管理し、複数のクラウドプラットフォームと相互作用することがある。マルチテナントシステムでは、クラウドプラットフォーム上に数千のデータセンタを維持しなければならないことがある。各データセンタでは、ソフトウェアリリースの要件が異なることがある。さらに、各クラウドプラットフォームによってサポートされるソフトウェア、言語、機能は異なることがある。例えば、異なるクラウドプラットフォームは、ネットワークポリシー又はアクセス制御を実装するために異なるメカニズムをサポートすることがある。結果として、マルチテナントシステムは、データセンタに対してサポートされているクラウドプラットフォームの数に応じて、データセンタ上のサービスをリリース及びデプロイするためのメカニズムの異なる実装を維持しなくてはならない。その結果、複数のクラウドプラットフォームにまたがるデータセンタ上のソフトウェアリリースをサポートするためのマルチテナントシステムでは、メンテナンスコストが高くなる。
【図面の簡単な説明】
【0005】
図1】一実施形態による、クラウドプラットフォーム上にデータセンタを構成するマルチテナントシステムを例示するシステム環境のブロック図である。
【0006】
図2A】一実施形態による、デプロイモジュール210のシステムアーキテクチャを例示するブロック図である。
【0007】
図2B】一実施形態による、データセンタにおいてソフトウェアアーティファクトをデプロイするための全体プロセスを例示する。
【0008】
図3】一実施形態による、ソフトウェアリリース管理モジュールのアーキテクチャを例示するブロック図である。
【0009】
図4】一実施形態による、データセンタ宣言的仕様の一例を例示する。
【0010】
図5】一実施形態による、宣言的仕様に基づいてクラウドプラットフォーム上に作成された例示的なデータセンタを例示する。
【0011】
図6】一実施形態による、宣言的仕様に基づくクラウドプラットフォーム上のデータセンタの生成を例示するブロック図である。
【0012】
図7】一実施形態による、クラウドプラットフォーム上に構成されたデータセンタにソフトウェアアーティファクトをデプロイするためのパイプラインを生成するための全体プロセスを示す。
【0013】
図8】一実施形態による、例示的なマスターパイプラインを例示する。
【0014】
図9】一実施形態による、クラウドプラットフォーム上のマスターパイプラインの環境のためのステージによって実行される全体プロセスを示す。
【0015】
図10】一実施形態による、例示的なマスターパイプラインを示す。
【0016】
図11】一実施形態による、データセンタのための例示的なマスターパイプラインを示す。
【0017】
図12】一実施形態による、マスターパイプラインの実行がアーティファクトバージョンマップに基づいてどのように修正されるかを例示する。
【0018】
図13】一実施形態による、クラウドプラットフォーム上に構成されたデータセンタにソフトウェアアーティファクトをデプロイするための全体プロセスを示す。
【0019】
図14】一実施形態による、図1の環境で使用するための典型的なコンピュータシステムの機能図を例示するブロック図である。
【0020】
図面は、例示のみを目的として様々な実施形態を描写する。当業者は、以下の議論から、本明細書に記載された実施形態の原理から逸脱することなく、本明細書に例示された構造及び方法の代替的な実施形態を採用してもよいことを容易に認識するであろう。
【0021】
図は、同様の要素を識別するために、同様の参照番号を使用する。「115a」のような参照番号の後の文字は、本文がその特定の参照番号を有する要素を特に参照していることを示す。「115」のような後続の文字を伴わない本文中の参照番号は、その参照番号を有する図中の要素のいずれか又は全てを指す。
【発明を実施するための形態】
【0022】
クラウドプラットフォームは、ストレージ、コンピューティングリソース、アプリケーションなどのコンピューティングリソースを、インターネットなどのパブリックネットワークを介してオンデマンドベースでコンピューティングシステムに提供する。クラウドプラットフォームは、企業はコンピューティングインフラストラクチャをセットアップするための初期費用を最小限に抑えることが可能となり、企業はより少ないメンテナンスオーバーヘッドでアプリケーションを迅速に立ち上げて実行することが可能となる。また、クラウドプラットフォームは、企業はコンピューティングリソースを、急激に変動する予測不可能な需要に調整することが可能となる。企業は、企業のユーザが使用するためのクラウドプラットフォームを使用してデータセンタを作成することができる。しかしながら、各クラウドプラットフォームにデータセンタを実装することは、クラウドプラットフォームの技術に関する専門知識が必要となる。
【0023】
実施形態は、コンピューティングシステムが、クラウドプラットフォーム非依存クラウドプラットフォームインフラストラクチャ言語を使用して、クラウドプラットフォーム内にデータセンタを作成する。システムは、クラウドプラットフォーム非依存データセンタの宣言的仕様を受信する。宣言的仕様はデータセンタの構造を記述し、どのようにデータセンタを作成するかを特定する命令を提供しなくてもよい。クラウドプラットフォーム非依存宣言的仕様は、複数のクラウドプラットフォームのいずれかにデータセンタを生成するように構成され、クラウドプラットフォームインフラストラクチャ言語を使用して規定される。システムは、データセンタを作成するために目標のクラウドプラットフォームを識別する情報を受信し、クラウドプラットフォーム非依存宣言的仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成する。システムは、クラウドプラットフォーム固有のデータセンタ表現と、目標のクラウドプラットフォーム上の実行のための命令のセットを送信する。目標のクラウドプラットフォームは、プラットフォーム固有のデータセンタ表現を使用してデータセンタを構成する命令を実行する。このシステムは、クラウドプラットフォームによって構成されたデータセンタのコンピューティングリソースへのアクセスをユーザに提供する。
【0024】
一実施形態では、システムは、クラウドプラットフォーム上に構成されたデータセンタでソフトウェアリリースに関連する動作、例えば、ソフトウェアリリースのデプロイ、リソースのプロビジョニング、ソフトウェアリリースのロールバックの実行などを実行する。システムは、目標のクラウドプラットフォーム上に構成されたデータセンタにアクセスする。データセンタは、データセンタエンティティの階層を含む、クラウドプラットフォーム非依存宣言的仕様に基づいて生成される。各データセンタエンティティは、(1)サービス、又は(2)1つ以上の他のデータセンタエンティティのうちの1つ以上を含む。このシステムは、クラウドプラットフォーム非依存マスターパイプラインを生成し、このパイプラインは、(1)ソフトウェアアーティファクトをデプロイするためのステージのシーケンス、例えば、開発ステージ、テストステージ、プロダクションステージと、(2)ソフトウェアアーティファクトをステージのシーケンスの1つのステージから後続のステージへソフトウェアアーティファクトを促進するための基準と、を含む。システムは、クラウドプラットフォーム非依存マスターパイプラインをコンパイルして、宣言的仕様で定義されたデータセンタのレイアウトに従ってサービスに関連する動作を実行するための命令と共に、目標のクラウドプラットフォームに対してクラウドプラットフォーム依存詳細パイプラインを生成する。システムは、目標のクラウドプラットフォーム上でクラウドプラットフォーム依存詳細パイプラインを実行して、例えば、データセンタのデータセンタエンティティにソフトウェアリリースをデプロイする。
【0025】
一実施形態では、システムは、目標のクラウドプラットフォーム上に構成されたデータセンタにアクセスする。システムは、データセンタのデータセンタエンティティと、データセンタエンティティにデプロイすることを目標とするソフトウェアアーティファクトのバージョンとを関連付ける、クラウドプラットフォーム非依存アーティファクトバージョンマップを受信する。各ソフトウェアアーティファクトは、1つ以上のクラウドプラットフォーム上で実行するように構成されたサービスに関連付けられた実行可能な命令を含む。システムは、クラウドプラットフォーム非依存アーティファクトバージョンマップに基づいて、目標のクラウドプラットフォームのためのクラウドプラットフォーム固有のマスターパイプラインを生成する。クラウドプラットフォーム固有のマスターパイプラインは、クラウドプラットフォーム非依存バージョンマップに従って、データセンタエンティティ上のサービスのデプロイアーティファクトの適切なバージョンをビルドしてデプロイするなどの動作を実行するための命令を含む。システムは、クラウドプラットフォーム固有のデプロイパイプラインを実行のために目標のクラウドプラットフォームに送信する。アーティファクトバージョンマップとマスターパイプラインは、サービスのデプロイ、サービスの破棄、サービスのためのリソースのプロビジョニング、サービスのためのリソースの破棄などを含む、サービスに関連する様々なアクションを実行するために使用され得る。
【0026】
クラウドプラットフォームは、本明細書ではサブストレイトとも呼ばれる。データセンタの宣言的仕様は、サブストレイト非依存か、又はサブストレイトアグノスティックである。ソフトウェアリリースのデプロイ、リソースのプロビジョニングなど、データセンタに関連する動作が従来の技法で実行される場合、ユーザは、クラウドプラットフォーム固有の命令を提供しなくてはならない。したがって、ユーザは使用されるクラウドプラットフォームの専門知識を必要とする。さらに、命令はクラウドプラットフォーム固有であり、複数のプラットフォームにわたって移植可能ではない。例えば、AWSクラウドプラットフォームにソフトウェアをデプロイするための命令は、GCPクラウドプラットフォームでの命令とは異なる。開発者は、各機能がその特定のクラウドプラットフォーム上でどのように実装されているかの詳細を理解する必要がある。開示されたシステムは、ユーザが、クラウドプラットフォームに依存せず、かつ複数のクラウドプラットフォームから選択された任意のクラウドプラットフォーム上で実行可能な命令を使用してデータセンタ上での動作を実行することを可能にするクラウドプラットフォームインフラストラクチャ言語を提供する。クラウドプラットフォームインフラストラクチャ言語のコンパイラは、目標のクラウドプラットフォームのためのクラウドプラットフォーム固有の詳細命令を生成する。
【0027】
クラウドプラットフォームインフラストラクチャ言語は、ドメイン固有言語(DSL)と呼ばれることがある。システムはマルチテナントシステムを表してもよいが、マルチテナントシステムに限定されず、任意のオンラインシステム又はクラウドプラットフォームへのネットワークアクセスを有する任意のコンピューティングシステムであってもよい。システム環境
【0028】
図1は、一実施形態による、クラウドプラットフォーム上にデータセンタを構成するマルチテナントシステムを例示するシステム環境のブロック図である。システム環境100は、マルチテナントシステム110、1つ以上のクラウドプラットフォーム120、及び1つ以上のクライアントデバイス105を含む。他の実施形態では、システム環境100は、より多くの又はより少ないコンポーネントを含んでもよい。
【0029】
マルチテナントシステム110は、1つ以上のテナント115の情報を記憶する。各テナントは、マルチテナントシステム110の顧客を表す企業に関連付けられてもよい。各テナントは、クライアントデバイス105を介してマルチテナントシステムと対話する複数のユーザを有してもよい。
【0030】
クラウドプラットフォームはまた、クラウドコンピューティングプラットフォーム又はパブリッククラウド環境とも呼ばれる。テナントは、クラウドプラットフォームインフラストラクチャ言語を使用して、目標のクラウドプラットフォーム120上に作成されたデータセンタの宣言的仕様を提供し、データセンタを使用して、例えば、リソースのプロビジョニング、ソフトウェアリリースの実行などの動作を実行してもよい。テナント115は、クラウドプラットフォーム120上に1つ以上のデータセンタを作成してもよい。データセンタとは、ユーザ、例えば、テナントに関連付けられているユーザによって使用され得る、サーバ、アプリケーション、ストレージ、メモリなどのコンピューティングリソースのセットを表す。各テナントは、そのテナントのユーザに異なる機能を提示してもよい。したがって、各テナントは、そのテナントのために構成されたデータセンタ上で異なるサービスを実行してもよい。マルチテナントシステムは、テナントごとにソフトウェアのリリース及びデプロイのための異なるメカニズムを実装してもよい。テナントはさらに、データセンタで実行される様々なサービスのための命令を含むソフトウェアのバージョンを取得又は開発してもよい。実施形態により、テナントは、データセンタの異なるコンピューティングリソース上で実行される異なるサービスに対してソフトウェアリリースの特定のバージョンをデプロイすることが可能となる。
【0031】
データセンタのコンピューティングリソースは安全であり、それらにアクセスすることを認可されていないユーザがアクセスすることができない。例えば、テナント115aのユーザのために作成されるデータセンタ125aは、アクセスが明示的に許可されない限り、テナント115bのユーザがアクセスすることができない。同様に、テナント115bのユーザのために作成されたデータセンタ125bは、アクセスが明示的に許可されない限り、テナント115aのユーザがアクセスすることができない。さらに、データセンタによって提供されるサービスは、データセンタの宣言的仕様に従ってコンピューティングシステムにアクセスが許可された場合にのみ、データセンタ外部のコンピューティングシステムによってアクセスされてもよい。
【0032】
マルチテナントシステム110では、複数のテナントのためのデータが同じ物理データベースに記憶されてもよい。しかしながら、1つのテナントが、別のテナントのデータに対して、そのようなデータが明示的に共有されない限りアクセスを有さないように、1つのテナントのデータが他のテナントのデータとは論理的に分離して保持されるように構成されてもよい。テナントのデータが他の顧客のデータと共有されるテーブルに記憶されることがあることは、テナントに対して透過的である。データベーステーブルは、複数のテナントに対する行を記憶してもよい。したがって、マルチテナントシステムでは、システムのハードウェア及びソフトウェアの様々な要素が、1つ以上のテナントによって共有されることがある。例えば、マルチテナントシステム110は、多数のテナントに対する要求を同時に処理するアプリケーションサーバを実行してもよい。しかしながら、マルチテナントシステムでは、テナントレベルのデータ隔離を実施して、1つのテナントのジョブが他のテナントのデータにアクセスしないことを保証する。
【0033】
クラウドプラットフォームの例としては、AWS(Amazon Web Services)、GOOGLEクラウドプラットフォーム、又はMICROSOFT AZUREを含む。クラウドプラットフォーム120は、テナント115によって、又はクラウドプラットフォーム120外部の任意のコンピューティングシステムによってオンデマンドで使用されてもよいコンピューティングインフラストラクチャサービスを提示する。クラウドプラットフォームによって提供されるコンピューティングインフラストラクチャサービスの例としては、サーバ、ストレージ、データベース、ネットワーキング、セキュリティ、ロードバランシング、ソフトウェア、分析、インテリジェンス、及び他のインフラストラクチャサービス機能を含む。これらのインフラストラクチャサービスをテナント115が使用して、スケーラブルかつ安全な方法でアプリケーションをビルドし、デプロイし、管理してもよい。
【0034】
マルチテナントシステム110は、マルチテナントストアの様々なテナントに関するデータを記憶するテナントデータストアを含んでもよい。テナントデータストアは、例えば、別個のデータベーステーブル又は別個のデータベースである別個の物理的構造内の異なるテナントに対するデータを記憶してもよい。代替的には、テナントデータストアは、共有構造で複数のテナントのデータを記憶してもよい。例えば、全てのテナントのユーザアカウントが同じデータベーステーブルを共有することがある。しかしながら、マルチテナントシステムは、異なるテナントのデータを論理的に分離するための追加情報を記憶する。
【0035】
図1に示す各コンポーネントは、1つ以上のコンピューティングデバイスを表す。コンピューティングデバイスは、例えば、Microsoft(登録商標)Windows(登録商標)互換オペレーティングシステム(OS)、Apple(登録商標)OS X、及び/又はLinux(登録商標)ディストリビューションを実行する従来のコンピュータシステムであり得る。コンピューティングデバイスは、パーソナルデジタルアシスタント(PDA)、携帯電話、ビデオゲームシステムなどのコンピュータ機能を有するクライアントデバイスであり得る。各コンピューティングデバイスは、命令を格納するソフトウェアモジュールを記憶する。
【0036】
システム環境100の様々なコンポーネント間の対話は、典型的には、図1に示さないネットワークを介して実行される。一実施形態では、ネットワークは標準的な通信技術及び/又はプロトコルを使用する。別の実施形態では、エンティティは、上述したものの代わりに、又はこれに加えて、カスタム及び/又は専用データ通信技術を使用することができる。
【0037】
本明細書に開示される技術は、マルチテナントシステムに関連して記載されるが、これらの技術は、マルチテナントシステムではないことがある他のシステムを使用して実装され得る。例えば、単一の組織又は企業によって使用されるオンラインシステムが、本明細書に開示される技術を私用して、1つ以上のクラウドプラットフォーム120上に1つ以上のデータセンタを作成してもよい。システムアーキテクチャ
【0038】
マルチテナントシステム110は、クラウドプラットフォームにソフトウェアアーティファクトをデプロイするためのデプロイモジュールを含む。デプロイモジュールは、ソフトウェアリリースに関連付けられた様々な動作、例えば、クラウドプラットフォーム上のリソースのプロビジョニング、ソフトウェアリリースのデプロイ、データセンタエンティティにインストールされたソフトウェアアーティファクトのロールバックの実行などを実行することができる。図2は、一実施形態による、デプロイモジュール210のシステムアーキテクチャを例示するブロック図である。デプロイモジュール210は、データセンタ生成モジュール220と、ソフトウェアリリース管理モジュール230と、を含む。他の実施形態は、本明細書で記載されたものとは異なる及び/又は他のコンポーネントを有することができ、機能が、異なる方法でコンポーネント間で分散され得る。
【0039】
データセンタ生成モジュール220は、クラウドプラットフォームにデータセンタを作成するための命令を含む。ソフトウェアリリース管理モジュール230は、データセンタ生成モジュール220によって作成されたデータセンタで実行される様々なサービス又はアプリケーションのためにソフトウェアリリースをデプロイするための命令を含む。
【0040】
データセンタ生成モジュール220は、ユーザ、例えばテナントのユーザから、データセンタのクラウドプラットフォーム非依存宣言仕様を受信する。データセンタのクラウドプラットフォーム非依存宣言的仕様は、データセンタの様々なエンティティを規定する。一実施形態では、データセンタのクラウドプラットフォーム非依存宣言的仕様は、データセンタエンティティの階層組織を含み、各データセンタエンティティは、1つ以上のサービス、1つ以上の他のデータセンタエンティティ、又はその両方の組み合わせを含んでもよい。図4は、様々なタイプのデータセンタエンティティをより詳細に説明する。データセンタ生成モジュール220は、プラットフォーム非依存宣言的仕様及び目標のクラウドプラットフォームを入力として受信し、目標のクラウドプラットフォームのためのクラウドプラットフォーム固有のメタデータ表現を生成する。データセンタ生成モジュール240は、宣言的仕様に従って、生成されたクラウドプラットフォーム固有のメタデータ表現を目標のクラウドプラットフォームにデプロイして、目標のクラウドプラットフォームにデータセンタを作成する。
【0041】
ソフトウェアリリース管理モジュール230は、入力として(1)アーティファクトバージョンマップ225及び(2)マスターパイプライン235を受信する。アーティファクトバージョンマップ225は、特定のデータセンタエンティティにデプロイすることを目標とするソフトウェアリリース又はデプロイアーティファクトの特定のバージョンを識別する。アーティファクトバージョンマップ225は、データセンタエンティティを、データセンタエンティティにデプロイされることを目標とするソフトウェアリリースバージョンにマッピングする。マスターパイプライン235は、例えば、サービスのデプロイ、サービスの破棄、サービスのためのリソースのプロビジョニング、サービスのためのリソースの破棄など、データセンタ上のソフトウェアリリースに関連する動作のための命令を含む。
【0042】
マスターパイプライン235は、開発環境、テスト環境、カナリア環境、及びプロダクション環境などの異なる環境に対するソフトウェアリリースに関連する動作を実行するための命令、及びソフトウェアリリースが1つの環境から別の環境に促進されるときを判定するための命令を含んでもよい。例えば、開発環境におけるソフトウェアリリースのデプロイが、閾値より多いテストケースを実行する場合、そのソフトウェアリリースは、さらなるテスト、例えば、システムレベル及び統合テストのためのテスト環境に促進される。テスト環境におけるソフトウェアリリースがテストカバレッジの閾値を超える場合、そのソフトウェアリリースは、そのソフトウェアリリースがトライアルベースでユーザの小さなサブセットに提供されるカナリア環境に促進される。カナリア環境におけるソフトウェアリリースが閾値時間にわたってエラーなしで実行される場合、ソフトウェアリリースは、ソフトウェアリリースが全てのユーザに提供されるプロダクション環境に促進される。
【0043】
ソフトウェアリリース管理モジュール230は、入力アーティファクトバージョンマップ225及びマスターパイプライン235をコンパイルして、目標のクラウドプラットフォームに送信されるクラウドプラットフォーム固有の詳細パイプライン255を生成する。クラウドプラットフォーム固有の詳細パイプライン255は、アーティファクトバージョンマップ225に規定されているように、データセンタエンティティにソフトウェアリリース又はデプロイアーティファクトの適切なバージョンをデプロイするための命令を含む。ソフトウェアリリース管理モジュール230は、入力の1つに対する修正を受信してもよい。例えば、ユーザは、入力アーティファクトバージョンマップ225を修正し、同じマスターパイプライン235を提供してもよい。したがって、同じマスターパイプラインが使用されているが、異なるソフトウェアリリースがデータセンタエンティティにデプロイされている。ソフトウェアリリース管理モジュール230は、入力を再コンパイルして、新しいアーティファクトバージョンマップ225に従ってソフトウェアリリースのバージョンをデプロイする新しいクラウドプラットフォーム固有の詳細パイプライン255を生成する。
【0044】
アーティファクトバージョンマップは、デプロイマニフェスト、バージョンマニフェスト、ソフトウェアリリースマップ、又はソフトウェアアーティファクトバージョンマップとも呼ばれてもよい。マスターパイプラインは、マスターデプロイパイプライン又はマスターオーケストレーションパイプラインとも呼ばれてもよい。
【0045】
図2Bは、一実施形態による、データセンタにおいてソフトウェアアーティファクトをデプロイするための全体プロセスを例示する。図2Bは、様々なデータセンタエンティティを含むデータセンタ265のレイアウトを示す。図2Bに示すように、アーティファクトバージョンマップ225は、データセンタ265の異なるデータセンタエンティティ275にリリースすることを目標とするソフトウェアの異なるバージョンを識別する。マスターパイプラインは、データセンタの様々な環境におけるデプロイアーティファクトのフローを表す。ソフトウェアリリース管理モジュール230は、マスターパイプライン235内の情報をアーティファクトバージョンマップ225と組み合わせて、アーティファクトバージョンマップ225に従ってデータセンタエンティティ上のソフトウェアアーティファクトの適切なバージョンをマッピングするクラウドプラットフォーム固有の詳細パイプライン255を判定する。
【0046】
図3は、一実施形態による、ソフトウェアリリース管理モジュールのアーキテクチャを例示するブロック図である。ソフトウェアリリース管理モジュール230は、解析モジュール310と、パイプラインジェネレータモジュール320と、アーティファクトバージョンマップストア330と、パイプラインストア340と、パイプライン実行エンジン360と、を含む。他の実施形態は、本明細書において図3に例示するモジュールよりも多くの、少ない、又は異なるモジュールを含んでもよい。
【0047】
解析モジュール310は、データセンタの宣言的仕様、アーティファクトバージョンマップ225、及びマスターパイプライン235を含む様々なタイプのユーザ入力を解析する。構文解析モジュール310は、処理された入力のデータ構造及びメタデータ表現を生成し、生成されたデータ構造及びメタデータ表現を、さらなる処理のためにソフトウェアリリース管理モジュール230の他のモジュールに提供する。
【0048】
メタデータストア340は、ソフトウェアリリース管理モジュール230によって生成されるデータセンタの様々な変換されたメタデータ表現を記憶する。変換されたメタデータ表現は、データセンタの現在のバージョンで問題が発生した場合に、以前のバージョンへのロールバックを実行するために使用されてもよい。変換されたメタデータ表現は、変換プロセスの様々なステージにおいて、検証、監査、ガバナンスなどのために使用されてもよい。
【0049】
パイプラインジェネレータモジュール320は、入力として受信したアーティファクトバージョンマップと併せてマスターパイプラインを処理して、目標のクラウドプラットフォームのための詳細パイプラインを生成する。パイプラインは、アーティファクトバージョンマップに従って、クラウドプラットフォーム上の様々なサービスのためのソフトウェアリリースのバージョンをデプロイするためのサービスのプロビジョニング又はアプリケーションのデプロイのための命令を含むステージを含む。アーティファクトバージョンマップストア330は、ユーザから受信したアーティファクトバージョンマップを記憶し、パイプラインストア340は、パイプラインジェネレータモジュール320によって生成されたパイプラインだけでなく、マスターパイプラインを記憶する。
【0050】
パイプライン実行エンジン360は、パイプライン生成モジュール320によって生成された詳細パイプラインを実行する。一実施形態では、パイプライン実行エンジン360は、ソフトウェアをリリース/デプロイするためのパイプラインを実行するSPINNAKERのようなシステムである。パイプライン実行エンジン360は、パイプラインを解析し、目標のクラウドコンピューティングプラットフォーム上でパイプラインの各ステージを実行する。クラウドプラットフォームベースのデータセンタ生成
【0051】
図4は、一実施形態による、データセンタの宣言的仕様の一例を例示する。宣言的仕様410は、複数のデータセンタエンティティを含む。データセンタエンティティは、データセンタエンティティタイプのインスタンスであり、各データセンタエンティティタイプに複数のインスタンスがあり得る。データセンタエンティティの例としては、データセンタ、サービスグループ、サービス、チーム、環境、及びスキーマを含む。
【0052】
宣言的仕様410は、サービスグループ、サービス、チーム、環境、及びスキーマを含む様々なタイプのデータセンタエンティティの定義を含む。宣言的仕様は、データセンタの1つ以上のインスタンスを含む。以下は、様々なタイプのデータセンタエンティティとそれらの例について説明する。例は例示的であり、データセンタエンティティの属性のうちのいくつかを示している。他の実施形態は、異なる属性を含んでもよく、同じ機能を有する属性には、本明細書に示すものとは異なる名前が与えられてもよい。一実施形態では、宣言的仕様は、予め定義されたスキーマに準拠する階層オブジェクト、例えばJSON(Javascript object notation)を使用して規定される。
【0053】
サービスグループ520は、一実施形態による、独立してビルド及び提供され得る1つ以上のコンピューティングシステムによって提示される能力、特徴及びサービスのセットを表す。サービスグループは、論理サービスグループ、機能ユニット、又は境界のあるコンテキストとも呼ばれてもよい。サービスグループ520は、1つ以上のコンピューティングシステムによって提供される、包括的な技術ユースケース機能のセットのサービスのセットと捉えてもよい。サービスグループ520は、セキュリティ境界を実施する。サービスグループ520は、修正の範囲を定義する。したがって、サービスグループ520内の1つ以上のコンピューティングシステムによって提供される能力、特徴、サービスなどのエンティティに対するいかなる変更も、サービスグループ520内のエンティティに対して必要に応じて、又は好適に伝播してもよいが、サービスグループ420の境界のある定義の外部に存在するエンティティには伝播しない。データセンタは、複数のサービスグループ520を含んでもよい。サービスグループ定義は、名前、説明、識別子、スキーマバージョン、サービスインスタンスのセットなどの属性を規定する。サービスグループの一例としては、ブロックチェーン機能の提供に使用されるサービスのセットを含むブロックチェーンサービスグループである。同様に、セキュリティサービスグループは、セキュリティ特徴を提供する。ユーザインターフェースサービスグループは、特定のユーザインターフェース特徴の機能を提供する。共有ドキュメントサービスグループは、ユーザにわたってドキュメントを共有する機能を提供する。同様に、複数の他のサービスグループがある可能性がある。
【0054】
サービスグループは、データセンタの開発に関心のあるテナント又はユーザが、簡単に使用することができるサービスグループのライブラリを有することができるように仕様の再利用性をサポートする。サービスグループのサービスの境界は、とりわけ、セキュリティ上の懸念及びネットワーク上の懸念に基づく。サービスグループは、サービスグループとの対話を実行するためのプロトコルに関連付けられている。一実施形態では、サービスグループは、API(アプリケーションプログラミングインターフェース)の集合と、それらのAPIを実装するサービスと、を提供する。さらに、サービスグループはサブストレイト非依存である。サービスグループは、サービスグループ内のサービスの任意の障害が、サービスグループ内のサービスに影響が限定され、サービスグループの外部の影響が最小限に抑えられるようにサービスグループ内のサービスに対する爆風半径範囲を提供する。
【0055】
以下は、サービスグループの仕様を一例である。サービスグループは、サービスグループのメタデータを表す様々な属性を規定し、サービスグループ内のサービスのセットを含む。本明細書で示されていないサービスグループに対して規定される他のタイプのメタデータがあってもよい。
【数1】


【0056】
上記の例に示すように、サービスグループはクラスタのセットを規定してもよい。クラスタは、コンピューティングノードのセット、例えば、サーバのセット、仮想マシンのセット、又はコンテナのセット(KUBERNETESコンテナなど)を表す。物理サーバは、複数のコンテナを実行してもよく、各コンテナは、ファイルシステム、CPU、メモリ、プロセス空間などの自己の共有を有する。
【0057】
サービスグループは、サービスのセットを規定する。サービスグループは、クラウドプラットフォームにデプロイされたデータセンタがコンピューティングノードのクラスタを実行し、宣言的仕様に含まれている場合には規定されたマッピングに基づいてサービスをクラスタにマッピングするように、サービスに対してクラスタを規定してもよい。例えば、上記のサービスグループの例では、サービスインスタンスserviceinstance0002が、クラスタインスタンスcluster1上で実行されるように規定されている。
【0058】
サービスグループは、セキュリティグループを規定してもよく、各セキュリティグループは、相互に対話することを可能にされるサービスのセットを規定する。セキュリティグループの外部のサービスは、セキュリティグループ内のサービスと通信するために追加の認証を通過することが必要とされる。代替的には、セキュリティグループ内のサービスは、互いに対話するために1つのプロトコルを使用し、セキュリティグループの外部のサービスは、セキュリティグループ内のサービスと対話するために拡張認証を必要とする異なるプロトコルを使用する。したがって、セキュリティグループは、どのようにサービスが互いに対話することができるかを判定するポリシーを規定する。セキュリティポリシーは、どのセキュリティポリシーが適用可能であるかについての1つ以上の環境を規定してもよい。例えば、セキュリティポリシーpolicy1は、特定の環境env1(例えば、プロダクション環境)に適用されてもよく、別のセキュリティポリシーpolicy2は、別の環境env2(例えば、開発環境)に適用されてもよい。セキュリティポリシーは、サービスグループタイプ又は特定のサービスタイプに対して規定されてもよい。
【0059】
一実施形態では、セキュリティポリシーは、セキュリティポリシーがフィルタリングされたサービスグループのセットに適用可能であるように、様々な属性に基づいてサービスグループをフィルタリングするための表現を規定する。例えば、セキュリティポリシーは、フィルタリングされたセットによって識別されるサービスグループのセットに対してホワイトリストされるIP(インターネットプロトコル)アドレスのリストを規定してもよく、したがって、これらのコンピューティングシステムは、サービスグループへのアクセス、又はサービスグループ内の特定のサービスのセットへのアクセスが可能となる。
【0060】
一実施形態では、セキュリティポリシーは、サービスグループ、ソースサービスのセット、及び宛先サービスのセットに対して規定されてもよい。特定のサービスに対するソースサービスは、この特定のサービスとの接続が可能となるセキュリティグループの外部のサービスを規定する。特定のサービスに対する宛先サービスは、この特定のサービスが接続する必要があるセキュリティグループの外部のサービスを規定する。プロビジョニング及びデプロイ中に、データセンタ生成モジュールは、クラウドプラットフォーム固有の機能及びネットワーク機能を使用して特定のネットワークポリシーを実装するクラウドプラットフォームのための命令を生成し、その結果、ネットワークポリシーが宣言的仕様で規定されたセキュリティポリシーを実装する。
【0061】
セルと呼ばれるデータセンタエンティティは、垂直方式で互いに対話するサービスのセットを表し、セルの追加インスタンス又はコピー、すなわちサービスのセットのコピーによってスケーリングされ得る。セルの複数のインスタンスを作成することにより、システムは互いに対話するサービスのセットをスケーリングすることが可能となる。データセンタインスタンスには、1つ以上のセルを含んでもよい。各セルは、1つ以上のサービスを含んでもよい。データセンタは、サービスグループ又はセルのインスタンスを含んでもよい。
【0062】
サービス定義は、例えば、データベースサービス、ロードバランササービスなどのサービスのタイプに対するメタデータを規定する。メタデータには、サービスの名前、サービスの説明、サービスのドキュメントの場所、サービスに関連付けられた任意のサブサービス、サービスの所有者、サービスに関連付けられたチーム、ビルド時にこのサービスが依存する他のサービスを規定するサービスのビルド依存関係、この特定のサービスが開始されるときに実行すべき他のサービスを規定するサービスの開始依存関係、認可クライアント、サービスに関連付けられたDNS(domain name server)名、サービスステータス、サービスのサポートレベルなどを含むサービスの様々な属性が記述される。サービス定義は、サービスが異なる通信プロトコルに対してリスンできるポートを規定するリスニングポート属性を規定し、例えば、サービスは、UDPプロトコルに対してポートp1、TCPプロトコルに対してポートp2でリスンしてもよい。データセンタ内の他のサービスは、サービスによって規定されたポートを介してサービスと対話することができる。
【0063】
サービス定義は、宛先エンドポイントを規定する属性アウトバウンドアクセス、例えば、サービスが規定された外部URL(uniform resource locator)へのアクセスを必要とすることを規定する外部URLを規定する。デプロイ中、データセンタ生成モジュールは、このサービスタイプのインスタンスに外部URLへの要求されたアクセスを提供するように、クラウドプラットフォームがアクセスポリシーを実装することを保証する。
【0064】
アウトバウンドアクセス仕様は、アウトバウンドアクセスが適用可能なサービスに対する1つ以上の環境タイプを識別してもよい。例えば、エンドポイントS1のセットに対するアウトバウンドアクセスは、特定の環境env1(例えば、プロダクション環境)に適用されてもよく、エンドポイントS2のセットに対するアウトバウンドアクセスは、別の環境env2(例えば、開発環境)に適用されてもよい。
【0065】
以下、サービス定義の一例である。
【数2】

【0066】
チーム定義450は、チームメンバ名及びチームの他の属性、例えば、名前、電子メール、通信チャネルなどを含む。以下、チーム定義の一例である。サービスは、そのサービスに対して行われる修正を担当する1つ以上のチームに関連付けられてもよい。したがって、そのサービスに行われた任意の修正は、チームによって承認されます。サービスは、クラウドプラットフォーム内にデプロイされた後、サービスのメンテナンスを担当するチームにサービスを関連付けられてもよい。チームは、サービスグループに関連付けられてもよく、それに応じてそのサービスグループの全てのサービスに関連付けられる。例えば、チームは、サービスグループに対する任意の変更、例えば、サービスグループの一部であるサービスに対する任意の変更を承認する。チームは、データセンタに関連付けられ、それに従ってデータセンタ内の全てのサービスグループに関連付けられる。データセンタレベルで規定されたチーム関連付けは、データセンタ内の全てのサービスグループに対してデフォルトチームを提供し、サービスグループ内の全てのサービスに対してデフォルトチームをさらに提供する。
【0067】
一実施形態によれば、機能レベルで規定されるチーム関連付けは、データセンタレベルで提供されるチーム関連付けをオーバーライドする。同様に、サービスレベルで規定されるチーム関連付けは、サービスグループレベル又はデータセンタレベルで規定されるチーム関連付けによって提供され得るデフォルトをオーバーライドする。 チームは、チームに関連付けられたデータセンタエンティティに対してどのように特定のアクションが取られるかを決定することができる。 チーム関連付けはまた、コンパイラによるクラウドプラットフォームのためのデータセンタの最終メタデータ表現を生成し、クラウドプラットフォーム上でのデータセンタをプロビジョニング及びデプロイするために作成される、クラウドプラットフォーム上のアカウントの数を判定する。データセンタ生成モジュール210は、クラウドプラットフォーム内に1つ以上のユーザアカウントを作成し、チームメンバにユーザアカウントへのアクセスを提供する。したがって、チームメンバは、チームに関連付けられたデータセンタエンティティに関連付けられた特定のアクションを実行することが可能となり、例えば、データセンタエンティティに対して特定され得るデバッグ及びテストの問題を含め、デプロイされるときに、データセンタエンティティに対する構造的変更又はデータセンタエンティティのメンテナンスを行うか、又は承認する。
【0068】
従来の技術では、設計プロセスを通じて同じチームをデータセンタに関連付けているため、それによって、データセンタやサービスグループの設計に影響を及ぼす組織構造をもたらす。実施形態は、データセンタエンティティを定義する構成からチーム定義を結合解除し、それによってチームがデータセンタエンティティの設計及びアーキテクチャに及ぼす影響を低減する。
【数3】
【0069】
環境定義460は、データセンタによって提示されるシステム環境のタイプ、例えば、開発環境、ステージング環境、テスト環境、本番環境を規定する。スキーマ定義470は、特定のデータセンタエンティティ定義の構文を規定するスキーマを規定する。スキーマ定義470は、様々なデータセンタエンティティ定義を検証するために使用される。データセンタ生成モジュールは、環境に基づいて、クラウドプラットフォーム固有のメタデータ表現におけるデータセンタのセキュリティポリシーを判定する。例えば、セキュリティポリシーの特定のセットが環境env1に適用可能であり、セキュリティポリシーの異なるセットが環境env2に適用可能であってもよい。例えば、セキュリティポリシーは、開発環境と比較して、本番環境においてはるかに制限されたアクセスを提供する。セキュリティポリシーは、セキュリティトークンが特定の目的のために存在することが可能とされる時間の長さを規定してもよい。例えば、長いアクセストークン(例えば、1週間にわたるアクセストークン)は、開発環境では可能とされるが、本番環境では、はるかに短い寿命(例えば、数時間)を有するアクセストークンが使用される。アクセストークンは、ユーザ又はサービスの特定のクラウドプラットフォームリソースへのアクセスを可能にしてもよい。
【0070】
データセンタ定義420は、データセンタインスタンスの属性及びコンポーネントを規定する。宣言的仕様は、複数のデータセンタインスタンスを規定してもよい。データセンタ定義420は、名前、説明、環境のタイプ、サービスグループのセット、チーム、データセンタのためのドメインネームサーバなどを含む属性を規定する。データセンタ定義は、スキーマ定義を規定してもよく、データセンタ定義から生成された任意のメタデータ表現は、規定されたスキーマ定義に対して検証される。データセンタは、他のサービスがデータセンタ内で機能することを有効にするコアサービス及び能力のセットを含む。データセンタのインスタンスは特定のクラウドプラットフォームでデプロイされ、特定の開発タイプ、例えば、開発、テスト、ステージング、本番などに関連付けられてもよい。
【0071】
以下、データセンタインスタンスの定義である。データセンタインスタンス定義は、データセンタインスタンスに含まれるサービスグループのリストと、データセンタの環境、データセンタ識別子、名前、地理的領域を表す領域、データセンタに関連付けられた1つ以上のチーム、及びスキーマバージョンを含む他の属性と、を含む。
【数4】
【0072】
図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を含む。サービスグループは、同じサービスタイプのサービスの複数のインスタンスを含んでもよい。
【0073】
データセンタ生成モジュール220は、以下のステップを使用して、宣言的仕様に基づいてクラウドプラットフォームにデータセンタを作成する。データセンタ生成モジュール210は、データセンタのクラウドプラットフォーム非依存宣言的仕様を受信する。クラウドプラットフォーム非依存宣言的仕様は、マルチテナントシステムのテナントのためのものか、又は任意の他のコンピューティングシステム、例えば、オンラインシステムのためのものであってもよい。クラウドプラットフォーム非依存宣言的仕様は、クラウドプラットフォームインフラストラクチャ言語を使用して規定される。データセンタのクラウドプラットフォーム非依存宣言的仕様は、複数のクラウドプラットフォームのいずれかにデータセンタを生成するように構成されている。
【0074】
データセンタ生成モジュール210は、クラウドプラットフォーム非依存宣言的仕様に基づいて、データセンタを作成するために目標のクラウドプラットフォームを識別する情報を受信する。目標のクラウドプラットフォームは、複数のクラウドプラットフォームのいずれか、例えば、AWS、AZURE、GCPなどとすることができる。データセンタ生成モジュール210は、目標のクラウドプラットフォームと接続するための情報、例えば、目標のクラウドプラットフォームとの接続を作成するためのクレデンシャルをさらに受信する。クラウドプラットフォームはまた、クラウドコンピューティングプラットフォームとも呼ばれてもよい。
【0075】
データセンタ生成モジュール210は、クラウドプラットフォーム非依存宣言的仕様をコンパイルして、目標のクラウドプラットフォームにデータセンタを作成するためのクラウドプラットフォーム固有のデータセンタ表現を生成する。例えば、クラウドプラットフォーム固有のデータセンタ表現は、目標のクラウドコンピューティングプラットフォームに固有のユーザアカウント、ネットワークアドレスなどを指してもよい。
【0076】
データセンタ生成モジュール210は、目標のクラウドコンピューティングプラットフォームにデータセンタをデプロイするための命令と共に、プラットフォーム固有のデータセンタ表現を送信する。目標のクラウドコンピューティングプラットフォームは、命令を実行して、目標のクラウドコンピューティングプラットフォームのコンピューティングリソースを構成して、プラットフォーム固有のデータセンタ表現に従ってデータセンタを生成する。データセンタ生成モジュール210は、ユーザに、クラウドコンピューティングプラットフォームによって構成されたデータセンタのコンピューティングリソースへのアクセスを提供する。例えば、データセンタがマルチテナントシステムのテナントのために作成された場合、そのテナントに関連付けられたユーザにデータセンタへのアクセスが提供される。
【0077】
図6は、一実施形態による、宣言的仕様に基づくクラウドプラットフォーム上のデータセンタの生成を例示するブロック図である。データセンタ生成モジュール210は、入力として、クラウドプラットフォーム非依存宣言的仕様610を受信する。クラウドプラットフォーム非依存宣言的仕様610は、ユーザによって増分的に修正される宣言的仕様のバージョンであってもよい。データセンタ生成モジュール210は、クラウドプラットフォーム非依存宣言的仕様610の特定のバージョンを処理する。クラウドプラットフォーム非依存宣言的仕様610は、いかなる特定の目標のクラウドプラットフォームに対しても規定されていないため、データセンタ生成モジュール210は、クラウドプラットフォーム非依存宣言的仕様610に基づいて、任意の目標のクラウドプラットフォーム上にデータセンタを構成することができる。
【0078】
データセンタ生成モジュール210は、クラウドプラットフォーム非依存宣言的仕様610を処理して、データセンタのためのクラウドプラットフォーム非依存詳細メタデータ表現620を生成する。クラウドプラットフォーム非依存詳細メタデータ表現620は、クラウドプラットフォーム非依存宣言的仕様610で特定されたデータセンタエンティティの各インスタンスの詳細を定義する。データセンタ生成モジュール210は、データセンタエンティティインスタンス、例えばサービスインスタンスに対して一意の識別子を作成する。
【0079】
一実施形態では、クラウドプラットフォーム非依存詳細メタデータ表現620は、データセンタエンティティタイプのインスタンスのアレイ、例えば、特定のサービスグループタイプのサービスグループインスタンスのアレイを含む。各サービスグループインスタンスは、サービスインスタンスのアレイを含む。サービスインスタンスは、サービスインスタンスに関連付けられた特定のアクションを実行することが可能とされたユーザのチームの詳細をさらに含んでもよい。チームの詳細は、データセンタ生成モジュール210によるプロビジョニング及びデプロイ中に、例えば、サービスインスタンスのためのユーザアカウントを作成し、チームのメンバがユーザアカウントにアクセスすることを可能にするために使用される。
【0080】
クラウドプラットフォーム非依存詳細メタデータ表現620は、データセンタエンティティの各インスタンスの属性を含む。したがって、データセンタエンティティの各インスタンスの説明は、全ての詳細を含むように拡張される。結果として、データセンタのクラウドプラットフォーム非依存詳細メタデータ表現620は、クラウドプラットフォーム非依存宣言的仕様610よりも有意に大きくてもよい。例えば、クラウドプラットフォーム非依存宣言的仕様610は、数千行の仕様であってもよいが、一方、クラウドプラットフォーム非依存詳細データセンタ表現620は、数百万行の生成コードであってもよい。結果として、データセンタ生成モジュール210は、クラウドプラットフォーム非依存詳細メタデータ表現620を不変として維持する、すなわち、一度表現が確定されると、表現に対する修正は実行されない。例えば、データセンタエンティティの任意の更新、削除又は追加を実行する必要がある場合、それらは、クラウドプラットフォーム非依存宣言的仕様610に対して実行される。
【0081】
データセンタ生成モジュール210は、データセンタがプロビジョニング及びデプロイされることが期待される目標のクラウドプラットフォームを受信し、データセンタのクラウドプラットフォーム固有の詳細メタデータ表現630を生成する。例えば、データセンタ生成モジュール210は、目標のクラウドプラットフォームと対話して、特定のエンティティ(又はリソース)、例えば、ユーザアカウント、仮想プライベートクラウド(VPC)、及びVPC上のサブネット、クラウドプラットフォーム内のエンティティ間の様々な接続などのネットワーキングリソースを生成する。データセンタ生成モジュール210は、目標のクラウドプラットフォーム内で作成されたリソースのリソース識別子、例えば、ユーザアカウント名、VPC IDなどを受信し、これらをクラウドプラットフォーム非依存詳細メタデータ表現620に組み込んで、データセンタのクラウドプラットフォーム固有のメタデータ表現630を取得する。一実施形態では、データセンタ生成モジュール210は、サービスグループ及びサービスの所与の組み合わせに対して、各チームに対してクラウドプラットフォーム上に1つの一意なユーザアカウントを作成する。ユーザアカウントは、そのサービスグループに対するその特定のサービスとの対話を実行するため、例えば、デバッグすること、アラートを受信することなどのためにチームによって使用される。
【0082】
目標のクラウドプラットフォームは、いくつかのステップを実行して、クラウドプラットフォーム固有の詳細メタデータ表現630を処理してもよい。例えば、クラウドプラットフォーム非依存宣言的仕様は、サービス間の許可された対話を規定してもよい。これらの許可された対話は、クラウドプラットフォーム固有の詳細メタデータ表現630で規定され、クラウドプラットフォームのネットワークポリシーとして実装される。クラウドプラットフォームはさらに、宣言的仕様に従ってデータセンタを実装するためのネットワーク戦略を実装するセキュリティグループを作成してもよい。
【0083】
クラウドプラットフォーム非依存宣言的仕様は、サービス間の依存関係を規定する。例えば、各サービスのための開始依存関係は、特定のサービスが開始されるときに実行すべき全てのサービスをリストにする。データセンタ生成モジュール220は、これらの依存関係を記述する情報を含むデータセンタのクラウドプラットフォーム固有の詳細メタデータ表現を生成し、その結果、サービスをデプロイするための命令は、依存関係によって規定された順序でクラウドプラットフォームがサービスを開始することを保証し、その結果、それらのサービスが、各サービスに対して、サービスが開始されるときにサービスが実行される前に開始されることが必要とされる。したがって、サービス間の依存関係は依存関係グラフを表し、依存関係グラフに基づいて判定される順序でサービスの実行を開始し、その結果、サービスAがサービスBに依存する場合、サービスBは、サービスAが開始される前に開始される。
【0084】
データセンタ生成モジュール220は、サービスが安全な通信チャネルを介して他のサービスにアクセスすることを可能にするユーザアカウント間の信頼関係を作成する。これらの信頼関係は、宣言的仕様に基づいて、例えば、サービスに対して規定されたアウトバウンドアクセス属性に基づいて生成されたサブストレイト固有の命令を使用して生成される。データセンタ生成モジュール220は、例えば、アウトバウンドアクセス、セキュリティグループ、セキュリティポリシーなどの宣言的仕様の構成体によって規定されるように、サービスグループ及びサービスにわたる対話及びアクセスを制御するクラウドプラットフォーム固有のメカニズムに基づいてネットワークポリシーを作成するための命令をクラウドプラットフォームに送信する。
【0085】
データセンタ生成モジュール210は、クラウドプラットフォーム固有のメタデータ表現630を、表現が生成された特定の目標のクラウドプラットフォームにデプロイする。データセンタ生成モジュール210は、生成されたメタデータ表現を使用して、ポリシー検証、フォーマット検証などを含む様々な検証を実行してもよい。
【0086】
クラウドプラットフォーム非依存宣言的仕様610は、宣言されたデータセンタ表現と呼ばれ、クラウドプラットフォーム非依存詳細メタデータ表現620は、データセンタの導出されたメタデータ表現と呼ばれ、クラウドプラットフォーム固有のメタデータ表現630は、データセンタのハイドレートメタデータ表現と呼ばれる。データセンタにソフトウェアアーティファクトをデプロイするための全体プロセス
【0087】
図7は、一実施形態による、クラウドプラットフォーム上に構成されたデータセンタにソフトウェアアーティファクトをデプロイするためのパイプラインを生成するための全体プロセスを示す。データセンタ生成モジュールは、目標のクラウドプラットフォームに1つ以上のデータセンタを生成する(710)。各データセンタは、クラウドプラットフォーム非依存宣言的仕様から生成され、データセンタエンティティの階層を有する。
【0088】
ソフトウェアリリース管理モジュールは、クラウドプラットフォーム非依存マスターパイプラインを生成する(720)。一実施形態では、クラウドプラットフォーム非依存マスターパイプラインは、データセンタの環境、例えば、開発環境、テスト環境、カナリア環境、及びプロダクション環境に対応するステージを含む。マスターパイプラインは、開発環境、テスト環境、ステージング環境、又はプロダクション環境などの様々な環境にわたって、段階的及び/又は条件付きデプロイのシーケンスを構成する。マスターパイプラインは、ソフトウェアアーティファクトのイメージの送達によってトリガされ、タイプ開発の環境におけるビルドをデプロイするためのステージ又は命令を含む。ビルドされたソフトウェアアーティファクトは、条件付きで1つ以上のテスト環境に促進され、最終的にプロダクション環境にデプロイされる前に1つ以上のカナリア環境が続く。マスターパイプラインは、ユーザ、例えば、サービスオーナーによってカスタマイズされて、環境間の特定のオーケストレーションを表してもよい。マスターパイプラインは、1つのステージから次のステージに移動するための特定の促進基準を捕捉するようにカスタマイズされてもよい。例えば、マルチテナントシステムの異なるテナントは、異なる方法でマスターパイプラインをカスタマイズしてもよい。一実施形態では、マスターパイプラインは、デフォルトで、サービスのためのソフトウェアアーティファクトのためのソフトウェアの最新バージョンを使用し、様々な環境にわたってそのバージョンをビルド及びデプロイする。ユーザは、アーティファクトバージョンマップを使用して、ソフトウェアアーティファクトの特定のバージョンが特定のデータセンタエンティティにデプロイされることを保証することができる。
【0089】
一実施形態では、データセンタにおいてデプロイされた各サービスは、データセンタの宣言的仕様によって定義されたデータセンタエンティティから生成されたクラウドプラットフォーム非依存マスターパイプライン、例えば、データセンタインスタンスのためのマスターパイプライン、サービスグループのためのマスターパイプライン、セルのためのマスターパイプライン、サービスのためのマスターパイプラインなどを有する。マスターパイプラインは、ソフトウェアアーティファクトのイメージの送達時にトリガされてもよい。マスターパイプラインは、サービスオーナー制御の継続的デプロイを実装してもよい。マスターパイプラインは、データセンタインスタンスオーナー所有又はリリースオーナー所有のオンデマンドデプロイを実装してもよい。
【0090】
マスターパイプラインの一定の部分は、ユーザ、例えば、データセンタにサービスをデプロイしているマルチテナントシステムのテナントによってカスタマイズされてもよい。例えば、促進決定パイプラインは、どのテストケースが実行され、どの閾値が実行されるかを判定するために、テナントによってカスタマイズされてもよい。ソフトウェアリリース管理モジュール230は、ソフトウェアアーティファクトをクラウドプラットフォーム非依存マスターパイプラインの1つのステージから別のステージに促進するためのロジックに対するカスタマイズを受信する(730)。
【0091】
ソフトウェアリリース管理モジュール230は、クラウドプラットフォーム非依存マスターパイプラインをコンパイルして、データセンタのためのクラウドプラットフォーム非依存宣言的仕様によって規定されるように、各データセンタのデータセンタエンティティの階層に固有であるクラウドプラットフォーム固有の詳細デプロイパイプラインを生成する(740)。
【0092】
ソフトウェアリリース管理モジュール230は、データセンタにデプロイされたサービスの1つ以上の機能をリリースするためのコードをさらに受信する(750)。ソフトウェアリリース管理モジュール230は、クラウドプラットフォーム固有の詳細デプロイパイプラインを実行して、受信したコードに基づいてソフトウェアアーティファクトをデプロイする(760)。
【0093】
図8は、一実施形態による、例示的なマスターパイプライン800を例示する。マスターパイプラインは、様々なデータセンタ環境にわたる段階的な条件付きデプロイを表すステージのシーケンスを表す。図8は、開発環境、テスト環境、カナリア環境、プロダクション環境を含むデータセンタの異なる環境のステージを示す。各ステージはさらに、そのステージに対して実行されるパイプラインを表す。したがって、マスターパイプライン800は、テスト環境パイプライン820に供給する開発環境パイプライン810を含み、テスト環境パイプライン820は、カナリア環境パイプライン840に供給し、カナリア環境パイプライン830は、本番環境パイプラインに供給する。
【0094】
各ステージのパイプラインは、下位レベルのパイプラインを含む階層パイプラインである。例えば、開発環境パイプライン810は、データセンタの宣言的仕様において開発環境を有すると規定されたデータセンタの数に応じて、データセンタパイプラインD11、D12、…に供給する開発マスターパイプラインを含む。
【0095】
例えば、テスト環境パイプライン820は、データセンタの宣言的仕様においてテスト環境を有すると規定されたデータセンタの数に応じて、データセンタパイプラインD21、D22、…に供給するテストマスターパイプラインを含む。
【0096】
例えば、カナリア環境パイプライン820は、データセンタの宣言的仕様においてカナリア環境を有すると規定されたデータセンタの数に応じて、データセンタパイプラインD31、D32、…に供給するカナリアマスターパイプラインを含む。
【0097】
例えば、プロダクション環境パイプライン820は、データセンタの宣言的仕様においてテスト環境を有すると規定されたデータセンタの数に応じて、データセンタパイプラインD21、D22、…に供給するプロダクションマスターパイプラインを含む。
【0098】
各環境パイプライン810、820、830は、それぞれ促進決定パイプライン815a、815b、815cを含む。環境パイプラインのデータセンタパイプラインの出力は、ソフトウェアアーティファクトが次のステージへの促進の準備ができているかどうかを判定する促進決定パイプライン815によって収集される。促進決定パイプライン815は、データセンタによって取得されたテストケース結果に基づいて、サービスに対するソフトウェアアーティファクトが次のステージに促進されるかどうかを判定してもよい。例えば、閾値テストケースよりも多くがパスした場合、促進決定パイプライン815は、ソフトウェアアーティファクトを次のステージに促進する。最後の環境ステージ、例えば、プロダクション環境パイプラインは、ソフトウェアアーティファクトを促進させる必要がある後続のステージがないため、促進決定パイプラインを有しなくてもよい。図8に示すように、開発環境パイプラインの促進決定パイプライン815aは、ソフトウェアアーティファクトを開発ステージからテストステージに促進するかどうかを判定し、テスト環境パイプラインの促進決定パイプライン815bは、ソフトウェアアーティファクトをテストステージからカナリアステージに促進するかどうかを判定し、カナリア環境パイプラインの促進決定パイプライン815cは、ソフトウェアアーティファクトをカナリアステージからプロダクションステージに促進するかどうかを判定する。
【0099】
マスターパイプラインは、複数のパイプライン、例えば、目標のクラウドプラットフォームのリソースをプロビジョニングするためのプロビジョニングパイプラインと、データセンタエンティティにソフトウェアアーティファクトをデプロイするためのデプロイパイプラインと、を含む。各パイプラインはステージのシーケンスを含み、各ステージは、データセンタのプロビジョニング及びデプロイに向けて目標のクラウドプラットフォームによって実行される必要がある1つ以上のアクションを表す。データセンタ生成モジュール210は、データセンタエンティティ上にソフトウェアアーティファクトのバージョンをデプロイするための詳細パイプラインを生成する。
【0100】
一実施形態では、パイプライン生成モジュール320は、変数を含むパイプラインテンプレートを使用して詳細パイプラインを生成する。パイプラインテンプレートは、パイプラインに変数の特定の値を提供することによってパイプラインに変換される。テンプレートからパイプラインを生成するプロセスは、パイプラインテンプレートのハイドレートと呼ばれる。パイプラインテンプレートは、デプロイで使用される実際の値のプレースホルダとして使用されるテンプレート式を含む。例えば、テンプレート表現は、目標の固有のパラメータ値又は表現によって置き換えられてもよい。複数のパイプラインインスタンスは、異なる目標に対してパイプラインテンプレートをハイドレートすることによって生成されてもよい。テンプレート変数は、所与の目標に対する特定の値で置き換えられて、その目標に固有のパイプラインインスタンスを生成し得るパラメータを表す。例えば、テンプレート変数「account_id」は、ハイドレート中に「account_id」の実際の値、例えば「12345」で置き換えられてもよい。
【0101】
一実施形態では、パイプライン生成モジュール320は、データセンタのデータセンタエンティティの階層に基づいて階層方式でパイプラインを生成する。例えば、データセンタは、データセンタ、サービスグループ、サービスなどを含む異なるタイプのデータセンタエンティティを含む。データセンタエンティティは、1つ以上の子データセンタエンティティを含んでもよい。例えば、データセンタは、1つ以上のサービスグループを子データセンタエンティティとして含む。サービスグループは、1つ以上のサービスを子データセンタエンティティとして含む。したがって、データセンタ生成モジュール210は、階層のレベルのデータセンタエンティティで開始し、そのレベルより下のデータセンタエンティティのパイプラインを生成する。例えば、パイプライン生成モジュール320は、データセンタで開始し、データセンタ内のサービスグループに対するパイプラインを生成する。各サービスグループに対して、パイプライン生成モジュール320は、サービスグループ内のサービスに対するパイプラインを生成する。
【0102】
一実施形態によるパイプラインを実行するためのプロセスは、以下のようである。ソフトウェアリリースデプロイモジュール230は、目標のクラウドプラットフォーム内のデータセンタエンティティのセットにソフトウェアアーティファクトをデプロイする要求を受信する。ソフトウェアリリースデプロイモジュール230は、1つ以上のデータセンタに対してマスターパイプラインを実行する。ソフトウェアリリースデプロイモジュール230は、各データセンタのサービスグループごとに集約パイプラインを実行する。集約パイプラインは、サービスグループ内のサービスに対するパイプラインを含む。各サービスグループ内の各サービスに対して、パイプラインのすべてのステージを実行することによってパイプラインが実行される。プロビジョニングパイプラインを実行すると、サービスに対するリソースのプロビジョニング、及びデプロイメントパイプラインが、ターゲットクラウドプラットフォーム内のサービスのデプロイを発生させる。
【0103】
図9は、一実施形態による、クラウドプラットフォーム上のマスターパイプラインの環境のためのステージによって実行される全体プロセスを示す。ステップ910、920、930、940、及び950は、各環境パイプライン810、820、830によって実行されてもよい。プロダクション環境パイプライン3は、ステップ910及び920のみを実行してもよい。図9に示すステップは、マニフェストファイルを使用して規定された1つのサービス又は複数のサービスに対して実行されてもよい。
【0104】
環境Eのための環境パイプラインは、データセンタエンティティのセット、例えば、環境Eを有するものとして規定されたデータセンタエンティティのセットにソフトウェアをデプロイする(910)命令を含む。一実施形態では、ソフトウェアアーティファクトは、サービスに対するソースコードをコンパイルすることによって生成される。ソースコードは、バージョン制御ソフトウェアから取得されてもよい。データセンタエンティティのセットは、データセンタインスタンス、サービスグループ、セル、サービス、又はこれらの任意の組み合わせを含んでもよい。
【0105】
環境Eのための環境パイプラインは、データセンタエンティティのセットにデプロイされたソフトウェアアーティファクトをテストするためにテストを実行する(920)ための命令をさらに含む。環境Eのための環境パイプラインは、例えば、促進決定パイプライン815を使用して、促進基準に対してテスト結果を評価する(930)ための命令をさらに含む。促進基準が満たされない場合、ステップ910、920、930、及び940は、修正されたソフトウェアアーティファクト、例えば、テスト920中に識別された特定の欠陥に対するフィックスを含むソースコードから生成されたソフトウェアアーティファクトを使用して繰り返されてもよい。環境Eのための環境パイプラインは、促進基準が満たされた場合、次のステージに進める(950)ための命令をさらに含む。
【0106】
一実施形態では、マスターパイプラインはパイプラインの階層を含む。階層は、複数のレベルを含み、特定のレベルにおけるパイプラインには、次の下位レベルのパイプラインを子パイプラインとして含む。例えば、階層の最上位レベルにおいて、マスターパイプラインは、プロダクトに関連するサービスのセットをデプロイするリリースマスターパイプラインを含む。階層の次のレベルは、様々な環境にわたる特定のサービスの全てのデプロイを表すサービスマスターパイプラインを含む。階層の次のレベルは、サービスグループマスターパイプラインを含み、サービスマスターパイプラインが続く。
【0107】
図10は、一実施形態による、例示的なマスターパイプラインを示す。マスターパイプラインは、パイプラインの各ステージが、そのステージを実行するための詳細命令を有するパイプラインを含んでもよい階層パイプラインである。マスターパイプライン階層は、データセンタ階層をミラーリングしてもよい。例えば、マスターパイプラインの最上位レベルは、異なる環境に対するステージのシーケンスを表す。各環境は、データセンタインスタンスのための1つ以上のパイプライン、又は他のタイプのデータセンタエンティティのためのパイプラインを含んでもよい。データセンタインスタンスパイプライン1010は、サービスグループパイプライン1020を含んでもよい。各サービスグループパイプライン1020は、1つ以上のサービスパイプライン1030を含んでもよい。データセンタインスタンスパイプライン1010は、セルパイプライン1025を含んでもよく、各セルパイプライン1025は、1つ以上のサービスパイプライン1030を含む。サービスパイプライン1030は、ステージを含んでもよく、各ステージは、特定の環境のためにサービスをデプロイするための命令を表すパイプラインを表す。階層内の最下位レベルパイプライン又はリーフレベルパイプラインは、ユニットパイプラインと呼ばれ、サービスに関連する動作を実行するための詳細サービス固有の命令を含んでもよい。例えば、サービスのためのデプロイは、デプロイ前ステップ、デプロイステップ、デプロイ後ステップ、デプロイ後テスト及び検証ステップを含んでもよい。リーフレベルパイプラインではなく、1つ以上の子パイプラインを有するパイプラインは、子パイプラインの実行をオーケストレーションする集約パイプラインである。
【0108】
マスターパイプラインは、ソフトウェアのためのバージョン制御システムが、プロジェクトのメインリポジトリに含めるために外部リポジトリにコミットされた変更を考慮する要求を受信することを発生させるプル要求によって駆動されてもよい。したがって、マスターパイプラインは、プル要求が受信されるときに自動的にトリガされ、プル要求が受信される最新のソフトウェアバージョンに基づいてソフトウェアアーティファクトをデプロイする。マスターパイプラインは、プル要求に基づいてソフトウェアアーティファクトの継続的送達を実行する。マスターパイプラインは、オンデマンド方式に基づいて、例えば、デプロイモジュール210のアプリケーションプログラミングインターフェース(API)を使用して要求を呼び出すことによって駆動されてもよい。マスターパイプラインに基づくオンデマンドデプロイは、APIを使用して規定されるように、サービスの任意のセット及び所与のサービスに対する任意のバージョンに対して要求されてもよい。マスターパイプラインは、現在のバージョンから前のバージョンへのロールバック、又は現在デプロイされているバージョンからより最近のバージョンへのロールフォワードを要求するために呼び出されてもよい。
【0109】
一実施形態では、デプロイモジュール210は、サービスごとにサービスマスターパイプラインを作成する。これらのパイプラインは、ソフトウェアのリポジトリに対するプルリクエストが受信されたときにトリガされる。デプロイモジュール210は、特定のサービスのためにユーザからパイプラインテンプレートを受信する。これらのパイプラインテンプレートは、特定のサービスのためのテスト、検証、ビルドなどについての詳細説明を含む。データセンタ生成モジュール220は、1つ以上のデータセンタのためのクラウドプラットフォーム非依存宣言仕様を受信する。データセンタ生成モジュール220は、受信したクラウドプラットフォーム非依存宣言仕様に従ってデータセンタを生成(又は構成)する。デプロイモジュール210は、促進決定パイプライン815を受信する。促進決定パイプライン815は、全体のマスターパイプラインに統合される。
【0110】
パイプラインジェネレータは、例えば、図10に例示されるように、テンプレートからデータセンタごとに全てのパイプラインを作成し、それらをマスターパイプラインを介して階層的に組み合わせる。一実施形態では、パイプラインジェネレータは、個々のサービスに対するサービスパイプラインを生成し、パイプラインジェネレータは、サービスパイプラインを呼び出すためのセルマスターパイプラインを生成し、パイプラインジェネレータは、セルマスターパイプラインを呼び出すためのサービスグループマスターパイプラインを生成し、パイプラインジェネレータは、サービスグループパイプラインを呼び出すためのデータセンタインスタンスマスターパイプラインを生成し、パイプラインジェネレータは、データセンタインスタンスマスターパイプラインを呼び出すためのサービスマスターパイプラインを生成する。
【0111】
以下は、様々なステージを示すマスターパイプラインのスニペットである。各ステージは、ステージ名、パイプラインのタイプ、ステージタイプ(例えば、マスターデプロイパイプライン又は促進パイプライン)、前ステージなどを含む属性を規定してもよい。
【数5】

【0112】
エグザミナマスターパイプラインに示されているように、第1ステージは、アーティファクトバージョンマップである。次のステージは、開発環境にデプロイするためのマスターデプロイパイプラインである。次のステージは、ソフトウェアアーティファクトを次のステージに促進できるかどうかを判定するための促進パイプラインである。次のステージは、テスト環境にデプロイするためのマスターデプロイパイプラインである。次のステージは、ソフトウェアアーティファクトをステージ環境である次のステージに促進できるかどうかを判定するための促進パイプラインである。ソフトウェアアーティファクトバージョンマップ
【0113】
一実施形態では、デプロイモジュール210は、様々なソフトウェアアーティファクト及びそれらのバージョンをデータセンタエンティティに関連付けるアーティファクトバージョンマップを受信する。アーティファクトバージョンマップは、異なるデータセンタエンティティにおけるサービスのためにデプロイされる必要があるソフトウェアアーティファクトの特定バージョンの宣言的仕様を提供する。各データセンタエンティティは、データセンタの宣言的仕様によって規定されるように、データセンタ階層内のその位置に基づいて一意的に識別されてもよい。例えば、サービスでは、ソフトウェアライブラリがソフトウェアアーティファクトとして作用してもよい。ソフトウェアアーティファクトには、例えば、V1、V2、V3などの複数のバージョンを有してもよい。アーティファクトバージョンマップは、バージョンV1がデータセンタエンティティC1及びC2にデプロイされる必要があり、バージョンV2がデータセンタエンティティC3及びC4にデプロイされる必要があることを規定してもよい。デプロイモジュール210は、マスターパイプライン及び命令を生成し、これらが適切なソフトウェアアーティファクトバージョンが、アーティファクトバージョンマップに規定されるように、データセンタエンティティにおいてデプロイされることを保証する。
【0114】
一実施形態では、アーティファクトバージョンマップは、JSON(Javascript object notation)ファイル、YAMLファイル、又はネスト化されたオブジェクトを表すための他の任意の構文を使用するファイルとして規定される。アーティファクトバージョンマップは、データセンタの階層にわたって分散された様々なデータセンタエンティティに関連付けられた<service>:<version>キーペアのセットを含んでもよい。アーティファクトバージョンマップキーペアは、対応するパイプラインのためのホワイトリストとして作用する。サービスのキーがアーティファクトバージョンマップに含まれていない場合、そのサービスのための全てのパイプラインは、パイプラインの実行中に除外される。異なるアーティファクトバージョンマップが同じマスターパイプラインに適用されると、マスターパイプラインの実行中に異なるサービスが含まれる/除外されることをもたらすことがある。
【0115】
以下は、例示的なアーティファクトバージョンマップである。アーティファクトバージョンマップは、属性「env_types」を使用して環境タイプを規定する。以下の例では、環境タイプdevelopmentが規定される。環境タイプには、1つ以上のデータセンタインスタンスを含んでもよく、データセンタインスタンスは、1つ以上のサービスグループを含んでもよく、サービスグループは、1つ以上のサービスを含んでもよい。以下の例では、ソフトウェアアーティファクト名がlibrary1、バージョンがversion1として規定され、サービスインスタンスinstance001に関連付けられている。しかしながら、ソフトウェアアーティファクト名及びバージョンは、階層内の任意のレベルのデータセンタエンティティに関連付けられてもよい。例えば、ソフトウェアアーティファクト名及びバージョンが規定されている場合、又はサービスグループの場合、ソフトウェアアーティファクト名及びバージョンは、サービスグループ内の特定のサービスインスタンスに規定されたソフトウェアアーティファクト名及びバージョンの異なる値でオーバーライドされないかぎり、サービスグループ内の全てのサービスに適用可能である。同様に、ソフトウェアアーティファクト名及びバージョンは、データセンタインスタンスに対して規定され得、サービスグループに対してオーバーライド値が規定されていない限り、データセンタインスタンス内の全てのサービスグループ又はセルに適用可能である。
【数6】

【0116】
一実施形態では、アーティファクトバージョンマップは、例えば、「stagger_group1/datacenter1/service_group2/service1」であるデータセンタエンティティのフルパスを使用してデータセンタエンティティを規定する。一実施形態では、アーティファクトバージョンマップは、データセンタエンティティのフルパス内の正規表現を使用してデータセンタエンティティのセットを規定する。例えば、service_group[?]を含むフルパスは、service_group1、service_group2、service_group3などを含む。
【0117】
以下は、サービスのセットを定義する正規表現を規定するアーティファクトバージョンマップの一例である。環境タイプはdevとtestで規定され、データセンタインスタンス及びサービスグループを含むフルパスにおいてデータセンタエンティティは、ワイルドカードで規定され、サービスインスタンスは、「service*」として規定される。したがって、開発環境とテスト環境のための全てのデータセンタインスタンスに対して、全てのサービスグループに対して、service*に一致するサービス名に対して、アプリケーションapp1のバージョンV1がデプロイされる。
【数7】
【0118】
いくつかの実施形態では、アーティファクトバージョンマップは、パイプラインによって使用されるパラメータを規定してもよい。したがって、規定されたパラメータは、そのパラメータが規定されているスタッガグループに適用される。
【0119】
図11は、一実施形態による、データセンタのための例示的なマスターパイプラインを示す。図11に示すように、マスターパイプラインは、宣言的仕様によって定義されたデータセンタエンティティの集合を指すデプロイグループ(スタッガグループとも呼ばれる)上で実行される。アーティファクトバージョンマップは、特定のアーティファクトバージョンに関連付けられ得るデータセンタエンティティのセットを定義するために、スタッガグループ属性を規定してもよい。データセンタエンティティは、データセンタ、例えば、データセンタインスタンスの階層内のルートノードからのパスを規定することによって識別されてもよい。図11に示すように、マスターパイプラインは、異なる環境に対して様々なステージを定義する。各ステージは、デプロイグループ1110と呼ばれるデータセンタエンティティのセットに対してアクションを実行する。図11は、サービスグループS11、S12、及びS13を含むデータセンタエンティティを含む開発デプロイグループ1110aと、サービスグループS21、S22、及びS23を含むデータセンタエンティティを含むテストデプロイグループ1110bと、サービスグループS31、S32、S33、及びS34を含むデータセンタエンティティを含むプロダクションデプロイグループ1110bと、を示す。開発デプロイグループ1110aのデータセンタエンティティに対するテストの結果が評価されて(1120a)、開発デプロイグループ1110aにおいてテストされたソフトウェアアーティファクトがテストデプロイグループ1110bに促進されるかどうかを判定する。同様に、テストデプロイグループ1110aのデータセンタエンティティに対するテストの結果が評価されて(1120b)、テストデプロイグループ1110aにおいてテストされたソフトウェアアーティファクトがプロダクションデプロイグループ1110cに促進されるかどうかを判定する。
【0120】
図12は、一実施形態による、マスターパイプラインの実行がアーティファクトバージョンマップに基づいてどのように修正されるかを例示する。アーティファクトバージョンマップは、ソフトウェアアーティファクトのバージョンをデータセンタエンティティに関連付ける。システムは、データセンタエンティティ上で実行される詳細パイプラインを修正して、ソフトウェアアーティファクトの適切なバージョンに関連するアクションが各データセンタエンティティ上で実行されることを保証する。例えば、図12は、サービスSVC1に対するソフトウェアアーティファクトのバージョンV1及びV2を示す。バージョンV1は、サービスグループS11、S23、及びS31に関連付けられ、バージョンV2は、サービスグループS11、S21、及びS32に関連付けられる。マスターパイプラインがサービスSVC1のバージョンをデータセンタにデプロイしていると仮定する。したがって、システムは、サービスグループS11、S23及びS31にバージョンV1を、サービスグループS11、S21及びS32にバージョンV2をデプロイするように実行されたパイプラインを修正する。一実施形態では、システムは、図11に示すマスターパイプラインのステージの前にバージョンマップフィルタを導入する。マスターパイプラインの実行は、バージョンマップフィルタに基づいて、データセンタエンティティごとにソフトウェアアーティファクトのバージョンを選択する。例えば、バージョンマップフィルタには、この特定のアクションについてサービスグループS13、S22、S33、及びS34をスキップする命令を含む。バージョンマップフィルタは、バージョンV1がサービスグループS11、S23、及びS31にデプロイされ、バージョンV2がサービスグループS11、S21、及びS32にデプロイされることを規定する。
【0121】
図13は、一実施形態による、クラウドプラットフォーム上に構成されたデータセンタにソフトウェアアーティファクトをデプロイするための全体プロセスを示す。データセンタ生成モジュールは、目標のクラウドプラットフォームに1つ以上のデータセンタを生成する(1310)。各データセンタは、クラウドプラットフォーム非依存宣言的仕様から生成され、データセンタエンティティの階層を有する。
【0122】
ソフトウェアリリース管理モジュール230は、データセンタエンティティをソフトウェアアーティファクトのバージョンにマッピングするアーティファクトバージョンマップを入力として受信する。ソフトウェアリリース管理モジュール230はまた、クラウドプラットフォーム非依存マスターパイプラインを入力として受信する(1330)。
【0123】
ソフトウェアリリース管理モジュール230は、アーティファクトバージョンマップと共にクラウドプラットフォーム非依存マスターパイプラインをコンパイルして、クラウドプラットフォーム固有の詳細パイプラインを生成する(1340)。一実施形態では、生成されたクラウドプラットフォーム固有の詳細パイプラインは、アーティファクトバージョンマップに従って特定のステージを有効にすべきか無効にすべきかを判定するために、特定のステージの前にアーティファクトバージョンマップフィルタを含む。
【0124】
ソフトウェアリリース管理モジュール230は、データセンタにデプロイされたサービスの1つ以上の機能をリリースするためのコードをさらに受信する(1350)。例えば、コードは、開発者によって変更が提出されるソースコードリポジトリを記憶するバージョン制御管理システムから取得されたソースコードを表してもよい。ソフトウェアリリース管理モジュール230は、クラウドプラットフォーム固有のデプロイパイプラインを実行して、受信したコードに基づいてソフトウェアアーティファクトをデプロイする(1360)。
【0125】
アーティファクトバージョンマップ及びマスターパイプラインは、クラウドベースのデータセンタにおいてソフトウェアアーティファクトの継続的送達に関連する様々なタイプの動作をオーケストレーションするために使用され得る。アーティファクトバージョンマップ及びマスターパイプラインは、サービス、サービスグループ、又は任意のデータセンタエンティティに対して集約リトライ動作を実行するように構成され得る。アーティファクトバージョンマップは、リトライ戦略、パイプラインのステージの実行に失敗した場合に実行するリトライ回数の閾値、リトライ前にユーザからの確認が必要かどうか、リトライが自動的に実行されるかどうかなど、データセンタエンティティに対するリトライ動作の構成を含む。例えば、リトライ戦略は、リトライする前に一定期間実行を一時停止する固定バックオフ戦略としてもよい。他のリトライ戦略は、アーティファクトバージョンマップ及びマスターパイプラインを使用して構成され得る。一実施形態では、パイプラインジェネレータは、集約パイプライン内に呼び出しリトライステージを導入して、前のパイプラインステージが失敗した場合にリトライ戦略をトリガする。データセンタエンティティに対して規定されたリトライ戦略及び構成パラメータは、ネスト化されたデータセンタエンティティに対して値がオーバーライドされない限り、データセンタエンティティ内の全てのデータセンタエンティティ及びサービスに適用される。コンピュータアーキテクチャ
【0126】
図14は、一実施形態による、図1の環境100で例示されるエンティティの1つとして使用するための典型的なコンピュータシステムの機能図を例示する高レベルブロック図である。チップセット1404に結合された少なくとも1つのプロセッサ1402が例示されている。チップセット1404には、メモリ1406、記憶デバイス1408、キーボード1410、グラフィックアダプタ1412、ポインティングデバイス1414、及びネットワークアダプタ1416も結合されている。ディスプレイ1418は、グラフィックアダプタ1412に結合されている。一実施形態では、チップセット1404の機能は、メモリコントローラハブ1420及びI/Oコントローラハブ1422によって提供される。別の実施形態では、メモリ1406は、チップセット1404の代わりにプロセッサ1402に直接結合される。
【0127】
記憶デバイス1408は、ハードドライブ、コンパクトディスクリードオンリーメモリ(CD-ROM)、DVD、又は固体メモリデバイスなどの非一時的なコンピュータ可読記憶媒体である。メモリ1406は、プロセッサ1402によって使用される命令及びデータを保持する。ポインティングデバイス1414は、マウス、トラックボール、又は他のタイプのポインティングデバイスであってもよく、コンピュータシステム200にデータを入力するためにキーボード1410と組み合わせて使用される。グラフィックアダプタ1412は、ディスプレイ1418上に画像及び他の情報を表示する。ネットワークアダプタ1416は、コンピュータシステム1400をネットワークに結合する。
【0128】
本技術分野で知られているように、コンピュータ1400は、図14に示したものとは異なる及び/又は他のコンポーネントを有することができる。追加的に、コンピュータ1400は、特定の例示されたコンポーネントを欠いていることがある。例えば、マルチテナントシステム110として動作するコンピュータシステム1400は、キーボード1410及びポインティングデバイス1414を欠いていることがある。さらに、記憶デバイス1408は、コンピュータ1400からローカル及び/又はリモートである可能性がある(例えば、ストレージエリアネットワーク(SAN)内に具現化される)。
【0129】
コンピュータ1400は、本明細書で記載される機能を提供するためのコンピュータモジュールを実行するように適合されている。本明細書で使用される「モジュール」という用語は、特定の機能を提供するためのコンピュータプログラム命令及び他のロジックを指す。モジュールは、ハードウェア、ファームウェア、及び/又はソフトウェアで実装され得る。モジュールは、1つ以上のプロセスを含むことができ、及び/又はプロセスの一部のみによって提供され得る。モジュールは、典型的には、記憶デバイス1408上に記憶され、メモリ1406にロードされ、プロセッサ1402によって実行される。
【0130】
システム環境のエンティティによって使用されるコンピュータシステム1400のタイプは、実施形態及びエンティティによって使用される処理パワーに応じて変化する可能性がある。例えば、クライアントデバイスは、限定された処理パワーを有する携帯電話、小型ディスプレイ1418であることがあり、ポインティングデバイス1414がないことがある。対照的に、マルチテナントシステム又はクラウドプラットフォームは、本明細書で説明される機能を提供するために協働する複数のブレードサーバを含んでもよい。追加的な考慮事項
【0131】
コンポーネントの特定の名前付け、用語の大文字化、属性、データ構造、又は他のプログラミング又は構造的態様は、必須でも重要でもなく、記載された実施形態を実装するメカニズムが、異なる名前、フォーマット、又はプロトコルを有してもよい。さらに、システムは、記載されるように、ハードウェアとソフトウェアの組み合わせを介して、又は完全にハードウェア要素で実装されてもよい。また、本明細書で記載される様々なシステムコンポーネント間の特定の機能分割は単なる例示であり、必須ではなく、単一のシステムコンポーネントによって実行される機能は、代わりに複数のコンポーネントによって実行されてもよく、複数のコンポーネントによって実行される機能は、代わりに単一のコンポーネントによって実行されてもよい。
【0132】
上記の説明のいくつかの部分は、情報に対する動作のアルゴリズム及び記号表現の観点から特徴を提示する。これらのアルゴリズム記述及び表現は、データ処理技術の当業者によって、その研究の実体を他の当業者に最も効果的に伝達するために使用される手段である。これらの操作は、機能的又は論理的に記載されているが、コンピュータプログラムによって実装されるものと理解される。さらに、一般性を失うことなく、これらの操作の配置をモジュールとしてか、又は機能名により参照することが時に便利であることも証明されている。
【0133】
上記の説明から明らかなように特に他に述べない限り、本明細書全体を通して、「処理」、「コンピューティング」、「計算」、「判定」、「表示」などの用語を利用する説明は、コンピュータシステムメモリ若しくはレジスタ、又は他のそのような情報記憶、伝送若しくは表示デバイス内の物理的(電子的)量として表されるデータを操作及び変換するコンピュータシステム又は同様の電子コンピューティングデバイスのアクション及びプロセスを指すことが理解される。
【0134】
本明細書で記載される特定の実施形態は、アルゴリズムの形態で記載されるプロセスステップ及び命令を含む。実施形態のプロセスステップ及び命令は、ソフトウェア、ファームウェア又はハードウェアで具現化され得、ソフトウェアで具現化されるときに、ダウンロードされてリアルタイムネットワークオペレーティングシステムによって使用される異なるプラットフォーム上に存在させ、そこから動作させることができることに留意されたい。
【0135】
記載される実施形態はまた、本明細書における動作を実行するための装置に関する。装置は、要求された目的のために特別に構成されてもよいし、コンピュータによってアクセスされ得るコンピュータ可読媒体上に記憶されたコンピュータプログラムによって選択的に開始又は再構成される汎用コンピュータを含んでもよい。このようなコンピュータプログラムは、フロッピーディスク、光ディスク、CD-ROM、光磁気ディスク、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気若しくは光カード、特定用途向け集積回路(ASIC)、又は電子命令を記憶するのに好適な任意のタイプの媒体を含む任意のタイプのディスクなどのこれらに限定されない非一時的なコンピュータ可読記憶媒体に記憶されてもよく、各々がコンピュータシステムバスに結合される。さらに、本明細書で言及されるコンピュータは、単一プロセッサを含んでもよいし、計算能力を向上させるために複数のプロセッサ設計を採用するアーキテクチャであってもよい。
【0136】
本明細書に提示されるアルゴリズム及び動作は、本質的には、特定のコンピュータ又は他の装置に関するものではない。様々な汎用システムも、本明細書の教示に従ったプログラムと共に使用されてもよいし、必要とされる方法ステップを実行するためにより特別な装置を構築することが便利であってもよい。様々なこれらのシステムに必要な構造は、同等の変形と共に当業者には明らかであろう。追加的に、本実施形態は、任意の特定のプログラミング言語を参照して記載されていない。様々なプログラミング言語を使用して、本明細書で記載されるような実施形態の教示を実装してもよいことが理解される。
【0137】
実施形態は、多数のトポロジーにわたる多種多様なコンピュータネットワークシステムに良好に好適である。この分野では、大規模ネットワークの構成及び管理は、インターネットなどのネットワークを介して似ていないコンピュータ及び記憶デバイスに通信可能に結合された記憶デバイス及びコンピュータを含む。
【0138】
最後に、本明細書で使用される言語は、主に読みやすさ及び教育的な目的のために選択されており、発明の主題の輪郭を描くか、又は境界線を引くために選択されたものではないことに留意されたい。したがって、実施形態の開示は、例示的であることを意図しているが、限定的なものではない。
図1
図2A
図2B
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
【国際調査報告】