(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-03-16
(54)【発明の名称】分散バージョン制御システムにおけるコードの更新
(51)【国際特許分類】
G06F 8/71 20180101AFI20230309BHJP
G06F 8/65 20180101ALI20230309BHJP
【FI】
G06F8/71
G06F8/65
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022543778
(86)(22)【出願日】2021-01-05
(85)【翻訳文提出日】2022-08-23
(86)【国際出願番号】 US2021012222
(87)【国際公開番号】W WO2021150366
(87)【国際公開日】2021-07-29
(32)【優先日】2020-01-20
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-11-24
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】バルサロウ,エリック・タイラー
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376CA46
5B376DA09
5B376DA11
5B376DA28
(57)【要約】
コンピュータインフラストラクチャオーケストレーションサービス(CIOS)によって、第1のサービスへの変更を実施するための技術が開示される。CIOSは、宣言的命令に少なくとも部分的に基づいてインフラストラクチャリソースおよびアーチファクトをデプロイするための宣言的インフラストラクチャプロビジョナを管理し得る。CIOSは、第1のサービス(たとえば、サイドカーアプリケーション)に対する第1の修正を検出し得る。CIOSは、第2のサービスの構成データが(たとえば、gitサブモジュールを介して)第1のサービスを参照することを識別し得る。第2のサービスに対する第2の修正を識別することに応答して、CIOSは、グラフィカルインターフェイスを介して、第1のサービスに対する第1の修正を含む変更を提示し得る。第1の修正の変更の受諾または拒否を示すユーザ入力が受信され得る。CIOSは、次いで、ユーザ入力に従って第1のサービスに対する変更を実施し得る。たとえば、CIOSは、第1のサービスが、修正されたように、後続のデプロイメントにおける第2のサービスとともに展開されることを保証し得る。
【特許請求の範囲】
【請求項1】
コンピュータによって実行される方法であって、
コンピューティングシステムによって、宣言的命令に少なくとも部分的に基づいて、複数のインフラストラクチャリソースおよび複数のアーチファクトをデプロイするための宣言的インフラストラクチャプロビジョナを管理することと、
前記コンピューティングシステムによって、第1のサービスに対する第1の修正を検出することとを備え、前記第1のサービスは、複数のインフラストラクチャリソースのうちの少なくとも1つのインフラストラクチャリソースを備えており、前記第1のサービスは、当該第1のサービスに対する変更を実行するために第1の分散バージョン制御リポジトリを利用し、前記方法はさらに、
前記コンピューティングシステムによって、第2のサービスの構成データが前記第1のサービスを参照することを識別することと、
前記コンピューティングシステムによって、第2のサービスに対する第2の修正を検出することとを備え、前記第2のサービスは、当該第2のサービスに対する修正を実行するための第2の分散バージョン制御リポジトリを利用し、前記方法はさらに、
前記第2のサービスに対する第2の修正を識別し、かつ、前記第2のサービスが前記第1のサービスを参照することを識別したことに応答して、前記コンピューティングシステムによって、グラフィカルインターフェイスを介して、前記第1のサービスに対する前記第1の修正を含む変更を提示することと、
前記コンピューティングシステムによって、前記第1のサービスに対する前記第1の修正を含む変更の受諾または拒否を示すユーザ入力を受信することと、
前記コンピューティングシステムによって、ユーザ入力に従って前記第1のサービスへの変更を実施することとを備える、方法。
【請求項2】
前記第1のサービスに対する前記第1の修正は、前記第1のサービスに関連付けられた、実装コード、デプロイメント命令、またはテスト命令、のうちの少なくとも1つに対する修正を含む、請求項1に記載のコンピュータで実行される方法。
【請求項3】
前記第2のサービスの構成データが前記第1のサービスを参照することを識別することは、
前記第2のサービスに関連付けられた構成データを解析することと、
前記構成データが、前記第1の分散バージョン制御リポジトリのデータファイルを参照するサブモジュールを含むということを識別することとを含む、請求項1または2に記載のコンピュータで実行される方法。
【請求項4】
前記第1の分散バージョン制御リポジトリおよび前記第2の分散バージョン制御リポジトリは、gitリポジトリであり、前記第1のサービスは、サイドカーアプリケーションである、請求項1から3のいずれか一項に記載のコンピュータで実行される方法。
【請求項5】
前記ユーザ入力に従って変更を実行することは、前記ユーザ入力が受諾を示すときに前記第2のサービスに対する修正を実行するために、前記第2の分散バージョン制御リポジトリ内で前記第1のサービスに対する前記第1の修正の少なくとも一部を実行することを含む、請求項1~4のいずれか一項に記載のコンピュータで実行される方法。
【請求項6】
前記ユーザ入力は、前記第1の修正の第1の部分の受諾、および、前記第1の修正の第2の部分の拒否を示す、請求項1~5のいずれか一項に記載のコンピュータで実行される方法。
【請求項7】
前記ユーザ入力に従って変更を実施することは、前記第2の分散バージョン制御リポジトリに、前記第1のサービスの前のバージョンを参照させる動作を実行することを含み、前記前のバージョンは、前記第1のサービスの第1の修正の前に存在する、請求項1~6のいずれか一項に記載のコンピュータで実行される方法。
【請求項8】
システムであって、
1つまたは複数のプロセッサと、
コンピュータが実行可能な命令を記憶する1つまたは複数のメモリとを備え、前記命令は、前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサを、
宣言的命令に少なくとも部分的に基づいて、複数のインフラストラクチャリソースおよび複数のアーチファクトをデプロイするための宣言的インフラストラクチャプロビジョナを管理するように構成し、
第1のサービスに対する第1の修正を検出するように構成し、前記第1のサービスは、前記複数のインフラストラクチャリソースのうちの少なくとも1つのインフラストラクチャリソースを備え、前記第1のサービスは、前記第1のサービスに対する修正を実行するために第1の分散バージョン制御リポジトリを利用し、前記命令は前記1つまたは複数のプロセッサを、さらに、
第2のサービスの構成データが前記第1のサービスを参照することを識別するように構成し、
前記第2のサービスに対する第2の修正を検出するように構成し、前記第2のサービスは、前記第2のサービスに対する修正を実行するために第2の分散バージョン制御リポジトリを利用し、前記命令は前記1つまたは複数のプロセッサを、さらに、
前記第2のサービスに対する第2の修正を識別し、かつ、前記第2のサービスが前記第1のサービスを参照することを識別したことに応答して、グラフィカルインターフェイスを介して、前記第1のサービスに対する前記第1の修正を含む変更を提示するように構成し、
前記第1のサービスに対する前記第1の修正を含む前記変更の受諾または拒否を示すユーザ入力を受信するように構成し、
前記ユーザ入力に従って前記第1のサービスへの前記変更を実施するように構成する、システム。
【請求項9】
前記第1のサービスに対する前記第1の修正は、前記第1のサービスに関連付けられた、実装コード、デプロイメント命令、または、テスト命令、のうちの少なくとも1つに対する修正を含む、請求項8に記載のシステム。
【請求項10】
前記第2のサービスの構成データが前記第1のサービスを参照することを識別することは、
前記第2のサービスに関連付けられた構成データを解析することと、
前記構成データが、前記第1の分散バージョン制御リポジトリのデータファイルを参照するサブモジュールを含むということを識別することとを含む、請求項8または9に記載のシステム。
【請求項11】
前記第1の分散バージョン制御リポジトリおよび前記第2の分散バージョン制御リポジトリは、gitリポジトリであり、前記第1のサービスは、サイドカーアプリケーションである、請求項8~10のいずれか一項に記載のシステム。
【請求項12】
前記ユーザ入力に従って変更を実行することは、前記ユーザ入力が受諾を示すときに前記第2のサービスに対する修正を実行するために、前記第2の分散バージョン制御リポジトリ内で前記第1のサービスに対する前記第1の修正の少なくとも一部を実行することを含む、請求項8~11のいずれか一項に記載のシステム。
【請求項13】
前記ユーザ入力は、前記第1の修正の第1の部分の受諾および前記第1の修正の第2の部分の拒否を示す、請求項8~12のいずれか一項に記載のシステム。
【請求項14】
前記ユーザ入力に従って前記変更を実施することは、前記第2の分散バージョン制御リポジトリに、前記第1のサービスの前のバージョンを参照させる動作を実行することを含み、前記前のバージョンは、前記第1のサービスの前記第1の修正の前に存在する、請求項8~13のいずれか一項に記載のシステム。
【請求項15】
コンピュータが実行可能な命令を記憶したコンピュータ読み取り可能な記憶媒体であって、前記命令は1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに複数の動作を実行させ、前記複数の動作は、
コンピューティングシステムによって、宣言的命令に少なくとも部分的に基づいて、複数のインフラストラクチャリソースおよび複数のアーチファクトをデプロイするための宣言的インフラストラクチャプロビジョナを管理することと、
前記コンピューティングシステムによって、第1のサービスに対する第1の修正を検出することとを含み、前記第1のサービスは、前記複数のインフラストラクチャリソースのうちの少なくとも1つのインフラストラクチャリソースを含み、前記第1のサービスは、前記第1のサービスに対する修正を実行するために第1の分散バージョン制御リポジトリを利用し、前記複数の動作は、さらに、
前記コンピューティングシステムによって、第2のサービスの構成データが前記第1のサービスを参照するということを識別することと、
前記コンピューティングシステムによって、前記第2のサービスに対する第2の修正を検出することとを含み、前記第2のサービスは、前記第2のサービスに対する修正を実行するために第2の分散バージョン制御リポジトリを利用し、前記複数の動作は、さらに、
前記第2のサービスに対する前記第2の修正を識別し、かつ、前記第2のサービスが前記第1のサービスを参照することを識別したことに応答して、前記コンピューティングシステムによって、グラフィカルインターフェイスを介して、前記第1のサービスに対する前記第1の修正を含む変更を提示することと、
前記コンピューティングシステムによって、前記第1のサービスに対する前記第1の修正を含む変更の受諾または拒否を示すユーザ入力を受信することと、
前記コンピューティングシステムによって、前記ユーザ入力に従って前記第1のサービスへの変更を実施することとを含む、コンピュータ読み取り可能な記憶媒体。
【請求項16】
前記第1のサービスに対する第1の修正は、前記第1のサービスに関連付けられた、実装コード、デプロイメント命令、または、テスト命令、のうちの少なくとも1つに対する変更を含む、請求項15に記載のコンピュータ読み取り可能な記憶媒体。
【請求項17】
前記第2のサービスの構成データが前記第1のサービスを参照するということを識別することは、
前記第2のサービスに関連付けられた構成データを解析することと、
前記構成データが、前記第1の分散バージョン制御リポジトリのデータファイルを参照するサブモジュールを含むということを識別することとを含む、請求項15または16に記載のコンピュータ読み取り可能な記憶媒体。
【請求項18】
前記第1の分散バージョン制御リポジトリおよび前記第2の分散バージョン制御リポジトリは、gitリポジトリであり、前記第1のサービスは、サイドカーアプリケーションである、請求項15~17のいずれか一項に記載のコンピュータ読み取り可能な記憶媒体。
【請求項19】
前記ユーザ入力に従って前記変更を実行することは、前記ユーザ入力が受諾を示すときに前記第2のサービスに対する修正を実行するために、前記第2の分散バージョン制御リポジトリ内で前記第1のサービスに対する前記第1の修正の少なくとも一部を実行することを含む、請求項15~18のいずれか一項に記載のコンピュータ読み取り可能な記憶媒体。
【請求項20】
前記ユーザ入力に従って前記変更を実施することは、前記第2の分散バージョン制御リポジトリに、前記第1のサービスの前のバージョンを参照させる動作を実行することを含み、前記前のバージョンは、前記第1のサービスの第1の修正の前に存在する、請求項15~19のいずれかに記載のコンピュータ読み取り可能な記憶媒体。
【請求項21】
請求項1~7のいずれか一項に記載のステップを実行するための手段を備える装置。
【請求項22】
コンピュータ命令を含むコンピュータプログラム製品であって、前記コンピュータ命令はプロセッサによって実行されると、請求項1~7のいずれかに記載の方法のステップを実施する、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2020年7月20日付で提出された「アプリケーション更新を解消するための技術」と題される米国仮出願第62/963,478号の非仮出願であり、かつ、当該出願のおよび2020年11月24日付で提出された「アプリケーション更新を解消するための技術」と題される米国非仮出願第17/103,733号の利益および米国特許法第119(e)に基づく優先権を主張し、その内容は、全ての目的のためにその全体が参照により組み込まれる。
【背景技術】
【0002】
今日、クラウドインフラストラクチャサービスは、多くの個々のサービスを利用して、当該クラウドインフラストラクチャサービスの多くの領域にわたって(それぞれ)コードおよび構成を準備(provisioning)および展開(deploy)する。特に、準備が概して宣言的であり、コードを展開することが必須であることを考慮すると、これらのツールは、使用するためにかなりの手動の努力を必要とする。加えて、サービスチームおよび地域の数が増えるにつれて、クラウドインフラストラクチャサービスは成長し続ける必要がある。より多数の一層小さい領域にデプロイするいくつかのクラウドインフラストラクチャサービスの戦略は、領域ごとの支出を含み、これはうまくスケーリングされないことがある。
【発明の概要】
【課題を解決するための手段】
【0003】
デプロイメント環境におけるアプリケーション更新を解決するための技術が開示される。ある実施の形態では、コンピュータで実行される方法は、種々の動作を含み得る。ある実施の形態では、当該動作は、コンピューティングシステムによって、宣言的命令(例えば、いくつものインフラストラクチャ構成要素の各々およびそれらがどのように相互作用するかを記述する構成ファイル、所望の状態を得るための制御フローを記述することなくデプロイメント(deployment)の所望の状態を宣言する構成ファイルなど)に少なくとも部分的に基づいて、複数のインフラストラクチャリソースおよび複数のアーチファクトをデプロイ(deploy)するための宣言的インフラストラクチャプロビジョナを管理することを含む。コンピューティングシステムは、第1のサービスに対する第1の修正を検出する。ある実施の形態では、第1のサービスは、複数のインフラストラクチャリソースのうちの少なくとも1つのインフラストラクチャリソースを備え、第1のサービスは、当該第1のサービスに対する修正を実行するために第1の分散バージョン制御リポジトリを利用する。コンピューティングシステムは、第2のサービスの構成データが第1のサービスを参照することを識別する。コンピューティングシステムは、第2のサービスに対する第2の修正を検出する。ある実施の形態では、第2のサービスは、当該第2のサービスに対する修正を実行するために第2の分散バージョン制御リポジトリを利用する。第2のサービスに対する第2の修正を識別し、かつ、第2のサービスが第1のサービスを参照することを識別したことに応答して、コンピューティングシステムは、グラフィカルインターフェイスを介して、第1のサービスに対する第1の修正を含む変更を提示する。コンピューティングシステムは、第1のサービスに対する第1の修正を含む変更の受諾または拒否を示すユーザ入力を受信する。コンピューティングシステムは、ユーザ入力に従って第1のサービスへの変更を実施する。
【0004】
他の実施の形態では、デプロイメント環境においてアプリケーション更新を解決するためのシステムが開示される。当該システムは、1つまたは複数のプロセッサと、当該1つまたは複数のプロセッサによって実行されると様々な動作を実行するように当該1つまたは複数のプロセッサを構成するコンピュータ実行可能命令を記憶する1つまたは複数のメモリと、を備え得る。ある実施の形態では、当該動作は、当該システムによって、宣言的命令に少なくとも部分的に基づいて、複数のインフラストラクチャリソースおよび複数のアーチファクトをデプロイするための宣言的インフラストラクチャプロビジョナを管理することを含む。システムは、第1のサービスに対する第1の修正を検出する。ある実施の形態では、第1のサービスは、複数のインフラストラクチャリソースのうちの少なくとも1つのインフラストラクチャリソースを備え、第1のサービスは、当該第1のサービスに対する修正を実行するために第1の分散バージョン制御リポジトリを利用する。システムは、第2のサービスの構成データが第1のサービスを参照することを識別する。システムは、第2のサービスに対する第2の修正を検出する。ある実施の形態では、第2のサービスは、当該第2のサービスに対する修正を実行するために第2の分散バージョン制御リポジトリを利用する。第2のサービスに対する第2の修正を識別し、かつ、第2のサービスが第1のサービスを参照することを識別したことに応答して、システムは、グラフィカルインターフェイスを介して、第1のサービスに対する第1の修正を含む変更を提示する。システムは、第1のサービスに対する第1の修正を含む変更の受諾または拒否を示すユーザ入力を受信する。システムは、ユーザ入力に従って第1のサービスへの変更を実施する。
【0005】
他の実施の形態では、1つまたは複数のプロセッサによって実行されると、当該1つまたは複数のプロセッサに様々な動作を実行させるコンピュータ実行可能命令を記憶できるコンピュータ読み取り可能な記憶媒体が開示される。ある実施の形態では、当該動作は、宣言的命令に少なくとも部分的に基づいて、複数のインフラストラクチャリソースおよび複数のアーチファクトをデプロイするための宣言的インフラストラクチャプロビジョナを管理することを含む。当該動作は、第1のサービスに対する第1の修正を検出することをさらに含む。ある実施の形態では、第1のサービスは、複数のインフラストラクチャリソースのうちの少なくとも1つのインフラストラクチャリソースを備え、第1のサービスは、当該第1のサービスに対する修正を実行するために第1の分散バージョン制御リポジトリを利用する。当該動作は、第2のサービスの構成データが第1のサービスを参照することを識別することをさらに含む。当該システムは、第2のサービスに対する第2の修正を検出する。ある実施の形態では、第2のサービスは、当該第2のサービスに対する修正を実行するために第2の分散バージョン制御リポジトリを利用する。当該動作は、第2のサービスに対する第2の修正を識別し、かつ、第2のサービスが第1のサービスを参照することを識別することに応答して、グラフィカルインターフェイスを介して、第1のサービスに対する第1の修正を含む変更を提示することをさらに含む。当該動作は、第1のサービスに対する第1の修正を含む変更の受諾または拒否を示すユーザ入力を受信することをさらに含む。当該動作は、ユーザ入力に従って第1のサービスへの変更を実施することをさらに含む。
【0006】
他の実施の形態では、装置が開示される。当該装置は、本明細書で開示される方法のいずれかのステップを実行するための手段を備え得る。
【0007】
他の実施の形態では、コンピュータプログラム製品が開示される。当該コンピュータプログラム製品は、プロセッサによって実行されると、本明細書で開示される方法のいずれかのステップを実施するコンピュータ命令を備え得る。
【0008】
任意の特定の要素または行為の議論を容易に識別するために、参照番号の最上位の数字(単数または複数)は、その要素が最初に導入される図面番号を指す。
【図面の簡単な説明】
【0009】
【
図1】少なくとも1つの実施の形態に従う、クラウドインフラストラクチャオーケストレーションサービスの少なくともいくつかの要素を実施するためのアーキテクチャのブロック図である。
【
図2】少なくとも1つの実施の形態に従う、クラウドインフラストラクチャオーケストレーションサービスの少なくともいくつかの要素を実施するためのアーキテクチャのブロック図である。
【
図3】少なくとも1つの実施の形態に従う、例示的なフロックを示すためのフロー図である。
【
図4】少なくとも1つの実施の形態に従う、例示的なフロックを示すためのフロー図である。
【
図5】少なくとも1つの実施の形態に従う、アプリケーションおよび二次アプリケーションのそれぞれのリポジトリの利用を示す概略図である。
【
図6】少なくとも1つの実施の形態に従う、別のアプリケーションのデータリポジトリへの参照を含む1つのアプリケーションのコードの例を示す。
【
図7】少なくとも1つの実施の形態に従う、サイドカーアプリケーションに関連付けられたコード変更を取得するための方法を説明するフロー図である。
【
図8】少なくとも1つの実施の形態に従う、サイドカーアプリケーションに対して行われた変更を示す例示的なユーザインターフェイスを示す概略図である。
【
図9】少なくとも1つの実施の形態に従う、ユーザ入力に従ってコンピュータインフラストラクチャオーケストレーションサービスによって第1のサービスへの変更を実施するための方法のフローチャートである。
【
図10】少なくとも1つの実施の形態に従う、分散システムのブロック図である。
【
図11】少なくとも1つの実施の形態に従う、一実施の形態のシステムの1つまたは複数の構成要素によって提供されるサービスがクラウドサービスとして提供され得るシステム環境の1つまたは複数の構成要素のブロック図である。
【
図12】本開示の様々な実施の形態が実装され得る例示的なコンピュータシステムのブロック図である。
【発明を実施するための形態】
【0010】
いくつかの例では、サービスとしてのインフラストラクチャ(IaaS)は、1つの特定のタイプのクラウドコンピューティングである。IaaSは、パブリックネットワーク(たとえば、インターネット)を介して仮想化されたコンピューティングリソースを提供するように構成され得る。いくつかの例では、IaaSは、クラウドコンピューティングサービスの3つの主要なカテゴリ(または、サブカテゴリ)のうちの1つである。大抵の人は、他の主なカテゴリが、ソフトウェア・アズ・ア・サービス(SaaS)およびプラットフォーム・アズ・ア・サービス(PaaS)であると考え、時には、SaaSは、PaaSおよびIaaSの両方を包含するより広いカテゴリであると考えられ得、IaaSもPaaSのサブカテゴリであると考える人もいる。
【0011】
IaaSモデルでは、クラウドコンピューティングプロバイダは、インフラストラクチャコンポーネント(例えば、サーバ、記憶装置、ネットワークノード(例えば、ハードウェア)、デプロイメントソフトウェア、プラットフォーム仮想化(例えば、ハイパーバイザ層)等)をホストすることができる。
【0012】
場合によっては、IaaSプロバイダはまた、それらのインフラストラクチャ構成要素(例えば、課金、監視、ロギング、セキュリティ、負荷分散およびクラスタリング等)に付随する様々なサービスを提供し得る。したがって、これらのサービスはポリシー駆動型であり得るので、IaaSユーザは、アプリケーションの可用性および性能を維持するために負荷分散を駆動するためのポリシーを実装することが可能であり得る。
【0013】
いくつかの事例では、IaaS顧客は、インターネットのようなワイドエリアネットワーク(WAN)を通してリソースおよびサービスにアクセスし得、クラウドプロバイダのサービスを使用して、アプリケーションスタックの残りの要素をインストールすることができる。たとえば、ユーザは、IaaSプラットフォームにログインして、仮想マシン(VM)を作成し、各VMにオペレーティングシステム(OS)をインストールし、データベースのようなミドルウェアをデプロイし、ワークロードおよびバックアップのためのストレージバケットを作成し、さらにはエンタープライズソフトウェアをVMにインストールできる。次いで、顧客は、プロバイダのサービスを使用して、ネットワークトラフィックのバランシング、アプリケーション問題のトラブルシューティング、性能の監視、災害復旧の管理等を含む様々な機能を実行できる。
【0014】
ほとんどの場合、クラウドコンピューティングモデルは、クラウドプロバイダの参加を必要とする。クラウドプロバイダは、IaaSの提供(例えば、販売)に特化した第三者サービスであり得るが、そうである必要はない。エンティティはまた、プライベートクラウドをデプロイすることを選択し、インフラストラクチャサービスの独自のプロバイダになり得る。
【0015】
いくつかの例では、IaaSデプロイメントは、新しいアプリケーションまたは新しいバージョンを、準備されたアプリケーションサーバなどに置くプロセスである。これはまた、(例えば、ライブラリー、デーモンなどをインストールする)サーバを準備するプロセスを含み得る。これは、多くの場合、ハイパーバイザ層(例えば、サーバ、ストレージ、ネットワークハードウェア、および仮想化)の下のクラウドプロバイダによって管理される。したがって、顧客は、ハンドリング(OS)、ミドルウェア、および/またはアプリケーションデプロイメント(たとえば、セルフサービス仮想マシン(たとえば、オンデマンドで起動され得る)上での)等に責任を有し得る。
【0016】
いくつかの例では、IaaSプロビジョニングは、使用のためにコンピュータまたは仮想ホストを取得すること、および、必要とされるライブラリまたはサービスをそれらにインストールすることさえも指し得る。ほとんどの場合、デプロイメントはプロビジョニングを含まず、プロビジョニングは最初に実行される必要があり得る。
【0017】
場合によっては、IaaSプロビジョニングには2つの異なる問題がある。第1に、何かが実行する前にインフラストラクチャの初期セットをプロビジョニングするという最初の課題がある。第2に、あらゆるものがプロビジョニングされると、既存のインフラストラクチャを発展させるという課題(例えば、新しいサービスの追加、サービスの変更、サービスの削除など)がある。場合によっては、これらの2つの課題は、インフラストラクチャの構成が宣言的に定義されることを可能にすることによって対処され得る。言い換えれば、インフラストラクチャ(例えば、どのコンポーネントが必要とされるか、および、それらがどのように相互作用するか)は、1つまたは複数の構成ファイルによって定義され得る。したがって、インフラストラクチャの全体的なトポロジー(例えば、どのリソースがどのリソースに依存するか、および、それらがそれぞれどのように協働するか)は、宣言的に説明され得る。いくつかの例では、トポロジが定義されると、構成ファイルに記述された異なる構成要素を作成および/または管理するワークフローが生成され得る。
【0018】
いくつかの例では、インフラストラクチャは、多くの相互接続された要素を有し得る。たとえば、コアネットワークとしても知られている、1つまたは複数の仮想プライベートクラウド(VPC)(例えば、構成可能および/または共有コンピューティングリソースの潜在的にオンデマンドのプール)があり得る。いくつかの例では、ネットワークのセキュリティをどのように設定するか、および、1つまたは複数の仮想マシン(VM)を定義するためにプロビジョニングされた1つまたは複数のセキュリティグループルールが存在する場合もある。ロードバランサ、データベース等の他のインフラストラクチャ要素もプロビジョニングされ得る。ますます多くのインフラストラクチャ要素が望まれ、および/または、追加されると、インフラストラクチャは漸進的に進化し得る。
【0019】
上述のように、インフラストラクチャをプロビジョニングする1つの方法は、インフラストラクチャを宣言的に説明することである。したがって、構成ファイルは、上述のインフラストラクチャ構成要素の各々と、それらがどのように対話するかとを単に記述する宣言型ファイルであり得る。構成ファイルは、要素を作成するために必要とされるリソースおよび関連フィールドを記述することができ、次いで、前に記述された要素を参照する他の要素が記述され得る。いくつかの例では、プロビジョニングツールは、次いで、構成ファイルに記述される要素を作成および管理するためのワークフローを生成することができる。構成ファイルは、本明細書では「宣言的命令」と呼ばれることもある。
【0020】
いくつかの例では、プロビジョニングツールのワークフローは、様々なコマンドを実行するように構成され得る。実行可能な1つの機能は、ビュー調整であり、プロビジョニングツールは、現在のインフラストラクチャのビュー(例えば、インフラストラクチャの予想される状態)を、インフラストラクチャが実際にどのように動作しているかと比較することができる。いくつかの例では、ビュー調整機能を実行することは、様々なリソースプロバイダまたはインフラストラクチャリソースに問い合わせて、どのリソースが実際に実行されているかを識別することを含み得る。プロビジョニングツールが実行できる別の機能は、計画生成であり、ここで、プロビジョニングツールは、実際に実行されているインフラストラクチャコンポーネントを、プロビジョニングツールがそのようにしたいとする状態(例えば、所望の構成)と比較することができる。言い換えれば、計画生成機能は、リソースを最新の期待値に近づけるために、どの変更を行う必要があるかを決定することができる。いくつかの例では、第3の機能は実行(例えば適用)機能であり、ここでプロビジョニングツールは当該計画生成機能によって生成された計画を実行することができる。
【0021】
概して、プロビジョニングツールは、構成ファイルを取得し、その中に含まれる宣言的情報を解析し、計画を実行するためにリソースがプロビジョニングされる必要がある順序を、プログラム的に/自動的に、判定するように構成され得る。例えば、セキュリティグループルールおよびVMがブートされる前にVPCがブートされる必要がある場合、プロビジョニングツールは、ユーザの介入なしに、および/または、情報が構成ファイルに必ずしも含まれることなく、その決定を行い、その順序で当該ブートを実施することができる。
【0022】
いくつかの例では、様々な仮想コンピューティング環境にわたるインフラストラクチャコードのデプロイメントを可能にするために、連続デプロイメント技術が採用され得る。加えて、当該記述される技術は、これらの環境内で、インフラストラクチャ管理を可能にする。いくつかの例では、サービスチームは、1または複数、しかし、しばしば(例えば、様々な異なる地理的位置にわたって、時として世界全体に及ぶ)異なる製造環境に、展開されることが望まれるコードを書き込むことができる。しかしながら、いくつかの例において、コードが展開されるインフラストラクチャは、最初にセットアップされなければならない。いくつかの事例では、プロビジョニングは、手動で行われることができ、プロビジョニングツールは、リソースをプロビジョニングするために利用されてもよく、および/または、デプロイメントツールは、インフラストラクチャがプロビジョニングされると、コードをデプロイするために利用され得る。
【0023】
上述のように、一般に、インフラストラクチャリソースのプロビジョニングおよびインフラストラクチャリソースを制御するためのコードのデプロイの各々を処理するために使用される2つの異なるツールがあり、2つのツール間のオーケストレーションは手動で実行される。しかしながら、大規模には、手動の実行は、常に偏差につながる。したがって、仮想インフラストラクチャをプロビジョニングおよびデプロイの両方を行うことができる自動化ツールは、仮想クラウド環境を実施するためのより効率的でかつ信頼できる技術を可能にする。
【0024】
いくつかの例では、2つのツールが使用される場合、ユーザがプロビジョニングフェーズとデプロイメントフェーズとの間でコードに手動で変更を行うときに問題が生じ得る。本明細書で説明されるように、プロビジョニングおよびデプロイメントの両方のために単一のツールを使用する技術は、手動によるコード変更の機会がないように、プロセスを自動化することによってそれを軽減することができる。あるユーザが何かをコード化するやり方のわずかな変化が、デプロイメントフェーズにおいて大きな問題を引き起こす場合がある。いくつかの例では、オペレータが新しい領域においてアクション(たとえば、コード中のタイプミス)を最初に実行すると、当該タイプミスでコーディングされたオブジェクトは、常にその方法であり得る。アプリケーションがそのタイプミスで展開され、アプリケーションがそのタイプミスに敏感でない場合(例えば、それが依然として機能している場合)、将来的には、いつか、追加のコード変更がそのタイプミスの影響を受けやすくなり、システム全体がクラッシュする可能性がある。したがって、本明細書で提供される技術は、しばしば問題につながり得る、プロビジョニングとデプロイメントとの間のギャップを除去することができる。
【0025】
概して、モデル化デプロイメントは、構成ファイルがインフラストラクチャリソースを宣言するために使用されることができるように、宣言的である。例えば、生成(create)、読出(read)、更新(update)、削除(delete)(CRUD)命令は、一般的なレプレゼンテイショナル・ステイト・トランスファー(REST)コンセプト(例えば、RESTアプリケーションプログラミングインターフェイス(API))を用いてデプロイメントファイルを生成するために一般的に使用される。しかしながら、デプロイメント自体は、概して、同じ概念に従わない。加えて、インフラストラクチャプロビジョニングツールは、実際に強力かつ/または表現的である傾向がある一方、デプロイメントのためのツールは、それらが実行することができる動作に関して、はるかに制限的である傾向がある(例えば、それらは宣言的とは対照的に必須である)。したがって、クラウド環境内で両方の機能的要件(例えば、インフラストラクチャ要素のプロビジョニングおよびデプロイメント)に対処できるツールが長年にわたって必要とされている。
【0026】
いくつかの例では、クラウドインフラストラクチャオーケストレーションサービス(CIOS)を実施するための技術が本明細書で説明される。そのような技術は、上で簡単に説明したように、クラウド環境内のインフラストラクチャ資産のプロビジョニングおよびデプロイメントの両方を管理するように構成され得る。幾つかの例では、CIOSは、サービスの2つのクラス:中央および領域コンポーネント(例えば、CIOS中央およびCIOS領域)を含むことができる。以下の用語は、全体を通して使用される:
・インフラストラクチャコンポーネント-実行コードをサポートする長寿命のインフラストラクチャの一部分。
【0027】
- 例:デプロイメントアプリケーション、ロードバランサ、ドメインネームシステム(DNS)エントリ、オブジェクトストレージバケット等。
【0028】
・アーチファクト - デプロイメントアプリケーションまたはクーベネティス(Kubernetes)エンジンクラスタに展開されるコード、または、インフラストラクチャコンポーネントに適用される構成情報(以下、「構成」)。これらは読み出し専用リソースであり得る。
【0029】
・デプロイメントタスク - コードのデプロイまたはテストにしばしば関連付けられる短命タスク。加えて、デプロイメントタスクは、それらを作成するリリースを超えて生存しないリソースとしてモデル化される。
【0030】
- 例:“deploy $artifact to $environment,”、“watch $alarm for 10 minutes,”、“execute $testSuite,”、または、“wait for $manualApproval”
- 例えば、CIOSは、それが完了したときに利用可能状態に遷移するリソースの作成物として、デプロイメントオーケストレータデプロイメントをモデル化することができる。
【0031】
- CIOSは、クラウドインフラストラクチャサービス宣言型プロビジョナの状態を維持するため、CIOSは、リリースに関連付けられたこれらの短寿命のリソースのライフサイクルを制御できる。
【0032】
・リソース - CRUD可能なリソース。
- CIOSは、上記に列挙した構築物の各々をリソースとしてモデル化する。次のセクションでは、このモデル化を詳細に説明する。
【0033】
・フロック(Flock) - 制御領域およびその全ての構成要素をカプセル化するCIOSのモデル。主として、インフラストラクチャ構成要素の所有権をモデル化し、指すために存在する。
【0034】
・フロック構成 - 単一サービスに関連付けられた全てのインフラストラクチャコンポーネント、アーチファクト、およびデプロイメントタスクのセットを記述する。
【0035】
- 各フロックは正確に1つのフロック構成を有する。フロック構成は、ソース制御にチェックインされる。
【0036】
- フロック構成は、宣言的である。それらは、CIOSが領域、地域、広告、およびアーチファクトバージョンを入力として提供することを期待する。
【0037】
- フロックは粒状である。1つのフロックは、単一のサービスおよびサポートインフラストラクチャからなる。
【0038】
・状態 - フロック内のあらゆるリソースの状態のその時点のスナップショット。
・リリース - フロック構成の特定のバージョンと、それが参照するあらゆるアーチファクトの特定のバージョンとのタプル。
【0039】
- リリースを、まだ存在しないかもしれない状態を記述すると考える。
・リリース計画 - CIOSが全ての領域をそれらの現在の状態からリリースによって記述される状態に遷移させるために取る一組のステップ。
【0040】
- リリース計画は、有限数のステップと、明確に定義された開始および終了時間とを有する。
【0041】
・適用 - これは名詞である。リリース計画を実行する単一の試み。実行は、フロックの現在の状態を変更する。
【0042】
CIOSは、下流システム(例えば、ワールドワイド)に構成を適用するオーケストレーション層として説明され得る。それは、サービスチームからの手作業なしで(例えば、いくつかの例における最初の承認を越えて)、ワールドワイドなインフラストラクチャプロビジョニングおよびコードデプロイメントを可能にするように設計される。CIOSの高レベルの責任は、以下を含むが、これらに限定されない:
・任意の飛行中の変更活動を含む、CIOSによって管理されるリソースの現在の状態に対するビューをチームに提供すること。
【0043】
・チームが新しい変更を計画しリリースすることを支援すること。
・人の介入なしで、承認されたリリース計画を実行するために、領域内の様々な下流システムにわたって活動を調整すること。
【0044】
・認可されたリリース計画をワールドワイドに実行するために地域/領域にわたって活動を調整すること。
【0045】
いくつかの例では、CIOSは、チームがチェックインコードを介して構成情報をCIOSに提供することを可能にすることによってオンボードを扱う。加えて、CIOSは、より多くのものを自動化することができる、このことは、以前の実施形態よりも重い実施である。場合によっては、CIOSは、自動的にデプロイし、かつ、コードを試験する能力をチームに提供することによって、デプロイメント前を扱う。いくつかの例では、CIOSは、チームが新しいアーチファクトを構築するときに新しいアーチファクトを(例えば、ワールドワイドに)ロールアウトする計画を自動的に生成することを可能にすることによって、変更管理(CM)ポリシーの書き込みを処理することができる。これは、各領域の現在の状態および(それ自体がアーチファクトであり得る)現在のCIOS構成を検査することによって行うことができる。加えて、チームはこれらの計画を調べることができ、CIOS構成を変更すること、および、CIOSに再計画を依頼することによって、これらの計画を反復することができる。チームが計画に満足すると、チームは、計画を参照する「リリース」を作成することができる。次いで、当該計画は、承認済みまたは拒否済みとしてマークされ得る。チームは依然としてCMを書き込むことができる一方、CMは単にCIOS計画へのポインタである。したがって、チームは、計画についての推論に費やす時間を少なくすることができる。計画は、機械によって生成されているので、より正確である。計画は、人の消費にはほとんど細かすぎる。しかしながら、それは、高度なユーザインターフェイス(UI)を介して表示され得る。
【0046】
いくつかの例では、CIOSは、デプロイメント計画を自動的に実行することによってCMの実行を処理することができる。リリース計画が作成され承認されると、エンジニアは、CIOSがロールバックを開始しない限り、もはやCMに参加しない。場合によっては、このことは、チームが現在手動のタスクを自動化することを要求するかもしれない。いくつかの例では、CIOSは、CIOSが実行中にサービス健全性の低下を検出すると、フロックをその元の(例えば、リリース前の)状態に戻す計画を自動的に生成することによって、変更管理(CM)をロールバックすることを処理できる。いくつかの例では、CIOSは、CIOSによって管理される領域のサブセットおよび/またはリソースのサブセットに詳しく調べられる(scoped)リリース計画を受信し、次いで当該計画を実行することによって、緊急の/戦術的な変更をデプロイすることに対処することができる。
【0047】
加えて、CIOSは、完全に自動化された世界的なデプロイメントを定義するために必要なプリミティブをサポートすることができる。例えば、CIOSは、アラームを監視すること、および、統合テストを実行することによって、サービス健全性を測定することができる。CIOSは、サービス劣化の場合にチームがロールバック挙動を迅速に定義するのを助けることができ、次いで、それを自動的に実行することができる。CIOSは、リリース計画を自動的に生成および表示することができ、承認を追跡することができる。いくつかの例では、チームが所望のデプロイメント挙動を記述するために使用する言語は宣言的であり得る。CIOSは、1つのシステムにおけるコードデプロイメントおよびインフラストラクチャ構成(たとえば、プロビジョニング)の機能を組み合わせることができる。CIOSはまた、領域にわたって、および領域内の構成要素にわたって、柔軟な順序付けをサポートする。チームは、チェックインされた構成を介して順序付けを表現することができる。チームは、CIOSの計画およびリリースAPIをプログラム的に呼び出すことができる。
【0048】
図1は、少なくともCIOS中央102を実装するための技術を示すためのアーキテクチャ100を示す。いくつかの例では、CIOS中央102は、「フロック」のレベルでの動作を取り扱うサービスであり得る。CIOS中央102は、以下を含むがこれらに限定されないいくつかの責任を有する:
・フロックメタデータ変更およびリリース動作のための認証ゲートウェイとしての役割を果たすこと。
【0049】
・フロックの、デプロイメントアーチファクトおよびCIOSリポジトリへのフロックメタデータの信頼できるマッピングを記憶すること。
【0050】
・フェイズおよびターゲットにわたるグローバルリリースを調整すること。
・「一度に1つのフロックに対して1つより多くの継続中のリリースがない」のようなポリシーを実施するための同期を取ること。
【0051】
・フロック構成(config)およびアーチファクトに対する変化を検出し、そのような変化に対するリリース生成をトリガすること。
【0052】
いくつかの例では、ソースコードバージョン制御管理サービス(SCVMS)104は、信頼できるフロック構成を記憶するように構成されることができ、アーチファクト通知サービス(ANS)106は、CIOS中央102が新しいアーチファクト構築を知らされることができるように、CIOS中央102によってサブスクライブされ得る。次いで、CIOS中央102は、影響を受けたフロックに対して入ってくる変化をマッピングし、所望であればリリース計画を開始することができる。加えて、いくつかの例では、アーチファクトプッシュサービス(APS)は、ターゲットへのリリースの前にCIOS中央102によって呼び出されて、成功したリリースに必要とされるアーチファクトがリリースの前に当該ターゲットの領域に存在することを保証することができる。
【0053】
いくつかの例では、顧客(例えば、エンジニア)108は、CIOS中央102を呼び出して、フロックおよび/またはリリースをCRUDし、進行中のCIOS活動のステータスを見ることができる。フロック管理サービス110は、フロックを操作するための1つまたは複数のAPIを含むことができ、閲覧/計画/承認サービス112は、計画を作成および承認するためのCRUD APIを含むことができ、全てのCIOS管理リソースの状態の中央コピーを閲覧するために、変更監視サービス114は、SCVMS104を、フロック構成に対する変更について見ることができ、ANS106から他のアーチファクトに対する変更についての通知を受信でき、そして、状態取り込みサービス116は、閲覧/計画/承認112がそれらを公開できるように、CIOS中央データベース(DB)118内に地域状態のコピーを作成できる。いくつかの例では、CIOS中央DB118は、フロック、計画、および状態のDBであり得る。フロック情報は、信頼できるものであり得る。しかし、他の全ては、CIOS領域120からのデータの古いコピーであり得る。CIOS中央102は、フロック、リリース、インフラストラクチャ構成要素、アーチファクト等に関連付けられた任意の適切なデータを提示するための任意の適切な部分および/または数のユーザインターフェイス(たとえば、ユーザインターフェイス500~800)を提供するように構成され得る。ある実施の形態では、CIOS中央102は、任意の適切なインターフェイスを介して、1つまたは複数のリリースに関連付けられたデータを提示し得る。リリースは、1つまたは複数のインフラストラクチャ構成要素に関連付けられたタスク、および/または、1つまたは複数のアプリケーションへの1つまたは複数のコード変更(たとえば、アーチファクト)の任意の適切な組み合せを含み得る。CIOS中央102によって提供されるユーザインターフェイスのいくつかの例は、
図5~13と関連して以下で説明される。
【0054】
いくつかの例では、エンジニア108は、(例えば、入口プロキシフリート122を介して)フロック管理サービス110に対するAPI呼び出しを実行して、フロックのリストを作成することができる。このようなAPI呼び出しを行うためのプロトコルは、HTTPS(Hypertext transport protocol secure)等であり得る。この動作のための関連するアクセス制御リスト(ACLs)は、ローカルエリアネットワーク(LAN)124または他のプライベート接続を含み得る。例えば、CIOSは、顧客のオンプレミスデータセンタまたはネットワークをCIOS(例えば、専用接続、リース接続、および/またはプライベート接続)と接続するために公衆インターネットを使用することの代替としてのネットワーク接続性を管理/制御することができる。加えて、(例えば、エンジニア108の)認証および承認は、ユーザが機械インフラストラクチャ(例えば、予約サービス)を管理することを可能にする予約システムポータルによって実行され得る。いくつかの例では、CIOS中央102は、Javaデータベース接続性(JDBC)等を使用して、フロックメタデータ、計画、および状態を中央DB118に記憶し得る。いくつかの例では、ANS106は、新しいアーチファクトが公開されたときに変更監視サービス114に通知するように構成され得る。ANS106はHTTPSを使用することができ、認証と承認の両方が相互トランスポート層セキュリティサービスによって処理され得る。加えて、いくつかの例では、変更監視サービス114は、フロック構成の変更についてSCVMS104をポーリングすることができる。このポーリングは、セキュアシェル(SSH)または他のプロトコルを使用して実行され得る。変更監視サービス114の認証は、CIOSシステムアカウントによって処理され得、承認は、SCVMS104によって処理され得る。
【0055】
いくつかの例では、エンジニア108は、ビュー/計画/承認サービス112を使用して、以下の動作のうちの1つまたは複数を行うことができる。エンジニア108は、計画を生成および承認するためのCIOS中央102を呼び出すことによって、計画および/または承認することができる。エンジニア108は、進行中のCIOS活動の状態を世界中で閲覧するためにCIOS中央102を呼び出すことによって閲覧することができる。加えて、エンジニア108は、CIOS中央102を呼び出して、世界中のCIOS管理リソースの状態のレプリカを見ることができる。これらのAPIコール(または同様のもの)は、HTTPSプロトコルまたは同様のプロトコルを介して実行され得る。加えて、関連するACLsは、LAN124によって制御され得、認証および認可の両方が予約サービスによって処理され得る。いくつかの例では、閲覧/計画/承認サービス112は、計画を要求し、計画の承認を(例えば、HTTPS等を使用して)CIOS領域120の全ての領域にプッシュすることができる。関連するACLsは、ワイドエリアネットワーク(WAN)ゲートウェイ126によって管理されるセキュリティリストを使用して制御され得る。認証は相互トランスポート層セキュリティによって処理されることができ、認可は様々なアイデンティティポリシーによって処理され得る。さらに、状態取り込みサービス116は、ジョブステータスまたはステータス変化についてCIOS領域120を見ることができ、その結果、CIOSは、(例えば、HTTPSなども用いて)要求時にそれらの中央ビューを提供することができる。このためのACLsはまた、WANゲートウェイ126によって処理され得、認証および認可の両方が、相互トランスポート層セキュリティサービスによって処理され得る。
【0056】
図2は、少なくともCIOS領域202を実装するための技術を示すためのアーキテクチャ200を示す。いくつかの例では、CIOS領域202は、承認されたリリースアプリケーションはもちろん、宣言的プロビジョニングおよび計画の作業の多くが起こり得る場所である。いくつかの事例では、CIOS領域202の各インスタンスは、「実行対象」のレベルでの動作を取り扱うことができる領域フロントエンドを有し得る。それは、以下を実行するように構成され得る:
・CIOS中央102からの着信動作のための全てのCIOS認証を処理すること。
【0057】
・1つの「実行」(計画/リソースのインポート/計画の適用)のみが所与の実行対象に対して一度に進行中であり得るという規則を実施すること。
【0058】
・宣言的インフラストラクチャプロビジョニング実行中に入力および出力のために使用される宣言的プロビジョニングアーチファクトのためのバイナリアーチファクトストレージを管理すること。入力の例は、宣言型インフラストラクチャプロビジョニング構成ファイルおよび入力状態ファイルである。典型的な出力は最終状態ファイルである。
【0059】
・任意の所与の実行についてCIOSエグゼキュータからの作業を要求し、結果をポーリングすること。
【0060】
いくつかの例では、CIOSフロントエンドは、実際の実行を処理することができる(本明細書では「スケジューラ」とも呼ばれる)CIOSエグゼキュータ206に依存し得る。当該CIOSエグゼキュータは、いくつかの例では、「実行」のレベルで動作し、それは:
・利用可能なワーカーノードのプールを追跡することができる。
【0061】
・入ってくるジョブ要求をクエリし、それらを利用可能な適格なワーカーに割り当てることができる。
【0062】
・クライアントに報告するためにワーカーステータスおよび実行更新を追跡することができる。
【0063】
・リースプロトコルを介してデッドノードを検出し、タスクステータスに応じて、デッドノードに割り当てられたタスクを失敗することができる。
【0064】
・実行をキャンセル/キル/ポーズ/再開するためのファシリティを提供し、それらをファシリティにマッピングして、キャンセル/キル/再開の情報をワーカーノードに渡すことができる。
【0065】
いくつかの例では、CIOSエグゼキュータは、CIOSワーカー(Workers)に依存することができ、CIOSワーカーは、実行のためのタスクをワーカーに割り当てることができ、ワーカーがジョブの進捗を更新するためのファシリティを提供することができる。ワーカーサービスは、「タスク」の粒度で動作する。各ワーカーは、そのワーカーに割り当てられたタスクを実行し、タスクステータスおよび出力を報告するエージェントである。各ワーカーは、
・ 割り当てられた作業項目について、エグゼキュータワーカーAPIをポーリングし、割り当て状態をそのローカル状態と一致させるために、以下のアクションを実行することができる:
・ローカルに存在しないタスク項目をポーリングするためにコンテナを開始すること
・対応する割り当てられたタスク項目を持たないローカルに実行中のコンテナを強制停止すること
・ジョブのステータスを報告することができる。
【0066】
・ジョブコンテナ実行のための入力および出力を行なうことができる。
・実行対象のリリースの実際の作業を行うために宣言型インフラストラクチャプロビジョニングコンテナを起動および監視することができる。
【0067】
CIOSワーカーは、CIOSエグゼキュータからワークをポーリングし、CIOSエグゼキュータのワーカーエンドポイントに結果を報告するために、CIOSエグゼキュータに依存し得る。当該ワーカーは、全ての調整について当該エグゼキュータに依存し得る。加えて、CIOSワーカーは、CIOS地域202に依存することもでき、ここで、当該ワーカーサービスは、地域フロントエンドサービスに関連付けられた1つまたは複数のAPIから入力を読み取り、それに出力を書き込む。入力の例は、構成および開始状態ファイルならびにインポートマッピングである。出力の例は、宣言型プロビジョニングプロセス、出力宣言型プロビジョニング状態ファイル、およびインポート結果状態である。
【0068】
いくつかの例では、CIOS領域202は、CIOSの地域インスタンス/デプロイメントを管理するための地域サービスであり得る。CIOS領域202は、特定の領域に関する計画および状態を信頼できる形で記憶および管理する責任をカバーする。地域DB204は、当該特定の領域における状態および計画のためのCIOS DBであり得る。これは、
図1の中央DB118の領域の部分集合の信頼できるコピーである。スケジューラ206は、ワーカーフリート容量の管理、ワーカーへのタスクの割り当て、およびタスク状態の追跡の責任を負うことができる。いくつかの例では、タスクDB208は、タスク状態のための別のCIOS DBである。このDB内のデータは、主に動作目的のためのものである。加えて、ワーカー210は、宣言的プロビジョニング画像を管理するジャバ仮想マシン(JVMs)のフリートであり得る。これらは、スケジューラ206から命令を受信し、スケジューラ206およびCIOS領域202の両方に結果を通信する。CIOSコンテナ212は、独自のプライベートドッカー214コンテナにおいて宣言的プロビジョニングアクションを実行することができる。このコンテナは、秘密を含む必要はない。加えて、いくつかの例では、署名プロキシ216は、宣言型プロビジョニング画像内に秘密を置くことを回避するために、宣言型プロビジョニングツールを介して秘密の漏出を防止するように構成され得る。代わりに、CIOSは、プロキシにおいて要求署名を実行するか、または相互トランスポート層セキュリティ(mTLS)サービスを開始することができる。これはまた、FIPS準拠暗号ライブラリの使用をより容易にする。
【0069】
いくつかの例では、CIOS中央102は、CIOS領域202を呼び出して、計画を作成し、承認をプッシュし、ジョブ状態(サービスプリンシパル)を監視し、宣言型プロビジョナ状態(サービスプリンシパル)を抽出することができる。入口プロキシ218は、ACLとして構成され得、様々なアイデンティティポリシーが、認証と許可の両方のために使用され得る。代替的に、いくつかの例では、入口プロキシ218は、入ってくる要求、計画などの負荷をバランスさせるように構成された負荷バランサと置き換えられ得る。ある例では、CIOS領域202は、スケジューラ206にそうするように求めることによって宣言型プロビジョナを実行し得る。ワーカー210は、スケジューラ206に何を実行すべきかを尋ねることができ、完了したときにスケジューラ206に状態を報告することができる。ある場合には、mTLSは、CIOS領域202およびワーカー210のための認証と許可の両方を扱うことができる。加えて、ワーカー210が宣言型プロビジョナを実行する必要があるとき、ローカルドッカー214と相互作用することによってドッカコンテナ内でそうする。この段階の認証は、ローカルのユニックスソケットによって処理することができる。ドッカープロトコルは、この最後のステップのために使用され得るが、しかしながら、HTTPSは、以前のHTTPSのために利用され得る。
【0070】
ある実施の形態では、CIOS領域202は、フロック、リリース、インフラストラクチャ構成要素、アーチファクト等に関連付けられた任意の適切なデータを提示するための任意の適切な部分および/または数のユーザインターフェイス(例えば、ユーザインターフェイス500~800)を提供するように構成され得る。ある実施の形態では、CIOS領域202は、任意の適切なインターフェイスを介して、1つまたは複数のリリースに関連付けられたデータを提示し得る。リリースは、1つまたは複数のインフラストラクチャ構成要素に関連付けられたタスク、および/または、1つまたは複数のアプリケーションへの1つまたは複数のコード変更(たとえば、アーチファクト)の任意の適切な組み合せを含み得る。CIOS領域202によって提供されるユーザインターフェイスのいくつかの例は、
図5~13に関して以下で説明される。
【0071】
いくつかの例では、宣言型プロビジョナが様々なCIOSサービスを呼び出しているとみなす間、CIOSコンテナ212は、宣言型プロビジョナが署名プロキシ216と(APIを介して)対話することを可能にする。署名プロキシ216は、宣言型プロビジョナの呼び出しインスタンスごとに、その宣言型プロビジョナにのみ知られる1つのエフェメラルポートをリッスンする。署名プロキシ216は、要求署名またはmTLSを開始することができ、宣言型プロビジョナのコールをサービスエンクレーブ内の他のCIOSサービスに渡すことができる。いくつかの例では、署名プロキシ216はまた、1つまたは複数のパブリックCIOSサービス220と通信することができる。例えば、署名プロキシ216は、可能な場合、パブリックサービスの内部エンドポイントを使用する。内部エンドポイントを持たないサービスの場合、外部エンドポイントに到達するために出口プロキシ222を使用しなければならない。署名プロキシ216のこの使用は、領域間通信のためのものでなくてもよく、例えば、各領域における出口プロキシホワイトリストは、その領域のパブリックIP範囲についてのみであってもよい。いくつかの例では、ワーカー210は、次いで、CIOS領域202内の宣言型プロビジョナから状態およびログを持続することができ、その結果、それらは、CIOS中央102に抽出され得る。
【0072】
CIOSを使用すると、代表的な顧客体験のいくつかの段階がある:オンボーディング、プレリリース、世界的なリリース、および、戦術リリース。プレリリース段階について、以下は、新しいアーチファクトが構築されることと、アーチファクトをリリースして1つ(例えば、R1)をリリースすることとの間で何が起こるかの例である。これは、現在の変更管理プロセスのいくつかまたは大部分を置き換えるべきである。関連するアーチファクトが構築されると、CIOSは、「フロック内の全てのものの最新バージョン」を使用して自動的にリリースを生成することができる。リリースは、特定の入力を有するフロック構成の特定のバージョンである(例えば、アーチファクトバージョン、範囲、領域、および広告)。リリースは、領域ごとの1つのロールフォワード計画と、領域順序付けを記述するメタデータとを含む。各地域計画は、宣言型プロビジョナがその地域におけるフロック構成を実現するために取る動作のセットである。プレリリース環境を有するチームは、CIOSを使用して、前記環境においてソフトウェアを自動的にリリースし、テストすることができる。チームは、ロールバック計画を自動的に試験するようにCIOSを構成することができる。チームは、CIOS UIを通じてリリースを検査し承認することができる。チームは、リリース内の地域計画の全てではないがいくつかを承認することができる。「あらゆるものの最新バージョン」が適切な計画をもたらさなかった場合、チームは、都合の良いアーチファクトバージョンの計画を生成することをCIOSに求めることができる。
【0073】
世界的なリリース段階について、以下は、チームが今日の「通常のCM」の今日のバージョンを実行する方法の例である。いったんリリースが承認されると、CIOSは、各承認された地域計画をそれぞれの地域にプッシュする。CIOSは、承認された計画を適用するために、各領域内で独立して動作する。CIOSは、その領域の計画に明示に記載される一組の動作のみを実行する。「独立して考える」代わりに、それは失敗する。CIOS UIは、チームに実行の進行を示す。CIOS UIは、手動承認が必要とされるときにチームを促す。CIOSまたは下流サービスにおける停止のために実行が失敗した場合、CIOSは、チームに通知することができ、チームに次のステップ(例えば、中止、再試行)を促すことができる。CIOSは、再試行を実行するが、いくつかの下流システムの停止は、再試行に対するその意思を超えるであろう。サービスの健全性の低下または試験の失敗のために実行が失敗した場合、CIOSは、チームがフロックをその開始状態に戻すのを支援する。CIOSは、自動ロールバックを開始するときにチームに通知する(例えば、ページングする)。チームはロールバック計画を承認しなければならず、CIOSはそれを実行する。
【0074】
戦術的リリース段階について、以下は、チームが「緊急CM」の明日のバージョンをどのように実行できるかの例である。計画を生成するとき、チームは、いくつかの方法で、すなわちトポロジー的に(例えば、領域、地域、ADなど)、リソースタイプによって(例えば、「メトリック構成のみ」または「デプロイメント・オーケストレーション・サービス・デプロイメントのみ」など)、または、上記の組み合わせ(例えば、分離的態様)で、特定のリソースで計画を対象にするようにCIOSに求めることができる。チームは、世界的なリリースと同様に戦術的リリースを承認する。CIOSは、それらを同様に編成する。アクティブな世界的なリリースがある間にチームが戦術的リリースをデプロイする必要がある場合、CIOSは、対象とする領域における世界的なリリースの実行を中止し、次いで、戦術的リリースの実行を開始する。
【0075】
いくつかの例では、宣言型プロビジョナの状態(例えば、伝統的には、ファイル)は、宣言型プロビジョナによって管理される一組のリソースの信頼できるレコードである。これは、構成ファイルからの各リソースの論理識別子と、当該リソースの実際の識別子と、の間のマッピングを含む。宣言的プロビジョナがリソースを作成しているとき、ある種の障害は、実際の識別子がその状態で記録されるのを防ぐことができる。これが起こると、実際の識別子は宣言型プロビジョナに対して失われる。これらを「孤立した(orphaned)リソース」と呼ばれ得る。
【0076】
ほとんどのリソースについて、孤立(orphan)は、無駄を表し、宣言型プロビジョナは、(例えば)それが忘れたインスタンスを起動したが、それが次に実行されるときに代わりに別のインスタンスを起動する。一意性の制約またはクライアントが提供した識別子を有するリソースの場合、孤立は宣言型プロビジョナが前進することを防止する。例えば、宣言型プロビジョナがユーザ「nglass」を作成し、失敗がそれを放棄する場合、宣言型プロビジョナの次の実行は、「nglass」を作成しようとし、失敗するであろう。なぜなら、そのユーザ名を有するユーザがすでに存在するからである。場合によっては、孤立は、新しいリソースを状態に加えるときにのみ問題となる。いくつかの事例では、宣言的プロビジョナのリフレッシュ挙動は、更新および削除を記録することの失敗から自然に回復し得る。
【0077】
CIOSは、下流のサービス停止またはCIOS自体の停止の場合にロバストである必要がある。CIOSは、変更を適用するために宣言型プロビジョナを活用することができるので、このことは、宣言型プロビジョナを実行し、宣言型プロビジョナ状態を維持することに関してロバスト性があるはずであることを意味する。宣言型プロビジョニングプロバイダは、数分間続く停止を回避するのに十分な、「小規模」の再試行を実行する。例えば、クラウドプロバイダは、30分まで再試行する。30分より長く続く下流システムの停止は、宣言型プロビジョナを失敗させる。宣言型プロビジョナが失敗すると、それは、その状態で成功裏に行われた全ての変更を記録し、次いで終了する。再試行するために、CIOSは宣言型プロビジョナを再実行しなければならない。宣言型プロビジョナを再実行することはまた、CIOS自体の障害の場合にCIOSが再試行することを可能にする。場合によっては、CIOSは、ループ内で以下の動作を実行することができる:
・リフレッシュ-宣言型プロビジョナは、GET APIをコールして、その状態で記述された全てのリソースの新しいスナップショットを取り出す。
【0078】
・計画-宣言型プロビジョナは、最近リフレッシュされた現在の状態を前提として、所望の状態を実現する計画(具体的な一組のAPIコール)を生成する。
【0079】
・適用-宣言的プロビジョナは、計画におけるステップのセットを実行する。
CIOSは、宣言型プロビジョナを実行するとき、これらのステップの3つ全てを常に実行することができる。リフレッシュ動作は、記録されなかった更新または削除から回復するのに役立つ。CIOSは、計画動作の結果を検査し、それを承認されたリリース計画と比較する。新たに生成された計画が承認されたリリース計画になかった動作を含む場合、CIOSは失敗するかもしれず、サービスチームに通知し得る。
【0080】
図3は、例示的なフロック302を例示するための有向非巡回グラフ(DAG)300を示す。CIOSにおける単一のフロック構成に対する、チェックインからプロダクションへのコード/構成の進行は、最初のテストデプロイメントから最後のプロダクションデプロイメントまでずっと説明され得る。内部的には、CIOSは、進行中の各要素を実行対象(ET)と呼び、これは全て我々の内部のAPIを上回るが、フロック構成には漏出しない。CIOSは、フロック構成で定義されたDAG200に基づいてETを実行する。各ET(例えば、ET-1、ET-2、ET-3、ET-4、ET-5、ET-6、およびET-7)は、おおよそ、当該フロック構成によって記述されるサービスの1つのコピーである。
【0081】
図4は、例示的なフロック402を示すためのDAG400を表わす。フロック構成では、CIOSは、チームがこの進行をどのように表現するかについて非常に頑固であり(opinionated)、それらは、クラウドインフラストラクチャテナンスおよび地域を使用してそれをモデル化しなければならない。チームは、領域を使用して進行をモデル化すべきではない。CIOSは、チームが、領域内の多くのテナンシーおよびテナンシー内の多くの範囲を使用することを可能にする。しかし、CIOSは、チームが(それらは、異なるテナンシーにおいて、領域内で同じ範囲を2回使用するかもしれないけれど)テナンシー内で同じ範囲を2回使用することを可能にしない。DAG400は、テナンシーおよび領域とともに表現される、
図3からのDAG300のバージョンを例示する。この例はオーバーレイサービスに関し、そこでは、事前プロッドETがプロッド領域にある。サービスエンクレーブサービスは、リリース1において不安定かつ安定したテナンシーを有する。DAG400では、IADは、ワシントンD.C.におけるダレス空港の地域空港コードであり、YYZは、オンタリオ州トロントの地域空港コードであり、PHX、LHR、およびFRAは、それぞれ、フェニックス、ロンドン、およびフランクフルトの地域空港コードであり、LUFおよびLFIは、2つの異なる空力ベースのものである。
【0082】
一実施の形態では、本明細書で説明されるCIOSおよび/または他の技術は、Terraform(宣言型プロビジョニングツール)、Tanden(コード生成ツール)、およびオラクル・デプロイメント・オーケストレーター(Oracle Deployment Orchestrator(ODO))のそれぞれに対する改良である。加えて、いくつかの例では、本明細書で説明されるCIOSおよび/または他の技術は、Terraform、Tanden、およびODOツールの少なくとも一部分を使用して実装され得る。
【0083】
図5は、少なくとも1つの実施の形態に従う、アプリケーション(例えば、アプリケーション502)および二次アプリケーション(例えば、サイドカーアプリケーション508)のそれぞれのリポジトリの利用を例示する概略図である。例として、アプリケーション502は、1つまたは複数の構成ファイル(たとえば、構成ファイル506)の任意の適切な組み合わせを記憶するためのリポジトリ504を利用し得る。リポジトリ504は、一組のファイルまたはディレクトリ構造(例えば、アプリケーション502に関連付けられた一組のファイル)のためのメタデータを記憶するデータ構造であり得る。ある実施の形態では、リポジトリ504は、
図1のソースコードバージョン制御管理サービス(SCVMS)104によって管理され得る。SCVMS104は、Gitリポジトリ(または別の適切な分散もしくは集中バージョン制御システムおよび/もしくはソフトウェア)のようなバージョン制御システムの例であり得る。リポジトリ504に含まれるメタデータのいくつかは、とりわけ、リポジトリ504の変化の履歴の記録、一組のコミットされたオブジェクト、コミットされたオブジェクトへの一組の参照等を含み得る。構成ファイル(configuration file)506(簡潔にするために、「構成ファイル(config file)506」とも呼ばれる)は、アプリケーション502のパラメータおよび初期設定を構成するために使用される1つまたは複数のファイルであり得る。ある実施の形態では、構成ファイル506は、アプリケーション502を試験するためのパラメータ、設定、デプロイメントコード、および/またはコードの任意の適切な組み合わせを含み得る。
【0084】
ある実施の形態では、サイドカーアプリケーション508は、アプリケーション502とともに展開されるサポートプロセスまたはサービスである。サイドカーアプリケーション508は、1つまたは複数の構成ファイル(たとえば、構成ファイル512)の任意の適切な組み合わせを記憶するためのリポジトリ510を利用し得る。リポジトリ510は、一組のファイルまたはディレクトリ構造(例えば、アプリケーション502に関連付けられた一組のファイル)のためのメタデータを記憶するデータ構造であり得る。ある実施の形態では、リポジトリ510はまた、
図1のソースコードバージョン制御管理サービス(SCVMS)104(または別のバージョン制御ソフトウェアおよび/またはシステム)によって管理され得る。構成(configuration)ファイル512(簡潔にするために、「構成(config)ファイル512」とも呼ばれる)は、サイドカーアプリケーション508のためのパラメータおよび初期設定を構成するために使用される1つまたは複数のファイルであり得る。ある実施の形態では、構成ファイル512は、アプリケーション502を試験するためのパラメータ、設定、デプロイメントコード、および/またはコードの任意の適切な組み合わせを含み得る。ある実施の形態では、変更は、構成ファイル(例えば、構成ファイル512)のいずれか(または両方)に行われ得る。これらの変更は、構成コード変更(例えば、コード変更514、サイドカーアプリケーション508の1つまたは複数の構成ファイルに対して行われた変更)、デプロイメントコード変更516(例えば、サイドカーアプリケーション508をデプロイするためのコードに対する変更)、および/または、テストコード変更518(例えば、サイドカーアプリケーション508をテストするためのコードに対する変更)の任意の適切な組み合わせを含み得る。
【0085】
ある実施の形態によれば、アプリケーション502は、サイドカーアプリケーション508によって提供されるデータおよび/または機能に依存し得る。従来、変更514~518が存在する場合、サイドカーアプリケーション508が様々な環境で展開された態様に影響を及ぼす更新を手動で行う必要がある。変更514~518は、自動的に検出および/または適用されない。これは、アプリケーション502がサイドカーアプリケーション508によって提供されるデータおよび/または機能に依存する場合、デプロイメントにおいて様々な問題を引き起こし得る。変更514~518が適用されないとき(例えば、デプロイメントがサイドカーアプリケーション508のより古いバージョンを利用しているとき)、サイドカーアプリケーション508の変更されていないバージョンによって提供されるデータおよび/または機能は、不正確であり得、破損しているかもしれず、またはそうでなければ、利用不可能である/信頼できない、かもしれない。
【0086】
この問題を修正するために、リポジトリ504の構成ファイル506は、リポジトリ510の構成ファイル512への参照を含み得る。
図6は、ある実施の形態による、別のアプリケーションのデータリポジトリへの参照を含む1つのアプリケーション(例えば、アプリケーション502)のコードセグメント600の例を示す。上述のように、
図5のリポジトリ504およびリポジトリ510は、アプリケーション502およびサイドカーアプリケーション508に関連付けられたそれぞれのコードを記憶するために使用される別個のリポジトリであり得る。これらのリポジトリは、別々に維持されてもよく(例えば、
図1のSCVMS104による)、一方への変更は他方に影響を与えなくてもよい。しかしながら、あるアプリケーション(例えば、アプリケーション502)が、別のアプリケーション(例えば、サイドカーアプリケーション508)に対応するデータおよび/または機能に依拠し得る事例では、参照(例えば、ステートメント602)は、別のリポジトリ(例えば、
図5のリポジトリ510)を参照するアプリケーション(例えば、アプリケーション502)に関連付けられるコード内に配置され得る。
【0087】
ある実施の形態では、ステートメント602は、Gitサブモジュールを参照することができる(例えば、ステートメント602を利用する)。gitサブモジュールは、別の外部リポジトリ(例えば、
図5のリポジトリ510)内の特定のコミットを指し示すホストgitリポジトリ(例えば、
図5のリポジトリ504)内のレコードである。サブモジュールを(例えば、ステートメント602を使用して)リポジトリに追加すると、当該サブモジュールに関するメタデータを含む新しい.gitmodulesファイルが作成される。ステートメント602が実行されると、SCVMS104は、リポジトリ(例えば、リポジトリ510)の現在の状態が確認され得るように、サブモジュールをクローン化し得る。リポジトリの現在の状態から、コード変更(たとえば、
図5の、コード変更514、デプロイメントコード変更516、および/または、テストコード変更518)の任意の適切な組み合わせが存在することが識別され得る。これらの変更は、サイドカーアプリケーション508のコードの現在のバージョンが利用され得るように、アプリケーション502およびサイドカーアプリケーション508をデプロイするときに利用され得る。
【0088】
図7は、少なくとも1つの実施の形態に従う、サイドカーアプリケーションに関連付けられたコード変更を取得するための方法700を記述するフロー図である。方法700の実行に先立って、
図5のリポジトリ504および510が作成されており、
図1のSCVMS104がリポジトリ504および510を維持するように構成されていると仮定する。
【0089】
706において、ユーザ装置702は、
図5のアプリケーション502に関連付けられたリポジトリ504からのコードをチェックアウトするために利用され得る。ある実施の形態では、チェックアウトされたコードは、アプリケーション502に関連付けられた1つまたは複数の構成ファイルを含み得る。
【0090】
708において、ユーザ装置702は、サイドカーアプリケーションに関連付けられたデータリポジトリへの参照を挿入するために利用され得る。例として、ステートメント602は、アプリケーション502の1つまたは複数の構成ファイルに追加され得る。
【0091】
710において、当該参照は、チェックイン時に、
図5のアプリケーション502に関連付けられたデータリポジトリ(たとえば、gitリポジトリ)であるリポジトリ504内に記憶され得る。リポジトリ502は、SCVMS104によって維持され得る。
【0092】
712において、変更監視サービス114は、変更についてSCVMS104にポーリングすることができ、または代替的に、SCVMS104は、710において行われた変更を変更監視サービス114に報告し得る。
【0093】
714において、変更監視サービス114は、SCVMS104からステートメント602を取得し、ステートメント602を非参照にして、サイドカーアプリケーション(たとえば、サイドカーアプリケーション508)に関連付けられた1つまたは複数のファイルを識別することができる。
【0094】
716において、変更監視サービス114は、サイドカーアプリケーション(例えば、サイドカーアプリケーション508)に対して行われた変更についてSCVMS104にポーリングし得る。変更監視サービス114は、リポジトリ504内の参照を含むファイルの最後のチェックイン以降、当該サイドカーアプリケーションに変更がなされていないと判定し得る。この判定に従って、変更監視サービス114は処理を終了し得る。
【0095】
718において、ユーザ装置704は、
図5のサイドカーアプリケーション508に関連付けられたリポジトリ510からのコードをチェックアウトするために利用され得る。いくつかの形態では、当該チェックアウトされたコードは、サイドカーアプリケーション508に関連付けられた1つまたは複数の構成ファイルを含み得る。ある実施の形態では、チェックアウトされたコードは、構成コードセグメント、サイドカーアプリケーション508が展開される方法を記述するコードセグメント、および/または、サイドカーアプリケーション508がテストされる方法を識別するコードセグメントを含み得る。
【0096】
720において、ユーザ装置704は、サイドカーアプリケーション508の構成、デプロイメント、および/またはテストに対応する任意の適切な数のコードセグメントを修正するために利用され得る。
【0097】
722において、コード参照は、チェックイン時に、リポジトリ210、すなわち
図5のサイドカーアプリケーション508に関連付けられたデータリポジトリ(たとえば、ギットリポジトリ)内に記憶され得る。リポジトリ510は、SCVMS104によって維持され得る。
【0098】
724において、変更監視サービス114は、変更についてSCVMS104にポーリングすることができ、または代替的に、SCVMS104は、722において行われた変更を変更監視サービス114に報告し得る。図示されていないが、ある実施の形態では、変更監視サービス114は、参照がリポジトリ504に存在するコードに変更が行われたことを識別し得る。いったん識別されると、変更監視サービス114は、CIOSによって提供される任意の後続のデプロイメントのために、サイドカーアプリケーションの修正されたバージョンがアプリケーション502とともに展開されるように、更新を引き起こすための任意の適切な動作を実行し得る。加えてまたは代替的に、方法700は726に進み得る。
【0099】
726において、ユーザ装置702は、
図5のアプリケーション502に関連付けられたリポジトリ504からのコードをチェックアウトするために利用され得る。ある実施の形態では、当該チェックアウトされたコードは、アプリケーション502に関連付けられた1つまたは複数の構成ファイルを含み得る。例として、当該チェックアウトされたコードは、ステートメント602を含む1つまたは複数のファイルを含み得る。
【0100】
728において、ユーザ装置702は、チェックアウトされたコードに1つまたは複数の変更を行うために利用され得る。
【0101】
730において、チェックアウトコード(および728において行われた対応する変更)は、チェックイン時に、リポジトリ504、すなわち、
図5のアプリケーション502に関連付けられたデータリポジトリ(たとえば、gitリポジトリ)に記憶され得る。
【0102】
732において、変更監視サービス114は、変更についてSCVMS104にポーリングすることができ、または代替的に、SCVMS104は、730において行われた変更を変更監視サービス114に報告し得る。
【0103】
734において、変更監視サービス114は、SCVMS104から参照(たとえば、ステートメント602)を取得し、サイドカーアプリケーション(たとえば、サイドカーアプリケーション508)に関連付けられた1つまたは複数のファイルを識別するために、ステートメント602を逆参照(dereference)し得る。
【0104】
736において、変更監視サービス114は、サイドカーアプリケーション(例えば、サイドカーアプリケーション508)に対して行われた変更についてSCVMS104にポーリングし得る。
【0105】
738で、変更監視サービス114は、722で行われた変更がアプリケーション502の以前のチェックイン(例えば、710で行われるチェックイン、ステートメント602を含む1つまたは複数のファイルのチェックイン)の後に生じたと判定し得る。この判定に従って、変更監視サービス114は、サイドカーアプリケーションの変更されたバージョン(例えば、722で行われた変更を含む)が、CIOSによって提供される任意の後続のデプロイメントのためにアプリケーション502と並んで展開されるように、更新を引き起こすための任意の適切な動作を実行し得る。その後、方法700は終了し得る。
【0106】
図8は、少なくとも1つの実施の形態に従う、サイドカーアプリケーション(例えば、
図5のサイドカーアプリケーション508)に対して行われた変更を示す例示的なユーザインターフェイス(例えば、UI800)を示す概略図である。ある実施の形態では、ユーザインターフェイス800は、738において変更監視サービス114によって実行される動作の一部として、
図7のユーザ装置704のユーザに提供され得る。
【0107】
UI800は、実行タスクリスト802を含むことができ、これはUI800上の任意の適切な場所に配置されることができ、図示されるように、実行タスクリスト802はUI800の最上部にある。実行タスク802は、実行対象に関連付けられたソフトウェアリソース(例えば、
図5のアプリケーション502の構成コード)を第1の状態から第2の状態に修正することに対応し得る。ある実施の形態では、UI800は、それらのソフトウェアリソースに対して行われる一組の変更を提示するために利用され得る。図示されるように、実行タスクリスト802は、ターゲット(例えば、「不安定」とラベル付けされる)に対応する実行タスク804を含み、それは、選択されると、モジュール806を表示することができ、それは、次に選択されると、(図示されるように「app_deployment」とラベル付けされる)モジュール808を表示することができ、それは、選択されると、モジュール810を表示することができる。実行対象1304は、実行タスク804に対応する任意の適切な数のモジュールおよび/またはアプリケーションデプロイメントを表示することができる。複数のモジュールを有する実施の形態では、当該モジュールは、作成動作、更新動作、削除動作、または変更なし動作の降順に、列挙され得る。例として、モジュール806~810は、最高数の作成物を有するモジュールがリストの最上部にリストされ得、残りのタスクが、各タスクの対応する作成動作の数に従って降順で表示され得るように、表示され得る。ある実施の形態では、モジュール806~810は、異なって(例えば、昇順で、または、モジュール806~810を編成するための任意の他の適切な方法で)編成され得る。ある実施の形態では、モジュール810が選択されると、UI800は、ログ812およびタスク804に対応する任意の他の適切な情報を提示し得る。
【0108】
ログ812は、UI800上の任意の適切な場所に提示され得る。ログ812は、(例えば、
図5のサイドカーアプリケーション508に対応する)モジュール810に対応するアプリケーションコードに行われた変更に関する情報を提示することができる。例えば、行814は、追加されたコードの行を示すことができ、一方で、行816は、行814で置き換えられている削除されたコードの行を示し得る。ある実施の形態では、ライン814(および/または、追加されるコードの任意の部分)は、追加されるコードの1つまたは複数のラインを識別するために適切な緑色の背景または任意の他の色の背景とともに表示され得る。行816(例えば、または、削除されるコードの任意の部分)は、削除されるべきコードの1つまたは複数の行を識別するのに適した任意の他の色の背景のうちの赤色の背景とともに表示され得る。
【0109】
UI800を使用して、ユーザは、タスクの各部分について各々計画されたコード変更を見ることを可能にされ得る。ある実施の形態では、ユーザは、各変更を承認または拒否し得る。したがって、UI800は、ユーザが様々な変更を承認または拒否することができるように、サイドカーアプリケーションに対して行われた変更を見るために、ユーザ(例えば、
図5のアプリケーション502に関連付けられたユーザ)によって利用され得る。UI800を介して、ユーザは、アプリケーション502のデプロイメントにおいて利用されるサイドカーアプリケーションの特定のバージョンに対する制御を提供される。加えて、ユーザは、サイドカーアプリケーションに関連付けられた構成、デプロイメント、および/または、試験の特定の詳細への目に見えるアクセスを有し、したがって、ユーザは、アプリケーション502の特定の構成を用いてサイドカーアプリケーション508を利用することに関する修正および/または通知された決定を行うことができる。
【0110】
図9は、少なくとも1つの実施の形態に従う、ユーザ入力に従ってコンピュータ・インフラストラクチャ・オーケストレーション・サービスによって第1のサービスへの変更を実施するための方法900のフローチャートである。方法900は、
図1のCIOS中央102によって実行され得る。図示されるように、方法900は、いくつかの動作を含む。しかしながら、方法900は、
図9に提供されるよりも多いまたは少ない動作を含み得る。これらの動作は、任意の適切な順序で実行され得る。
【0111】
ブロック902において、コンピュータシステムは、宣言的命令(例えば、所望の状態を取得するための制御フローを記述することなく、デプロイメントの当該所望の状態を宣言する構成ファイル)に少なくとも部分的に基づいて、複数のインフラストラクチャリソースおよび複数のアーチファクトをデプロイするために宣言的インフラストラクチャプロビジョナ(例えば、
図2のCIOS領域202)を管理し得る。CIOS領域202は、コンポーネントおよびコンポーネントがどのように相互作用するかを記述する宣言型ファイルを使用して、リソースをプロビジョニングし得る。構成ファイルは、要素を作成するために必要とされるリソースおよび関連フィールドを記述することができ、次いで、前に記述された要素を参照する他の要素を記述することができる。いくつかの例では、プロビジョニングツールは、次いで、構成ファイルに記述される要素を作成および管理するためのワークフローを生成することができる。ある実施の形態では、宣言型インフラストラクチャプロビジョナは、Terraform、すなわち、インフラストラクチャコンポーネントを構築し、変更し、バージョンアップするためのツールに従ってフォーマットされた宣言型ステートメントを利用し得る。
【0112】
ブロック904において、CIOS中央102は、第1のサービス(例えば、
図5のサイドカーアプリケーション508への変更)に対する第1の修正を(例えば、
図1の変更監視サービス114によって)検出できる。ある実施の形態では、第1のサービスは、複数のインフラストラクチャリソースのうちの少なくとも1つのインフラストラクチャリソースを含む。第1のサービスは、当該第1のサービスに対する修正を実行するために第1の分散バージョン制御リポジトリ(例えば、
図5のリポジトリ510)を利用することができる。
【0113】
ブロック906において、CIOS中央102(たとえば、変更監視サービス114)は、第2のサービスの構成データが第1のサービスを参照することを確認し得る。例として、変更監視サービス114は、アプリケーション(例えば、
図5のアプリケーション502)に関連付けられた構成ファイル内のコードセグメント600を検出し得る。
【0114】
ブロック908において、CIOS中央102(例えば、変更監視サービス114)は、第2のサービス(例えば、アプリケーション502に関連付けられた構成ファイルのチェックイン)に対する第2の修正を検出する。ある実施の形態では、第2のサービスは、当該第2のサービスに対する修正を実行するために第2の分散バージョン制御リポジトリ(
図5のリポジトリ504)を利用する。
【0115】
ブロック910において、第2のサービスに対する第2の修正を識別し、第2のサービスが第1のサービスを参照することを識別したことに応答して、CIOS中央102は、グラフィカルインターフェイス(例えば、
図1のビュー/計画/承認サービス112によって提供されるUI800)を介して、第1のサービスに対する第1の修正を含む変更を提示し得る。
【0116】
ブロック912において、第1のサービスに対する第1の修正を含む変更の受諾または拒否を示すユーザ入力が、(たとえば、UI800を介して)受信され得る。
【0117】
ブロック914において、第1のサービスへの変更は、ユーザ入力に従ってCIOS中央102によって実施され得る。例として、CIOS中央102は、サイドカーアプリケーション508が、修正されたときに、後続のデプロイメント(例えば、CIOS領域202によって実行されるデプロイメント)においてアプリケーション502と並んで展開されることを保証するために、任意の適切な動作を実行し得る。
【0118】
例示的なシステム
図10~
図12は、様々な実施の形態に従う、本開示の態様を実施するための例示的な環境の態様を示す。
図10は、本開示の実施の形態を実装するための分散システム1000の簡略図を示す。図示された実施の形態では、分散システム1000は、1つまたは複数のクライアントコンピューティング装置1002,1004,1006および1008を含み、これらは、1つまたは複数のネットワーク1010を介して、ウェブブラウザ、プロプライエタリクライアント(たとえば、オラクル・フォームズ(Oracle Forms))のようなクライアントアプリケーションを実行し動作させるように構成されている。サーバ1012は、ネットワーク1010を介して、クライアントコンピューティング装置1002,1004,1006および1008と通信可能に結合され得る。
【0119】
様々な実施の形態では、サーバ1012は、識別管理サービスを提供するサービスおよびアプリケーションのような1つまたは複数のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。ある実施の形態では、サーバ1012はまた、他のサービスを提供することができ、または、ソフトウェアアプリケーションは、非仮想のおよび仮想の環境を含み得る。ある実施の形態では、これらのサービスは、クライアントコンピューティング装置1002,1004,1006および/または1008のユーザに、ウェブベースの若しくはクラウドのサービスとして、またはサービスとしてのソフトウェア(SaaS)モデルの下で提供され得る。クライアントコンピューティング装置1002,1004,1006および/または1008を操作するユーザは、次いで、サーバ1012と相互作用するための1つまたは複数のクライアントアプリケーションを利用して、これらの構成要素によって提供されるサービスを利用し得る。
【0120】
図10に示される構成では、システム1000のソフトウェアコンポーネント1018,1020および1022は、サーバ1012上に実装されているものとして示されている。他の実施の形態では、システム1000の構成要素および/またはこれらの構成要素によって提供されるサービスのうちの1つ以上はまた、クライアントコンピューティング装置1002,1004,1006および/または1008のうちの1つまたは複数によって実装され得る。クライアントコンピューティング装置を操作するユーザは、その後、これらの構成要素によって提供されるサービスを使用するために、1つまたは複数のクライアントアプリケーションを利用することができる。これらの構成要素は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実装され得る。分散システム1000とは異なり得る様々な別個のシステム構成が可能であることが理解されるべきである。
図10に示される実施の形態は、したがって、実施の形態のシステムを実装するための分散システムの一例であり、限定することを意図しない。
【0121】
クライアントコンピューティング装置1002,1004,1006および/または1008は、様々なタイプのコンピューティングシステムを含み得る。たとえば、クライアントコンピューティング装置は、Microsoft Windows Mobile(登録商標)のようなソフトウェアを実行するポータブルハンドヘルド装置(例えば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))またはウェアラブル装置(例えば、グーグルグラス(登録商標)ヘッドマウントディスプレイ)、および/またはiOS、Windows Phone、Android(登録商標)、BlackBerry 10、Palm OSなどの様々なモバイルオペレーティングシステムを含み得る。当該装置は、様々なインターネット関連アプリ、電子メール、ショートメッセージサービス(SMS)アプリケーションのような様々なアプリケーションをサポートすることができ、様々な他の通信プロトコルを使用し得る。クライアントコンピューティング装置はまた、例として、マイクソフト・ウインドウズ(登録商標)、アップルマッキントッシュ(登録商標)、および/またはLinux(登録商標)オペレーティングシステムの様々なバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む、汎用のパーソナルコンピュータを含み得る。クライアントコンピューティング装置は、限定はしないが、たとえばグーグル・クロームOSのような様々なGNU/Linux(登録商標)オペレーティングシステムを含む、様々な市販のUNIX(登録商標)またはUNIXのようなオペレーティングシステムのいずれかを実行するワークステーションコンピュータであり得る。クライアントコンピューティング装置はまた、ネットワーク1010を介して通信することができる、シンクライアントコンピュータ、インターネット対応ゲームシステム(例えば、Kinect(登録商標)ジェスチャー入力装置を有する又は有さないマイクロソフトXboxゲームコンソールである)、および/または、パーソナルメッセージング装置等の電子装置を含み得る。
【0122】
図10の分散システム1000は、4つのクライアントコンピューティング装置とともに示されているが、任意の数のクライアントコンピューティング装置がサポートされ得る。センサを有する装置のような他の装置は、サーバ1012と対話することができる。
【0123】
分散システム1000におけるネットワーク1010は、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、AppleTalkなどを含むがこれらに限定されない、様々な利用可能なプロトコルのいずれかを使用してデータ通信をサポートすることができる、当業者によく知られている任意のタイプのネットワークであり得る。単なる例として、ネットワーク1010は、ローカルエリアネットワーク(LAN)、イーサネット(登録商標)に基づくネットワーク、トークンリング、広域ネットワーク、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(例えば、IEEE(Institute of Electrical and Electronics)1002.16プロトコルスイート、Bluetooth(登録商標)、および/または、任意の他の無線プロトコル)のいずれかの下で動作するネットワーク)、および/又は、これらのおよび/又は他のネットワークの任意の組み合わせであり得る。
【0124】
サーバ1012は、1つまたは複数の汎用コンピュータ、専用のサーバコンピュータ(例として、PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、または任意の他の適切な構成および/もしくは組み合わせから構成され得る。サーバ1012は、仮想オペレーティングシステムを実行する1つまたは複数の仮想マシン、または、仮想化を含む他のコンピューティングアーキテクチャを含み得る。論理ストレージ装置の1つまたは複数のフレキシブルプールは、サーバ用の仮想ストレージ装置を維持するために、仮想化され得る。仮想ネットワークは、ソフトウェアで定義されるネットワーキングを使用してサーバ1012によって制御され得る。種々の実施の形態では、サーバ1012は、前述の開示で説明される1つまたは複数のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。例えば、サーバ1012は、本開示の実施の形態に従う、上記で説明されるような処理を実行するためのサーバに対応し得る。
【0125】
サーバ1012は、上で論じたもののいずれかを含むオペレーティングシステム、および、市販されている任意のサーバオペレーティングシステムを実行することができる。サーバ1012はまた、HTTP(ハイパーテキストトランスポートプロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバ等を含む様々な追加のサーバアプリケーション、および/または、ミッドティアアプリケーションのいずれかを実行し得る。データベースサーバの例としては、オラクル、マイクロソフト、Sybase、IBM(インターナショナル・ビジネスマシーン)等から市販されているものが挙げられるが、これらに限定されない。
【0126】
いくつかの実施形態では、サーバ1012は、クライアントコンピューティング装置1002,1004,1006および1008のユーザから受信されたデータフィードおよび/またはイベント更新を分析および統合するための1つまたは複数のアプリケーションを含み得る。一例として、データフィードおよび/またはイベント更新は、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車トラフィック監視等に関連付けられたリアルタイムイベントを含み得る、1つまたは複数の第三者情報ソースおよび連続データストリームから受信されたTwitter(登録商標)フィード、Facebook(登録商標)更新、または、リアルタイム更新を含み得るが、それらに限定されない。サーバ1012はまた、クライアントコンピューティング装置1002,1004,1006および1008の1つまたは複数の表示装置を介してデータフィードおよび/またはリアルタイムイベントを表示するための1つまたは複数のアプリケーションを含み得る。
【0127】
分散システム1000はまた、1つまたは複数のデータベース1014および1016を含み得る。これらのデータベースは、ユーザ識別情報のような情報、および本開示の実施の形態によって使用される他の情報を記憶するための機構を提供し得る。データベース1014および1016は、様々な場所に存在し得る。例として、データベース1014および1016のうちの1つまたは複数は、サーバ1012にローカルな(および/または常駐する)非一時的な記憶媒体上に常駐し得る。代替的に、データベース1014および1016は、サーバ1012から遠隔にあってもよく、ネットワークベースのまたは専用の接続を介してサーバ1012と通信し得る。一組の実施の形態では、データベース1014および1016は、ストレージエリアネットワーク(SAN)内に常駐し得る。同様に、サーバ1012に帰属する機能を実行するための任意の必要なファイルは、適宜、サーバ1012上にローカルに、および/またはリモートに、記憶され得る。一組の実施の形態では、データベース1014および1016は、SQLフォーマットコマンドに応答してデータを記憶、更新、および検索するように適合される、オラクル社によって提供されるデータベースのようなリレーショナルデータベースを含み得る。
【0128】
図11は、本開示の実施の形態を実施するために使用され得る例示的なコンピュータシステム1100を示す。ある実施の形態では、コンピュータシステム1100は、上記で説明される種々のサーバおよびコンピュータシステムのうちのいずれかを実装するために使用され得る。
図11に示されるように、コンピュータシステム1100は、バスサブシステム1102を介していくつかの周辺サブシステムと通信する処理サブシステム1104を含む種々のサブシステムを備える。これらの周辺サブシステムは、処理加速ユニット1106、I/Oサブシステム1108、記憶サブシステム1118、および通信サブシステム1124を含み得る。記憶サブシステム1118は、有形のコンピュータ読み取り可能な記憶媒体1122およびシステムメモリ1110を含み得る。
【0129】
バスサブシステム1102は、コンピュータシステム1100の種々の構成要素およびサブシステムを意図されるように相互に通信させるための機構を提供する。バスサブシステム1102は、単一のバスとして概略的に示されるが、当該バスサブシステムの代替の実施の形態は、複数のバスを利用し得る。バスサブシステム1102は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用するローカルバスを含む、いくつかのタイプのバス構造のいずれかであり得る。たとえば、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオエレクトロニクス標準協会(VESA)ローカルバス、および、IEEEP1386.1規格に従って製造されたメザニンバスなどとして実装され得る周辺構成要素インターコネクト(PCI)バス等を含み得る。
【0130】
処理サブシステム1104は、コンピュータシステム1100の動作を制御し、1つまたは複数の処理ユニット1132、1134等を備え得る。処理ユニットは、シングルコアまたはマルチコアプロセッサを含む1つまたは複数のプロセッサ、プロセッサの1つまたは複数のコア、またはそれらの組み合わせを含み得る。ある実施の形態では、処理サブシステム1104は、グラフィックスプロセッサ、デジタル信号プロセッサ(DSP)等のような1つまたは複数の専用のコプロセッサを含むことができる。ある実施の形態では、処理サブシステム1104の処理ユニットのいくつかまたは全ては、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)のようなカスタマイズされた回路を使用して実装され得る。
【0131】
ある実施の形態では、処理サブシステム1104内の処理ユニットは、システムメモリ1110内またはコンピュータ読み取り可能な記憶媒体1122上に記憶された命令を実行することができる。様々な実施の形態において、処理ユニットは、様々なプログラム又はコード命令を実行することができ、同時に実行される複数のプログラム又はプロセスを維持することができる。任意の所与の時点で、実行されるプログラムコードのいくつかまたは全ては、システムメモリ1110内に、および/または潜在的に1つまたは複数の記憶装置上を含むコンピュータ読み取り可能な記憶媒体1110上に常駐することができる。適切なプログラミングを通じて、処理サブシステム1104は、使用パターンに応じてドキュメント(例えば、ウェブページ)を動的に修正するための上述の様々な機能を提供することができる。
【0132】
ある実施の形態では、処理加速ユニット1106は、コンピュータシステム1100によって実行される全体的な処理を加速するように、カスタマイズされた処理を実行するために、または、処理サブシステム1104によって実行される処理のいくつかをオフロードするために提供され得る。
【0133】
I/Oサブシステム1108は、コンピュータシステム1100に情報を入力するため、および/または、コンピュータシステム1100から、またはそれを介して情報を出力するための装置および機構を含み得る。概して、「入力装置」という用語の使用は、情報をコンピュータシステム1100に入力するための全ての可能なタイプの装置および機構を含むことが意図されている。ユーザインターフェイス入力装置は、例えば、キーボード、マウスまたはトラックボールのようなポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを備えた音声入力装置、マイクロフォン、および他のタイプの入力装置を含み得る。ユーザインターフェイス入力装置はまた、ユーザが入力装置を制御し、それと対話することを可能にするマイクロソフトKinect(登録商標)モーションセンサ、マイクロソフトXbox(登録商標)360ゲームコントローラ、ジェスチャおよび発話コマンドを使用して入力を受信するためのインターフェイスを提供する装置のような、モーション感知および/またはジェスチャ認識装置を含み得る。ユーザインターフェイス入力装置はまた、ユーザから眼の活動(例えば、写真を撮っている間および/またはメニュー選択を行っている間の「まばたき」)を検出し、入力装置(例えば、グーグルグラス(登録商標))への入力として眼のジェスチャを変換する、グーグルグラス(登録商標)まばたき検出器のような眼のジェスチャ認識装置を含み得る。加えて、ユーザインターフェイス入力装置は、ユーザが音声コマンドを通して音声認識システム(例えば、Siri(登録商標)ナビゲータ)と相互作用することを可能にする、音声認識感知装置を含み得る。
【0134】
ユーザインターフェイス入力装置の他の例は、限定はしないが、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびに、スピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカメラ、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザ距離計、および視線追跡装置のようなオーディオ/ビジュアル装置を含む。加えて、ユーザインターフェイス入力装置は、例えば、コンピュータ断層撮影、磁気共鳴撮像、陽電子放出断層撮影、医療超音波検査装置のような医療画像入力装置を含み得る。ユーザインターフェイス入力装置はまた、例えば、MIDIキーボード、デジタル楽器等のオーディオ入力装置を含み得る。
【0135】
ユーザインターフェイス出力装置は、ディスプレイサブシステム、インジケータライト、またはオーディオ出力装置のような非視覚的ディスプレイを含み得る。当該ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するようなフラットパネル装置、投影装置、タッチスクリーンなどであり得る。概して、「出力装置」という用語の使用は、コンピュータシステム1100からユーザまたは他のコンピュータに情報を出力するための全ての可能なタイプの装置および機構を含むことが意図される。たとえば、ユーザインターフェイス出力装置は、限定はしないが、モニタ、プリンタ、スピーカー、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力装置、およびモデムのような、テキスト、グラフィックス、および音声/映像情報を視覚的に伝達する様々な表示装置を含み得る。
【0136】
記憶サブシステム1118は、コンピュータシステム1100によって使用される情報を記憶するためのリポジトリまたはデータストアを提供する。記憶サブシステム1118は、ある実施の形態の機能を提供する基本プログラミングおよびデータ構造を記憶するための有形の非一時的なコンピュータ読み取り可能な記憶媒体を提供する。処理サブシステム1104によって実行されると上述の機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、記憶サブシステム1118に記憶され得る。ソフトウェアは、処理サブシステム1104の1つまたは複数の処理ユニットによって実行され得る。記憶サブシステム1118はまた、本開示に従って使用されるデータを記憶するためのリポジトリを提供し得る。
【0137】
記憶サブシステム1118は、揮発性および不揮発性メモリ装置を含む、1つまたは複数の非一時的メモリ装置を含み得る。
図11に示されるように、記憶サブシステム1118は、システムメモリ1110と、コンピュータ読み取り可能な記憶媒体1122とを含む。システムメモリ1110は、プログラム実行中に命令およびデータを記憶するための揮発性のメインランダムアクセスメモリ(RAM)と、固定命令が記憶される不揮発性の読取専用メモリ(ROM)またはフラッシュメモリとを含む、いくつかのメモリを含み得る。いくつかの実施形態では、起動中のようにコンピュータシステム1100内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム(BIOS)がROMに記憶され得る。RAMは、処理サブシステム1104によって現在動作および実行されているデータおよび/またはプログラムモジュールを含み得る。いくつかの実施形態では、システムメモリ1110は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)のような、複数の異なるタイプのメモリを含み得る。
【0138】
限定ではなく例として、
図11に示されるように、システムメモリ1110は、クライアントアプリケーション、ウェブブラウザ、ミッドティアアプリケーション、リレーショナルデータベース管理システム(RDBMS)等を含み得るアプリケーションプログラム1112と、プログラムデータ1114と、オペレーティングシステム1116とを記憶し得る。例として、オペレーティングシステム1116は、様々なバージョンのマイクロソフトウインドウズ(登録商標)、アップルマッキントッシュ(登録商標)、および/またはLinux(登録商標)オペレーティングシステム、様々な市販のUNIX(登録商標)または(様々なGNU・Linuxオペレーティングシステム、グーグル・クローム(登録商標)OS等を含むが、これらに限定されない)UNIXのようなオペレーティングシステム、および/またはiOS、ウインドウズ(登録商標)Phone、アンドロイド(登録商標)OS、ブラックベリー(登録商標)10 OS、およびパーム(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムを含み得る。
【0139】
コンピュータ読み取り可能な記憶媒体1122は、ある実施の形態の機能を提供するプログラミングおよびデータ構造を記憶し得る。処理サブシステム1104によって実行されるとプロセッサが上述の機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、記憶サブシステム1118に記憶され得る。例として、コンピュータ読み取り可能な記憶媒体1122は、ハードディスクドライブ、磁気ディスクドライブ、CDROM、DVD、ブルーレイ(登録商標)ディスクのような光ディスクドライブ、または、他の光媒体のような不揮発性メモリを含み得る。コンピュータ読み取り可能な記憶媒体1122は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含み得るが、これらに限定されない。コンピュータ読み取り可能な記憶媒体1122はまた、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROM等の不揮発性メモリに基づくソリッドステートドライブ(SSD)と、ソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSDのような揮発性メモリに基づくSSDと、DRAMおよびフラッシュメモリベースのSSDの組み合わせを使用するハイブリッドSSDを含み得る。コンピュータ可読媒体1122は、コンピュータシステム1100のための、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、および他のデータの記憶を提供し得る。
【0140】
ある実施の形態では、記憶サブシステム1100はまた、コンピュータ読み取り可能な記憶媒体1122にさらに接続され得るコンピュータ読み取り可能な記憶媒体リーダ1120を含み得る。システムメモリ1110と共に、または任意選択で組み合わせて、コンピュータ読み取り可能な記憶媒体1122は、コンピュータ読み取り可能な情報を記憶するための、リモートにある、ローカルの、固定された、および/または、記憶媒体を加えた着脱可能な記憶装置を包括的に表し得る。
【0141】
ある実施の形態では、コンピュータシステム1100は、1つまたは複数の仮想マシンを実行するためのサポートを提供し得る。コンピュータシステム1100は、仮想マシンの構成および管理を容易にするためのハイパーバイザのようなプログラムを実行し得る。各仮想マシンは、メモリ、コンピュータ(例えば、プロセッサ、コア)、I/O、およびネットワーキングリソースに割り当てられ得る。各仮想マシンは、コンピュータシステム1100によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同じであり得るまたは異なり得る独自のオペレーティングシステムを実行し得る。したがって、複数のオペレーティングシステムは、潜在的に、コンピュータシステム1100によって同時に実行され得る。各仮想マシンは、概して、他の仮想マシンから独立して動作する。
【0142】
通信サブシステム1124は、他のコンピュータシステムおよびネットワークへのインターフェイスを提供する。通信サブシステム1124は、コンピュータシステム1100から他のシステムからデータを受信し、かつ、他のシステムにデータを送信するためのインターフェイスとして機能する。例えば、通信サブシステム1124は、コンピュータシステム1100が、1つまたは複数のクライアント装置との間で情報を送受信するために、インターネットを介して1つまたは複数のクライアント装置への通信チャネルを確立することを可能にし得る。加えて、通信サブシステム1124は、成功したログインの通知を、または、特権アカウントマネージャから要求側ユーザに対する、パスワードを再入力するための通知を通信するために使用され得る。
【0143】
通信サブシステム1124は、有線および/または無線通信プロトコルの両方をサポートし得る。たとえば、ある実施の形態では、通信サブシステム1124は、(たとえば、セルラー電話技術、3G、4GまたはEDGE(enhanced data rates for global evolution)のような高度データネットワーク技術を使用する)ワイヤレス音声および/またはデータネットワークにアクセスするための無線周波数(RF)トランシーバ構成要素、WiFi(IEEE802.11ファミリー規格、または他のモバイル通信技術、またはそれらの任意の組み合わせ)、全地球測位システム(GPS)受信機構成要素、および/または、他の構成要素を含み得る。ある実施の形態では、通信サブシステム1124は、無線インターフェイスに加えて、またはその代わりに、有線ネットワーク接続(例えば、イーサネット(登録商標))を提供することができる。
【0144】
通信サブシステム1124は、様々な形態でデータを送受信することができる。例えば、ある実施の形態では、通信サブシステム1124は、構造化および/または非構造化データフィード1126、イベントストリーム1128、イベント更新1130等の形態で入力通信を受信し得る。例えば、通信サブシステム1124は、ソーシャルメディアネットワーク、Twitter(登録商標)フィード、Facebook(登録商標)更新、Rich Site Summary(RSS)フィードのようなウェブフィード、および/または、1つまたは複数の第三者情報ソースからのリアルタイム更新のような他の通信サービスのユーザから、リアルタイムでデータフィード1126を受信(または送信)するように構成され得る。
【0145】
ある実施の形態では、通信サブシステム1124は、連続データストリームの形態でデータを受信するように構成され得、連続データストリームは、明示的な終了を伴わない、本質的に連続的または無限であり得る、リアルタイムイベントのイベントストリーム1128および/またはイベント更新1130を含み得る。連続データを生成するアプリケーションの例は、例えば、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車トラフィック監視などを含み得る。
【0146】
通信サブシステム1124はまた、構造化および/または非構造化データフィード1126、イベントストリーム1128、イベント更新1130などを、コンピュータシステム1100に結合された1つまたは複数のストリーミングデータソースコンピュータと通信し得る1つまたは複数のデータベースに出力するように構成され得る。
【0147】
コンピュータシステム1100は、ハンドヘルドポータブル装置(例えば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブル装置(例えば、グーグルグラス(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、または任意の他のデータ処理システムを含む、種々のタイプの1つであり得る。
【0148】
コンピュータおよびネットワークの絶えず変化する性質のため、
図11に描写されるコンピュータシステム1100の説明は、具体例としてのみ意図される。
図11に示されるシステムよりも多いまたは少ない構成要素を有する多くの他の構成が可能である。本明細書に提供される開示および教示に基づいて、当業者は、種々の実施の形態を実装するための他の手段および/または方法を理解するであろう。
【0149】
図面のいくつかに示されるシステムは、様々な構成で提供され得る。ある実施の形態では、システムは、当該システムの1つまたは複数の構成要素が1つまたは複数のクラウドインフラストラクチャシステムにおける1つまたは複数のネットワークにわたって分散される、分散システムとして構成され得る。
【0150】
クラウドインフラストラクチャシステムは、1つまたは複数のサーバコンピューティング装置、ネットワーク装置、および/または記憶装置の集合である。これらのリソースは、クラウドサービスプロバイダによって分割され、何らかの態様でその顧客に割り当てられ得る。例えば、カリフォルニア州レッドウッドショアのオラクル社のようなクラウドサービスプロバイダは、限定はしないが、ソフトウェア・アズ・ア・サービス(SaaS)カテゴリの下で提供される1つまたは複数のサービス、プラットフォーム・アズ・ア・サービス(PaaS)カテゴリの下で提供されるサービス、インフラストラクチャ・アズ・ア・サービス(IaaS)カテゴリの下で提供されるサービス、または、ハイブリッドサービスを含む他のカテゴリのサービスを含む、様々なタイプのクラウドサービスを提供し得る。SaaSサービスの例は、限定はしないが、オラクルフュージョンアプリケーションのようなオンデマンドアプリケーションのスイートを構築および配信する能力を含む。SaaSサービスは、顧客がアプリケーションのためのソフトウェアを購入する必要なしに、顧客がクラウドインフラストラクチャシステム上で実行するアプリケーションを利用することを可能にする。PaaSサービスの例は、(オラクル社のような)組織が共有された共通アーキテクチャ上で既存のアプリケーションを統合することを可能にするサービス、ならびに、オラクルJavaクラウドサービス(JCS)、オラクルデータベースクラウドサービス(DBCS)等のプラットフォームによって提供される共有サービスを活用する新しいアプリケーションを構築する能力を含むが、これらに限定されない。IaaSサービスは、SaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用する顧客のために、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースのような基礎的コンピューティングリソースの管理および制御を促進し得る。
【0151】
図12は、本開示の一実施の形態に従う、実施の形態のシステムの1つまたは複数の構成要素によって提供されるサービスがクラウドサービスとして提供され得るシステム環境1200の1つまたは複数の構成要素の簡略的なブロック図である。例示される実施の形態では、システム環境1200は、クラウドサービスを提供するクラウドインフラストラクチャシステム1202と対話するためにユーザによって使用され得る1つまたは複数のクライアントコンピューティング装置1204,1206および1208を含む。クライアントコンピューティング装置は、クラウドインフラストラクチャシステム1202によって提供されるサービスを使用するためにクラウドインフラストラクチャシステム1202と対話するためのクライアントコンピューティング装置のユーザによって使用され得る、ウェブブラウザ、専有クライアントアプリケーション(たとえば、オラクル・フォームズ)、または何らかの他のアプリケーションのようなクライアントアプリケーションを動作させるように構成され得る。
【0152】
図に描かれているクラウドインフラストラクチャシステム1202は、描かれているもの以外のコンポーネントを有し得ることが理解されるべきである。さらに、図に示される実施の形態は、本開示の実施の形態を組み込み得るクラウドインフラストラクチャシステムの一例にすぎない。いくつかの他の実施の形態では、クラウドインフラストラクチャシステム1202は、図に示されるよりも多くの又は少ない構成要素を有してもよく、2つ以上の構成要素を組み合わせてもよく、あるいは、異なる構成もしくは構成要素の配置を有し得る。
【0153】
クライアントコンピューティング装置1204,1206および1208は、1002,1004,1006および1008について上で説明されたものと同様の装置であり得る。
【0154】
3つのクライアントコンピューティング装置を有する例示的なシステム環境1200が示されているが、任意の数のクライアントコンピューティング装置がサポートされ得る。センサ等を有する装置のような他の装置は、クラウドインフラストラクチャシステム1202と対話し得る。
【0155】
ネットワーク1210は、クライアントコンピューティング装置1204,1206および1208とクラウドインフラストラクチャシステム1202との間のデータの通信および交換を容易にし得る。各ネットワークは、ネットワーク1210について上述したものを含む、様々な市販のプロトコルのいずれかを使用してデータ通信をサポートすることができる、当業者によく知られている任意のタイプのネットワークであり得る。
【0156】
クラウドインフラストラクチャシステム1202は、サーバ1212について上述したものを含み得る1つまたは複数のコンピュータおよび/またはサーバを含み得る。
【0157】
ある実施の形態では、クラウドインフラストラクチャシステムによって提供されるサービスは、オンラインデータ記憶およびバックアップソリューション、ウェブベースの電子メールサービス、ホストされたオフィススイートおよび文書コラボレーションサービス、データベース処理、管理された技術サポートサービス等のような、オンデマンドでクラウドインフラストラクチャシステムのユーザに利用可能にされるサービスのホストを含み得る。クラウドインフラストラクチャシステムによって提供されるサービスは、そのユーザのニーズを満たすように動的にスケーリングすることができる。クラウドインフラストラクチャシステムによって提供されるサービスの特定のインスタンス化は、本明細書では「サービスインスタンス」と呼ばれる。一般に、クラウドサービスプロバイダのシステムからインターネットのような通信ネットワークを介してユーザに利用可能とされる任意のサービスは、「クラウドサービス」と呼ばれる。パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なる。例えば、クラウドサービスプロバイダのシステムは、アプリケーションをホストし得、ユーザは、インターネットのような通信ネットワークを介して、オンデマンドで、当該アプリケーションを注文および使用し得る。
【0158】
いくつかの例では、コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、ストレージ、ホスト型データベース、ホスト型ウェブサーバ、ソフトウェアアプリケーション、またはクラウドベンダによってユーザに提供される他のサービスに対する保護されたコンピュータネットワークアクセス、または当技術分野で知られている他のサービスを含み得る。例えば、サービスは、インターネットを介したクラウド上のリモートストレージへのパスワードで保護されたアクセスを含むことができる。別の例として、サービスは、ウェブサービスベースのホストされたリレーショナルデータベースと、ネットワーク化された開発者によるプライベート使用のためのスクリプト言語ミドルウェアエンジンとを含むことができる。別の例として、サービスは、クラウドベンダのウェブサイト上でホストされる電子メールソフトウェアアプリケーションへのアクセスを含むことができる。
【0159】
ある実施の形態では、クラウドインフラストラクチャシステム1202は、自己サービス、加入ベースの、弾性的にスケーラブルな、信頼性のある、高度に利用可能な、およびセキュアな態様で顧客に引き渡される、アプリケーション、ミドルウェア、およびデータベースサービス提供のスイートを含み得る。そのようなクラウドインフラストラクチャシステムの例は、本譲受人によって提供されるオラクルパブリッククラウドである。
【0160】
さまざまな実施の形態において、クラウドインフラストラクチャシステム1202は、クラウドインフラストラクチャシステム1202によって提供されるサービスへの顧客の加入を自動的にプロビジョニングし、管理し、追跡するように適合され得る。クラウドインフラストラクチャシステム1202は、異なるデプロイメントモデルを介してクラウドサービスを提供し得る。例えば、サービスは、クラウドインフラストラクチャシステム1202が(例えば、オラクル社によって所有される)クラウドサービスを販売する組織によって所有され、かつ、サービスが一般公衆または異なる業界企業に利用可能にされる、公衆クラウドモデルの下で提供され得る。別の例として、サービスは、クラウドインフラストラクチャシステム1202が単一の組織に対してのみ動作し、当該組織における1つまたは複数のエンティティにサービスを提供し得るプライベートクラウドモデルの下で提供され得る。クラウドサービスはまた、クラウドインフラストラクチャシステム1202およびクラウドインフラストラクチャシステム1202によって提供されるサービスが関連するコミュニティ内のいくつかの組織によって共有されるコミュニティクラウドモデルの下で提供され得る。クラウドサービスはまた、2つ以上の異なるモデルの組み合わせであるハイブリッドクラウドモデルの下で提供され得る。
【0161】
ある実施の形態では、クラウドインフラストラクチャシステム1202によって提供されるサービスは、サービスとしてのソフトウェア(SaaS)カテゴリ、サービスとしてのプラットフォーム(PaaS)カテゴリ、サービスとしてのインフラストラクチャ(IaaS)カテゴリ、またはハイブリッドサービスを含むサービスの他のカテゴリの下で提供される1つまたは複数のサービスを含み得る。顧客は、サブスクリプション注文を介して、クラウドインフラストラクチャシステム1202によって提供される1つまたは複数のサービスを注文し得る。次いで、クラウドインフラストラクチャシステム1202は、顧客のサブスクリプション注文でサービスを提供するための処理を実行する。
【0162】
ある実施の形態では、クラウドインフラストラクチャシステム1202によって提供されるサービスは、アプリケーションサービス、プラットフォームサービス、およびインフラストラクチャサービスを含み得るが、それらに限定されない。いくつかの例では、アプリケーションサービスは、SaaSプラットフォームを介してクラウドインフラストラクチャシステムによって提供され得る。SaaSプラットフォームは、SaaSカテゴリに該当するクラウドサービスを提供するように構成され得る。例えば、SaaSプラットフォームは、統合された開発およびデプロイメントプラットフォーム上でオンデマンドアプリケーションのスイートを構築および配信するための能力を提供し得る。SaaSプラットフォームは、SaaSサービスを提供するための基礎となるソフトウェアおよびインフラストラクチャを管理および制御し得る。SaaSプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステム上で実行するアプリケーションを利用することができる。顧客は、別個のライセンスおよびサポートを購入する必要なく、アプリケーションサービスを取得することができる。様々な異なるSaaSサービスが提供され得る。例は、販売実績管理、企業統合、および大規模組織のためのビジネス柔軟性のためのソリューションを提供するサービスを含むが、それらに限定されない。
【0163】
ある実施の形態では、プラットフォームサービスは、PaaSプラットフォームを介してクラウドインフラストラクチャシステムによって提供され得る。PaaSプラットフォームは、PaaSカテゴリに該当するクラウドサービスを提供するように構成され得る。プラットフォームサービスの例は、(オラクル社のような)組織が共有の共通アーキテクチャ上で既存のアプリケーションを統合することを可能にするサービス、ならびにプラットフォームによって提供される共有サービスを活用する新しいアプリケーションを構築する能力を含み得るが、それらに限定されない。PaaSプラットフォームは、PaaSサービスを提供するための基礎となるソフトウェアおよびインフラストラクチャを管理および制御し得る。顧客は、顧客が別個のライセンスおよびサポートを購入する必要なく、クラウドインフラストラクチャシステムによって提供されるPaaSサービスを取得することができる。プラットフォームサービスの例は、オラクルJavaクラウドサービス(JCS)、オラクルデータベースクラウドサービス(DBCS)などを含むが、これらに限定されない。
【0164】
PaaSプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムによってサポートされるプログラミング言語およびツールを採用することができ、また、展開されたサービスを制御することもできる。ある実施の形態では、クラウドインフラストラクチャシステムによって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス(例えば、オラクルヒュージョンミドルウェアサービス)、およびJavaクラウドサービスを含み得る。一実施の形態では、データベースクラウドサービスは、組織がデータベースリソースをプールし、データベースクラウドの形態でサービスとしてデータベースを顧客に提供することを可能にする共有サービスデプロイメントモデルをサポートし得る。ミドルウェアクラウドサービスは、顧客が様々なビジネスアプリケーションを開発およびデプロイするためのプラットフォームを提供することができ、Javaクラウドサービスは、顧客がクラウドインフラストラクチャシステムにおいてJavaアプリケーションをデプロイするためのプラットフォームを提供することができる。
【0165】
様々な異なるインフラストラクチャサービスが、クラウドインフラストラクチャシステムにおけるIaaSプラットフォームによって提供され得る。インフラストラクチャサービスは、SaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用する顧客のための、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースのような基礎的コンピューティングリソースの管理および制御を容易にする。
【0166】
ある実施の形態では、クラウドインフラストラクチャシステム1202はまた、クラウドインフラストラクチャシステムの顧客に様々なサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース1230もまた含み得る。一実施の形態では、インフラストラクチャリソース1230は、PaaSプラットフォームおよびSaaSプラットフォームによって提供されるサービスを実行するための、サーバ、ストレージ、およびネットワーキングリソースのようなハードウェアの事前統合されて、かつ最適化された組み合わせを含み得る。
【0167】
ある実施の形態では、クラウドインフラストラクチャシステム1202におけるリソースは、複数のユーザによって共有され、需要ごとに動的に再割り当てされ得る。加えて、リソースは、異なる時間帯においてユーザに割り当てられ得る。たとえば、クラウドインフラストラクチャシステム1230は、第1の時間帯におけるある一組のユーザがクラウドインフラストラクチャシステムのリソースを指定された時間にわたって利用することを可能にし、次いで、異なる時間帯に位置する他の組のユーザに同じリソースを再割り当てすることを可能にし、それによってリソースの利用を最大にすることができる。
【0168】
ある実施の形態では、クラウドインフラストラクチャシステム1202の異なる構成要素またはモジュールによって、およびクラウドインフラストラクチャシステム1202によって提供されるサービスによって共有されるいくつかの内部共有サービス1232が提供され得る。これらの内部共有サービスは、セキュリティおよびアイデンティティサービス、統合サービス、企業リポジトリサービス、企業マネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性、バックアップおよび回復サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービス、等を含み得るが、これらに限定されない。
【0169】
ある実施の形態では、クラウドインフラストラクチャシステム1202は、当該クラウドインフラストラクチャシステムにおけるクラウドサービス(例えば、SaaS、PaaS、およびIaaSサービス)の包括的な管理を提供し得る。一実施の形態では、クラウド管理機能は、クラウドインフラストラクチャシステム1202によって受信された顧客のサブスクリプションをプロビジョニングし、管理し、追跡するための能力などを含み得る。
【0170】
一実施の形態では、図に示されるように、クラウド管理機能は、注文管理モジュール1220、注文オーケストレーションモジュール1222、注文プロビジョニングモジュール1224、注文管理および監視モジュール1226、ならびにアイデンティティ管理モジュール1228のような1つまたは複数のモジュールによって提供され得る。これらのモジュールは、1つまたは複数のコンピュータおよび/またはサーバを含むか、またはそれらを使用して提供され得、それらは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、または任意の他の適切な構成であり得る。
【0171】
例示的な動作1234において、クライアントコンピューティング装置1204,1206または1208のようなクライアント装置を使用する顧客は、クラウドインフラストラクチャシステム1202によって提供される1つまたは複数のサービスを要求し、かつ、クラウドインフラストラクチャシステム1202によって提供される1つまたは複数のサービスのサブスクリプションの注文を行うことによって、クラウドインフラストラクチャシステム1202と対話し得る。ある実施の形態では、顧客は、クラウドユーザインターフェイス(UI)、クラウドUI1216、クラウドUI1214、および/またはクラウドUI1216にアクセスし、これらのUIを介してサブスクリプション注文を行ない得る。顧客が注文を行うことに応答してクラウドインフラストラクチャシステム1202によって受信される注文情報は、当該顧客と、当該顧客が加入しようとする、クラウドインフラストラクチャシステム1202によって提供される1つまたは複数のサービスとを識別する情報を含み得る。
【0172】
注文が顧客によって行われた後、注文情報は、クラウドUI1212,1214および/又は1216を介して受信される。
【0173】
動作1236において、注文は注文データベース1218に記憶される。注文データベース1218は、クラウドインフラストラクチャシステム1202によって運用され、他のシステム要素とともに運用されるいくつかのデータベースのうちの1つであり得る。
【0174】
動作1238において、注文情報は注文管理モジュール1220に転送される。いくつかの例では、注文管理モジュール1220は、注文を検証すること、検証時に注文を予約することのような、注文に関連付けられた請求および課金機能を実行するように構成され得る。
【0175】
動作1240において、注文に関する情報は、注文オーケストレーションモジュール1222に通信される。注文オーケストレーションモジュール1222は、注文情報を利用して、顧客によって行われた注文のためのサービスおよびリソースのプロビジョニングを調整することができる。いくつかの例では、注文オーケストレーションモジュール1222は、リソースのプロビジョニングを調整して、注文プロビジョニングモジュール1224のサービスを使用して購読されたサービスをサポートすることができる。
【0176】
ある実施の形態では、注文オーケストレーションモジュール1222は、各注文に関連付けられたビジネスプロセスの管理を可能にし、ビジネスロジックを適用して、注文がプロビジョニングに進むべきかどうかを決定する。動作1242において、新しいサブスクリプション注文を受信すると、注文オーケストレーションモジュール1222は、リソースを割り当て、当該サブスクリプション注文を満たすために必要とされるリソースを構成するように、要求を注文プロビジョニングモジュール1224に送信する。注文プロビジョニングモジュール1224は、顧客によって注文されたサービスのためのリソースの割り当てを可能にする。注文プロビジョニングモジュール1224は、クラウドインフラストラクチャシステム1202によって提供されるクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするために使用される物理実装レイヤとの間の抽象化のレベルを提供する。したがって、注文オーケストレーションモジュール1222は、サービスおよびリソースが実際にオンザフライでプロビジョニングされるか、または事前にプロビジョニングされ、要求に応じてのみ割り振られる/割り当てられるかのような、実装の詳細から隔離され得る。
【0177】
動作1244において、サービスおよびリソースがプロビジョニングされると、提供されたサービスの通知が、クラウドインフラストラクチャシステム1202の注文プロビジョニングモジュール1224によって、クライアントコンピューティング装置1204,1206および/または1208上の顧客に送信され得る。動作1246において、顧客のサブスクリプション注文は、注文管理および監視モジュール1226によって管理および追跡され得る。いくつかの事例では、注文管理および監視モジュール1226は、使用されたストレージの量、転送されたデータの量、ユーザの数、ならびにシステム起動時間およびシステム停止時間の量のような、サブスクリプション注文におけるサービスのための使用統計を収集するように構成され得る。
【0178】
特定の実施の形態では、クラウドインフラストラクチャシステム1202は、アイデンティティ管理モジュール1228を含み得る。アイデンティティ管理モジュール1228は、クラウドインフラストラクチャシステム1202におけるアクセス管理および認可サービスのようなアイデンティティサービスを提供するように構成され得る。ある実施の形態では、アイデンティティ管理モジュール1228は、クラウドインフラストラクチャシステム1202によって提供されるサービスを利用することを望む顧客に関する情報を制御し得る。そのような情報は、そのような顧客のアイデンティティを認証する情報、およびそれらの顧客が様々なシステムリソース(例えば、ファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど。)に対してどのアクションを実行することを許可されるかを記述する情報を含むことができる。アイデンティティ管理モジュール1228はまた、各顧客に関する記述情報、ならびにその記述情報がどのようにおよび誰によってアクセスおよび修正され得るかに関する記述情報の管理を含み得る。
【0179】
本開示の特定の実施の形態について説明されたが、様々な修正、変更、代替構成、および均等物も本開示の範囲内に包含される。本開示の実施の形態は、ある特定のデータ処理環境内での動作に限定されず、複数のデータ処理環境内で自由に動作することができる。加えて、本開示の実施の形態は、特定の一連の処理およびステップを使用して説明されているが、本開示の範囲は、説明された一連の処理およびステップに限定されないことが、当業者に明白となるはずである。上述の実施の形態の様々な特徴および態様は、個々にまたは共同で使用され得る。
【0180】
さらに、本開示の実施の形態は、ハードウェアおよびソフトウェアの特定の組み合わせを使用して説明されたが、ハードウェアおよびソフトウェアの他の組み合わせも本開示の範囲内であることが認識されるべきである。本開示の実施の形態は、ハードウェアのみで、またはソフトウェアのみで、またはそれらの組み合わせを使用して実施され得る。本明細書で説明する様々なプロセスは、同じプロセッサまたは異なるプロセッサ上で任意の組み合わせで実施され得る。したがって、構成要素またはモジュールがある動作を実行するように構成されるものとして説明される場合、そのような構成は、たとえば、当該動作を実行するように電子回路を設計することによって、その動作を実行するように(マイクロプロセッサのような)プログラマブル電子回路をプログラミングすることによって、または、それらの任意の組み合わせによって、達成され得る。プロセスは、プロセス間通信のための従来の技術を含むが、それらに限定されない、種々の技術を使用して通信することができ、プロセスの異なるペアは、異なる技術を使用してもよく、またはプロセスの同じペアは、異なる時間に異なる技術を使用し得る。
【0181】
したがって、明細書および図面は、限定的な意味ではなく例示的な意味で見なされるべきである。しかしながら、特許請求の範囲に記載されるより広い精神および範囲から逸脱することなく、追加、削減(subtractions)、削除(deletions)、ならびに他の修正および変更がなされ得ることは明らかであろう。したがって、特定の開示の実施の形態が説明されてきたが、これらは限定を意図するものではない。様々な修正および均等物が、以下の特許請求の範囲内にある。
【国際調査報告】