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

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

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

特表2024-503440クラウドプラットフォームに構成されたデータセンタ上に継続的配信を介して配備されるサービスのシステム構成フリーズ及び変更管理
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-25
(54)【発明の名称】クラウドプラットフォームに構成されたデータセンタ上に継続的配信を介して配備されるサービスのシステム構成フリーズ及び変更管理
(51)【国際特許分類】
   G06F 8/65 20180101AFI20240118BHJP
   G06F 9/52 20060101ALI20240118BHJP
【FI】
G06F8/65
G06F9/52 120Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023542579
(86)(22)【出願日】2021-01-29
(85)【翻訳文提出日】2023-09-06
(86)【国際出願番号】 US2021015827
(87)【国際公開番号】W WO2022154811
(87)【国際公開日】2022-07-21
(31)【優先権主張番号】17/148,363
(32)【優先日】2021-01-13
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/147,715
(32)【優先日】2021-01-13
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.KUBERNETES
(71)【出願人】
【識別番号】506332063
【氏名又は名称】セールスフォース インコーポレイテッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ベルガラ,ジーネス
(72)【発明者】
【氏名】パッタン,アリフラー カーン
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376CA05
5B376CA27
5B376CA36
5B376CA43
(57)【要約】
コンピューティングシステム、例えばマルチテナントシステムは、クラウドプラットフォーム非依存であるクラウドプラットフォームインフラストラクチャ言語を使用してクラウドプラットフォームにおいて作成されたデータセンタにソフトウェアアーチファクトを配備する。システムは、ユーザが、クラウドプラットフォーム上に構成されたデータセンタ内で実行しているサービスに対してある時間間隔にわたってシステム構成フリーズを指定することを可能にする。システムフリーズの間、システムへの変更は禁止され、あるいは保留にされる。システムは、サービスのシステム構成を修正するためのパイプラインを生成する。パイプラインは、サービスに関連づけられた変更を行うための変更ステージと、ロックを獲得するための変更前ステージとを含む。システムが、データセンタエンティティのシステムフリーズを実行する要求を受信した場合、システムは、データセンタエンティティのサービスに対するロックを獲得する。結果として、サービスのシステム構成を変更するように構成されたパイプラインの実行が保留にされる。
【特許請求の範囲】
【請求項1】
クラウドプラットフォームに配備されたサービスに対してシステム構成フリーズを強制する、コンピュータにより実施される方法であって、
ターゲットクラウドプラットフォーム上に構成されたデータセンタにアクセスするステップであり、前記データセンタはサービスのセットを実行し、前記データセンタはデータセンタエンティティの階層を含み、各データセンタエンティティは、(1)1つ以上のサービス、又は(2)1つ以上の他のデータセンタエンティティを含む、ステップと、
データセンタエンティティ上にサービスを配備するためのパイプラインを生成するステップであり、前記パイプラインは、
前記データセンタエンティティのための1つ以上のソフトウェアアーチファクトに関連づけられた変更を行うための命令を含む変更ステージと、
ロックを獲得するための命令を含む変更前ステージであり、パイプライン実行は、前記変更前ステージが前記ロックを獲得するのに失敗したことに応答して中断される、変更前ステージと、
を含む、ステップと、
ある時間間隔にわたる前記データセンタエンティティに対するシステム構成フリーズを実行する要求を受信するステップと、
前記時間間隔にわたる前記データセンタエンティティのサービスに関連づけられた1つ以上のロックを獲得するステップと、
前記時間間隔の間、前記データセンタエンティティ上のサービスに関連づけられたソフトウェアアーチファクトを配備するために前記パイプラインを実行するステップであり、
前記パイプラインの前記変更前ステージを実行し、前記ロックが獲得されるまで前記パイプライン実行を中断させることを含む、ステップと、
を含む、コンピュータにより実施される方法。
【請求項2】
前記時間間隔の後、前記パイプラインにより前記ロックを獲得するステップと、
前記データセンタエンティティのための1つ以上のソフトウェアアーチファクトに関連づけられた前記変更を行うために前記変更ステージを実行するステップと、
をさらに含む、請求項1に記載のコンピュータにより実施される方法。
【請求項3】
前記パイプラインの前記変更前ステージが閾値を超える時間にわたって前記ロックを獲得するのに失敗したことを判断するステップと、
前記パイプラインの前記変更前ステージが閾値を超える時間にわたって前記ロックを獲得するのに失敗したと判断したことに応答して、前記パイプラインの実行に失敗するステップと、
をさらに含む、請求項1に記載のコンピュータにより実施される方法。
【請求項4】
前記パイプラインは、前記データセンタエンティティに関連づけられた前記ロックを解放するための命令を含む変更後ステージをさらに含み、前記パイプラインを実行することは、
前記データセンタエンティティのための前記1つ以上のソフトウェアアーチファクトに関連づけられた前記変更を行うために前記変更ステージの実行を完了した後、前記ロックを解放することを含む、請求項1に記載のコンピュータにより実施される方法。
【請求項5】
前記システム構成フリーズは優先順位に関連づけられ、当該方法は、
前記システム構成フリーズの前記時間間隔の間、前記データセンタエンティティのサービスの修正の要求を受信するステップであり、前記要求は、前記システム構成フリーズの前記優先順位より高い優先順位を有する、ステップと、
前記システム構成フリーズにもかかわらず、前記サービスの前記修正が前記時間間隔の間に続行することを可能にするステップと、
をさらに含む、請求項1に記載のコンピュータにより実施される方法。
【請求項6】
前記システム構成フリーズは、閾値より多い量の作業負荷が前記時間間隔の間に予期されると判断したことに応答して実行される、請求項1に記載のコンピュータにより実施される方法。
【請求項7】
前記システム構成フリーズは、前記データセンタエンティティに関連づけられた問題が前記時間間隔の間に診断されていると判断したことに応答して実行される、請求項1に記載のコンピュータにより実施される方法。
【請求項8】
前記システム構成フリーズは、特定のシステム構成変更が前記時間間隔の間に実行されていると判断したことに応答して実行され、前記システム構成フリーズは、前記時間間隔の間のいかなる他のシステム構成変更も防止する、請求項1に記載のコンピュータにより実施される方法。
【請求項9】
前記時間間隔の後、
任意のパイプラインにより解放するのに失敗した1つ以上のロックを識別することと、
前記識別されたロックを解放することと、
を含むステップを実行する、請求項1に記載のコンピュータにより実施される方法。
【請求項10】
システム構成フリーズの要求を受信したことに応答して、前記データセンタエンティティのためのソフトウェアアーチファクトに対する更新の要求を受信するステップと、
前記ソフトウェアアーチファクトを更新する前記要求を実行する予期された時間が閾値未満であると判断したことに応答して、前記データセンタエンティティの前記ソフトウェアアーチファクトに対する前記更新の要求の前記実行が完了するまで、前記システム構成フリーズの要求の実行を遅延させるステップと、
をさらに含む、請求項1に記載のコンピュータにより実施される方法。
【請求項11】
前記ロックは、前記ロックが要求される時間間隔の長さに関連づけられ、当該方法は、
前記ロックが指定された長さの時間間隔の前に解放されるかどうかを監視するステップと、
前記ロックが前記指定された長さの時間間隔の前に解放されないと判断したことに応答して、警告メッセージを送信するステップと、
をさらに含む、請求項1に記載のコンピュータにより実施される方法。
【請求項12】
前記ロックは、前記ロックが要求される時間間隔の長さに関連づけられ、当該方法は、
パイプラインの過去の実行に基づいて、ロックを獲得するための前記時間間隔の長さを決定するステップ、をさらに含む、請求項11に記載のコンピュータにより実施される方法。
【請求項13】
前記クラウドプラットフォーム上に構成された前記データセンタは、マルチテナントシステムのテナントに関連づけられ、前記システム構成フリーズの要求は、前記テナントに関連づけられたクライアントデバイスから要求される、請求項1に記載のコンピュータにより実施される方法。
【請求項14】
マルチテナントシステムのテナントのためのデータセンタの、クラウドプラットフォーム非依存の宣言的仕様を受信するステップであり、前記データセンタは、前記テナントに関連づけられたユーザのセットにより使用されるコンピューティングリソースのセットを表し、前記クラウドプラットフォーム非依存の宣言的仕様は、複数のクラウドプラットフォームのいずれかの上に前記データセンタを生成するように構成され、クラウドプラットフォームインフラストラクチャ言語を使用して指定される、ステップ、
をさらに含む、請求項1に記載のコンピュータにより実施される方法。
【請求項15】
前記クラウドプラットフォーム非依存の宣言的仕様をコンパイルして、前記ターゲットクラウドプラットフォーム上に前記データセンタを作成するためのクラウドプラットフォーム固有のデータセンタ表現を生成するステップと、
前記クラウドプラットフォーム固有のデータセンタ表現と、前記ターゲットクラウドプラットフォームにおける実行のための命令のセットとを送信するステップであり、前記ターゲットクラウドプラットフォームは、前記命令を実行して、前記クラウドプラットフォーム固有のデータセンタ表現を使用して前記データセンタを構成する、ステップと、
をさらに含む、請求項14に記載のコンピュータにより実施される方法。
【請求項16】
命令を記憶するための非一時的コンピュータ読取可能記憶媒体であって、前記命令は、コンピュータプロセッサにより実行されたときに、前記コンピュータプロセッサにクラウドプラットフォームにおいてデータセンタを構成するためのステップを実行させ、前記ステップは、
ターゲットクラウドプラットフォーム上に構成されたデータセンタにアクセスすることであり、前記データセンタはサービスのセットを実行し、前記データセンタはデータセンタエンティティの階層を含み、各データセンタエンティティは、(1)1つ以上のサービス、又は(2)1つ以上の他のデータセンタエンティティを含む、ことと、
データセンタエンティティ上にサービスを配備するためのパイプラインを生成することであり、前記パイプラインは、
前記データセンタエンティティのための1つ以上のソフトウェアアーチファクトに関連づけられた変更を行うための命令を含む変更ステージと、
ロックを獲得するための命令を含む変更前ステージであり、パイプライン実行は、前記変更前ステージが前記ロックを獲得するのに失敗したことに応答して中断される、変更前ステージと、
を含む、ことと、
ある時間間隔にわたる前記データセンタエンティティに対するシステム構成フリーズを実行する要求を受信することと、
前記時間間隔にわたる前記データセンタエンティティのサービスに関連づけられた1つ以上のロックを獲得することと、
前記時間間隔の間、前記データセンタエンティティ上のサービスに関連づけられたソフトウェアアーチファクトを配備するために前記パイプラインを実行することであり、
前記パイプラインの前記変更前ステージを実行し、前記ロックが獲得されるまで前記パイプライン実行を中断させることを含む、ことと、
を含む、非一時的コンピュータ読取可能記憶媒体。
【請求項17】
前記命令はさらに、前記コンピュータプロセッサに、
前記時間間隔の後、前記パイプラインにより前記ロックを獲得することと、
前記データセンタエンティティのための1つ以上のソフトウェアアーチファクトに関連づけられた前記変更を行うために前記変更ステージを実行することと、
を含むステップを実行させる、請求項16に記載の非一時的コンピュータ読取可能記憶媒体。
【請求項18】
前記システム構成フリーズは優先順位に関連づけられ、前記命令はさらに、前記コンピュータプロセッサに、
実行のためのタスクを受信することであり、前記タスクは、前記システム構成フリーズの前記優先順位より高い優先順位を有し、前記高い優先順位のタスクは、前記時間間隔の間に前記データセンタエンティティのソフトウェアアーチファクトに対する変更をもたらす、ことと、
前記システム構成フリーズにもかかわらず、前記高い優先順位のタスクを前記時間間隔の間に実行することを可能にすることと、
を含むステップを実行させる、請求項16に記載の非一時的コンピュータ読取可能記憶媒体。
【請求項19】
前記命令はさらに、前記コンピュータプロセッサに、
システム構成フリーズの要求を受信したことに応答して、前記データセンタエンティティのためのソフトウェアアーチファクトに対する更新の要求を受信することと、
前記ソフトウェアアーチファクトを更新する前記要求を実行する予期された時間が閾値未満であると判断したことに応答して、前記データセンタエンティティの前記ソフトウェアアーチファクトに対する前記更新の要求の前記実行が完了するまで、前記システム構成フリーズの要求の実行を遅延させることと、
を含むステップを実行させる、請求項16に記載の非一時的コンピュータ読取可能記憶媒体。
【請求項20】
コンピュータシステムであって、
コンピュータプロセッサと、
命令を記憶するための非一時的コンピュータ読取可能記憶媒体であり、前記命令は、前記コンピュータプロセッサにより実行されたときに、前記コンピュータプロセッサにクラウドプラットフォームにおいてデータセンタを構成するためのステップを実行させる、非一時的コンピュータ読取可能記憶媒体と、
を含み、前記ステップは、
ターゲットクラウドプラットフォーム上に構成されたデータセンタにアクセスすることであり、前記データセンタはサービスのセットを実行し、前記データセンタはデータセンタエンティティの階層を含み、各データセンタエンティティは、(1)1つ以上のサービス、又は(2)1つ以上の他のデータセンタエンティティを含む、ことと、
データセンタエンティティ上にサービスを配備するためのパイプラインを生成することであり、前記パイプラインは、
前記データセンタエンティティのための1つ以上のソフトウェアアーチファクトに関連づけられた変更を行うための命令を含む変更ステージと、
ロックを獲得するための命令を含む変更前ステージであり、パイプライン実行は、前記変更前ステージが前記ロックを獲得するのに失敗したことに応答して中断される、変更前ステージと、
を含む、ことと、
ある時間間隔にわたる前記データセンタエンティティに対するシステム構成フリーズを実行する要求を受信することと、
前記時間間隔にわたる前記データセンタエンティティのサービスに関連づけられた1つ以上のロックを獲得することと、
前記時間間隔の間、前記データセンタエンティティ上のサービスに関連づけられたソフトウェアアーチファクトを配備するために前記パイプラインを実行することであり、
前記パイプラインの前記変更前ステージを実行し、前記ロックが獲得されるまで前記パイプライン実行を中断させることを含む、ことと、
を含む、コンピュータシステム。
【請求項21】
クラウドプラットフォーム上に構成されたデータセンタにおいて実行しているサービスに対する変更を管理する、コンピュータにより実施される方法であって、
ターゲットクラウドプラットフォーム上に構成されたデータセンタにアクセスするステップであり、前記データセンタはサービスのセットを実行し、前記データセンタはデータセンタエンティティの階層を含み、各データセンタエンティティは、(1)1つ以上のサービス、又は(2)1つ以上の他のデータセンタエンティティを含む、ステップと、
前記データセンタ上で実行している前記サービスのセットの修正を受信するステップと、
ターゲットクラウドプラットフォーム上にサービスを配備するためのマスタパイプラインを生成するステップであり、前記マスタパイプラインは、
サービスを配備するための命令を含む複数のステージであり、各ステージはシステム環境に対応し、前記システム環境のうちの少なくともいくつかが、開発環境とテスト環境と本番環境とを含むリストに属する、複数のステージと、
変更管理システムと対話するための命令を含む変更管理ステージと、
を含む、ステップと、
前記マスタパイプラインをコンパイルして、前記サービスのセットに対応するパイプラインのセットを生成するステップであり、各生成されたパイプラインは変更管理ステージを含む、ステップと、
前記パイプラインのセットの各々を実行するステップであり、パイプラインの前記変更管理ステージの実行は、1つ以上のサービスの配備のステータスを前記変更管理システムに提供する、ステップと、
を含む、コンピュータにより実施される方法。
【請求項22】
前記データセンタに配備された特定のサービスにおける特定の変更についての監査要求を受信するステップと、
前記監査要求を受信したことに応答して、前記変更管理システムから前記特定のサービスの配備のステータスを識別するステップと、
前記監査要求に応じて前記特定のサービスの配備の前記識別されたステータスを提供するステップと、
をさらに含む、請求項21に記載の方法。
【請求項23】
前記マスタパイプラインの前記変更管理ステージは、前記本番環境のためのステージの前に生じる、請求項21に記載の方法。
【請求項24】
前記パイプラインのセットは、前記データセンタにおける前記データセンタエンティティの階層に対応する階層を形成する、請求項21に記載の方法。
【請求項25】
前記マスタパイプラインは、システム環境のセットを通じてサービスのためのソフトウェアアーチファクトを昇格させる、請求項21に記載のコンピュータにより実施される方法。
【請求項26】
前記マスタパイプラインのステージは、前記ソフトウェアアーチファクトを現在のステージから次のステージに昇格させるかどうかを判断するためにテストケースのセットを実行するための命令を含む、請求項25に記載のコンピュータにより実施される方法。
【請求項27】
クラウドプラットフォーム非依存のマスタ配備パイプラインは、クラウドプラットフォーム非依存の宣言的仕様により指定された前記データセンタエンティティの階層に対応する階層構造を有するパイプラインの階層を含む、請求項21に記載のコンピュータにより実施される方法。
【請求項28】
前記パイプラインの階層は、1つ以上のサービスグループパイプラインを含むデータセンタインスタンスパイプラインを含み、サービスグループパイプラインは、1つ以上のサービスパイプラインを含む、請求項27に記載のコンピュータにより実施される方法。
【請求項29】
生成されたパイプラインの変更管理ステージは、次のステージに進むための承認を待つ命令を含む、請求項27に記載のコンピュータにより実施される方法。
【請求項30】
クラウドプラットフォーム非依存の宣言的仕様を受信するステップと、
前記クラウドプラットフォーム非依存の宣言的仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成するステップと、
をさらに含む、請求項21に記載のコンピュータにより実施される方法。
【請求項31】
クラウドプラットフォーム非依存の宣言的仕様をコンパイルすることは、
元の宣言的仕様から、前記データセンタのクラウドプラットフォーム非依存の詳細なメタデータ表現の第1のバージョンを生成することと、
修正された宣言的仕様から、前記データセンタの前記クラウドプラットフォーム非依存の詳細なメタデータ表現の第2のバージョンを生成することと、
を含む、請求項21に記載のコンピュータにより実施される方法。
【請求項32】
前記クラウドプラットフォーム非依存の詳細なメタデータ表現の前記第1のバージョンに基づいて、前記ターゲットクラウドプラットフォームのためのプラットフォーム固有の詳細なメタデータ表現を生成するステップと、
前記プラットフォーム固有の詳細なメタデータ表現に基づいて、前記ターゲットクラウドプラットフォーム上に前記データセンタを配備するステップと、
をさらに含む、請求項31に記載のコンピュータにより実施される方法。
【請求項33】
クラウドプラットフォーム非依存の宣言的仕様は、1つ以上のデータセンタインスタンスの定義を含み、各データセンタインスタンスは1つ以上のサービスグループを含み、各サービスグループはサービスのセットを含む、請求項21に記載のコンピュータにより実施される方法。
【請求項34】
前記データセンタ上で実行している前記サービスのセットの前記修正は、アーチファクトバージョンマップを介して指定される、請求項21に記載のコンピュータにより実施される方法。
【請求項35】
前記アーチファクトバージョンマップを前に受信したアーチファクトバージョンマップと比較することにより、前記データセンタ上で実行している前記サービスのセットの前記修正を決定するステップ、
をさらに含む、請求項34に記載のコンピュータにより実施される方法。
【請求項36】
命令を記憶するための非一時的コンピュータ読取可能記憶媒体であって、前記命令は、コンピュータプロセッサにより実行されたときに、前記コンピュータプロセッサにクラウドプラットフォームにおいてデータセンタを構成するためのステップを実行させ、前記ステップは、
ターゲットクラウドプラットフォーム上に構成されたデータセンタにアクセスすることであり、前記データセンタはサービスのセットを実行し、前記データセンタはデータセンタエンティティの階層を含み、各データセンタエンティティは、(1)1つ以上のサービス、又は(2)1つ以上の他のデータセンタエンティティを含む、ことと、
前記データセンタ上で実行している前記サービスのセットの修正を受信することと、
ターゲットクラウドプラットフォーム上にサービスを配備するためのマスタパイプラインを生成することであり、前記マスタパイプラインは、
サービスを配備するための命令を含む複数のステージであり、各ステージはシステム環境に対応し、前記システム環境のうちの少なくともいくつかが、開発環境とテスト環境と本番環境とを含むリストに属する、複数のステージと、
変更管理システムと対話するための命令を含む変更管理ステージと、
を含む、ことと、
前記マスタパイプラインをコンパイルして、前記サービスのセットに対応するパイプラインのセットを生成することであり、各生成されたパイプラインは変更管理ステージを含む、ことと、
前記パイプラインのセットの各々を実行することであり、パイプラインの前記変更管理ステージの実行は、1つ以上のサービスの配備のステータスを前記変更管理システムに提供する、ことと、
を含む、非一時的コンピュータ読取可能記憶媒体。
【請求項37】
前記命令はさらに、前記プロセッサに、
前記データセンタに配備された特定のサービスにおける特定の変更についての監査要求を受信することと、
前記監査要求を受信したことに応答して、前記変更管理システムから前記特定のサービスの配備のステータスを識別することと、
前記監査要求に応じて前記特定のサービスの配備の前記識別されたステータスを提供することと、
を含むステップを実行させる、請求項36に記載の非一時的コンピュータ読取可能記憶媒体。
【請求項38】
前記マスタパイプラインの前記変更管理ステージは、前記本番環境のためのステージの前に生じる、請求項36に記載の非一時的コンピュータ読取可能記憶媒体。
【請求項39】
前記命令はさらに、前記プロセッサに、
アーチファクトバージョンマップを前に受信したアーチファクトバージョンマップと比較することにより、前記データセンタ上で実行している前記サービスのセットの前記修正を決定すること、
を含むステップを実行させる、請求項36に記載の非一時的コンピュータ読取可能記憶媒体。
【請求項40】
コンピュータシステムであって、
コンピュータプロセッサと、
命令を記憶するための非一時的コンピュータ読取可能記憶媒体であり、前記命令は、前記コンピュータプロセッサにより実行されたときに、前記コンピュータプロセッサにクラウドプラットフォームにおいてデータセンタを構成するためのステップを実行させる、非一時的コンピュータ読取可能記憶媒体と、
を含み、前記ステップは、
ターゲットクラウドプラットフォーム上に構成されたデータセンタにアクセスすることであり、前記データセンタはサービスのセットを実行し、前記データセンタはデータセンタエンティティの階層を含み、各データセンタエンティティは、(1)1つ以上のサービス、又は(2)1つ以上の他のデータセンタエンティティを含む、ことと、
前記データセンタ上で実行している前記サービスのセットの修正を受信することと、
ターゲットクラウドプラットフォーム上にサービスを配備するためのマスタパイプラインを生成することであり、前記マスタパイプラインは、
サービスを配備するための命令を含む複数のステージであり、各ステージはシステム環境に対応し、前記システム環境のうちの少なくともいくつかが、開発環境とテスト環境と本番環境とを含むリストに属する、複数のステージと、
変更管理システムと対話するための命令を含む変更管理ステージと、
を含む、ことと、
前記マスタパイプラインをコンパイルして、前記サービスのセットに対応するパイプラインのセットを生成することであり、各生成されたパイプラインは変更管理ステージを含む、ことと、
前記パイプラインのセットの各々を実行することであり、パイプラインの前記変更管理ステージの実行は、1つ以上のサービスの配備のステータスを前記変更管理システムに提供する、ことと、
を含む、コンピュータシステム。
【請求項41】
前記パイプラインの前記変更前ステージが閾値を超える時間にわたって前記ロックを獲得するのに失敗したことを判断するステップと、
前記パイプラインの前記変更前ステージが閾値を超える時間にわたって前記ロックを獲得するのに失敗したと判断したことに応答して、前記パイプラインの実行に失敗するステップと、
をさらに含む、請求項1乃至2に記載のコンピュータにより実施される方法。
【請求項42】
前記パイプラインは、前記データセンタエンティティに関連づけられた前記ロックを解放するための命令を含む変更後ステージをさらに含み、前記パイプラインを実行することは、
前記データセンタエンティティのための前記1つ以上のソフトウェアアーチファクトに関連づけられた前記変更を行うために前記変更ステージの実行を完了した後、前記ロックを解放することを含む、請求項1乃至2、41に記載のコンピュータにより実施される方法。
【請求項43】
前記システム構成フリーズは優先順位に関連づけられ、当該方法は、
前記システム構成フリーズの前記時間間隔の間、前記データセンタエンティティのサービスの修正の要求を受信するステップであり、前記要求は、前記システム構成フリーズの前記優先順位より高い優先順位を有する、ステップと、
前記システム構成フリーズにもかかわらず、前記サービスの前記修正が前記時間間隔の間に続行することを可能にするステップと、
をさらに含む、請求項1乃至2、41乃至42に記載のコンピュータにより実施される方法。
【請求項44】
前記システム構成フリーズは、閾値より多い量の作業負荷が前記時間間隔の間に予期されると判断したことに応答して実行される、請求項1乃至2、41乃至43に記載のコンピュータにより実施される方法。
【請求項45】
前記システム構成フリーズは、前記データセンタエンティティに関連づけられた問題が前記時間間隔の間に診断されていると判断したことに応答して実行される、請求項1乃至2、41乃至44に記載のコンピュータにより実施される方法。
【請求項46】
前記システム構成フリーズは、特定のシステム構成変更が前記時間間隔の間に実行されていると判断したことに応答して実行され、前記システム構成フリーズは、前記時間間隔の間のいかなる他のシステム構成変更も防止する、請求項1乃至2、41乃至45に記載のコンピュータにより実施される方法。
【請求項47】
前記時間間隔の後、
任意のパイプラインにより解放するのに失敗した1つ以上のロックを識別することと、
前記識別されたロックを解放することと、
を含むステップを実行する、請求項1乃至2、41乃至46に記載のコンピュータにより実施される方法。
【請求項48】
システム構成フリーズの要求を受信したことに応答して、前記データセンタエンティティのためのソフトウェアアーチファクトに対する更新の要求を受信するステップと、
前記ソフトウェアアーチファクトを更新する前記要求を実行する予期された時間が閾値未満であると判断したことに応答して、前記データセンタエンティティの前記ソフトウェアアーチファクトに対する前記更新の要求の前記実行が完了するまで、前記システム構成フリーズの要求の実行を遅延させるステップと、
をさらに含む、請求項1乃至2、41乃至47に記載のコンピュータにより実施される方法。
【請求項49】
前記ロックは、前記ロックが要求される時間間隔の長さに関連づけられ、当該方法は、
前記ロックが指定された長さの時間間隔の前に解放されるかどうかを監視するステップと、
前記ロックが前記指定された長さの時間間隔の前に解放されないと判断したことに応答して、警告メッセージを送信するステップと、
をさらに含む、請求項1乃至2、41乃至48に記載のコンピュータにより実施される方法。
【請求項50】
前記ロックは、前記ロックが要求される時間間隔の長さに関連づけられ、当該方法は、
パイプラインの過去の実行に基づいて、ロックを獲得するための前記時間間隔の長さを決定するステップ、をさらに含む、請求項1乃至2、41乃至49に記載のコンピュータにより実施される方法。
【請求項51】
前記クラウドプラットフォーム上に構成された前記データセンタは、マルチテナントシステムのテナントに関連づけられ、前記システム構成フリーズの要求は、前記テナントに関連づけられたクライアントデバイスから要求される、請求項1乃至2、41乃至50に記載のコンピュータにより実施される方法。
【請求項52】
マルチテナントシステムのテナントのためのデータセンタの、クラウドプラットフォーム非依存の宣言的仕様を受信するステップであり、前記データセンタは、前記テナントに関連づけられたユーザのセットにより使用されるコンピューティングリソースのセットを表し、前記クラウドプラットフォーム非依存の宣言的仕様は、複数のクラウドプラットフォームのいずれかの上に前記データセンタを生成するように構成され、クラウドプラットフォームインフラストラクチャ言語を使用して指定される、ステップ、
をさらに含む、請求項1乃至2、41乃至51に記載のコンピュータにより実施される方法。
【請求項53】
前記クラウドプラットフォーム非依存の宣言的仕様をコンパイルして、前記ターゲットクラウドプラットフォーム上に前記データセンタを作成するためのクラウドプラットフォーム固有のデータセンタ表現を生成するステップと、
前記クラウドプラットフォーム固有のデータセンタ表現と、前記ターゲットクラウドプラットフォームにおける実行のための命令のセットとを送信するステップであり、前記ターゲットクラウドプラットフォームは、前記命令を実行して、前記クラウドプラットフォーム固有のデータセンタ表現を使用して前記データセンタを構成する、ステップと、
をさらに含む、請求項1乃至2、41乃至52に記載のコンピュータにより実施される方法。
【請求項54】
前記マスタパイプラインの前記変更管理ステージは、前記本番環境のためのステージの前に生じる、請求項21乃至22に記載のコンピュータにより実施される方法。
【請求項55】
前記パイプラインのセットは、前記データセンタにおける前記データセンタエンティティの階層に対応する階層を形成する、請求項21乃至22、54に記載のコンピュータにより実施される方法。
【請求項56】
前記マスタパイプラインは、システム環境のセットを通じてサービスのためのソフトウェアアーチファクトを昇格させる、請求項21乃至22、54乃至55に記載のコンピュータにより実施される方法。
【請求項57】
前記マスタパイプラインのステージは、ソフトウェアアーチファクトを現在のステージから次のステージに昇格させるかどうかを判断するためにテストケースのセットを実行するための命令を含む、請求項21乃至22、54乃至56に記載のコンピュータにより実施される方法。
【請求項58】
クラウドプラットフォーム非依存のマスタ配備パイプラインは、クラウドプラットフォーム非依存の宣言的仕様により指定された前記データセンタエンティティの階層に対応する階層構造を有するパイプラインの階層を含む、請求項21乃至22、54乃至57に記載のコンピュータにより実施される方法。
【請求項59】
前記パイプラインの階層は、1つ以上のサービスグループパイプラインを含むデータセンタインスタンスパイプラインを含み、サービスグループパイプラインは、1つ以上のサービスパイプラインを含む、請求項21乃至22、54乃至58に記載のコンピュータにより実施される方法。
【請求項60】
生成されたパイプラインの変更管理ステージは、次のステージに進むための承認を待つ命令を含む、請求項21乃至22、54乃至59に記載のコンピュータにより実施される方法。
【請求項61】
クラウドプラットフォーム非依存の宣言的仕様を受信するステップと、
前記クラウドプラットフォーム非依存の宣言的仕様をコンパイルして、クラウドプラットフォーム固有のデータセンタ表現を生成するステップと、
をさらに含む、請求項21乃至22、54乃至60に記載のコンピュータにより実施される方法。
【請求項62】
クラウドプラットフォーム非依存の宣言的仕様をコンパイルすることは、
元の宣言的仕様から、前記データセンタのクラウドプラットフォーム非依存の詳細なメタデータ表現の第1のバージョンを生成することと、
修正された宣言的仕様から、前記データセンタの前記クラウドプラットフォーム非依存の詳細なメタデータ表現の第2のバージョンを生成することと、
を含む、請求項21乃至22、54乃至61に記載のコンピュータにより実施される方法。
【請求項63】
クラウドプラットフォーム非依存の詳細なメタデータ表現の第1のバージョンに基づいて、前記ターゲットクラウドプラットフォームのためのプラットフォーム固有の詳細なメタデータ表現を生成するステップと、
前記プラットフォーム固有の詳細なメタデータ表現に基づいて、前記ターゲットクラウドプラットフォーム上に前記データセンタを配備するステップと、
をさらに含む、請求項21乃至22、54乃至62に記載のコンピュータにより実施される方法。
【請求項64】
クラウドプラットフォーム非依存の宣言的仕様は、1つ以上のデータセンタインスタンスの定義を含み、各データセンタインスタンスは1つ以上のサービスグループを含み、各サービスグループはサービスのセットを含む、請求項21乃至22、54乃至63に記載のコンピュータにより実施される方法。
【請求項65】
前記データセンタ上で実行している前記サービスのセットの前記修正は、アーチファクトバージョンマップを介して指定される、請求項21乃至22、54乃至64に記載のコンピュータにより実施される方法。
【請求項66】
アーチファクトバージョンマップを前に受信したアーチファクトバージョンマップと比較することにより、前記データセンタ上で実行している前記サービスのセットの前記修正を決定するステップ、
をさらに含む、請求項21乃至22、54乃至65に記載のコンピュータにより実施される方法。
【請求項67】
命令を記憶するための非一時的コンピュータ読取可能記憶媒体であって、前記命令は、コンピュータプロセッサにより実行されたときに、前記コンピュータプロセッサに上記方法の請求項のうちいずれか1項に記載のステップを実行させる、非一時的コンピュータ読取可能記憶媒体。
【請求項68】
コンピュータシステムであって、
コンピュータプロセッサと、
命令を記憶するための非一時的コンピュータ読取可能記憶媒体であり、前記命令は、前記コンピュータプロセッサにより実行されたときに、前記コンピュータプロセッサに上記方法の請求項のうちいずれか1項に記載のステップを実行させる、非一時的コンピュータ読取可能記憶媒体と、
を含むコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、クラウドコンピューティングプラットフォームにおけるソフトウェアリリースの管理、及びクラウドコンピューティングプラットフォームに構成されたデータセンタ上に継続的配信を介して配備されるサービスのシステム構成フリーズの強制、並びにクラウドコンピューティングプラットフォームに構成されたデータセンタ上に配備されるソフトウェアアーチファクトにおける変更の管理に関する。
【背景技術】
【0002】
組織は、それらのインフラストラクチャニーズのために、AWS(AMAZON(登録商標) WEB SERVICES)、GOOGLE(登録商標)クラウドプラットフォーム、MICROSOFT(登録商標) AZUREなどのクラウドプラットフォーム(又は、クラウドコンピューティングプラットフォーム)にますます応答している。クラウドプラットフォームは、サーバ、ストレージ、データベース、ネットワーキング、ソフトウェアなどを、インターネットを通じて組織に提供する。組織は、それらのサービスを、コンピューティングリソースのスケーラビリティ及び順応性を提供するクラウドプラットフォームにシフトしている。
【0003】
組織は、クラウドプラットフォーム上でアプリケーションを管理及び配備することができる継続的配信プラットフォームを使用して、クラウドプラットフォーム上でクラウドインフラストラクチャを保守する。そのような継続的配信プラットフォームは、組織がソフトウェア配備プロセスを簡素化し、クラウドプラットフォーム上のアプリケーション、ファイアウォール、クラスタ、サーバ、ロードバランサ、及び他のコンピューティングインフラストラクチャを管理することを可能にする。継続的配信プラットフォームは、開発者が、システム上で実行しているサービスに影響を及ぼすソフトウェアアーチファクトへの変更を行い、更新されたソフトウェアアーチファクトを配備することをより容易にする。しかしながら、システム上で実行しているサービスへのいかなる変更も望ましくない期間が存在する。システムを提供する組織は、そのような期間について、システムフリーズ(特徴フリーズ又はコンピューティングモラトリアムとも呼ばれる)を課すことを好む場合がある。例えば、システムが特に高いトラフィックを予期している場合である。サービスに関連づけられたソフトウェアアーチファクトを修正することは、変更の結果としてソフトウェア欠陥又はソフトウェアバグなどの予見し難い状況に直面する可能性があるため、システムの安定性を低下させる可能性がある。
【0004】
マルチテナントシステムなどの大規模システムは、マルチテナントシステムのテナントを表す多数の組織のためのサービスを管理することができ、複数のクラウドプラットフォームと対話することができる。マルチテナントシステムは、複数のクラウドプラットフォームにわたって数千のテナントを保守する必要がある場合がある。さらに、各クラウドプラットフォームによりサポートされるソフトウェア、言語、特徴は異なる場合がある。結果として、クラウドプラットフォーム上に構成されたデータセンタ上に配備されたサービスに対して行われた変更を追跡することは、面倒であり、誤りを起こしやすいプロセスである。結果として、オンラインシステムに配備されたサービスに対してコンピューティングモラトリアムがあるとしても、そのサービスに関連づけられたソフトウェアアーチファクトを開発者が変更し得る高い可能性があり、それにより、システムの安定性が低下する。
【0005】
さらに、いくつかのユーザ及びユーザのチームが、サービスに関連づけられたソフトウェアリリースに関与する場合がある。結果として、クラウドプラットフォーム上に構成されたデータセンタ上に配備されたサービスに対して行われる変更を追跡することは、ソースコードとシステム構成とに対して頻繁な変更が行われ得るため、複雑になっている。大規模システムに配備されたサービスに対する変更を追跡することは、関連情報がアクセスするのが困難であるか又は利用できないかのいずれかであるため、面倒である。これは、クラウドプラットフォーム上に構成されたデータセンタ上のソフトウェアリリース及びソフトウェアリリースへの変更をサポート及び追跡するために、マルチテナントシステムの高い保守コストを結果としてもたらす。
【図面の簡単な説明】
【0006】
図1】一実施形態による、クラウドプラットフォーム上にデータセンタを構成するマルチテナントシステムを示すシステム環境のブロック図である。
図2A】一実施形態による、配備モジュール210のシステムアーキテクチャを示すブロック図である。
図2B】一実施形態による、データセンタにソフトウェアアーチファクトを配備するための全体的なプロセスを示す。
図3】1つの実施形態による、ソフトウェアリリース管理モジュールのアーキテクチャを示すブロック図である。
図4】1つの実施形態による、データセンタ宣言的仕様の一例を示す。
図5】1つの実施形態による、宣言的仕様に基づいてクラウドプラットフォーム上に作成された例示的なデータセンタを示す。
図6】1つの実施形態による、宣言的仕様に基づくクラウドプラットフォーム上のデータセンタの生成を示すブロック図である。
図7】一実施形態による、クラウドプラットフォーム上に構成されたデータセンタ上のソフトウェアアーチファクトの配備のためのパイプラインを生成するための全体的なプロセスを示す。
図8】一実施形態による、例示的なマスタパイプラインを示す。
図9】一実施形態による、クラウドプラットフォーム上のマスタパイプラインの環境のためのステージにより実行される全体的なプロセスを示す。
図10】一実施形態による、例示的なマスタパイプラインを示す。
図11】一実施形態による、システム構成フリーズモジュールのシステムアーキテクチャを示す。
図12】一実施形態による、システム構成フリーズを強制するための例示的なパイプラインを示す。
図13】一実施形態による、クラウドプラットフォームにおけるデータセンタ上に配備されたサービスのシステム構成に対する変更を行うためのプロセスを示す。
図14】一実施形態による、クラウドプラットフォーム上に構成されたデータセンタのデータセンタエンティティのシステム構成フリーズを実行するための全体的なプロセスを示す。
図15】一実施形態による、変更処理モジュールのシステムアーキテクチャを示す。
図16】一実施形態による、変更を管理するための例示的なマスタパイプラインを示す。
図17】一実施形態による、クラウドプラットフォーム上に構成されたデータセンタ上に配備されたサービスの変更管理のための全体的なプロセスを示す。
図18】一実施形態による、マスタパイプラインの変更管理ステージにより実行されるプロセスを示す。
図19】一実施形態による、変更に関連するイベント情報を収集するキューを管理するためのプロセスを示す。
図20】1つの実施形態による、図1の環境における使用のための典型的なコンピュータシステムの機能図を示すブロック図である。
【0007】
図面は、例示のみを目的として様々な実施形態を示す。当業者は、以下の議論から、本明細書に記載される実施形態の原理から逸脱することなく、本明細書に示される構造及び方法の代替的な実施形態が採用され得ることを容易に認識するであろう。
【0008】
図面は、同様の要素を識別するために同様の参照番号を使用している。「115a」などの、参照番号の後の文字は、そのテキストがその特定の参照番号を有する要素を具体的に指すことを示す。「115」などの、後続の文字のないテキスト中の参照番号は、その参照番号を有する図中の要素のいずれか又は全てを指す。
【発明を実施するための形態】
【0009】
クラウドプラットフォームは、ストレージ、コンピューティングリソース、アプリケーションなどのコンピューティングリソースを、インターネットなどのパブリックネットワークを介してオンデマンドベースでコンピューティングシステムに提供する。クラウドプラットフォームは、企業が、コンピューティングインフラストラクチャをセットアップするための事前コストを最小限にすることを可能にし、また、企業が、より少ない保守オーバーヘッドでより迅速にアプリケーションを立ち上げ、実行することを可能にする。クラウドプラットフォームはまた、企業が、急速に変動する予測不可能な需要に対してコンピューティングリソースを調整することを可能にする。企業は、企業のユーザによる使用のためにクラウドプラットフォームを使用してデータセンタを作成することができる。しかしながら、各クラウドプラットフォーム上にデータセンタを実装することは、クラウドプラットフォームの技術における専門知識を必要とする。
【0010】
実施形態は、クラウドプラットフォーム非依存であるクラウドプラットフォームインフラストラクチャ言語を使用して、クラウドプラットフォーム内にデータセンタ(data centers)を作成する。システムは、データセンタの、クラウドプラットフォーム非依存の(cloud platform independent)宣言的仕様(declarative specification)を受信する。宣言的仕様は、データセンタの構造を記述しており、データセンタをどのように作成するかを指定する命令を提供しなくてもよい。クラウドプラットフォーム非依存の宣言的仕様は、複数のクラウドプラットフォームのうちのいずれかの上にデータセンタを生成するように構成され、クラウドプラットフォームインフラストラクチャ言語を使用して指定される。システムは、データセンタを作成するためのターゲットクラウドプラットフォームを識別する情報を受信し、クラウドプラットフォーム非依存の宣言的仕様をコンパイルし(compiles)て、クラウドプラットフォーム固有のデータセンタ表現を生成する。システムは、クラウドプラットフォーム固有のデータセンタ表現と、ターゲットクラウドプラットフォームにおける実行のための命令のセットとを送信する。ターゲットクラウドプラットフォームは、命令を実行して、プラットフォーム固有のデータセンタ表現を使用してデータセンタを構成する。システムは、クラウドプラットフォームにより構成されたデータセンタのコンピューティングリソースへのアクセスをユーザに提供する。
【0011】
システムは、クラウドプラットフォーム上に構成されたデータセンタ上のソフトウェアリリースに関連する動作、例えば、ソフトウェアリリースを配備すること(deploying)、リソースをプロビジョニングすること、ソフトウェアリリースのロールバックを実行することなどを実行する。システムは、ターゲットクラウドプラットフォーム上に構成されたデータセンタにアクセスする。データセンタは、データセンタエンティティの階層を含むクラウドプラットフォーム非依存の宣言的仕様に基づいて生成される。各データセンタエンティティは、(1)サービス、又は(2)1つ以上の他のデータセンタエンティティ、のうちの1つ以上を含む。システムは、(1)ソフトウェアアーチファクトの配備のためのステージのシーケンス、例えば、開発ステージ、テストステージ、及び本番(production)ステージと、(2)ソフトウェアアーチファクトをステージのシーケンスのうちの1つのステージから後続のステージに昇格させる(promoting)ための基準と、を含むクラウドプラットフォーム非依存のマスタパイプラインを生成する。システムは、クラウドプラットフォーム非依存のマスタパイプラインをコンパイルして、宣言的仕様により定義されたデータセンタのレイアウトに従ってサービスに関連する動作を実行するための命令を用いてターゲットクラウドプラットフォームのためのクラウドプラットフォーム依存の詳細なパイプラインを生成する。システムは、ターゲットクラウドプラットフォーム上でクラウドプラットフォーム依存の詳細なパイプラインを実行して、例えば、データセンタのデータセンタエンティティ上にソフトウェアリリースを配備する。
【0012】
システムは、ユーザが、クラウドプラットフォーム上に構成されたデータセンタ内で実行しているサービスに対してある時間間隔にわたるシステムフリーズ(コンピューティングモラトリアムとも呼ばれる)を指定することを可能にする。システムフリーズの間、システムに対する変更は禁止され、あるいは保留にされる。システムフリーズの間に防止され得る変更には、ソフトウェアアーチファクトに対するアップグレード、システムにより使用されるリソース(例えば、ロードバランサ、データベース、サーバ、ファイアウォール、ネットワークリソースなどのインフラストラクチャリソース)の構成に対する変更、データセンタ構成変更、システムにより使用されるライブラリ及び他のシステムアーチファクトに対する修正、アプリケーションに対する修正などが含まれる。オンラインシステムは、開発者がソフトウェアアーチファクトで使用されるソースコードを修正することを可能にするために継続的配信(continuous delivery)プラットフォームを使用することがあるが、本明細書で開示される実施形態は、組織が、特定の時間間隔の間、任意のそのような変更を保留にすることを可能にする。
【0013】
一例として、オンラインシステムを介してサービスを提供する組織は、高トラフィック期間の間、オンラインシステム上で実行しているサービスが妨げられるべきではないと判断する場合がある。したがって、実施形態は、システムが動作し続け、システムに対して変更が行われ得ないように、システムがフリーズされることを可能にする。これは、システムダウンタイムに直面する可能性を低減させる。
【0014】
別の例として、システムは、システムを分析して問題の原因を判断するチームを必要とするいくつかの問題を有する場合がある。しかしながら、特定の問題の原因を判断するためにシステムが分析されている期間の間、システム管理者は、システムが監視及びデバッグされている間にソフトウェアアーチファクトに対して変更が行われ得ないように、システムのサービスをフリーズさせることを好む場合がある。これは、システムが監視及びデバッグされている間のシステムに対する問題修正が、問題がサービスの元のソフトウェアにより引き起こされたのか又は問題がデバッグされていた間にソフトウェアに対して行われた何らかの変更により引き起こされたのかを判断するのを困難にすることを、分離するのに役立つ。
【0015】
別の例として、システム内で実行している複数のサブシステムがある場合がある。開示される実施形態は、1つのサブシステム(又は、サブシステムの小さいセット)のみが一度に修正されるように、サブシステムが相互排他的な方法で修正されることを可能にする。特定のサブシステムは、そのサブシステムのためのソフトウェアアーチファクトを配備することにより一度に修正されることがある。システム管理者は、一度に1つのサブシステムのみが修正されるように、残りのサブシステムにモラトリアムを課すことを好む場合がある。サブシステムが配備され、他のサブシステムがそれらのそれぞれのソフトウェアアーチファクトに変更を行うことを続行できるようにする前にサブシステムが確実に実行していることを保証するためにテストされると、モラトリアムは解除される。実施形態は、そのようなモラトリアムがシステムに課されることを可能にし、それにより、システム内に配備されたソフトウェアアーチファクトに対する修正を選択的に防止する。
【0016】
クラウドプラットフォームは、本明細書においてサブストレートとも呼ばれる。システムは、マルチテナントシステムを表し得るが、マルチテナントシステムに限定されず、クラウドプラットフォームへのネットワークアクセスを有する任意のオンラインシステム又は任意のコンピューティングシステムとすることができる。
【0017】
全体的なシステム環境
図1は、一実施形態による、クラウドプラットフォーム上にデータセンタを構成するマルチテナントシステムを示すシステム環境のブロック図である。システム環境100は、マルチテナントシステム110、1つ以上のクラウドプラットフォーム120、及び1つ以上のクライアントデバイス105を含む。他の実施形態において、システム環境100は、より多くの又はより少ないコンポーネントを含んでもよい。
【0018】
マルチテナントシステム110は、1つ以上のテナント115の情報を記憶する。各テナントは、マルチテナントシステム110の顧客を表す企業に関連づけることができる。各テナントは、クライアントデバイス105を介してマルチテナントシステムと対話する複数のユーザを有することができる。
【0019】
クラウドプラットフォームは、クラウドコンピューティングプラットフォーム又はパブリッククラウド環境と呼ばれることもある。テナントは、クラウドプラットフォームインフラストラクチャ言語を使用して、ターゲットクラウドプラットフォーム120上に作成されるデータセンタの宣言的仕様を提供し、データセンタを使用して動作を実行することができ、例えば、リソースをプロビジョニングする、ソフトウェアリリースを実行するなどを行うことができる。テナント115は、クラウドプラットフォーム120上に1つ以上のデータセンタを作成することができる。データセンタは、ユーザ、例えば、テナントに関連づけられたユーザにより使用され得るサーバ、アプリケーション、ストレージ、メモリなどを含むコンピューティングリソースのセットを表す。各テナントは、テナントのユーザに対して異なる機能を提供することができる。したがって、各テナントは、テナントのために構成されたデータセンタ上で異なるサービスを実行することができる。マルチテナントシステムは、各テナントのためのソフトウェアのリリース及び配備のために異なるメカニズムを実現することができる。テナントはさらに、データセンタ内で実行している様々なサービスのための命令を含むソフトウェアのバージョンを取得又は開発することができる。実施形態は、テナントが、データセンタの異なるコンピューティングリソース上で実行している異なるサービスのためのソフトウェアリリースの特定のバージョンを配備することを可能にする。
【0020】
データセンタのコンピューティングリソースは、セキュアであり、それらにアクセスする権限を与えられていないユーザによりアクセスされ得ない。例えば、テナント115aのユーザのために作成されたデータセンタ125aは、アクセスが明示的に承諾されない限り、テナント115bのユーザによりアクセスされ得ない。同様に、テナント115bのユーザのために作成されたデータセンタ125bは、アクセスが明示的に承諾されない限り、テナント115aのユーザによりアクセスされ得ない。さらに、データセンタにより提供されるサービスは、データセンタの宣言的仕様に従ってコンピューティングシステムに対してアクセスが承諾されている場合のみ、データセンタの外部のコンピューティングシステムによりアクセスされ得る。
【0021】
マルチテナントシステム110では、複数のテナントのためのデータが同じ物理データベースに記憶される場合がある。しかしながら、データベースは、1つのテナントのデータが他のテナントのデータから論理的に別個に保持されるように構成され、それにより、1つのテナントは、別のテナントのデータが明示的に共有されない限り、そのようなデータへのアクセスを有さない。テナントにとって、それらのデータが他の顧客のデータと共有されているテーブルに記憶され得ることは、透過的である。データベーステーブルは、複数のテナントのための行を記憶することができる。したがって、マルチテナントシステムでは、システムのハードウェア及びソフトウェアの様々な要素が、1つ以上のテナントにより共有され得る。例えば、マルチテナントシステム110は、いくつかのテナントの要求を同時に処理するアプリケーションサーバを実行することができる。しかしながら、マルチテナントシステムは、テナントレベルのデータ分離を強制して、1つのテナントのジョブが他のテナントのデータにアクセスしないことを保証する。
【0022】
クラウドプラットフォームの例には、AWS(AMAZONウェブサービス)、GOOGLEクラウドプラットフォーム、又はMICROSOFT AZUREが含まれる。クラウドプラットフォーム120は、テナント115により、又はクラウドプラットフォーム120の外部の任意のコンピューティングシステムによりオンデマンドで使用され得るコンピューティングインフラストラクチャサービスを提供する。クラウドプラットフォームにより提供されるコンピューティングインフラストラクチャサービスの例には、サーバ、ストレージ、データベース、ネットワーキング、セキュリティ、ロードバランシング、ソフトウェア、分析、インテリジェンス、及び他のインフラストラクチャサービス機能が含まれる。これらのインフラストラクチャサービスは、アプリケーションをスケーラブルかつ安全な方法で構築、配備、及び管理するためにテナント115により使用され得る。
【0023】
マルチテナントシステム110は、マルチテナントストアの様々なテナントのためのデータを記憶するテナントデータストアを含むことができる。テナントデータストアは、異なるテナントのためのデータを別個の物理的構造、例えば、別個のデータベーステーブル又は別個のデータベースに記憶することができる。代替的に、テナントデータストアは、複数のテナントのデータを共有構造に記憶してもよい。例えば、全てのテナントのユーザアカウントが、同じデータベーステーブルを共有してもよい。しかしながら、マルチテナントシステムは、異なるテナントのデータを論理的に分離するためにさらなる情報を記憶する。
【0024】
図1に示される各コンポーネントは、1つ以上のコンピューティングデバイスを表す。コンピューティングデバイスは、例えば、MicrosoftTM Windows(登録商標)TM 互換オペレーティングシステム(OS)、AppleTM OS X、及び/又はLinux(登録商標)ディストリビューションを実行する従来のコンピュータシステムとすることができる。コンピューティングデバイスは、パーソナルデジタルアシスタント(PDA)、携帯電話、ビデオゲームシステムなどのコンピュータ機能を有するクライアントデバイスとすることもできる。各コンピューティングデバイスは、命令を記憶するソフトウェアモジュールを記憶する。
【0025】
システム環境100の様々なコンポーネント間の対話は、通常、図1に示されていないネットワークを介して実行される。1つの実施形態において、ネットワークは、標準の通信技術及び/又はプロトコルを使用する。別の実施形態において、エンティティは、上述したものの代わりに、又はそれに加えて、カスタム及び/又は専用のデータ通信技術を使用することができる。
【0026】
本明細書に開示される技法はマルチテナントシステムの文脈で説明されるが、これらの技法は、マルチテナントシステムでない可能性がある他のシステムを使用して実施することができる。例えば、単一の組織又は企業により使用されるオンラインシステムが、本明細書で開示される技法を使用して、1つ以上のクラウドプラットフォーム120上に1つ以上のデータセンタを作成してもよい。
【0027】
システムアーキテクチャ
マルチテナントシステム110は、クラウドプラットフォーム上にソフトウェアアーチファクトを配備するための配備モジュールを含む。配備モジュールは、ソフトウェアリリースに関連づけられた様々な動作、例えば、クラウドプラットフォーム上にリソースをプロビジョニングすること、ソフトウェアリリースを配備すること、データセンタエンティティ上にインストールされたソフトウェアアーチファクトのロールバックを実行することなどを実行することができる。図2は、一実施形態による、配備モジュール210のシステムアーキテクチャを示すブロック図である。配備モジュール210は、データセンタ生成モジュール220及びソフトウェアリリース管理モジュール230を含む。他の実施形態は、本明細書に記載されるものと異なる及び/又は他のコンポーネントを有することができ、機能は、コンポーネント間に異なる方法で分散させることができる。
【0028】
データセンタ生成モジュール220は、クラウドプラットフォーム上にデータセンタを作成するための命令を含む。ソフトウェアリリース管理モジュール230は、データセンタ生成モジュール220により作成されたデータセンタ上で実行している様々なサービス又はアプリケーションのためのソフトウェアリリース又はソフトウェアアーチファクトを配備するための命令を含む。
【0029】
データセンタ生成モジュール220は、ユーザ、例えばテナントのユーザから、データセンタのクラウドプラットフォーム非依存の宣言的仕様を受信する。データセンタのクラウドプラットフォーム非依存の宣言的仕様は、データセンタの様々なエンティティを指定する。一実施形態において、データセンタのクラウドプラットフォーム非依存の宣言的仕様は、データセンタエンティティの階層組織を含み、これにおいて、各データセンタエンティティは、1つ以上のサービス、1つ以上の他のデータセンタエンティティ、又は双方の組み合わせを含むことができる。図4は、様々なタイプのデータセンタエンティティについてさらに詳細に説明する。データセンタ生成モジュール220は、プラットフォーム非依存の宣言的仕様及びターゲットクラウドプラットフォームを入力として受信し、ターゲットクラウドプラットフォームのためのクラウドプラットフォーム固有のメタデータ表現を生成する。データセンタ生成モジュール220は、生成されたクラウドプラットフォーム固有のメタデータ表現をターゲットクラウドプラットフォーム上に配備して、宣言的仕様に従ってターゲットクラウドプラットフォーム上にデータセンタを作成する。
【0030】
ソフトウェアリリース管理モジュール230は、入力として、(1)アーチファクトバージョンマップ225、及び(2)マスタパイプライン235を受信する。アーチファクトバージョンマップ225は、特定のデータセンタエンティティ上で配備のターゲットにされるソフトウェアリリース又は配備アーチファクトの特定のバージョンを識別する。アーチファクトバージョンマップ225は、データセンタエンティティを、データセンタエンティティ上に配備されるようターゲットにされるソフトウェアリリースバージョンにマッピングする。マスタパイプライン235は、データセンタ上のソフトウェアリリースに関連する動作、例えば、サービスの配備、サービスを破棄すること、サービスのためのリソースをプロビジョニングすること、サービスのためのリソースを破棄することなどのための命令を含む。
【0031】
マスタパイプライン235は、開発環境、テスト環境、カナリア環境、及び本番環境などの異なる環境のためのソフトウェアリリースに関連する動作を実行するための命令と、ソフトウェアリリースがある環境から別の環境にいつ昇格されるかを決定するための命令とを含むことができる。例えば、開発環境におけるソフトウェアリリースの配備が閾値を超える数のテストケースを実行した場合、ソフトウェアリリースは、さらなるテスト、例えば、システムレベル及び統合テストのためのテスト環境に昇格される。テスト環境におけるソフトウェアリリースがテストカバレッジの閾値をパスした場合、ソフトウェアリリースは、ソフトウェアリリースがトライアルベースでユーザの小さいサブセットに提供されるカナリア環境に昇格される。カナリア環境におけるソフトウェアリリースが閾値時間の間エラーなしで実行された場合、ソフトウェアリリースは、ソフトウェアリリースが全てのユーザに提供される本番環境に昇格される。
【0032】
ソフトウェアリリース管理モジュール230は、入力されたアーチファクトバージョンマップ225及びマスタパイプライン235をコンパイルして、ターゲットクラウドプラットフォームに送信されるクラウドプラットフォーム固有の詳細なパイプライン255を生成する。クラウドプラットフォーム固有の詳細なパイプライン255は、アーチファクトバージョンマップ225において指定されるとおり、データセンタエンティティ上にソフトウェアリリース又は配備アーチファクトの適切なバージョンを配備するための命令を含む。ソフトウェアリリース管理モジュール230は、入力のうちの1つに対する修正を受信することができる。例えば、ユーザは、入力のアーチファクトバージョンマップ225を修正し、同じマスタパイプライン235を提供してもよい。したがって、同じマスタパイプラインが使用されているが、異なるソフトウェアリリースがデータセンタエンティティ上に配備されている。ソフトウェアリリース管理モジュール230は、入力を再コンパイルして、新しいアーチファクトバージョンマップ225に従ってソフトウェアリリースのバージョンを配備する新しいクラウドプラットフォーム固有の詳細なパイプライン255を生成する。
【0033】
アーチファクトバージョンマップは、配備マニフェスト、バージョンマニフェスト、ソフトウェアリリースマップ、又はソフトウェアアーチファクトバージョンマップと呼ばれることもある。マスタパイプラインは、マスタ配備パイプライン又はマスタオーケストレーション(orchestration)パイプラインと呼ばれることもある。
【0034】
図2Bは、一実施形態による、データセンタにソフトウェアアーチファクトを配備するための全体的なプロセスを示す。図2Bは、様々なデータセンタエンティティを含むデータセンタ265のレイアウトを示す。図2Bに示されるように、アーチファクトバージョンマップ225は、データセンタ265の異なるデータセンタエンティティ275上でリリースのターゲットにされるソフトウェアの異なるバージョンを識別する。マスタパイプラインは、データセンタの様々な環境を通じての配備アーチファクトのフローを表す。ソフトウェアリリース管理モジュール230は、マスタパイプライン235内の情報をアーチファクトバージョンマップ225と組み合わせて、アーチファクトバージョンマップ225に従ってデータセンタエンティティ上のソフトウェアアーチファクトの適切なバージョンをマッピングするクラウドプラットフォーム固有の詳細なパイプライン255を決定する。
【0035】
図3は、1つの実施形態による、ソフトウェアリリース管理モジュール230のアーキテクチャを示すブロック図である。ソフトウェアリリース管理モジュール230は、解析モジュール310、パイプライン生成器モジュール320、アーチファクトバージョンマップストア330、パイプラインストア340、システム構成フリーズモジュール350、変更処理モジュール355、及びパイプライン実行エンジン360を含む。他の実施形態が、本明細書で図3に示されるものより多くの、少ない、又は異なるモジュールを含んでもよい。
【0036】
図3に示される様々なモジュールは、異なるシステム上で、分散方式で動作することができる。例えば、パイプライン生成器モジュール320は、マルチテナントシステムのコンピューティングシステム上で実行してもよく、一方、パイプライン実行エンジン360は、データセンタエンティティ及びサービスが配備されているクラウドプラットフォームのコンピューティングシステム上で実行してもよい。
【0037】
解析モジュール310は、データセンタの宣言的仕様、アーチファクトバージョンマップ225、及びマスタパイプライン235を含む様々なタイプのユーザ入力を解析する。解析モジュール310は、処理された入力のデータ構造及びメタデータ表現を生成し、生成されたデータ構造及びメタデータ表現を、さらなる処理のためにソフトウェアリリース管理モジュール230の他のモジュールに提供する。
【0038】
メタデータストア340は、ソフトウェアリリース管理モジュール230により生成されるデータセンタの様々な変換されたメタデータ表現を記憶する。変換されたメタデータ表現は、データセンタの現在のバージョンにおいて問題に直面した場合に、前のバージョンへのロールバックを実行するために使用され得る。変換されたメタデータ表現は、変換プロセスの様々なステージにおいて、検証、監査、統制などのために使用されてもよい。
【0039】
パイプライン生成器モジュール320は、入力として受信したアーチファクトバージョンマップと共にマスタパイプラインを処理して、ターゲットクラウドプラットフォームのための詳細なパイプラインを生成する。パイプラインは、アーチファクトバージョンマップに従ってクラウドプラットフォーム上に様々なサービスのためのソフトウェアリリースのバージョンを配備するために、サービスをプロビジョニングし又はアプリケーションを配備するための命令を含むステージを含む。
【0040】
アーチファクトバージョンマップストア330は、ユーザから受信したアーチファクトバージョンマップを記憶し、パイプラインストア340は、マスタパイプラインと、パイプライン生成器モジュール320により生成されたパイプラインとを記憶する。
【0041】
システム構成フリーズモジュール350は、クラウドプラットフォーム上に構成されたデータセンタのデータセンタエンティティにおいて実行しているサービスのシステム構成フリーズを実行する要求を受信し、処理する。受信された要求は、クラウドプラットフォーム上に構成された1つ以上のサービス又はデータセンタエンティティと、サービス又はデータセンタエンティティに対してシステム構成フリーズが実行されるよう要求される時間間隔とを指定する。システム構成フリーズモジュール350のさらなる詳細は、図11に関連して提供される。システム構成フリーズモジュール350により実行される様々なプロセスが本明細書で説明される。
【0042】
変更処理モジュール355は、データセンタにインストールされたサービスに対して行われた変更の要求を識別し、変更を記述する情報を追跡する。変更処理モジュール350は、変更管理システムと対話し、サービスの変更を実施するパイプラインの実行の詳細を記録する。記録された詳細は、監査のために、例えば、データセンタのサービスの構成における特定の変更がなぜ行われたのかを判断するために使用することができる。
【0043】
パイプライン実行エンジン360は、パイプライン生成器モジュール320により生成された詳細なパイプラインを実行する。一実施形態において、パイプライン実行エンジン360は、ソフトウェアをリリース/配備するためのパイプラインを実行するSPINNAKERなどのシステムである。パイプライン実行エンジン360は、パイプラインを解析し、ターゲットクラウドコンピューティングプラットフォーム上でパイプラインの各ステージを実行する。パイプライン実行エンジン360は、クラウドプラットフォームの1つ以上のコンピューティングシステム上で実行することができる。
【0044】
クラウドプラットフォームベースのデータセンタ生成
図4は、1つの実施形態による、データセンタの宣言的仕様の一例を示す。宣言的仕様410は、複数のデータセンタエンティティを含む。データセンタエンティティは、あるデータセンタエンティティタイプのインスタンスであり、各データセンタエンティティタイプの複数のインスタンスが存在することができる。データセンタエンティティの例には、データセンタ、サービスグループ、サービス、チーム、環境、及びスキーマが含まれる。
【0045】
宣言的仕様410は、サービスグループ、サービス、チーム、環境、及びスキーマを含む様々なタイプのデータセンタエンティティの定義を含む。宣言的仕様は、データセンタの1つ以上のインスタンスを含む。以下は、様々なタイプのデータセンタエンティティ及びそれらの例の説明である。これらの例は例示的なものであり、データセンタエンティティの属性のいくつかを示している。他の実施形態が、異なる属性を含んでもよく、同じ機能を有する属性が、本明細書に示されるものと異なる名前を与えられてもよい。一実施形態において、宣言的仕様は、階層オブジェクト、例えば、所定のスキーマに準拠するJSON(Javascript(登録商標) object notation)を使用して指定される。
【0046】
サービスグループ520は、1つの実施形態によれば、独立して構築及び配信され得る1つ以上のコンピューティングシステムにより提供される能力及び特徴及びサービスのセットを表す。サービスグループは、論理サービスグループ、機能ユニット、又は有界コンテキストと呼ばれることもある。サービスグループ520はまた、1つ以上のコンピューティングシステムにより提供されるまとまりのある(cohesive)技術的ユースケース機能のセットの、サービスのセットと見なされる場合がある。サービスグループ520は、セキュリティ境界を強制する。サービスグループ520は、修正のための範囲を定義する。したがって、サービスグループ520内の1つ以上のコンピューティングシステムにより提供される能力、特徴、又はサービスなどのエンティティに対する任意の修正は、必要に応じて又は適切に、サービスグループ内のエンティティに伝搬することができるが、サービスグループ520の有界定義の外側に存在するエンティティには伝搬しない。データセンタは、複数のサービスグループ520を含むことができる。サービスグループ定義は、名前と、記述と、識別子と、スキーマバージョンと、サービスインスタンスのセットとを含む属性を指定する。サービスグループの一例は、ブロックチェーン機能を提供することに使用されるサービスのセットを含むブロックチェーンサービスグループである。同様に、セキュリティサービスグループは、セキュリティ特徴を提供する。ユーザインターフェースサービスグループは、特定のユーザインターフェース特徴の機能を提供する。共有文書サービスグループは、ユーザにわたって文書を共有する機能を提供する。同様に、いくつかの他のサービスグループがあってもよい。
【0047】
サービスグループは、データセンタを開発することに関心のあるテナント又はユーザが、それらが容易に使用することができるサービスグループのライブラリを有するように、仕様の再利用性をサポートする。サービスグループのサービスの周りの境界は、とりわけ、セキュリティ懸念及びネットワーク懸念に基づく。サービスグループは、サービスグループとの対話を実行するためのプロトコルに関連づけられる。一実施形態において、サービスグループは、API(アプリケーションプログラミングインターフェース)及びそれらのAPIを実装するサービスの集合を提供する。さらに、サービスグループは、サブストレート非依存である。サービスグループは、サービスグループ内のサービスに対して被害半径範囲(blast radius scope)を提供し、それにより、サービスグループ内のサービスのいかなる障害もサービスグループ内のサービスに限定された影響を有し、サービスグループ外には最小限の影響を有する。
【0048】
以下は、サービスグループの仕様の一例である。サービスグループは、サービスグループのメタデータを表す様々な属性を指定し、サービスグループ内のサービスのセットを含む。本明細書では示されていない、サービスグループに対して指定される他のタイプのメタデータがあってもよい。
【表1】

【0049】
上記の例に示すように、サービスグループは、クラスタのセットを指定することができる。クラスタは、コンピューティングノードのセット、例えば、サーバのセット、仮想マシンのセット、又はコンテナ(KUBERNETESコンテナなど)のセットを表す。物理サーバは、複数のコンテナを実行することができ、これにおいて、各コンテナは、ファイルシステム、CPU、メモリ、プロセス空間などの、その独自の持ち分を有する。
【0050】
サービスグループは、サービスのセットを指定する。サービスグループは、サービスのためのクラスタを指定することができ、それにより、クラウドプラットフォーム上に配備されたデータセンタは、コンピューティングノードのクラスタを実行し、宣言的仕様に含まれる場合に、指定されたマッピングに基づいてサービスをクラスタにマッピングする。例えば、上に示したサービスグループの例では、サービスインスタンスserviceinstance0002は、クラスタインスタンスcluster1上で動作するように指定されている。
【0051】
サービスグループは、セキュリティグループを指定することができ、各セキュリティグループは、互いに対話することを許可されているサービスのセットを指定する。セキュリティグループ外のサービスは、セキュリティグループ内のサービスと通信するために、さらなる認証をパスすることを要求される。代替的に、セキュリティグループ内のサービスは、互いに対話するために1つのプロトコルを使用し、セキュリティグループ外のサービスは、セキュリティグループ内のサービスと対話するために強化された認証を必要とする異なるプロトコルを使用する。したがって、セキュリティグループは、サービスが互いにどのように対話することができるかを決定するポリシーを指定する。セキュリティポリシーは、セキュリティポリシーが適用可能である1つ以上の環境を指定することができる。例えば、セキュリティポリシーpolicy1は、特定の環境env1(例えば、本番環境)に適用することができ、別のセキュリティポリシーpolicy2は、別の環境env2(例えば、開発環境)に適用することができる。セキュリティポリシーは、サービスグループタイプに対して、又は特定のサービスタイプに対して指定されてもよい。
【0052】
一実施形態において、セキュリティポリシーは、様々な属性に基づいてサービスグループをフィルタリングするための表現を指定し、それにより、セキュリティポリシーは、サービスグループのフィルタリングされたセットに適用可能である。例えば、セキュリティポリシーは、フィルタリングされたセットにより識別されるサービスグループのセットについて、ホワイトリスト化されているIP(インターネットプロトコル)アドレスのリストを指定することができ、したがって、これらのコンピューティングシステムは、サービスグループ、又はサービスグループ内のサービスの特定のセットへのアクセスを許可される。
【0053】
一実施形態において、セキュリティポリシーは、サービスグループについて、ソースサービスのセット及び宛先サービスのセットを指定することができる。特定のサービスに対するソースサービスは、この特定のサービスと接続することを許可されているセキュリティグループ外のサービスを指定する。特定のサービスに対する宛先サービスは、この特定のサービスが接続する必要があるセキュリティグループ外のサービスを指定する。プロビジョニング及び配備の間、データセンタ生成モジュールは、クラウドプラットフォーム固有の特徴及びネットワーク機能を使用して特定のネットワークポリシーを実装するクラウドプラットフォームのための命令を生成し、それにより、ネットワークポリシーは、宣言的仕様において指定されたセキュリティポリシーを実装する。
【0054】
セルと呼ばれるデータセンタエンティティは、垂直方式で互いに対話するサービスのセットを表し、セルのさらなるインスタンス又はコピー、すなわちサービスのセットのコピーによりスケーリングすることができる。セルの複数のインスタンスを作成することは、システムが、互いに対話するサービスのセットをスケーリングすることを可能にする。データセンタインスタンスは、1つ以上のセルを含むことができる。各セルは、1つ以上のサービスを含むことができる。データセンタは、サービスグループ又はセルのインスタンスを含むことができる。
【0055】
サービス定義は、サービスのタイプ、例えば、データベースサービス、ロードバランササービスなどのメタデータを指定する。メタデータは、サービスの名前、サービスの記述、サービスのドキュメンテーションの場所、サービスに関連づけられた任意のサブサービス、サービスの所有者、サービスに関連づけられたチーム、構築時にこのサービスが依存した他のサービスを指定する、サービスの構築依存関係、この特定のサービスが開始されるときに実行されているべき他のサービスを指定する、サービスの開始依存関係、権限を与えられたクライアント、サービスに関連づけられたDNS(ドメインネームサーバ)名、サービスステータス、サービスのサポートレベルなどを含む、サービスの様々な属性を記述する。サービス定義は、異なる通信プロトコルのためにサービスがリッスンすることができるポートを指定するリッスンポート属性を指定し、例えば、サービスは、UDPプロトコルについてポートp1を、TCPプロトコルについてポートp2上でリッスンすることができる。データセンタ内の他のサービスは、サービスにより指定されたポートを介してサービスと対話することができる。
【0056】
サービス定義は、宛先エンドポイント、例えば、サービスが指定された外部URL(ユニフォームリソースロケータ)へのアクセスを必要とすることを指定する外部URLを指定する、属性アウトバウンドアクセスを指定する。配備の間、データセンタ生成モジュールは、このサービスタイプのインスタンスが外部URLへの要求されたアクセスと共に提供されるように、クラウドプラットフォームがアクセスポリシーを実装することを保証する。
【0057】
アウトバウンドアクセス仕様は、アウトバウンドアクセスが適用可能であるサービスのための1つ以上の環境タイプを識別することができる。例えば、エンドポイントのセットS1に対するアウトバウンドアクセスは、特定の環境env1(例えば、本番環境)に適用することができ、エンドポイントのセットS2に対するアウトバウンドアクセスは、別の環境env2(例えば、開発環境)に適用することができる。
【0058】
以下は、サービス定義の一例である。
【表2】

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

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

【0109】
一実施形態において、アーチファクトバージョンマップは、データセンタエンティティのフルパス、例えば、「stagger_group1/datacenter1/service_group2/service1」を使用してデータセンタエンティティを指定する。一実施形態において、アーチファクトバージョンマップは、データセンタエンティティのフルパス内に正規表現を使用してデータセンタエンティティのセットを指定する。例えば、service_group[?]を含むフルパスは、service_group1、service_group2、service_group3などを含む。
【0110】
以下は、サービスのセットを定義するための正規表現を指定するアーチファクトバージョンマップの一例である。環境タイプはdev及びtestとして指定され、データセンタインスタンス及びサービスグループを含むフルパス内のデータセンタエンティティはワイルドカードとして指定され、サービスインスタンスは「service*」として指定されている。したがって、dev及びテスト環境のための全てのデータセンタインスタンスについて、全てのサービスグループについて、service*にマッチするサービス名について、アプリケーションapp1のバージョンV1が配備される。
【表7】
【0111】
いくつかの実施形態において、アーチファクトバージョンマップは、パイプラインにより使用されるパラメータを指定することができる。したがって、指定されたパラメータは、パラメータが指定されたスタッガ(stagger)グループに適用可能である。
【0112】
以下のプロセスは、一実施形態による、クラウドプラットフォーム上に構成されたデータセンタ上のソフトウェアアーチファクトの配備のために使用される。データセンタ生成モジュールは、ターゲットクラウドプラットフォーム上に1つ以上のデータセンタを生成する。各データセンタは、クラウドプラットフォーム非依存の宣言的仕様から生成され、データセンタエンティティの階層を有する。
【0113】
ソフトウェアリリース管理モジュール230は、入力として、データセンタエンティティをソフトウェアアーチファクトのバージョンにマッピングするアーチファクトバージョンマップを受信する。ソフトウェアリリース管理モジュール230は、入力として、クラウドプラットフォーム非依存のマスタパイプラインをさらに受信する。
【0114】
ソフトウェアリリース管理モジュール230は、アーチファクトバージョンマップと関連してクラウドプラットフォーム非依存のマスタパイプラインをコンパイルして、クラウドプラットフォーム固有の詳細なパイプラインを生成する。一実施形態において、生成されたクラウドプラットフォーム固有の詳細なパイプラインは、アーチファクトバージョンマップに従って特定のステージが有効にされるべきか又は無効にされるべきかを判断するために、特定のステージの前にアーチファクトバージョンマップフィルタを含む。
【0115】
ソフトウェアリリース管理モジュール230は、データセンタ上に配備されたサービスの1つ以上の特徴をリリースするためのコードをさらに受信する。例えば、コードは、開発者により変更がサブミットされるソースコードリポジトリを記憶するバージョン制御管理システムから取得されたソースコードを表すことができる。ソフトウェアリリース管理モジュール230は、クラウドプラットフォーム固有の配備パイプラインを実行して、受信したコードに基づいてソフトウェアアーチファクトを配備する。
【0116】
アーチファクトバージョンマップ及びマスタパイプラインは、クラウドベースのデータセンタにおけるソフトウェアアーチファクトの継続的配信に関連する様々なタイプの動作をオーケストレーションするために使用され得る。アーチファクトバージョンマップ及びマスタパイプラインは、サービス又はサービスグループ又は任意のデータセンタエンティティに対して集約再試行動作を実行するように構成することができる。アーチファクトバージョンマップは、再試行ストラテジ、パイプラインのステージを実行するのに失敗した場合に実行する再試行の閾値数、再試行する前にユーザからの確認が必要とされるか又は再試行が自動的に実行されるか等を含む、データセンタエンティティのための再試行動作の構成を含む。例えば、再試行ストラテジは、再試行する前に固定期間の間、実行を休止する固定バックオフストラテジでもよい。他の再試行ストラテジが、アーチファクトバージョンマップ及びマスタパイプラインを使用して構成されてもよい。一実施形態において、パイプライン生成器は、前のパイプラインステージが失敗した場合に再試行ストラテジをトリガするために、集約パイプライン内に再試行器呼び出し(invoke retrier)ステージを導入する。データセンタエンティティに対して指定された再試行ストラテジ及び構成パラメータは、ネスト化されたデータセンタエンティティに対して値がオーバーライドされない限り、全てのデータセンタエンティティ及びデータセンタエンティティ内のサービスに適用される。
【0117】
サービスのシステム構成フリーズ
一実施形態において、システム構成フリーズモジュール350は、ターゲットクラウドプラットフォームに配備されたサービスに対してシステム構成フリーズを実行する。システム構成フリーズは、ユーザ、例えばシステム管理者から受信された要求に応じて実行され得る。要求は、データセンタエンティティを識別し、データセンタエンティティ上で実行している全てのサービスのシステム構成フリーズを要求することができる。システム構成フリーズは、データセンタエンティティのサービスにシステム構成変更が行われず、データセンタエンティティ上で実行しているサービスに関連づけられたソフトウェアアーチファクトに修正が行われないことを保証する。
【0118】
一実施形態において、システムは、データセンタエンティティ、例えば、サービスグループ、セル、データセンタなどに対してシステム構成フリーズを設定する要求を受信する。システムは、例えば、データセンタの宣言的仕様に基づいて、又はデータセンタのトポロジ階層を記述するメタデータに基づいて、データセンタエンティティ内にあるサービスを決定する。例えば、システムは、このデータセンタエンティティの下にある全てのデータセンタエンティティの階層的トラバースを実行し、データセンタエンティティ内の全てのサービスを識別する。システムは、特定のサービスS1に対する、又は識別されたデータセンタエンティティD1内のより小さいデータセンタエンティティD2に対するシステム構成フリーズを実行しないように、サービスS1に対する、又はより小さいデータセンタエンティティD2に対する例外(すなわち、オーバーライド)を作成する要求をシステムが受信しない限り、データセンタエンティティD1内で識別された全てのサービスに対してシステム構成フリーズを実行する。
【0119】
システム構成フリーズは、閾値より多い量の作業負荷が時間間隔の間に予期されると判断したことに応答して実行されてもよい。例えば、マルチテナントシステムのテナントが、休日などの時間間隔の間に処理する多数の要求を予期した場合、テナントは、サービスの中断の可能性を回避するために、本番システム上で実行しているサービスに、この時間間隔の間フリーズされるように要求することができる。
【0120】
一実施形態において、システムは、データセンタエンティティ上でシステム構成フリーズを実行する要求とともに、修正された宣言的仕様を受信することができる。例えば、データセンタは、データセンタエンティティD1の階層内にデータセンタエンティティD2を追加するように、又はデータセンタエンティティD1の階層内にサービスs1を追加するように修正されてもよい。システムは、要求されたデータセンタエンティティD2又はサービスS1を作成し、指定された時間間隔の間に、作成されたサービス又はデータセンタエンティティに対してシステム構成フリーズを強制する。
【0121】
システム構成フリーズは、データセンタエンティティに関連づけられた問題が時間間隔の間に診断されていると判断したことに応答して実行されてもよい。例えば、マルチテナントシステムのテナントは、サービスに不十分に実行させる性能問題などの、データセンタエンティティ又はサービスに関連づけられた問題を識別することができる。テナントのシステム管理者は、診断プロセス及びツールを実行して、問題の根本原因を識別することができる。問題が診断されている間、テナントは、課題を正確に診断することができるように、システムに対する変更を最小限にするために、データセンタエンティティ又はサービスのシステム構成をフリーズさせることを好む場合がある。
【0122】
システム構成フリーズは、特定のシステム構成変更が時間間隔の間に実行されていると判断したことに応答して実行されてもよい。システム構成フリーズは、この時間間隔の間、いかなる他のシステム構成変更も防止する。したがって、システムは、互いに干渉する可能性があるシステム構成への変更が相互排他的な方法で実行され、それにより、一度に1つの変更のみが実行され、他の変更はその期間の間ブロックされることを保証することができる。
【0123】
本明細書で説明される例は、マルチテナントシステムのコンテキストにおけるプロセスを示しているが、開示される技法は、任意の他のシステム、例えば、単一の組織専用のシステムに適用することができる。
【0124】
図11は、一実施形態による、システム構成フリーズモジュールのシステムアーキテクチャを示す。システム構成フリーズモジュール350は、フリーズ要求処理モジュール1110、ロックマネージャ1120、及びシステム構成フリーズメタデータストア1130を含む。他の実施形態が、本明細書において図11に示されるものよりも多くの又は少ないコンポーネントを含んでもよい。
【0125】
フリーズ要求処理モジュール1110は、システム構成フリーズ要求を受信し、それらを処理する。システム構成フリーズ要求は、ユーザ、例えばシステム管理者のクライアントデバイスから受信され得る。システム構成フリーズ要求は、システム構成フリーズが強制される必要がある時間間隔を指定する。システム構成フリーズ要求は、指定された時間間隔の間フリーズされる必要がある1つ以上のサービスを識別することができる。システム構成フリーズ要求は、システム構成フリーズを実行するためのデータセンタのデータセンタエンティティを指定することができる。したがって、要求は、データセンタエンティティ内で実行している全てのサービスが、指定された時間間隔の間フリーズされる必要があることを指定し、それにより、これらのサービスに関連づけられたソフトウェアアーチファクトに対して修正は実行されず、これらのサービスのいかなるタイプの構成にも修正は実行されない。フリーズ要求処理モジュール1110は、指定された時間間隔の間フリーズされる必要があるサービスのリストを識別する。例えば、システム構成フリーズ要求がデータセンタエンティティを指定した場合、フリーズ要求処理モジュール1110は、このデータセンタエンティティにおいて実行するように構成されている全てのサービスを識別する。
【0126】
システム構成フリーズメタデータストア1130は、システム構成フリーズの要求を記述するメタデータを含む、サービス構成フリーズを実行することに関連するメタデータを記憶する。要求を記述するメタデータは、要求識別子と、システムフリーズ要求が強制される必要がある期間と、システム構成フリーズが実行される必要があるデータセンタエンティティとを含む。時間間隔は、開始時間と終了時間を使用して、又は開始時間と時間間隔の長さを使用することにより指定され得る。システム構成フリーズメタデータストア1130は、サービス上のフリーズを強制するためのシステム構成フリーズモジュール350によってか、又はサービス構成に対する修正を行うためのパイプラインによってかのいずれかで獲得され得るロックへの、サービスからのマッピングをさらに記憶する。ロックを記述するメタデータは、ロックが要求される期間の長さの推定値を含む。
【0127】
ロックマネージャ1120は、ロックを獲得する要求を受信し、要求されたロックを獲得する。ロックマネージャは、フリーズ要求処理モジュール1110から、又はパイプライン実行モジュールから、ロックを獲得する要求を受信する。一実施形態において、ロックマネージャは、フリーズ要求処理モジュール1110を実行するコンピューティングシステムと区別可能なシステム上で実行され得る分散ロックサービスである。ロックマネージャ1120は、前に獲得されたロックを解放する要求をさらに受信し、ロックを解放する。特定の期間の間、サービスに関連づけられたロックを獲得することは、サービスを修正するように構成されたパイプラインがその期間の間に続行できないことを保証する。その時間間隔の後にロックを解放することは、サービスの構成を修正しようと試みる任意のパイプラインが続行することを可能にし、それにより、サービスのためのシステム構成フリーズが終了する。
【0128】
パイプライン生成器モジュール320は、データセンタエンティティのシステム構成に対して変更を行うためのパイプラインを生成する。生成されたパイプラインは、システム構成フリーズモジュール350が任意のサービスの構成をフリーズさせることを可能にするように構成される。
【0129】
図12は、一実施形態による、システム構成フリーズを強制するための例示的なパイプラインを示す。図12は、サービスのサービス構成を修正するため、例えば、サービスに関連づけられたソフトウェアアーチファクトを修正するために生成されたパイプラインのステージのいくつかを示す。生成されたパイプラインは、図12に示されていない他のステージを含んでもよい。図12に示すパイプラインは、図10に示すサービスパイプライン1030の一部分でもよい。
【0130】
したがって、生成されたパイプライン1200は、変更前ステージ1210、変更ステージ1220、及び変更後ステージ1230を含む。変更ステージ1220は、ソフトウェアリリース管理モジュール230により実施され得る様々なタイプのシステム構成変更を含む。これらのシステム構成変更には、これらに限られないが、データセンタエンティティ内に新しいサービスを配備すること、データセンタエンティティ内のサービスを破棄すること、データセンタエンティティ内にリソースをプロビジョニングすること、データセンタエンティティ内のリソースを破棄すること、任意のユーティリティ動作を実行すること、又はサービス若しくはソフトウェアアーチファクトの以前のバージョンに戻ることによりサービス配備のロールバックを実行することが含まれる。システム構成フリーズモジュール350は、ある時間間隔の間、データセンタエンティティに対する全てのこれらのタイプの変更をフリーズさせるように構成される。
【0131】
変更前ステージ1210は、サービスに関連づけられたロックを獲得するための命令を含む。変更後ステージ1230は、変更前ステージ1210で獲得されたロックを解放するための命令を含む。一実施形態において、各サービスに関連づけられたロックを識別する情報は、システム構成フリーズメタデータストア1130に記憶される。したがって、パイプライン生成器モジュール320は、パイプラインに関連づけられたロックにアクセスし、ロックを獲得するための命令を生成し、生成された命令を変更前パイプラインに含めることができる。代替的に、パイプライン生成器モジュール320は、システム構成フリーズメタデータストア1130にアクセスして、サービスに関連づけられたロックの識別子を獲得し、次いでロックを獲得するための命令を生成してもよい。変更前ステージ1210においてロックを獲得するための命令は、ロックを獲得できない場合、例えば、ロックが別のエンティティにより事前に獲得されており、まだ解放されていない場合に、パイプライン実行を中断させる。例えば、システム構成フリーズモジュール350は、ある時間間隔の間フリーズされる必要がある全てのサービスに対するロックを獲得し、それにより、この時間間隔の間にサービスのシステム構成を変更しようと試みるいかなるパイプラインの実行も中断する。一実施形態において、変更前ステージ1210の命令は、サービスに関連づけられたロックを獲得できない場合、パイプライン1200の実行を失敗させる。一実施形態において、変更前ステージ1210の命令は、サービスに関連づけられたロックを閾値期間内に獲得できない場合、パイプライン1200の実行を失敗させる。したがって、パイプラインの実行はある期間の後にタイムアウトし、失敗する。パイプラインの実行が失敗した場合、後続のステージ、例えば、変更ステージ1220及び変更後ステージ1230は実行されない。
【0132】
システム構成フリーズの処理
図13は、一実施形態による、クラウドプラットフォームにおけるデータセンタ上に配備されたサービスのシステム構成に対する変更を行うためのプロセスを示す。データセンタ生成モジュール220は、例えば、図6及び図7に例示されるプロセスに示されるように、クラウドプラットフォーム非依存の宣言的仕様に基づいて1つ以上のデータセンタを生成する(1310)。各データセンタは、データセンタ内に配備されたサービスのセットを有する。ソフトウェアリリース管理モジュール230は、データセンタにインストールされて実行しているサービスに対して行われる必要がある任意の変更を記述する情報を含むアーチファクトバージョンマップを受信する(1320)。例えば、変更は、データセンタに新しいサービスを追加すること、データセンタ内に現在配備されているサービスを除去すること、サービスの構成を変更すること、サービスのためのソフトウェアアーチファクトの新しいバージョンを配備することなどを含むことができる。
【0133】
ソフトウェアリリース管理モジュール230は、変更管理ステージを含むクラウドプラットフォーム非依存のマスタパイプライン、例えば、図12に示されるマスタパイプラインを生成する(1330)。ソフトウェアリリース管理モジュール230は、クラウドプラットフォーム非依存のマスタパイプラインをコンパイルして、ターゲットクラウドプラットフォーム上に配備されたデータセンタ上にアーチファクトバージョンマップに従ってサービスを配備するための命令を含むクラウドプラットフォーム固有の詳細なパイプラインを生成する(1340)。
【0134】
ソフトウェアリリース管理モジュール230は、データセンタエンティティ上に配備されたサービスのシステム構成を修正するための命令を受信する(1350)。ソフトウェアリリース管理モジュール230は、クラウドプラットフォーム固有の詳細なパイプラインを実行して、アーチファクトバージョンマップに従ってサービスのシステム構成に対して適切な修正を行う(1360)。クラウドプラットフォーム固有の詳細なパイプラインは、データセンタエンティティのための1つ以上のソフトウェアアーチファクトに関連づけられた変更を行うための命令を含む変更ステージと、ロックを獲得するための命令を含む変更前ステージと、変更が行われた後にロックを解放するための変更後ステージとを含む。パイプライン実行は、変更前ステージがロックを獲得するのに失敗した場合に中断される。
【0135】
図14は、一実施形態による、クラウドプラットフォーム上に構成されたデータセンタのデータセンタエンティティのシステム構成フリーズを実行するための全体的なプロセスを示す。システム構成フリーズモジュール350は、ある時間間隔にわたるデータセンタエンティティに対するシステム構成フリーズを実行する要求を受信する(1410)。システム構成フリーズモジュール350は、データセンタエンティティ内で実行のために構成された全てのサービスを識別する。システム構成フリーズモジュール350は、データセンタエンティティが属するデータセンタの宣言的仕様に基づいてサービスを識別することができる。システム構成フリーズを実行する要求は、システム構成フリーズが強制されることを要求される時間間隔を指定する。
【0136】
システム構成フリーズモジュール350は、その時間間隔にわたるデータセンタエンティティのサービスに関連づけられたロックを獲得する(1430)。一実施形態において、システム構成フリーズモジュール350は、システム構成フリーズメタデータストア1130にアクセスして、識別された各サービス(1420)に対応するロックの識別子を決定し、システム構成フリーズの時間間隔が開始すると、ロック識別子に対応するロックを獲得する。
【0137】
時間間隔の開始の後、時間間隔が終了する前に、ソフトウェアリリース管理モジュール230は、この時間間隔の間にデータセンタ上で実行しているサービスのシステム構成を修正する要求を受信する(1440)。ソフトウェアリリース管理モジュール230は、データセンタエンティティ上で実行しているサービスに関連づけられたソフトウェアアーチファクトを配備するためのパイプラインを実行する(1450)。パイプラインの実行は、パイプラインの変更前ステージの実行をもたらし、それにより、ロックが獲得されるまでパイプライン実行を中断させる。時間間隔が完了した後、システム構成フリーズモジュール350は、データセンタエンティティ上で実行しているサービスに対して獲得されたロックを解放する(1460)。結果として、パイプラインの変更前ステージは、ロックを獲得し、パイプライン実行を完了させることができ(1470)、それにより、サービスに対する要求された変更は、時間間隔の後、実行されることが可能になる。いくつかの実施形態によれば、変更後ステージは、変更ステージが完了し、システム構成に対する要求された修正が行われた後、サービスに対して獲得されたロックを解放する。このプロセスは、データセンタエンティティ上で実行しているサービスを修正しようと試みるいかなるパイプラインも時間間隔の間に修正を行うことを防止されることを保証する。
【0138】
いくつかの実施形態によれば、変更前ステージは、パイプラインの変更前ステージが閾値を超える時間にわたってロックを獲得するのに失敗したかどうかを判断する命令を含む。パイプラインの変更前ステージが、閾値を超える時間にわたってロックを獲得するのに失敗した場合、パイプラインの実行は失敗している。したがって、ユーザは、パイプライン実行が失敗しており、サービスに対するシステム構成変更を行うために後続の命令をユーザが送信する必要があるという指標を提供される。
【0139】
一実施形態において、データセンタエンティティのシステム構成フリーズが要求されたとき、データセンタエンティティのサービスのシステム構成を修正しているパイプラインが現在実行中である場合、システムは、システム構成フリーズを延期し、したがって、現在のパイプライン実行が完了するまで、システム構成フリーズが発生する間隔を遅延させる。しかしながら、システムは、システム構成フリーズが完了するまで、データセンタエンティティのサービスのためのシステム構成を変更する可能性があるいかなる新しいパイプライン実行も始まることを防止する。これは、現在実行しているパイプラインがサービスに関連づけられたロックを有し、それにより、システム構成フリーズモジュール350がデータセンタエンティティのサービスに対するロックを獲得しようと試みたときにシステム構成フリーズ要求を保留にさせるため、生じる。システム管理者は、システム構成フリーズが続行することを可能にするために、現在実行しているパイプラインを手動で破棄することができる。
【0140】
一実施形態において、システム構成フリーズがデータセンタエンティティに対して強制されたときにパイプラインの実行の間に障害が発生した場合、パイプライン実行は、ロックを獲得させるが解放させない可能性がある。ロックマネージャ1120は、システム構成フリーズの時間間隔の後に未開放のままであるロックがあるかをチェックするロックガベージコレクション処理を実行する。ロックマネージャ1120が時間間隔の後にデータセンタエンティティのサービスに関連づけられたロックを識別した場合、ロックマネージャ1120はこれらのロックを解放する。
【0141】
いくつかの実施形態において、ロックは、ロックが獲得されることを予期された時間の長さの推定値を表す持続時間に関連づけられる。システムは、パイプライン実行がどれだけ長くかかるかの推定値として、ロックの持続時間を使用することができる。システムは、特定のパイプライン実行をそれらの予期された持続時間に基づいて優先順位付けすることができ、例えば、より短いパイプラインが、大幅により長くかかるパイプラインより上に優先順位付けされてもよい。しかしながら、パイプライン実行が、ロックのために指定された持続時間より長くかかる場合、システムは単に不一致を記録する。システムは、指定されたロック持続時間が、ロックが獲得された実際の持続時間より大幅に短いサービスのリストを保守する。システムは、ロックのために指定された正確な持続時間を有する他のパイプラインと異なるこれらのパイプラインを優先順位付けする。一実施形態において、システムは、パイプラインの過去の実行時間に基づいてロック持続時間を自動的に決定する。
【0142】
いくつかの実施形態において、システム構成フリーズは優先順位に関連づけられる。サービスの修正の要求は、優先順位尺度にさらに関連づけられる。システム構成フリーズ間隔の間、ソフトウェアリリース管理モジュール230が、サービスの修正の要求の優先順位がシステム構成フリーズの優先順位より高いようなサービスの修正の要求を受信した場合、データセンタエンティティのサービスの修正の要求は、システム構成フリーズにもかかわらず、その時間間隔の間に続行することを許可される。システムはこのメカニズムを提供し、それにより、モラトリアムなどのシステム構成フリーズの間に発生し得る問題に対して必要とされるいくつかの緊急の修正がある場合に、修正は続行可能にされる。
【0143】
変更処理モジュールのシステムアーキテクチャ
図15は、一実施形態による、変更処理モジュールのシステムアーキテクチャを示す。変更処理モジュール355は、変更決定モジュール1510、変更管理クライアント1520、イベントキューマネージャ1530、イベントリスナ、及びイベントキューストア1550を含む。他の実施形態が、本明細書において図15に示されるものよりも多くの又は少ないコンポーネントを含んでもよい。
【0144】
変更決定モジュール1510は、1つ以上のデータセンタにインストールされたサービスに対して実行される変更を識別する。一実施形態において、変更決定モジュール1510は、データセンタ上のサービスの現在の構成と比較して実行されるべき変更を識別する命令のセットを受信する。例えば、変更は、追加されるべき新しいサービス、除去されるべき既存のサービス、修正される必要があるサービス構成などを指定することができる。
【0145】
一実施形態において、変更決定モジュール1510は、アーチファクトバージョンマップの様々なバージョンを記憶する。ソフトウェアリリース管理モジュール230は、ターゲットクラウドコンピュータ上のデータセンタの現在の構成に対応するアーチファクトバージョンマップのバージョンV1を記憶する。ソフトウェアリリース管理モジュール230は、ターゲットクラウドコンピュータ上で実装される必要があるアーチファクトバージョンマップのバージョンV2を受信する。アーチファクトバージョンマップのバージョンV2は、バージョンV1と比較して差を有する。変更決定モジュール1510は、アーチファクトバージョンマップの2つのバージョンを比較して、それらの間の差を決定する。したがって、変更決定モジュール1510は、受信したアーチファクトバージョンマップの新しいバージョンを、現在配備されているアーチファクトバージョンマップの前のバージョンと比較して、アーチファクトバージョンマップの新しいバージョンにおいて要求されている変更を識別する。変更は、特定のデータセンタエンティティ上にインストールされる必要がある新しいサービス、特定のデータセンタエンティティ上で変更される(例えば、アップグレードされる)必要がある既存のサービスのバージョン、特定のデータセンタエンティティから除去される必要があるサービスなどを含むことができる。パイプライン生成器は、サービス構成に対する要求された変更を実施するためにマスタパイプラインを生成する。
【0146】
変更管理クライアント1520は、変更管理システムと対話して、実行される変更を記述する情報を記憶する。変更管理システムは、変更を記述する記録を記憶し、変更に関連するタスク、例えば、変更に関連するアラート又はメッセージを送信すること、特定の変更に対する承認を受け取ることなどを管理する任意のシステムであってよい。変更管理クライアント1520は、変更管理システムのAPIを呼び出して変更管理システムと対話する。変更管理システムは、変更管理をサービスとして提供する外部システムでもよい。
【0147】
イベントキューマネージャ1530は、配備タスクに関連するイベントを記憶するキューを作成し、管理する。イベントキューマネージャ1530は、特定のイベントを通知される必要がある様々なチームのためのキューを作成することができる。例えば、チームは、データセンタの宣言的仕様において定義されたデータセンタエンティティを担当する場合がある。変更処理モジュールは、データセンタエンティティにインストールされたサービスについての失敗又は成功イベントなどの特定のイベントを識別し、チームに通知する。イベントリスナ1540は、パイプライン実行エンジン360内のイベントをリッスンする(listens)。イベントは、各パイプラインのために実行される詳細なアクション、例えば、特定のステージが成功裏に実行されたか又は実行するのに失敗したか、又は特定のステージがメッセージを生成したかどうかなどを記述する。イベントリスナ1540は、イベントを分類し、それらを特定のデータセンタエンティティに関連づける。したがって、イベントリスナ1540は、イベントを記述する情報をイベントキューに格納するためにイベントキューマネージャ1530に提供する。イベントキューストア1550は、異なるキュー、例えば、データセンタの宣言的仕様において定義される1つ以上のチームのためのキューを記憶する。
【0148】
図16は、一実施形態による、変更を管理するための例示的マスタパイプラインを示す。マスタパイプラインは、ソフトウェアアーチファクトがデータセンタへの配備のために昇格される異なるシステム環境に対応する図8に示されるものと同様のステージを含む。したがって、マスタパイプライン1600は、開発環境、テスト環境、カナリア環境、及び本番環境を含むデータセンタの異なる環境のためのステージを含む。マスタパイプラインは、変更管理ステージをさらに含む。したがって、マスタパイプライン1600は、開発環境ステージ810を含み、該開発環境ステージはテスト環境ステージ820に供給し、該テスト環境ステージは変更管理ステージ1610に供給し、該変更管理ステージはカナリア環境パイプライン830に供給し、該カナリア環境パイプラインは本番環境パイプライン840に供給し、該本番環境パイプラインは変更クローズステージ1620に供給する。各ステージは、そのステージのために実行されるパイプラインを表す。
【0149】
マスタパイプラインは、階層を形成するパイプラインのセット、例えば、データセンタを生成するために使用される宣言的仕様により指定されるとおりにデータセンタにより形成されたデータセンタエンティティの階層の各データセンタエンティティに対応するパイプラインを表す。各パイプラインの変更管理ステージは、マスタパイプラインにより表される変更の管理に関連するアクションを実行する。例えば、変更管理ステージは、変更管理システムとの対話を実行するための命令を含む。
【0150】
一実施形態において、変更管理ステージは、マスタパイプラインにより実行される変更のセットを表す、変更管理システム内の変更ケースを作成するための命令を含む。変更管理システムの変更ケースは、データセンタのサービスに対して実行される変更のセットを記述する情報を表す。変更のセットは、変更管理システムのデータベースに1つ以上のレコードとして記憶されてもよい。
【0151】
一実施形態において、構成ファイル、例えばアーチファクトバージョンマップは、データセンタのサービスに対して実行される変更のセットを記述する情報を記憶するために使用されるべき既存の変更ケースを記述する情報を含む。例えば、システム管理者などのユーザは、変更ケースを作成し、変更管理ステージによる使用のために構成ファイルにおいて提供することができる。
【0152】
マスタパイプラインにより表される様々なパイプラインの変更管理ステージは、様々なサービスの配備のステータスを、変更ケースに関連して記憶するために変更管理システムに提供する。例えば、特定のサービスのためのパイプラインは、そのサービスの配備のステータスを変更管理システムに提供する。ステータスは、配備が成功したかどうか、配備が失敗したかどうか、配備がエラー又は警告を生成したかどうか等を示すことができる。
【0153】
変更クローズステージは、アーチファクトバージョンマップにより指定された全てのサービスの配備が成功した場合、変更ケースをクローズする。変更ケースをクローズすることは、さらなる修正が変更ケースに行われることを防止し、例えば、変更ケースにさらなる情報は記憶され得ない。しかしながら、ユーザは、例えば、サービスに対して行われた特定の変更を監査するために、変更ケースに記憶された情報をレビューすることができる。
【0154】
変更管理の処理
図17は、一実施形態による、クラウドプラットフォーム上に構成されたデータセンタ上に配備されたサービスの変更管理の全体的なプロセスを示す。データセンタ生成モジュール220は、例えば、図6及び図7に例示されるプロセスに示されるように、クラウドプラットフォーム非依存の宣言的仕様に基づいて1つ以上のデータセンタを生成する(1710)。各データセンタは、データセンタ内に配備されたサービスのセットを有する。ソフトウェアリリース管理モジュール230は、データセンタにインストールされて実行しているサービスに対して行われる必要がある任意の変更を記述する情報を含むアーチファクトバージョンマップを受信する(1720)。例えば、変更は、データセンタに新しいサービスを追加すること、データセンタに現在配備されているサービスを除去すること、サービスの構成を変更すること、サービスのためのソフトウェアアーチファクトの新しいバージョンを配備することなどを含むことができる。
【0155】
ソフトウェアリリース管理モジュール230は、変更管理ステージを含むクラウドプラットフォーム非依存のマスタパイプライン、例えば、図16に示されるマスタパイプラインを生成する(1730)。クラウドプラットフォーム非依存のマスタパイプラインは、パイプラインの終わりに変更クローズステージをさらに含むことができる。ソフトウェアリリース管理モジュール230は、クラウドプラットフォーム非依存のマスタパイプラインをコンパイルして、ターゲットクラウドプラットフォーム上に配備されたデータセンタ上にアーチファクトバージョンマップに従ってサービスを配備するための命令を含むクラウドプラットフォーム固有の詳細なパイプラインを生成する(1740)。
【0156】
ソフトウェアリリース管理モジュール230は、ソフトウェアアーチファクトを構築し、それらをターゲットクラウドプラットフォーム上に配備するためにコンパイルするためのソースコードを受信する(1750)。ソフトウェアリリース管理モジュール230は、クラウドプラットフォーム固有の詳細なパイプラインを実行して、アーチファクトバージョンマップに従って適切なバージョンのソフトウェアアーチファクトを配備する(1760)。クラウドプラットフォーム固有の詳細なパイプラインの実行は、アーチファクトバージョンマップに従って配備されている各サービスの変更管理ステージの実行をもたらす。マスタパイプラインの変更管理ステージの実行は、変更管理システムにおける変更ケースの作成をもたらすことができる。個々のサービスのためのパイプラインの変更管理ステージの実行は、パイプラインの実行のステータスを、変更管理システム内の変更ケースに関連して記憶するために送信する。個々のサービスのためのパイプラインの変更管理ステージの実行は、パイプラインにより処理されたソフトウェアアーチファクトを後続のステージに、例えば、テストステージからカナリアステージに、又はカナリアステージから本番ステージに昇格させる前に、パイプラインに承認を待たせることができる。マスタパイプラインの変更クローズステージの実行は、さらなる修正を変更ケースに記録できないように、変更ケースをクローズさせる。
【0157】
図18は、一実施形態による、マスタパイプラインの変更管理ステージにより実行されるプロセスを示す。ソフトウェアリリース管理モジュール230は、変更管理システムにおいて変更ケースを作成する(1810)。クラウドプラットフォーム非依存のマスタパイプラインは、データセンタ内で配備又は修正されている各サービスのためのパイプラインを少なくとも含むパイプラインのセットを含む。セットからの各パイプラインは、変更管理ステージを含む。
【0158】
ソフトウェアリリース管理モジュール230は、データセンタ内のサービスに関連づけられた各パイプラインについて、ステップ1820、1830、及び1840を繰り返す。ソフトウェアリリース管理モジュール230は、サービスに関連づけられたパイプラインを実行する(1820)。ソフトウェアリリース管理モジュール230は、パイプラインの実行のステータスを変更管理システムに送信する(1830)。ソフトウェアリリース管理モジュール230は、次のステージに進むための承認を受け取る。承認は、サービスに関連づけられたユーザ又はチームから受信され得る。ソフトウェアリリース管理モジュール230が、次のステージへの昇格が承認されないという指標を受信した場合、ソフトウェアリリース管理モジュール230は、例えば、改訂されたソースコード又は修正されたソフトウェアアーチファクトを受信した後に、パイプラインのステップのいくつかを繰り返すためにステップを実行する。例えば、承認は、パスしたテストケースの数が閾値未満であった場合、拒否される場合がある。したがって、ソースコードは改訂され、少なくとも閾値数のテストケースがパスされて承認が受け取られるように、ステップが繰り返される。パイプラインのセット内の全てのパイプラインが承認され、パイプラインのセットが成功裏に実行されると、ソフトウェアリリース管理モジュール230は、変更ケースをクローズさせる変更クローズステージを実行する。
【0159】
一実施形態において、ソフトウェアリリース管理モジュール230は、パイプライン実行エンジンにより実行された各アクションのステータスを示す、パイプライン実行エンジンにより記録されたイベントを監視する。ソフトウェアリリース管理モジュール230は、データセンタのコンテキスト内の各イベントを分析して、イベントが変更ケース内に記録されるのに十分に有意であるかどうかを判断し、次いで、イベントを記述する情報を、サービスに関連づけられたチームに報告するためにキューに送信する。
【0160】
図19は、一実施形態による、サービス構成の変更に関連するイベント情報を収集するキューを管理するためのプロセスを示す。変更処理モジュール355のイベントリスナ1940は、パイプライン実行エンジンからのイベントをリッスンする(1910)。各イベントについて、変更処理モジュール355は、以下のステップ1920、1930、1940、及び1940を実行する。変更処理モジュール355は、イベントが生成されたサービスを決定する。したがって、変更処理モジュール355は、イベントを評価して、イベントが変更管理システムにより記録され、サービスに関連づけられたチームに報告されるのに十分に有意であるかどうかを判断する。変更処理モジュール355が、イベントが記録及び報告されるのに十分に有意であると判断した場合、変更処理モジュール355は、サービスに関連づけられたチームのためのキューを識別する(1930)。変更処理モジュール355は、識別されたキューにイベント情報を送信する(1940)。イベントは、キューを介してサービスに関連づけられたチームに報告される。変更処理モジュール355は、イベントに基づくステータス更新を、変更ケースに関連づけて記憶するために変更管理システムに送信する(1950)。
【0161】
コンピュータアーキテクチャ
図20は、一実施形態による、図1の環境100に示されたエンティティの1つとしての使用のための典型的なコンピュータシステムの機能図を示す高レベルブロック図である。チップセット2004に結合された少なくとも1つのプロセッサ2002が示されている。チップセット2004にさらに結合されているのは、メモリ2006、記憶装置2008、キーボード2010、グラフィックスアダプタ2012、ポインティングデバイス2014、及びネットワークアダプタ2016である。ディスプレイ2018は、グラフィックスアダプタ2012に結合されている。1つの実施形態において、チップセット2004の機能は、メモリコントローラハブ2020及びI/Oコントローラハブ2022により提供される。別の実施形態において、メモリ2006は、チップセット2004の代わりにプロセッサ2002に直接結合される。
【0162】
記憶装置2008は、ハードドライブ、コンパクトディスク読取専用メモリ(CD-ROM)、DVD、又はソリッドステートメモリ装置などの非一時的コンピュータ読取可能記憶媒体である。メモリ2006は、プロセッサ2002により使用される命令及びデータを保持する。ポインティングデバイス2014は、マウス、トラックボール、又は他のタイプのポインティングデバイスでもよく、データをコンピュータシステム200に入力するためにキーボード2010と組み合わせて使用される。グラフィックスアダプタ2012は、ディスプレイ2018上に画像及び他の情報を表示する。ネットワークアダプタ2016は、コンピュータシステム2000をネットワークに結合する。
【0163】
当該分野で知られているように、コンピュータ2000は、図20に示すコンポーネントとは異なる及び/又は他のコンポーネントを有することができる。さらに、コンピュータ2000は、特定の図示されたコンポーネントを欠いていてもよい。例えば、マルチテナントシステム110として動作するコンピュータシステム2000は、キーボード2010及びポインティングデバイス2014がなくてもよい。さらに、記憶装置2008は、コンピュータ2000からローカル及び/又はリモートとすることができる(ストレージエリアネットワーク(SAN)内に具現化されるなど)。
【0164】
コンピュータ2000は、本明細書で説明される機能を提供するためのコンピュータモジュールを実行するように適合される。本明細書で使用されるとき、用語「モジュール」は、指定された機能を提供するためのコンピュータプログラム命令及び他の論理を指す。モジュールは、ハードウェア、ファームウェア、及び/又はソフトウェアで実装することができる。モジュールは、1つ以上のプロセスを含むことができ、かつ/あるいはプロセスの一部のみにより提供することができる。モジュールは、典型的には、記憶装置2008に記憶され、メモリ2006にロードされ、プロセッサ2002により実行される。
【0165】
システム環境のエンティティにより使用されるコンピュータシステム2000のタイプは、実施形態及びエンティティにより使用される処理能力に応じて変化することができる。例えば、クライアントデバイスは、限られた処理能力、小さいディスプレイ2018を有するモバイルフォンでもよく、ポインティングデバイス2014がなくてもよい。対照的に、マルチテナントシステム又はクラウドプラットフォームは、本明細書で説明される機能を提供するために一緒に動作する複数のブレードサーバを含む場合がある。
【0166】
さらなる考慮事項
コンポーネントの特定の名前付け、用語の大文字使用、属性、データ構造、又は任意の他のプログラミング若しくは構造的態様は、必須又は重要でなく、説明された実施形態を実装するメカニズムは、異なる名前、フォーマット、又はプロトコルを有してもよい。さらに、システムは、説明されるようにハードウェア及びソフトウェアの組み合わせを介して、又は全体的にハードウェア要素において実装されてもよい。さらに、本明細書で説明される様々なシステムコンポーネント間の機能の特定の分割は単に例示的なものであり、必須ではない。単一のシステムコンポーネントにより実行される機能が、代わりに複数のコンポーネントにより実行されてもよく、複数のコンポーネントにより実行される機能が、代わりに単一のコンポーネントにより実行されてもよい。
【0167】
上記の説明のいくつかの部分は、情報に対する操作のアルゴリズム及び記号表現の観点で特徴を提示している。これらのアルゴリズム的な記述及び表現は、データ処理分野の当業者により、彼らの研究の内容を他の当業者に最も効果的に伝えるために使用される手段である。これらの操作は、機能的又は論理的に説明されているが、コンピュータプログラムにより実装されることが理解される。さらに、一般性を失うことなく、これらの操作の配置をモジュールとして又は機能名により参照することが時に便利であることも分かっている。
【0168】
上記議論から明らかなように、別段具体的に示されない限り、説明全体を通して、「処理する」又は「計算する」又は「算出する」又は「決定する」又は「表示する」などの用語を利用する議論は、コンピュータシステムのメモリ若しくはレジスタ、又は他のそのような情報記憶、送信、若しくは表示装置内の物理(電子)量として表されるデータを操作及び変換する、コンピュータシステム又は同様の電子コンピューティングデバイスのアクション及びプロセスを指すことが理解される。
【0169】
本明細書に記載される特定の実施形態は、アルゴリズムの形態で記載されるプロセスステップ及び命令を含む。実施形態のプロセスステップ及び命令は、ソフトウェア、ファームウェア、又はハードウェアで具現化することができ、ソフトウェアで具現化されるとき、リアルタイムネットワークオペレーティングシステムにより使用される異なるプラットフォーム上に存在し、該プラットフォームから操作されるようにダウンロードすることができることに留意されたい。
【0170】
説明される実施形態はまた、本明細書における動作を実行するための装置に関する。装置は、必要な目的のために特別に構築されてもよく、あるいはコンピュータによりアクセスできるコンピュータ読取可能媒体上に記憶されたコンピュータプログラムにより選択的にアクティブ化又は再構成される汎用コンピュータを含んでもよい。そのようなコンピュータプログラムは、これらに限られないが、フロッピーディスク、光ディスク、CD-ROM、磁気光ディスクを含む任意のタイプのディスク、読取専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気若しくは光カード、特定用途向け集積回路(ASIC)、又は電子命令を記憶するのに適した、コンピュータシステムバスに各々結合された任意のタイプの媒体などの、非一時的コンピュータ読取可能記憶媒体に記憶されてもよい。さらに、本明細書で参照されるコンピュータは、単一のプロセッサを含んでもよく、あるいは増大したコンピューティング能力のために複数プロセッサ設計を採用するアーキテクチャでもよい。
【0171】
本明細書で提示されるアルゴリズム及び動作は、任意の特定のコンピュータ又は他の装置に本質的に関連しない。様々な汎用システムもまた、本明細書における教示に従ってプログラムとともに使用されてもよく、あるいは、必要とされる方法ステップを実行するためにより特化された装置を構築することが、便利であることが分かっている場合がある。様々なこれらのシステムのために必要な構造は、同等の変形例とともに当業者には明らかであろう。さらに、本実施形態は、任意の特定のプログラミング言語を参照して説明されていない。本明細書で説明される実施形態の教示を実装するために、様々なプログラミング言語が使用され得ることが理解される。
【0172】
実施形態は、多数のトポロジにわたる幅広いコンピュータネットワークシステムに十分適している。この分野では、大規模ネットワークの構成及び管理は、インターネットなどのネットワークを通じて異種のコンピュータ及び記憶装置に通信上結合されている記憶装置及びコンピュータを含む。
【0173】
最後に、本明細書で使用される言語は、主に読みやすさ及び教示目的のために選択されており、発明対象事項を線引き又は制限するために選択されていない場合があることに留意されたい。したがって、実施形態の開示は、限定ではなく例示であることが意図される。
図1
図2A
図2B
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
【国際調査報告】