JP2023511535A - インフラストラクチャオーケストレーションサービスのためのユーザインターフェイス技術 - Google Patents

インフラストラクチャオーケストレーションサービスのためのユーザインターフェイス技術 Download PDF

Info

Publication number
JP2023511535A
JP2023511535A JP2022542782A JP2022542782A JP2023511535A JP 2023511535 A JP2023511535 A JP 2023511535A JP 2022542782 A JP2022542782 A JP 2022542782A JP 2022542782 A JP2022542782 A JP 2022542782A JP 2023511535 A JP2023511535 A JP 2023511535A
Authority
JP
Japan
Prior art keywords
infrastructure
user interface
execution
software
declarative
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022542782A
Other languages
English (en)
Other versions
JPWO2021150291A5 (ja
Inventor
カレ,アーサー
ルービンシュタイン,ジョシュ・マックス
Original Assignee
オラクル・インターナショナル・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/001,626 external-priority patent/US20210223923A1/en
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2023511535A publication Critical patent/JP2023511535A/ja
Publication of JPWO2021150291A5 publication Critical patent/JPWO2021150291A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

いくつかのユーザインターフェイスを提供するための技術を開示する。コンピューティングシステムは、宣言型インフラストラクチャプロビジョナを実行し得る。コンピューティングシステムは、宣言命令を提供して、複数のインフラストラクチャリソースおよび複数のアーティファクトをデプロイするように宣言型インフラストラクチャプロビジョンに指示し得る。1つの例示的なユーザインターフェイスは、複数のインフラストラクチャコンポーネントおよびアーティファクトのグローバルビューを提供し得る。別の例示的なユーザインターフェイスは、複数のインフラストラクチャコンポーネントおよびアーティファクトの対応する状態および変更アクティビティを提供し得る。コンピューティング環境の第1の変化を示すローカルで生成された安全プランとコンピューティング環境の第2の変化を示すリモートで生成された安全プランとの間の類似点および/または相違点を表示するさらに別のユーザインターフェイスが提供され得る。

Description

関連出願の相互参照
本願は、以下の米国仮出願および通常出願の通常出願であり、以下の米国仮出願および通常出願の米国特許法第119条(e)下の利益および優先権を主張し、それらの全内容は全ての目的で引用によって援用される。以下の米国仮出願および通常出願とは、「インフラストラクチャオーケストレーションサービスのためのユーザインターフェイス技術(USER INTERFACE TECHNIQUES FOR AN INFRASTRUCTURE ORCHESTRATION SERVICE)」と題される2020年1月20日に出願された米国仮出願番号第62/963,456号、「インフラストラクチャオーケストレーションサービスのためのユーザインターフェイス技術(USER INTERFACE TECHNIQUES FOR AN INFRASTRUCTURE ORCHESTRATION SERVICE)」と題される2020年1月22日に出願された米国仮出願番号第62/964,596号、「インフラストラクチャオーケストレーションサービスのためのユーザインターフェイス技術(USER INTERFACE TECHNIQUES FOR AN INFRASTRUCTURE ORCHESTRATION SERVICE)」と題される2020年8月24日に出願された米国通常出願番号第17/001,626号である。
背景
今日、クラウドインフラストラクチャサービスは、多くの個々のサービスを利用して、クラウドインフラストラクチャサービスの多くの領域にわたってコードおよび構成を(それぞれ)プロビジョニングしてデプロイしている。特にプロビジョニングが一般に宣言的であってコードをデプロイすることが絶対必要であることを考えると、これらのツールは、使用するのに相当な手動労力を必要とする。さらに、サービスチームおよび領域の数が増加するにつれて、クラウドインフラストラクチャサービスも成長し続ける必要がある。さらに多くのさらに小さい領域にデプロイするというクラウドインフラストラクチャサービスの戦略の中には、領域ごとの費用を含むものもあるが、これらは上手くスケーリングできない。
簡単な概要
1つまたは複数のユーザインターフェイスを提供するための技術が本明細書に開示されている。いくつかの実施形態において、方法が開示されている。上記方法は、コンピューティングシステムが、宣言型インフラストラクチャプロビジョナを実行するステップを備え得る。上記方法は、上記コンピューティングシステムが、第1の一組の宣言命令を上記宣言型インフラストラクチャプロビジョナに提供することに少なくとも部分的に基づいて、第1の一組のインフラストラクチャコンポーネントをプロビジョニングするステップをさらに備え得る。上記方法は、上記コンピューティングシステムが、第2の一組の宣言命令を上記宣言型インフラストラクチャプロビジョナに提供することに少なくとも部分的に基づいて、第2の一組のソフトウェアアーティファクトをデプロイするステップをさらに備え得る。上記方法は、上記コンピューティングシステムが、複数のユーザインターフェイス要素を表示するユーザインターフェイスを提供するステップをさらに備え得て、上記複数のユーザインターフェイス要素は、少なくとも、上記第1の一組のインフラストラクチャコンポーネントをプロビジョニングするステップに関連付けられた第1のステータスと、上記第2の一組のソフトウェアアーティファクトをデプロイするステップに関連付けられた第2のステータスとを識別する。
いくつかの実施形態において、システムが開示されている。上記システムは、1つまたは複数のプロセッサと、コンピュータによって実行可能な命令を格納する1つまたは複数のメモリとを備えて、上記コンピュータによって実行可能な命令は、上記1つまたは複数のプロセッサによって実行されると、上記システムに動作を実行させる。上記動作は、宣言型インフラストラクチャプロビジョナを実行することを備え得る。上記動作は、第1の一組の宣言命令を上記宣言型インフラストラクチャプロビジョナに提供することに少なくとも部分的に基づいて、第1の一組のインフラストラクチャコンポーネントをプロビジョニングすることをさらに備え得る。上記動作は、第2の一組の宣言命令を上記宣言型インフラストラクチャプロビジョナに提供することに少なくとも部分的に基づいて、第2の一組のソフトウェアアーティファクトをデプロイすることをさらに備え得る。上記動作は、複数のユーザインターフェイス要素を表示するユーザインターフェイスを提供することをさらに備え得て、上記複数のユーザインターフェイス要素は、少なくとも、上記第1の一組のインフラストラクチャコンポーネントをプロビジョニングすることに関連付けられた第1のステータスと、上記第2の一組のソフトウェアアーティファクトをデプロイすることに関連付けられた第2のステータスとを識別する。
いくつかの実施形態において、非一時的なコンピュータ読取可能記憶媒体が開示されている。上記非一時的なコンピュータ読取可能記憶媒体は、1つまたは複数のプロセッサと、コンピュータによって実行可能な命令を格納する1つまたは複数のメモリとを備え得て、上記コンピュータによって実行可能な命令は、上記1つまたは複数のプロセッサによって実行されると、コンピューティングデバイスに動作を実行させる。上記動作は、宣言型インフラストラクチャプロビジョナを実行することを備え得る。上記動作は、第1の一組の宣言命令を上記宣言型インフラストラクチャプロビジョナに提供することに少なくとも部分的に基づいて、第1の一組のインフラストラクチャコンポーネントをプロビジョニングすることをさらに備え得る。上記動作は、第2の一組の宣言命令を上記宣言型インフラストラクチャプロビジョナに提供することに少なくとも部分的に基づいて、第2の一組のソフトウェアアーティファクトをデプロイすることをさらに備え得る。上記動作は、複数のユーザインターフェイス要素を表示するユーザインターフェイスを提供することをさらに備え得て、上記複数のユーザインターフェイス要素は、少なくとも、上記第1の一組のインフラストラクチャコンポーネントをプロビジョニングすることに関連付けられた第1のステータスと、上記第2の一組のソフトウェアアーティファクトをデプロイすることに関連付けられた第2のステータスとを識別する。
いくつかの実施形態において、コンピュータによって実行される方法が開示されている。上記方法は、コンピューティングシステムが、複数のユーザインターフェイス要素を表示するユーザインターフェイスを提供するステップを備え得て、上記複数のユーザインターフェイス要素は、少なくとも、第1の一組のインフラストラクチャコンポーネントをプロビジョニングすることに関連付けられた第1のステータスと、第2の一組のソフトウェアアーティファクトをデプロイすることに関連付けられた第2のステータスとを識別する。上記第1の一組のインフラストラクチャは、宣言型インフラストラクチャプロビジョナに少なくとも部分的に基づいてプロビジョニングされ、上記第2の一組のソフトウェアアーティファクトは、上記宣言型インフラストラクチャプロビジョナに少なくとも部分的に基づいてプロビジョニングされる。
いくつかの実施形態において、システムが開示されている。上記システムは、1つまたは複数のプロセッサと、コンピュータによって実行可能な命令を格納する1つまたは複数のメモリとを備え得て、上記コンピュータによって実行可能な命令は、上記1つまたは複数のプロセッサによって実行されると、上記システムに動作を実行させる。上記動作は、複数のユーザインターフェイス要素を表示するユーザインターフェイスを提供することを備え得て、上記複数のユーザインターフェイス要素は、少なくとも、第1の一組のインフラストラクチャコンポーネントをプロビジョニングすることに関連付けられた第1のステータスと、第2の一組のソフトウェアアーティファクトをデプロイすることに関連付けられた第2のステータスとを識別する。上記第1の一組のインフラストラクチャは、宣言型インフラストラクチャプロビジョナに少なくとも部分的に基づいてプロビジョニングされ、上記第2の一組のソフトウェアアーティファクトは、上記宣言型インフラストラクチャプロビジョナに少なくとも部分的に基づいてプロビジョニングされる。
いくつかの実施形態において、非一時的なコンピュータ読取可能記憶媒体が開示されている。上記非一時的なコンピュータ読取可能記憶媒体は、1つまたは複数のプロセッサと、コンピュータによって実行可能な命令を格納する1つまたは複数のメモリとを備え得て、上記コンピュータによって実行可能な命令は、上記1つまたは複数のプロセッサによって実行されると、コンピューティングデバイスに動作を実行させる。上記動作は、複数のユーザインターフェイス要素を表示するユーザインターフェイスを提供することを備え得て、上記複数のユーザインターフェイス要素は、少なくとも、第1の一組のインフラストラクチャコンポーネントをプロビジョニングすることに関連付けられた第1のステータスと、第2の一組のソフトウェアアーティファクトをデプロイすることに関連付けられた第2のステータスとを識別する。上記第1の一組のインフラストラクチャは、宣言型インフラストラクチャプロビジョナに少なくとも部分的に基づいてプロビジョニングされ、上記第2の一組のソフトウェアアーティファクトは、上記宣言型インフラストラクチャプロビジョナに少なくとも部分的に基づいてプロビジョニングされる。
いくつかの実施形態において、装置が開示されている。上記装置は、本開示の実施形態に係る方法のいずれかの方法のステップを実行するための手段を備え得る。
任意の特定の要素または行為の記述を識別しやすくするために、参照番号における最上位の数字は、その要素が最初に紹介される図面番号を指す。
少なくとも1つの実施形態に係る、クラウドインフラストラクチャオーケストレーションサービスの少なくともいくつかの要素を実行するためのアーキテクチャのブロック図である。 少なくとも1つの実施形態に係る、クラウドインフラストラクチャオーケストレーションサービスの少なくともいくつかの要素を実行するためのアーキテクチャのブロック図である。 少なくとも1つの実施形態に係る、例示的なフロックを説明するためのフロー図である。 少なくとも1つの実施形態に係る、例示的なフロックを説明するためのフロー図である。 少なくとも1つの実施形態に係る、例示的なユーザインターフェイスを示す概略図である。 少なくとも1つの実施形態に係る、選択されたリリースに関連する情報を提供するための例示的なユーザインターフェイスを示す概略図である。 少なくとも1つの実施形態に係る、リリースの状態を見るための例示的なユーザインターフェイスを示す概略図である。 少なくとも1つの実施形態に係る、リリースの状態を見るための例示的なユーザインターフェイスを示す概略図である。 少なくとも1つの実施形態に係る、選択された実行ターゲットの実行ターゲットリソースを表示する例示的なユーザインターフェイスを示す概略図である。 少なくとも1つの実施形態に係る、選択されたリリースの選択されたフェーズについての情報を表示するための例示的なユーザインターフェイスを示す概略図である。 少なくとも1つの実施形態に係る、一組の実行タスクの実行順序を説明するための実行グラフを表示する例示的なユーザインターフェイスを示す概略図である。 少なくとも1つの実施形態に係る、選択されたリリースの1つまたは複数のフェーズに関連する実行ステータスを表示する例示的なUI1200を示す例示的なユーザインターフェイスを示す概略図である。 少なくとも1つの実施形態に係る、例示的な安全プランを表示する例示的なユーザインターフェイスを示す概略図である。 少なくとも1つの実施形態に係る、インフラストラクチャをプロビジョニングするためのユーザインターフェイスを生成する例示的なプロセスを説明するためのフロー図である。 少なくとも1つの実施形態に係る、分散型システムのブロック図である。 少なくとも1つの実施形態に係る、実施形態のシステムの1つまたは複数のコンポーネントによって提供されるサービスがクラウドサービスとして提供され得るシステム環境の1つまたは複数のコンポーネントのブロック図である。 本開示のさまざまな実施形態が実現され得る例示的なコンピュータシステムのブロック図である。
詳細な説明
いくつかの例において、インフラストラクチャ・アズ・ア・サービス(IaaS)は、1つの特定のタイプのクラウドコンピューティングである。IaaSは、仮想化されたコンピューティングリソースをパブリックネットワーク(たとえば、インターネット)を介して提供するように構成され得る。いくつかの例において、IaaSは、クラウドコンピューティングサービスの3つの主要なカテゴリ(または、サブカテゴリ)のうちの1つである。大抵の人は、他の主要なカテゴリがソフトウェア・アズ・ア・サービス(SaaS)およびプラットフォーム・アズ・ア・サービス(PaaS)であると考え、時として、SaaSは、PaaSおよびIaaSを両方とも包含するより広いカテゴリであると考えられる場合もあり、さらにIaaSがPaaSのサブカテゴリであると考える人さえいる。
IaaSモデルでは、クラウドコンピューティングプロバイダは、インフラストラクチャコンポーネント(たとえば、サーバ、ストレージデバイス、ネットワークノード(たとえば、ハードウェア)、デプロイメントソフトウェア、プラットフォーム仮想化(たとえば、ハイパーバイザ層)など)を運営管理することができる。
場合によっては、IaaSプロバイダは、それらのインフラストラクチャコンポーネントに付随するようにさまざまなサービス(たとえば、請求、監視、ロギング、セキュリティ、ロードバランシングおよびクラスタ化など)も供給し得る。したがって、これらのサービスがポリシ駆動であり得るので、IaaSユーザは、ロードバランシングを駆動してアプリケーション可用性および性能を維持するようにポリシを実行することができるであろう。
いくつかの例において、IaaS顧客は、ワイドエリアネットワーク(WAN)(インターネットなど)を介してリソースおよびサービスにアクセスすることができ、クラウドプロバイダのサービスを使用してアプリケーションスタックの残りの要素をインストールすることができる。たとえば、ユーザは、IaaSプラットフォームにログインして、仮想マシン(VM)を作成し、各VMにオペレーティングシステム(OS)をインストールし、ミドルウェア(データベースなど)をデプロイし、ワークロードおよびバックアップのためのストレージバケットを作成し、そのVMに企業ソフトウェアをインストールすることさえできる。次いで、顧客は、プロバイダのサービスを使用してさまざまな機能(ネットワークトラフィックバランシング、トラブルシューティングアプリケーション問題、性能の監視、ディザスタリカバリの管理などを含む)を実行することができる。
ほとんどの場合、クラウドコンピューティングモデルは、クラウドプロバイダの参加を必要とする。クラウドプロバイダは、IaaSを提供する(たとえば、販売する)ことを専門とする第三者サービスであり得るが、そうでなくてもよい。エンティティは、それ自体のインフラストラクチャサービスプロバイダになるプライベートクラウドをデプロイすることも選択し得る。
いくつかの例において、IaaSデプロイメントは、新たなアプリケーションまたは新たなバージョンを、準備されたアプリケーションサーバなどに配置するプロセスである。それは、サーバを準備する(たとえば、ライブラリ、デーモンなどをインストールする)プロセスも含み得る。これは、多くの場合、ハイパーバイザ層(たとえば、サーバ、ストレージ、ネットワークハードウェアおよび仮想化)の下のクラウドプロバイダによって管理される。したがって、顧客は、(OS)、ミドルウェアおよび/またはアプリケーションデプロイメントなどを(たとえば、セルフサービスの仮想マシン(たとえば、オンデマンドで起動され得る)上で)処理することを担うことができる。
いくつかの例において、IaaSプロビジョニングとは、使用のためにコンピュータまたは仮想ホストを取得すること、および必要なライブラリまたはサービスをそれらにインストールすることさえ意味し得る。ほとんどの場合、デプロイメントはプロビジョニングを含んでおらず、プロビジョニングを最初に実行する必要があり得る。
IaaSプロビジョニングには2つの異なる問題がある場合もある。第1に、何かが実行中である前にインフラストラクチャの初期セットをプロビジョニングするという最初の課題がある。第2に、何もかもがプロビジョニングされると既存のインフラストラクチャを展開する(たとえば、新たなサービスを追加する、サービスを変更する、サービスを除去する、など)という課題がある。場合によっては、これら2つの課題は、インフラストラクチャの構成を宣言的に定義することを可能にすることによって対処することができる。言い換えれば、インフラストラクチャ(たとえば、どのコンポーネントが必要であり、それらがどのように相互作用するか)は、1つまたは複数の構成ファイルによって定義することができる。したがって、インフラストラクチャの全体トポロジ(たとえば、どのリソースがどれに依存しており、それらの各々がどのように協働するか)は、宣言的に記載することができる。いくつかの例において、トポロジが定義されると、構成ファイルに記載されたさまざまなコンポーネントを作成および/または管理するワークフローを生成することができる。
いくつかの例において、インフラストラクチャは、多くの相互接続された要素を有し得る。たとえば、1つまたは複数の仮想プライベートクラウド(VPC)(たとえば、構成可能なおよび/または共有のコンピューティングリソースの、場合によってはオンデマンドのプール)があり得て、これらはコアネットワークとしても知られている。いくつかの例において、ネットワークのセキュリティがどのようにセットアップされるかを定義するようにプロビジョニングされた1つまたは複数のセキュリティグループルール、および、1つまたは複数の仮想マシン(VM)もある場合もある。他のインフラストラクチャ要素(ロードバランサ、データベースなど)もプロビジョニングされてもよい。ますます多くのインフラストラクチャ要素が要求されるおよび/または追加されるにつれて、インフラストラクチャはインクリメンタルに展開し得る。
上記のように、インフラストラクチャをプロビジョニングする1つの方法は、それを宣言的に記載するというものである。したがって、構成ファイルは、単に上記のインフラストラクチャコンポーネントの各々およびそれらがどのように相互作用するかを記載するに過ぎない宣言ファイルであり得る。構成ファイルは、リソースと、要素を作成するのに必要とされる関連するフィールドとを記載することができるため、以前に記載された要素を参照する他の要素も記載されることができる。いくつかの例において、プロビジョニングツールは、次いで、構成ファイルに記載されている要素を作成して管理するためのワークフローを生成することができる。
いくつかの例において、プロビジョニングツールのワークフローは、さまざまなコマンドを実行するように構成され得る。実行可能な1つの機能はビュー調整であり、このビュー調整では、プロビジョニングツールは、現在のインフラストラクチャのビュー(たとえば、インフラストラクチャの予想される状態)と、インフラストラクチャが実際にどのように動作しているかとを比較することができる。いくつかの例において、ビュー調整機能を実行することは、どのリソースが実際に動作しているかを識別するためにさまざまなリソースプロバイダまたはインフラストラクチャリソースに照会することを含み得る。プロビジョニングツールが実行することができる別の機能はプラン生成であり、このプラン生成では、プロビジョニングツールは、実際に動作しているインフラストラクチャコンポーネントと、プロビジョニングツールがその状態をどのように見せたいか(たとえば、所望の構成)とを比較することができる。言い換えれば、プラン生成機能は、リソースを最新の予想に持って行くためにどのような変更を加える必要があるかを判断することができる。いくつかの例において、第3の機能は実行(たとえば、適用)機能であり、この実行機能では、プロビジョニングツールは、プラン生成機能によって生成されたプランを実行することができる。
一般に、プロビジョニングツールは、構成ファイルを取得して、そこに含まれる宣言的情報を解析して、プランを実行するためにリソースをプロビジョニングする必要がある順序をプログラム的に/自動的に決定するように構成され得る。たとえば、セキュリティグループルールおよびVMがブートされる前にVPCをブートする必要がある場合、プロビジョニングツールは、ユーザ介入なしに、および/または、その情報が必ずしも構成ファイルに含まれない状態で、その決定を行ってその順序でブートを実行することができる。
いくつかの例において、連続デプロイメント技術は、さまざまな仮想コンピューティング環境にわたるインフラストラクチャコードのデプロイメントを可能にするために利用され得る。さらに、記載されている技術は、これらの環境内でのインフラストラクチャ管理を可能にすることができる。いくつかの例では、サービスチームは、1つまたは複数の(しかし、往々にして多くの)異なる生成環境に(たとえば、時には世界全体に及ぶさまざまな異なる地理的位置にわたって)デプロイされることが望まれるコードを書き込むことができる。しかし、いくつかの例では、コードがデプロイされることになるインフラストラクチャを最初にセットアップしなければならない。いくつかの例において、プロビジョニングは手動で行われることができ、プロビジョニングツールを利用してリソースをプロビジョニングし得て、および/または、インフラストラクチャがプロビジョニングされるとデプロイメントツールを利用してコードをデプロイし得る。
上記のように、一般に、インフラストラクチャリソースのプロビジョニングおよびインフラストラクチャリソースを制御するためのコードのデプロイメントの各々を処理するために使用される2つの異なるツールがあり、これら2つのツール間のオーケストレーションは手動で行われる。しかし、大規模になると、手動での実行は常にずれを生じさせる。したがって、仮想インフラストラクチャのプロビジョニングもデプロイメントも行うことができる自動ツールは、仮想クラウド環境を実現するためのより効率的で信頼性のある技術を可能にする。
いくつかの例において、2つのツールが使用される場合、ユーザがプロビジョニングフェーズとデプロイメントフェーズとの間に手動でコードに変更を加える際に問題が生じる可能性がある。本明細書に記載されているように、プロビジョニングおよびデプロイメントの両方に単一のツールを使用する技術は、手動でのコード変更の機会がないようにプロセスを自動化することによってそれを軽減することができる。あるユーザが何かを符号化するやり方に対してわずかな変更を加えると、デプロイメントフェーズにおいて大きな問題が生じる可能性がある、ということはあり得る。いくつかの例において、最初にオペレータが新たな領域においてあるアクション(たとえば、コードの誤植)を実行したときには、その誤植で符号化されたオブジェクトは永久にそのままであり得る。その誤植とともにアプリケーションがデプロイされるがアプリケーションがその誤植に影響されない(たとえば、アプリケーションが依然として機能する)場合でも、ゆくゆくはさらなるコード変更がその誤植に影響されてシステム全体をクラッシュさせるということが起こり得る。したがって、本明細書において提供されている技術は、しばしば問題を生じさせ得るプロビジョニングとデプロイメントとの間のギャップを除去することができる。
一般に、構成ファイルを使用してインフラストラクチャリソースを宣言することができるようにデプロイメントのモデル化は宣言的である。たとえば、一般に、作成・読取・更新・削除(CRUD)命令を使用して、一般的な表現可能な状態の転送(REST)の概念(たとえば、RESTアプリケーションプログラミングインターフェイス(API))を用いてデプロイメントファイルを生成する。しかし、デプロイメント自体は、一般に、この概念に従わない。さらに、インフラストラクチャプロビジョニングツールは、得てして非常に強力でありおよび/または表現的であるが、デプロイメントのためのツールは、得てしてそれらが実行することができる動作に関してはるかに制限的である(たとえば、それらは宣言的であるのとは対照的に命令的である)。したがって、クラウド環境内で両方の機能要件(たとえば、インフラストラクチャ要素のプロビジョニングおよびデプロイメント)に対処することができるツールが長年必要とされてきた。
いくつかの例において、クラウドインフラストラクチャオーケストレーションサービス(CIOS)を実行するための技術について本明細書で説明する。このような技術は、簡単に上記したように、クラウド環境内のインフラストラクチャアセットのプロビジョニングおよびデプロイメントを両方とも管理するように構成され得る。いくつかの例において、CIOSは、サービスの2つのクラス、すなわち中央コンポーネントおよび地域コンポーネント(たとえば、中央CIOSおよび地域CIOS)を含み得る。全体を通して以下の用語を使用する。
・インフラストラクチャコンポーネント:実行中のコードをサポートするインフラストラクチャの長期生存の部分
例:デプロイメントアプリケーション、ロードバランサ、ドメインネームシステム(DNS)入力、オブジェクトストレージバケットなど
・アーティファクト:コードは、デプロイメントアプリケーションまたはクバネティスエンジンクラスタにデプロイされ、または、構成情報(以下、「コンフィグ」)は、インフラストラクチャコンポーネントに適用される。これらは、読取専用リソースであり得る。
・デプロイメントタスク:デプロイまたはテストコードに関連付けられることが多い短期生存のタスク。さらに、デプロイメントタスクは、それらを作成するリリースほど長くは生存しないリソースとしてモデル化される。
例:「$アーティファクトを$環境にデプロイしてください(deploy $artifact to $environment)」、「10分間$アラームを注視してください(watch $alarm for 10 minutes)」、「$テストスイートを実行してください(execute $testSuite)」または「$手動承認を待ってください(wait for $manualApproval)」
たとえば、CIOSは、デプロイメントオーケストレータのデプロイメントを、それが完了したときに利用可能な状態に遷移するリソースの作成としてモデル化することができる。
CIOSは、そのクラウドインフラストラクチャサービス宣言型プロビジョナの状態を維持するので、CIOSは、それがリリースに関連するときにはこれらの短期生存のリソースのライフサイクルを制御することができる。
・リソース:CRUD可能なリソース
CIOSは、上記の構成の各々をリソースとしてモデル化する。次のセクションでは、このモデル化について詳細に説明する。
・フロック:コントロールプレーンおよび全てのそのコンポーネントを封入するCIOSのモデル。主にインフラストラクチャコンポーネントの所有権をモデル化してインフラストラクチャコンポーネントを示すために存在する
・フロックコンフィグ:単一のサービスに関連付けられた全てのインフラストラクチャコンポーネント、アーティファクトおよびデプロイメントタスクのセットを記載する
各フロックは、厳密に1つのフロックコンフィグを有している。フロックコンフィグは、ソース制御にチェックインされる。
フロックコンフィグは、宣言的である。それらは、CIOSがレルム、領域、adおよびアーティファクトバージョンを入力として提供すると予想する。
フロックは、粒状である。フロックは、単一のサービスおよびサポートインフラストラクチャで構成される。
・状態:フロック内のあらゆるリソースの状態の、特定の時点でのスナップショット
・リリース:フロックコンフィグの特定のバージョンと、それが参照するあらゆるアーティファクトの特定のバージョンとのタプル
リリースを、まだ存在し得ない状態を記載するものであると考える
・リリースプラン:CIOSが全ての領域を現在の状態からリリースによって記載される状態に遷移させるのに必要とするであろうステップのセット
リリースプランは、有限数のステップと、明確に定義された開始時刻および終了時刻とを有する
・適用:これは名詞である。リリースプランを実行しようとする1回の試行である。実行は、フロックの現在の状態を変化させる。
CIOSは、(たとえば、世界規模の)ダウンストリームシステムに構成を適用するオーケストレーション層であると言うことができる。それは、サービスチームからの手動労力なしに(たとえば、場合によっては最初の承認を超えて)世界規模のインフラストラクチャプロビジョニングおよびコードデプロイメントを可能にするように設計される。CIOSの上位の責務は、以下を含むがそれらに限定されるものではない。
・いかなる処理中の変更アクティビティも含む、CIOSによって管理されるリソースの現在の状態へのビューをチームに提供すること
・チームが新たな変更を計画してリリースすることを手助けすること
・領域内のさまざまなダウンストリームシステムにわたってアクティビティを連携させて、承認されたリリースプランを人間の介入なしに実行すること
・領域/レルムにわたってアクティビティを連携させて、承認されたリリースプランを世界規模で実行すること
いくつかの例において、CIOSは、チームがチェックインされたコードによって構成情報をCIOSに提供することを可能にすることによってオンボーディングを処理する。さらに、CIOSは、より多くのことを自動化することができるため、これは、以前の実現例よりも負荷が大きい作業である。いくつかの例において、CIOSは、コードを自動的にデプロイしてテストすることができる機能をチームに提供することによって事前デプロイメントを処理する。いくつかの例において、CIOSは、チームが新たなアーティファクトを構築する際にそれらを(たとえば、世界規模で)展開するためのプランを自動的に生成することを可能にすることによってチェンジマネジメント(CM)ポリシの書き込みを処理することができる。それは、各領域の現在の状態および現在のCIOSコンフィグ(それ自体がアーティファクトであり得る)を調べることによってこれを行うことができる。さらに、チームは、これらのプランを調べることができ、CIOSコンフィグを変更して再計画するようにCIOSに求めることによってそれらを繰り返すことができる。チームは、プランに満足すると、そのプランを参照する「リリース」を作成することができる。次いで、このプランは、承認されたまたは拒否されたとして印付けされることができる。チームは、依然としてCMを書き込むことができるが、それらは、CIOSプランへの単なるポインタである。したがって、チームは、このプランについての推論にそれほど時間を費やさない。プランは、マシンによって生成されるので、より正確である。プランは、人間用には細かすぎると言ってもいいが、精巧なユーザインターフェイス(UI)によって表示することができる。
いくつかの例において、CIOSは、デプロイメントプランを自動的に実行することによってCMの実行を処理することができる。リリースプランが作成されて承認されると、CIOSがロールバックを開始しない限り、エンジニアはCMに参加することはない。場合によっては、これは、現在は手動であるタスクを自動化するようにチームに要求し得る。いくつかの例において、CIOSは、CIOSが実行中にサービス正常性の低下を検出するとフロックをその元の(たとえば、リリース前の)状態に戻すプランを自動的に生成することによってチェンジマネジメント(CM)のロールバックを処理することができる。いくつかの例において、CIOSは、CIOSによって管理される領域のサブセットおよび/またはリソースのサブセットに適用されるリリースプランを受信し、次いでそのプランを実行することによって、突発的な/戦術的な変更をデプロイすることを処理することができる。
さらに、CIOSは、完全に自動化された世界規模のデプロイメントを定義するのに必要なプリミティブをサポートし得る。たとえば、CIOSは、アラームを監視して統合テストを実行することによってサービス正常性を測定することができる。CIOSは、サービス低下が発生した場合にチームがロールバック挙動を素早く定義することを手助けすることができ、次いでそれを自動的に実行することができる。CIOSは、リリースプランを自動的に生成して表示することができ、承認を追跡することができる。いくつかの例において、チームが所望のデプロイメント挙動を記載するために使用する言語は、宣言的であり得る。CIOSは、1つのシステム内のコードデプロイメントおよびインフラストラクチャコンフィグ(たとえば、プロビジョニング)の機能を組み合わせることができる。また、CIOSは、領域にわたって、およびある領域内のコンポーネントにわたって、柔軟な順序付けをサポートする。チームは、チェックインされたコンフィグによって順序付けを表現することができる。チームは、CIOSのプランニングを呼び出して、APIをプログラム的にリリースし得る。
図1は、少なくとも中央CIOS102を実行するための技術を説明するためのアーキテクチャ100を示す図である。いくつかの例において、中央CIOS102は、「フロック」のレベルで動作を処理するサービスであり得る。中央CIOS102は、いくつかの責務を有しており、これらの責務は、以下を含むがそれらに限定されるものではない。
・フロックメタデータ変更およびリリース動作のための認証ゲートウェイとしての役割を果たすこと
・フロックのためのCIOSリポジトリおよびデプロイメントアーティファクトへのフロックメタデータの正式なマッピングを格納すること
・フェーズおよびターゲットにわたるグローバルなリリースを連携させること
・「一度に1回だけのフロックへの進行中リリース」のようなポリシを実施するための同期
・フロック構成(コンフィグ)およびアーティファクトに対する変更を検出して、このような変更時にリリース生成をトリガすること
いくつかの例において、ソースコードバージョン制御管理サービス(SCVMS)104は、正式なフロック構成を格納するように構成され得て、アーティファクト通知サービス(ANS)106は、新たなアーティファクトの構築を中央CIOS102に知らせることができるように中央CIOS102によって契約され得る。次いで、中央CIOS102は、影響を受けたフロックに対する入来する変更をマッピングし、所望の場合にはリリースプランニングを開始し得る。さらに、いくつかの例において、ターゲットへのリリースの前に中央CIOS102によってアーティファクトプッシュサービス(APS)が呼び出されて、リリースの成功に必要ないかなるアーティファクトもリリースの前にターゲットの領域内に存在することを確実にすることができる。
いくつかの例において、顧客(たとえば、エンジニア)108は、中央CIOS102を呼び出して、フロックおよび/またはリリースをCRUDして進行中のCIOSアクティビティのステータスを見ることができる。フロック管理サービス110は、フロックを操作するための1つまたは複数のAPIを含み得て、ビュー/プラン/承認サービス112は、プランを作成および承認して、全てのCIOSによって管理されるリソースの状態の中央コピーを見るためのCRUD APIを含み得て、変更監視サービス114は、フロックコンフィグに対する変更についてSCVMS104を注視し得て、他のアーティファクトに対する変更についての通知をANS106から受信し得て、状態インジェスタサービス116は、地域状態のコピーを、ビュー/プラン/承認112がそれらを公開できるように中央CIOSデータベース(DB)118内に作成し得る。いくつかの例において、中央CIOS DB118は、フロック、プランおよび状態のDBであり得る。フロック情報は、正式なものであり得るが、その他は全て、地域CIOS120からのデータの古いコピーであり得る。中央CIOS102は、フロック、リリース、インフラストラクチャコンポーネント、アーティファクトなどに関連する任意の好適なデータを表示するためのユーザインターフェイス(たとえば、ユーザインターフェイス500~1300)の任意の好適な部分および/または任意の好適な数のユーザインターフェイスを提供するように構成され得る。いくつかの実施形態において、中央CIOS102は、1つまたは複数のリリースに関連するデータを任意の好適なインターフェイスを介して表示し得る。リリースは、1つもしくは複数のインフラストラクチャコンポーネントに関連するタスク、および/または、1つもしくは複数のアプリケーション(たとえば、アーティファクト)に対する1つもしくは複数のコード変更に関連するタスクの任意の好適な組み合わせを含み得る。中央CIOS102によって提供されるユーザインターフェイスのいくつかの例については、図5~図13に関して以下で説明する。
いくつかの例において、エンジニア108は、フロック管理サービス110に対するAPI呼び出しを(たとえば、イングレスプロキシフリート122を介して)実行して、フロックのリストを作成することができる。このようなAPI呼び出しを行うためのプロトコルは、ハイパーテキスト・トランスポート・プロトコル・セキュア(HTTPS)などであり得る。この動作のための関連するアクセス制御リスト(ACL)は、ローカルエリアネットワーク(LAN)124または他のプライベートな接続を含み得る。たとえば、CIOSは、顧客のオンプレミスデータセンタまたはネットワークをCIOSと接続するためのパブリックインターネットの使用に取って代わるネットワーク接続(たとえば、専用の接続、リースされた接続および/またはプライベートな接続)を管理/制御し得る。さらに、(たとえば、エンジニア108の)認証および認可は、ユーザがマシンインターフェイス(たとえば、予約サービス)を管理することを可能にする予約システムポータルによって実行され得る。いくつかの例において、中央CIOS102は、Java(登録商標)データベース接続(JDBC)などを使用してフロックメタデータ、プランおよび状態を中央DB118に格納し得る。いくつかの例において、ANS106は、新たなアーティファクトが公開された場合に変更監視サービス114に通知するように構成され得る。ANS106は、HTTPSを使用し得て、認証も認可も相互トランスポート層セキュリティサービスによって処理され得る。さらに、いくつかの例において、変更監視サービス114は、フロック構成変更についてSCVMS104をポーリングし得る。このポーリングは、セキュアシェル(SSH)または他のプロトコルを使用して実行され得る。変更監視サービス114の認証は、CIOSシステムアカウントによって処理され得て、認可は、SCVMS104によって処理され得る。
いくつかの例において、エンジニア108は、ビュー/プラン/承認サービス112を使用して、以下の動作のうちの1つまたは複数の動作を行うことができる。エンジニア108は、中央CIOS102を呼び出してプランを生成および承認することによってプランおよび/または承認を行うことができる。エンジニア108は、中央CIOS102を呼び出して世界規模の進行中のCIOSアクティビティのステータスを見ることによってビューを行うことができる。さらに、エンジニア108は、中央CIOS102を世界規模のCIOSによって管理されるリソースの状態のレプリカを見ることができる。これらのAPI呼び出し(または、そのようなもの)は、HTTPSプロトコルまたは同様のプロトコルによって実行可能である。さらに、関連するACLは、LAN124によって制御され得て、認証も認可も予約サービスによって処理され得る。いくつかの例において、ビュー/プラン/承認サービス112は、(たとえば、HTTPSなどを使用して)プランニングを要求してプランの承認を地域CIOS120の全ての領域にプッシュし得る。関連するACLは、ワイドエリアネットワーク(WAN)ゲートウェイ126によって管理されるセキュリティリストを使用して制御され得る。認証は、相互トランスポート層セキュリティによって処理され得て、認可は、さまざまなアイデンティティポリシによって処理され得る。さらに、状態インジェスタサービス116は、CIOSが(たとえば、やはりHTTPSなどを使用して)要求時にジョブステータスまたは状態変更のセントラルビューを提供することができるように、それらのジョブステータスまたは状態変更について地域CIOS120を注視し得る。このためのACLSもWANゲートウェイ126によって処理され得て、認証も認可も相互トランスポート層セキュリティサービスによって処理され得る。
図2は、少なくとも地域CIOS202を実行するための技術を説明するためのアーキテクチャ200を示す図である。いくつかの例において、地域CIOS202は、宣言型プロビジョニングおよびプランニングの作業の多くの部分、ならびに承認されたリリースアプリケーションが発生し得る場所である。いくつかの例において、地域CIOS202の各インスタンスは、「実行ターゲット」のレベルで動作を処理することができる地域フロントエドを有し得る。それは、以下を実行するように構成され得る。
・中央CIOS102から入来する動作についての全てのCIOS認証を処理すること
・一度に1回だけの「実行」(プラン/リソースインポート/適用プラン)が所与の実行ターゲットについて進行中であることができるというルールを実施すること
・宣言型インフラストラクチャプロビジョニングの実行中に入力および出力に使用される宣言型プロビジョニングアーティファクトのためのバイナリアーティファクトストレージを管理すること。入力の例は、宣言型インフラストラクチャプロビジョニング構成ファイルおよび入力状態ファイルである。典型的な出力は、最終状態ファイルである。
・任意の所与の実行について、CIOSエクセキュータからの作業およびCIOSエクセキュータからの結果についてのポーリングを要求すること
いくつかの例において、CIOSフロントエンドは、実際の実行を処理することができるCIOSエクセキュータ206(本明細書では「スケジューラ」とも称される)に依存し得る。いくつかの例において、CIOSエクセキュータは、「実行」のレベルで動作し、それは、以下を実行することができる。
・利用可能なワーカノードのプールを追跡すること
・入来するジョブ要求に照会して、それらを、利用可能であるとして、資格を有しているワーカに割り当てること
・クライアントに報告するためにワーカステータスおよび実行更新情報を追跡すること
・リースプロトコルによってデッドノードを検出して、タスクステータスに応じて、デッドノードに割り当てられたタスクを機能しなくし得ること
・実行をキャンセル/強制終了/一時停止/再開するための機能を提供して、それらを、キャンセル/強制終了/再開情報をワーカノードに渡すための機能にマッピングし得ること
いくつかの例において、CIOSエクセキュータは、CIOSワーカに依存し得て、このCIOSワーカは、実行のためのタスクをワーカに割り当てて、ワーカがジョブ進捗を更新するための機能を提供することができる。ワーカサービスは、「タスク」の粒度で動作する。各ワーカは、そのワーカに割り当てられたタスクを実行してタスクステータスおよび出力を報告するエージェントである。各ワーカは、以下を実行することができる。
・割り当てられたワーカアイテムについてエクセキュータワーカAPIをポーリングして、割り当て状態をそのローカル状態と一致させるための措置をとること
ローカルに存在しないタスクアイテムのポーリングのためのコンテナを開始すること
対応する割り当てられたタスクアイテムを持たないコンテナをローカルで実行するためのコンテナを強制終了すること
・ジョブのステータスを報告すること
・ジョブコンテナ実行のための入力および出力をステージングすること
・実行ターゲットのリリースの実際の作業を行うための宣言型インフラストラクチャプロビジョニングコンテナを起動して監視すること
CIOSワーカは、CIOSエクセキュータからの作業をポーリングして結果をCIOSエクセキュータのワーカエンドポイントに報告するのにCIOSエクセキュータに依存し得る。ワーカは、全ての連携についてエクセキュータに依拠し得る。さらに、CIOSワーカは、地域CIOS202にも依存し得て、地域CIOS202では、ワーカサービスは、地域フロントエンドサービスに関連付けられた1つまたは複数のAPIからの入力を読み取って、これらの1つまたは複数のAPIへの出力を書き込む。入力の例は、構成および開始状態ファイル、ならびにマッピングのインポートである。出力の例は、宣言型プロビジョニングプロセス、宣言型プロビジョニング状態ファイルの出力および結果状態のインポートである。
いくつかの例において、地域CIOS202は、CIOSの地域インスタンス/デプロイメントを管理するための地域サービスであり得る。地域CIOS202は、特定の領域に関連するプランおよび状態を正式に格納して管理する責務をカバーする。地域DB204は、その特定の領域における状態およびプランのためのCIOS DBであり得る。これは、図1の中央DB118の領域のサブセットの正式なコピーである。スケジューラ206は、ワーカフリート容量を管理して、タスクをワーカに割り当てて、タスク状態の経過を追うことを担うことができる。いくつかの例において、タスクDB208は、タスク状態のための別のCIOS DBである。このDBの中のデータは、大部分が動作目的である。さらに、ワーカ210は、宣言型プロビジョニングイメージを管理するjava仮想マシン(JVM)のフリートであり得る。これらは、スケジューラ206から命令を受信して、結果をスケジューラ206および地域CIOS202の両方に伝達する。CIOSコンテナ212は、それ自体のプライベートドッカー214コンテナにおいて宣言型プロビジョニングアクションを実行することができる。このコンテナは、機密事項を含んでいなくてもよい。さらに、いくつかの例において、署名プロキシ216は、宣言型プロビジョニングイメージに機密事項を入れることを回避するために宣言型プロビジョニングツールによって機密事項の流出を防止するように構成され得る。その代わりに、CIOSは、署名の要求を実行したり、プロキシにおいて相互トランスポート層セキュリティ(mTLS)サービスを開始したりすることができる。これも、FIPSに準拠した暗号ライブラリを使用しやすくする。
いくつかの例において、中央CIOS102は、地域CIOS202を呼び出して、プランを作成し、承認をプッシュし、ジョブステータス(サービスプリンシパル)を注視し、宣言型プロビジョナ状態(サービスプリンシパル)を抽出することができる。イングレスプロキシ218は、ACLとして構成され得て、さまざまなアイデンティティポリシが認証にも認可にも使用され得る。代替的に、いくつかの例において、イングレスプロキシ218は、入来する要求、プランなどの負荷を分散させるように構成されたロードバランサと置換されてもよい。いくつかの例において、地域CIOS202は、そのようにするようにスケジューラ206に求めることによって宣言型プロビジョナを実行し得る。ワーカ210は、それが何を実行しているはずであるかをスケジューラ206に尋ねることができ、完了するとステータスをスケジューラ206に報告することができる。場合によっては、mTLSが地域CIOS202およびワーカ210についての認証も認可も処理してもよい。さらに、ワーカ210は、宣言型プロビジョナを実行する必要がある場合には、ローカルドッカー214と対話することによってドッカーコンテナにおいて宣言型プロビジョナを実行する。この段階での認証は、ローカルunix(登録商標)ソケットによって処理され得る。この最後のステップではドッカープロトコルが使用されてもよいが、前のステップではHTTPSが利用されてもよい。
いくつかの実施形態において、地域CIOS202は、フロック、リリース、インフラストラクチャコンポーネント、アーティファクトなどに関連する任意の好適なデータを表示するためのユーザインターフェイス(たとえば、ユーザインターフェイス500~1300)の任意の好適な部分および/または任意の好適な数のユーザインターフェイスを提供するように構成され得る。いくつかの実施形態において、地域CIOS202は、1つまたは複数のリリースに関連するデータを任意の好適なインターフェイスを介して表示し得る。リリースは、1つもしくは複数のインフラストラクチャコンポーネントに関連するタスク、および/または、1つもしくは複数のアプリケーション(たとえば、アーティファクト)に対する1つもしくは複数のコード変更に関連するタスクの任意の好適な組み合わせを含み得る。地域CIOS202によって提供されるユーザインターフェイスのいくつかの例については、図5~図13に関して以下で説明する。
いくつかの例において、CIOSコンテナ212は、宣言型プロビジョナが署名プロキシ216と(APIを介して)対話することを可能にし、この宣言型プロビジョナは、それがさまざまなCIOSサービスを呼び出していると考える。署名プロキシ216は、宣言型プロビジョナのみが知っている、宣言型プロビジョナのインスタンスの呼び出し当たり1つのエフェメラルポート上で聞く。署名プロキシ216は、署名またはmTLSの要求を開始することができ、宣言型プロビジョナの呼び出しをサービスエンクレーブ内の他のCIOSサービスに渡すことができる。いくつかの例において、署名プロキシ216は、1つまたは複数のパブリックCIOSサービス220と通信することもできる。たとえば、署名プロキシ216は、可能であればパブリックサービスの内部エンドポイントを使用する。内部エンドポイントを持たないサービスでは、それは外部エンドポイントに到達するのにエグレスプロキシ222を使用しなければならない。この署名プロキシ216の使用は、領域横断通信のためのものではないであろう。たとえば、各領域におけるエグレスプロキシホワイトリストは、その領域のパブリックIP範囲のためだけのものであり得る。いくつかの例において、ワーカ210は、次いで、地域CIOS202における宣言型プロビジョナからの状態およびログを中央CIOS102に流出させ得るようにそれらの状態およびログを維持し得る。
CIOSを使用して、代表的なカスタマエクスペリエンスにはいくつかのフェーズ、すなわちオンボーディング、リリース前、世界規模のリリースおよび戦術的なリリースがある。リリース前フェーズにおいて、以下は、新たなアーティファクトが構築されていることとアーティファクトをリリース1(たとえば、R1)にリリースすることとの間で何が起こるかの一例である。これは、現在の変更管理プロセスの一部または大半に取って代わるべきである。関連するアーティファクトが構築されると、CIOSは、「フロック内の全てのものの最新バージョン」を使用して自動的にリリースを生成することができる。リリースは、特定の入力(たとえば、アーティファクトバージョン、レルム、領域およびad)を有するフロックコンフィグの特定のバージョンである。リリースは、領域当たり1つのロールフォワードプランと、領域順序付けを記載するメタデータとを含む。各地域プランは、宣言型プロビジョナがその領域においてフロック構成を実現するのに行うであろう一組の動作である。リリース前環境を有するチームは、CIOSを使用して、上記の環境においてソフトウェアを自動的にリリースしてテストすることができる。チームは、ロールバックプランを自動的にテストするようにCIOSを構成することができる。チームは、CIOS UIを介してリリースを調べて承認することができるであろう。チームは、リリース内の地域プランの一部(しかし、全てではない)を承認することができる。「全てのものの最新バージョン」が好適なプランをもたらさない場合には、チームは、チェリーピックされたアーティファクトバージョンのためのプランを生成するようにCIOSに求めることができる。
世界規模のリリースのフェーズにおいて、以下は、チームが今日の「通常のCM」の明日のバージョンをどのように実行するかの一例である。リリースが承認されると、CIOSは、各々の承認された地域プランをそれぞれの領域にプッシュする。CIOSは、承認されたプランを適用するように各領域内で独立して動作する。CIOSは、その領域のプランに明示的に記載された一組のアクションを実行するのみである。「独立して考える」のではなく、それは機能しなくなるであろう。CIOS UIは、チームに実行の進捗を示す。CIOS UIは、手動承認が要求されるとチームを促す。CIOSまたはダウンストリームサービスにおける停止のために実行が失敗すると、CIOSは、チームに通知することができ、チームに次のステップ(たとえば、アボート、再試行)を促すことができる。CIOSは、再試行を実行するが、ダウンストリームシステムの停止の中には、その再試行しようという意向を超えるものもある。サービス正常性の低下またはテストの失敗のために実行が失敗すると、CIOSは、フロックをその開始状態にロールバックすることによってチームを手助けする。CIOSは、自動ロールバックを開始するとチームに通知(たとえば、ページング)する。チームは、ロールバックプランを承認しなければならず、次いで、CIOSはそれを実行する。
戦術的なリリースのフェーズにおいて、以下は、チームが「突発的なCM」の明日のバージョンをどのように実行できるかの一例である。プランを生成する際、チームは、いくつかの方法で、すなわちトポロジ的に(たとえば、レルム、領域、ADなど)、リソースタイプ(たとえば、「メトリクスコンフィグのみ」または「デプロイメントオーケストレーションサービスのデプロイメントのみ」など)ごとに、または上記の組み合わせで(たとえば、選言的な態様で)、プランを特定のリソースに向けるようにCIOSに求め得る。チームは、世界規模のリリースと同様に戦術的なリリースを承認する。CIOSは、それらを同様にオーケストレーションする。アクティブな世界規模のリリースがある間にチームが戦術的なリリースをデプロイする必要がある場合、CIOSは、対象の領域における世界規模のリリースの実行を停止して、次いで戦術的なリリースの実行を開始する。
いくつかの例において、宣言型プロビジョナの状態(たとえば、従来はファイル)は、宣言型プロビジョナによって管理される一組のリソースの正式な記録である。それは、構成ファイルからの各リソースの論理識別子とリソースの実際の識別子との間のマッピングを含む。宣言型プロビジョナがリソースを作成しているとき、特定の種類の失敗は、実際の識別子がその状態で記録されることを妨げる可能性がある。これが起こると、実際の識別子はもはや宣言型プロビジョナのものではない。これらは、「オーファンリソース」と呼ぶことができる。
ほとんどのリソースでは、オーファンは無駄に相当する。宣言型プロビジョナは、(たとえば)インスタンスを起動して、そのことについては忘れていたが、次にそれが実行されるときには代わりに別のインスタンスを起動するであろう。一意性制約またはクライアントによって供給される識別子を有するリソースでは、オーファンは、宣言型プロビジョナが前進することを妨げる。たとえば、宣言型プロビジョナがユーザ「nglass」を作成し、失敗がそれを見捨てた場合、宣言型プロビジョナの次回の実行は、「nglass」を作成しようとして失敗するであろう。なぜなら、そのユーザ名を有するユーザが既に存在しているからである。場合によっては、オーファンは、新たなリソースを状態に追加する場合にのみ問題になる。いくつかの例において、宣言型プロビジョナのリフレッシュ挙動は、失敗から自然に回復して更新および削除を記録し得る。
CIOSは、ダウンストリームサービスの停止またはCIOS自体の停止が起きても堅牢である必要がある。CIOSは、宣言型プロビジョナを活用して変更を適用することができるので、これは、宣言型プロビジョナを実行して宣言型プロビジョナ状態を維持することに関して堅牢性があるべきであることを意味する。宣言型プロビジョナプロバイダは、数分間にわたって続く停止を回避するのに十分な「小規模の」再試行を実行する。たとえば、クラウドプロバイダは、30分までの間、再試行を実行する。30分よりも長く続くダウンストリームシステムの停止は、宣言型プロビジョナに失敗させる。宣言型プロビジョナは、失敗すると、その状態で成功裏に加えられた全ての変更を記録して、次いで出ていく。再試行を実行するために、CIOSは、宣言型プロビジョナを再実行しなければならない。宣言型プロビジョナを再実行することにより、CIOS自体に失敗が起きてもCIOSは再試行を実行することができる。いくつかの例において、CIOSは、以下の動作をループで実行することができる。
・リフレッシュ:宣言型プロビジョナは、「APIを取得」を呼び出して、その状態で記載されたあらゆるリソースの新しいスナップショットを検索する
・プラン:宣言型プロビジョナは、最近リフレッシュされた現在の状態を考慮して、所望の状態を実現するプラン(具体的な一組のAPI呼び出し)を生成する
・適用:宣言型プロビジョナは、プランにおいて一組のステップを実行する
CIOSは、宣言型プロビジョナを実行する際にこれらのステップのうちの3つ全てを常に実行し得る。リフレッシュ動作は、記録されなかったいかなる更新または削除からの回復も手助けする。CIOSは、プラン動作の結果を調べて、それを承認されたリリースプランと比較する。新たに生成されたプランが、承認されたリリースプランにはなかった動作を含む場合、CIOSは、失敗し得て、サービスチームに通知し得る。
図3は、例示的なフロック302を説明するための有向非巡回グラフ(DAG)300を示す図である。CIOSにおける単一のフロックコンフィグについてのチェックインから生成までのコード/コンフィグの進捗は、最初のテストデプロイメントから最後のprodデプロイメントまでずっと記載することができる。内部では、CIOSは、進捗における各要素を実行ターゲット(ET)と呼ぶ。CIOSは、フロックコンフィグに定義されたDAG200に基づいてETを実行する。各ET(たとえば、ET-1,ET-2,ET-3,ET-4,ET-5,ET-6およびET-7)は、大まかに言って、フロックコンフィグによって記載されるサービスの1つのコピーである。
図4は、例示的なフロック402を説明するためのDAG400を示す図である。フロックコンフィグにおいて、CIOSは、チームがこの進捗をどのように表現するかについて非常に独断的である。チームは、クラウドインフラストラクチャテナンシおよび領域を使用してそれをモデル化しなければならない。チームは、レルムを使用して進捗をモデル化すべきではない。CIOSは、チームがレルム内の多くのテナンシおよびテナンシ内の多くの領域を使用することを可能にする。DAG400は、テナンシおよび領域とともに表された、図3からのDAG300の一バージョンを示している。この例は、prod前ETがprod領域内にあるオーバーレイサービスのためのものである。サービスエンクレーブサービスは、リリース1の中に不安定なテナンシおよび安定したテナンシを有するであろう。DAG400では、IADは、ワシントンDCにおけるダレス空港の地方空港コードであり、YYZは、オンタリオ州トロントの地方空港コードであり、PHX、LHRおよびFRAは、それぞれ、フェニックス、ロンドンおよびフランクフルトの地方空港コードであり、LUFおよびLFIは、2つの異なる空軍基地のものである。
一実施形態において、本明細書に記載されているCIOSおよび/または他の技術は、テラフォーム(宣言型プロビジョニングツール)、タンデン(コード生成ツール)およびオラクルデプロイメントオーケストレータ(ODO)の各々に対する改良である。さらに、いくつかの例において、本明細書に記載されているCIOSおよび/または他の技術は、テラフォーム、タンデンおよびODOツールの少なくとも一部を使用して実現することができる。
図5は、少なくとも1つの実施形態に係る、例示的なユーザインターフェイス(UI)500の概略図である。UI500は、インフラストラクチャエリア502、アプリケーションエリア504およびタスクエリア506の任意の好適な組み合わせを含み得る。UI500は、インフラストラクチャエリア502、アプリケーションエリア504およびタスクエリア506を、図5に示されて配置されるように含み得て、または、これらのエリアは、UI500内に異なったように配置されてもよい。
インフラストラクチャエリア502は、UI500の任意の好適な位置に位置し得る。図5に示されるように、インフラストラクチャエリア502は、UI500の左上の角に位置決めされている。インフラストラクチャエリア502は、任意の好適な数のインフラストラクチャリリースに対応するインフラストラクチャリリースデータ(たとえば、リリース名、リリースのインフラストラクチャコンポーネントがプロビジョニングされる実行ターゲットの数、リリースの実行に関連付けられた進捗の1つまたは複数のインジケータ、最新のインフラストラクチャリリースのインジケータ、など)を含み得る。示されているように、インフラストラクチャエリア502は、「ラバブル」、「エキサイテッド」、「エレガント」、「ニュークリア」、「ストレンジ」および「アクエアス」と題される6つのリリースに対応するインフラストラクチャリリースデータを表示する。項目508は、リリース「ラバブル」に対応するインフラストラクチャリリースデータを表示し、パーセンテージ(たとえば、75%)とプログレスバー510とを含み、各々は、リリースがフロックの75%に対して実行されたことを示す。パーセンテージおよびプログレスバー510は、リリース進捗を示すための例示的なユーザインターフェイス要素であるが、このような進捗を(たとえば、視覚的に、テキストで、など)表示するのに任意の好適なユーザインターフェイス要素が利用されてもよい、ということが理解されるべきである。一例として、対応するインフラストラクチャリリースの進捗は、さらにまたは代替的に、数字、表、または進捗を表示するためのその他の好適なユーザインターフェイス要素によって表示されてもよい。いくつかの実施形態において、特定のインフラストラクチャリリースは、ラベル512またはアイコン、チェックマークなどを含む別の好適なユーザインターフェイス要素を使用して、最新のリリースとして識別され得る。図5に示されるように、項目508は、リリース「ラバブル」に対応するインフラストラクチャコンポーネントがプロビジョニングされる実行ターゲットの数(たとえば、15個)を示すターゲット数を含む。インフラストラクチャエリア502の各項目において提供されているインフラストラクチャリリースデータは、異なったように配置されてもよく、図5に示される属性の数よりも、各リリースに対応するインフラストラクチャリリースデータの属性をより多くまたはより少なく含んでいてもよい、ということが考えられる。
いくつかの実施形態において、UI500は、アプリケーションエリア504を含み得る。アプリケーションエリア504は、UI500の任意の好適な位置に位置し得る。図5に示される例では、アプリケーションエリア504は、UI500の右上の角に位置決めされている。アプリケーションエリア504は、任意の好適な数のアプリケーションリリースに対応するアプリケーションリリースデータ(たとえば、アプリケーションリリース名、リリースのソフトウェアアーティファクトがデプロイされる実行ターゲットの数、リリースの実行(たとえば、ソフトウェアアーティファクトのデプロイメント)に関連付けられた進捗の1つまたは複数のインジケータ、最新のアプリケーションリリースのインジケータ、など)を含み得る。示されているように、アプリケーションエリア504は、「チャック」、「ボブ」、「フェリペ」、「アサ」、「ストレンジ」および「エロール」と題される6つのアプリケーションリリースに対応するアプリケーションリリースデータを表示する。項目514は、アプリケーションリリース「チャック」に対応するアプリケーションリリースデータを表示し、パーセンテージ(たとえば、60%)と、リリースがフロックの60%に対して実行されたことを示すプログレスバー516とを含む。パーセンテージおよびプログレスバー516は、アプリケーションリリース進捗を示すための例示的なユーザインターフェイス要素であるが、このような進捗を(たとえば、視覚的に、テキストで、など)表示するのに任意の好適なユーザインターフェイス要素が利用されてもよい、ということが理解されるべきである。一例として、対応するアプリケーションリリースの進捗は、さらにまたは代替的に、数字、表、または進捗を表示するためのその他の好適なユーザインターフェイス要素によって表示されてもよい。いくつかの実施形態において、特定のインフラストラクチャリリースは、ラベル518またはアイコン、チェックマークなどを含む別の好適なユーザインターフェイス要素を使用して、最新のリリースとして識別され得る。図5に示されるように、項目514は、リリース「チャック」に対応するアーティファクト(たとえば、アプリケーションコード)がプロビジョニングされる実行ターゲットの数(たとえば、12個)を示すターゲット数を含む。アプリケーションエリア504の各項目において提供されるアプリケーションリリースデータは、異なったように配置されてもよく、各リリースに対応するアプリケーションリリースデータの属性をより多くまたはより少なく含んでいてもよい、ということが考えられる。
いくつかの実施形態において、UI500は、タスクエリア506を含み得る。タスクエリア506は、UI500の任意の好適な位置に位置し得る。図5に示される例では、UI500の下半分の方に位置決めされている。タスクエリア506は、フロックの各実行ターゲットに対応するターゲットリリース情報を含み得る。本明細書において提供されている例の各実行ターゲットは、領域に対応し得る。本明細書の例における領域は、少なくとも1つの物理的位置を備え得る。ターゲットリリース情報は、インフラストラクチャリリースのための識別子と、実行ターゲットへのインフラストラクチャリリースのインフラストラクチャコンポーネントのプロビジョニングの進捗に対応するステータス(たとえば、ステータスの視覚表示)と、アプリケーションリリースのための識別子と、そのアプリケーションリリースに対応するアーティファクト(たとえば、アプリケーションコード)のデプロイの進捗を示すステータス(たとえば、ステータスの視覚表示)とを含み得る。タスクエリア506は、実行ターゲット列520、インフラストラクチャ変更列522および/またはアプリケーション変更列524などの任意の好適な数の列および列の組み合わせを含み得る。実行ターゲット列520は、フェーズによって編成されることができ、フェーズは、リリース(たとえば、一組のインフラストラクチャコンポーネントをプロビジョニングすること、および/または、一組のソフトウェアアーティファクトをデプロイすることを含む)が実行ターゲットにわたって実行される順序を示し得る。UI500には、フェーズI、フェーズII、フェーズIIIおよびフェーズIVの4つのフェーズが示されている。いくつかの実施形態において、フェーズIは、デプロイメントがフェーズIIに入る前に完了されなければならず、フェーズIIは、フェーズIIIの前に完了されなければならない、などである。示されているように、フェーズIおよびIIは、各々が1つの実行ターゲットを含んでおり、フェーズIIIは、4つの実行ターゲットを含んでおり、フェーズIVは、12個の実行ターゲットを含んでいる。これらの実行ターゲットは、並列に適用可能である。
タスクエリア506の各行は、フェーズおよび/または実行ターゲットに対応し得る。一例として、項目526は、フェーズ(たとえば、フェーズI)およびそのフェーズの単一の実行ターゲットに対応し得る。項目528は、フェーズIIIに対応し得る。項目530は、フェーズIVに対応し得る。デフォルトで、フェーズの実行ターゲットに対応する項目は隠されていてもよい。フェーズに対応する項目の選択は、そのフェーズの対応する実行ターゲットに対応する行が出現するようにさせることができる。一例として、項目532は最初は隠されていてもよく、項目530のみが表示されてもよい。いくつかの実施形態において、項目530が選択されると、項目532が表示され得る。項目532は、インフラストラクチャリリース(たとえば、「ラバブル」)およびアプリケーションリリース(たとえば、「チャック」)が対応するフェーズIVの特定の実行ターゲット/領域を示す。
インフラストラクチャ変更列522は、各フェーズまたは実行ターゲットについてのインフラストラクチャリリースの名前およびインフラストラクチャリリースのステータスを含み得る。いくつかの実施形態において、2つ以上の実行ターゲットを含むフェーズは、1つまたは複数のインフラストラクチャおよび/またはアプリケーションリリースに対応し得る。したがって、いくつかの実施形態において、インフラストラクチャ変更列522は、フェーズの実行ターゲットによって利用されるいくつかの異なるインフラストラクチャリリースを示すデータを含み得る。一例として、インジケータ534は、フェーズIVの実行ターゲットにリリースされる3つの異なるインフラストラクチャリリースがあることを示すように表示され得る。ステータスインジケータ536も、フェーズの各実行ターゲットへの各インフラストラクチャリリースのステータスを示すようにインフラストラクチャ変更列内に表示され得る。ステータスインジケータ536は、1つまたは複数の実行ターゲットへのリリースが、エラーに遭遇したこと、進行中であること、または完了したことを個々に表示し得る。同様に、アプリケーション変更列524は、フェーズIVの各実行ターゲットについて1つのアプリケーションリリースが利用されることを示すためのインジケータ538と、フェーズIVの各実行ターゲットについての各アプリケーションリリースのステータスを示すためのステータスインジケータ540とを含み得る。単一の実行ターゲットに対応する項目(たとえば、項目532)では、インフラストラクチャ変更列522は、インフラストラクチャリリースの名前およびステータスを表示し得る。いくつかの実施形態において、ステータス(たとえば、「済」、「失敗」、「進行中」、「レビュー待ち」など)は、図5に示されるようにテキストで表示されてもよく、または、ステータスは、異なったように表示されてもよい。単一の実行ターゲットに対応する項目では、アプリケーション変更列524は、同様に、アプリケーションリリースの名前(たとえば、「チャック」)と、そのアプリケーションリリースのステータス(たとえば、「済」、「失敗」、「進行中」、「レビュー待ち」など)とを含み得る。アプリケーションリリースについて表示されるステータスは、インフラストラクチャリリースについて提供されるステータスと同一である場合もあれば、異なっている場合もある。いくつかの実施形態において、項目を選択する(たとえば、項目542を選択する)ことにより、この選択を表示するようにこの項目が視覚的に変更され得る(たとえば、この項目の背景が変更され得る)。項目542の選択に対応する1つの例示的な変更が図5に示されている。リンク544を選択することにより、ユーザは図6のUI600にナビゲートされ得るが、他のナビゲーションアクションが同様の結果を提供してもよい。
いくつかの実施形態において、リリースが少なくとも1つの局面において失敗すると、この失敗のステータスがUI500に表示され得る。一例として、インフラストラクチャコンポーネントプロビジョニングの失敗は546に表示され、ソフトウェアアーティファクトデプロイメントの失敗は548に表示される。いくつかの実施形態において、546および/または548においてユーザ入力が受信され得る(たとえば、「失敗」という語の選択)。このユーザ入力に応答して、ユーザは、改善措置(たとえば、実行ターゲットに対応するプロビジョニングおよび/またはデプロイメントタスクを再試行すること、実行ターゲットに対応するプロビジョニングおよび/またはデプロイメントタスクをキャンセルすること、実行ターゲットに対応するプロビジョニングおよび/またはデプロイメントタスクを変更すること、など)を実行するための1つまたは複数のオプションを提供され得る。
図6は、少なくとも1つの実施形態に係る、選択されたリリースに関連する情報を提供するための例示的なUI600を示す概略図である。UI600は、リリースの詳細を見ることができるユーザインターフェイスを表示し得る。リリース名セクション602は、UI600の上部に示されているが、リリース名セクション602は、UI600上の任意の好適な位置に位置してもよい。示されているように、リリース名セクション602は、特定のリリースに関連付けられたリリースデータを表示し得る。一例として、リリース「エキサイテッド」に関連付けられたリリースデータは、リリース名604とステータス606とリリース識別子608とを含むものとして示されているが、リリースデータのより多くの属性またはより少ない属性が表示されてもよい。示されているように、リリース名604は「エキサイテッド」であるが、リリース名604は、所望のフロックにおける任意の好適なリリースの名前に対応する任意の好適な英数字識別子を含んでいてもよい。ステータス606は、特定のリリースに関連付けられたステータス(たとえば、「未着手」、「承認が必要」、「適用」、「失敗」、「済」など)を表示し得る。リリース識別子608は、「09879iuhku7w」として示されているが、リリース識別子608は、関連するリリースに固有であり得る任意の好適なIDであってもよい。
UI600は、ステータスバー610も含み得て、ステータスバー610は、関連するリリースのステータスについての情報(グラフ612、タイムスタンプ614およびステータスコード616など)を含み得る。同様に、ステータスバー618は、グラフ620、タイムスタンプ622およびステータスコード624を含み得る。グラフ612および618は、タスクの番号順リストを表示し得る。一例として、グラフ612および618の各ノードは、一組のタスク示し得る(たとえば、「1」は一組の1個のタスクを示し、「9」は一組の9個のタスクを示す、など)。2つ以上のタスクがノードに示される場合、このノードは、並列に実行される一組のタスクを指すよう意図され得る。各タスクは、特定のターゲットに対応するリリースに対応し得る。ノードの順序(たとえば、左から右)は、タスクの各組が実行されるシーケンスを示し得る。たとえば、ノード626に関連付けられたタスクは、ノード628に関連付けられたタスクが開始する前に完了するよう要求され得る。同様に、ノード628に関連付けられたタスクは、ノード630に関連付けられたタスクが開始する前に完了するよう要求され得る。ノード630に関連付けられたタスクの各々は、並列に実行され得る。タイムスタンプ614は、開始日を表示し得る。さらに、タイムスタンプ614は、ステータスコード「開始」に対応する開始時刻と、ステータスコード「完了」に対応する終了時刻とを表示し得る。ステータスコード624は、関連付けられたタスクが承認されたことを示し得て、タイムスタンプ622は、ノード632に関連付けられたタスクに対応する開始時刻を示し得て、ノード632は、タスクが現在実行中であることを示すために「進行中」と表記され得る。ステータスコード616および624は、関連するリリースのステータス(たとえば、「承認済」、「進行中」、「失敗」、「承認が必要」など)を追跡するための任意の好適なステータスコードであり得る、ということが理解されるべきである。
いくつかの実施形態において、ステータスバーは、フェーズ順序を表示するのに利用されてもよい。一例として、ステータスバー610は、フェーズ1などの特定のフェーズに対応し得て、ステータスバー618は、フェーズ2などの異なるフェーズに対応し得る。上記のように、フェーズは、フェーズが完了する順序を記載するのに使用され得る。示されているように、ステータスバー610に示されている11個のフェーズ1タスクは、ステータスバー618に関連付けられた12個のフェーズ2タスクが開始する前に完了するよう要求され得る。2つのフェーズ以外の追加のフェーズが利用されてもよい、ということが理解されるべきである。現在のウィンドウサイズを考慮して、フェーズまたは複数のフェーズに対応する情報の表示が幅広すぎて表示できない場合には、ユーザがさまざまなフェーズをスクロールしてそれらの対応するステータスを見ることができるように、ステータスバー610は水平にスクロール可能であってもよい、ということが理解されるべきである。いくつかの実施形態において、ステータスバー610は、ユーザが垂直スクローリング機能のみを備えた入力デバイス(たとえば、マウス)を利用している場合にそのユーザがそれでもなお水平にスクロールすることができるように「スマートスクローリング」を利用する。一例として、ユーザは、入力デバイスを使用して物理的に下方向にスクロールしてもよく、ステータスバー610は、右にスクロールすることになる。ユーザが入力デバイスを使用して物理的に上向きにスクロールすると、ステータスバー610は左にスクロールし得る。フィルタは、ユーザが動作ノイズによって気を取られて影響著しい変更またはエラーを見逃すことが起こりにくいようにユーザが影響著しい変更に注目することを可能にする。
フェーズプランセクション634もUI600に含まれることができ、示されているように、フェーズプランセクション634は、UI600の下部にあるが、UI600内に異なったように配置されてもよい。フェーズプランセクション634は、所望のフェーズ(たとえば、ステータスバー618に対応するフェーズ2)に関連する情報を含み得る。UI600に示されるように、フェーズプランセクション634は、フェーズタイトル636、フェーズステータス638、実行ターゲットの数640、動作の概要642、テナンシ列644、デプロイメント進捗列646、作成・読取・更新・削除(CRUD)動作列648およびターゲットレビューステータス列650を表示する。フェーズタイトル636は、UI600に示されるリリースの選択されたフェーズの名前を含み得る。この名前は、任意の好適な長さの任意の好適な英数字識別子を含み得る。いくつかの実施形態において、フェーズステータス622は、リリースの選択されたフェーズのステータスであり得る。UI600に示されるように、フェーズタイトル636は「フェーズII」であり、フェーズステータス638は「承認が必要」として示されている。フェーズステータス638は、リリースの選択されたフェーズについての任意の好適なステータス(たとえば、「承認が必要」、「進行中」、「失敗」、「済」など)であり得る。UI600に「12」として示されている実行ターゲットの数640は、リリースをデプロイすることができる任意の数の実行ターゲットを示し得る。動作の概要642は、そのフェーズについて計画される作成動作、改訂動作、更新動作および削除動作の数を示し得る。UI600に示されるように、動作の概要642は、作成、更新、削除および読取(たとえば、変更なし)という4つの異なる動作(左から右に記載)を含む。図6に示されるように、20個の作成動作、20個の更新動作、100個の削除動作、および1つの変更なし動作がある。UI600は、動作の概要642に任意の好適な数の動作または動作の組み合わせを含み得る。動作の概要642は、作成、改訂、更新および削除に対応する4つのボタンを含み得る。これらのボタンの各々は、フェーズプランセクション634から対応する一組の動作をフィルタリングするためのトグルとして利用され得る。たとえば、「作成」ボタンが選択されると、全ての作成動作がフェーズプランセクション634からフィルタリングされ得る。作成ボタンがもう一度選択されると、これらの作成動作は、フィルタリング解除されて、フェーズプランセクション634内に再び出現し得る。デフォルトで、これらのボタンは、いずれの動作もフィルタリングされないようにオフにされてもよい(たとえば、選択解除されてもよい)が、任意の好適なデフォルト挙動が利用されてもよい。
図6は、特定の実行ターゲットの影響下にある変更を示しているが、いくつかの実施形態では、同様の変更がグループ化されてもよく、各変更が関連している実行ターゲットが表示されてもよい、ということが理解されるべきである。したがって、図6に対応するフェーズプランは、(示されているような)変更に対する実行ターゲットまたは実行ターゲットに対する変更という二通りに変えられてもよい。
テナンシ列644は、UI600上の任意の好適な位置に位置し得て、テナンシ列644は、フェーズIIのノード632に対応する特定の一組のタスク(たとえば、項目652)に対応する項目を含む実行ターゲットタスクのリストと、それらのタスクの実行中に作成、変更または削除されることが予定されているアプリケーションのリスト654とを含み得る。アプリケーションのリスト654を表示するために、ユーザは、リリースに含まれるアプリケーション(たとえば、SMSエージェント)を表示するようにリストを拡張するためのオプション655を選択し得る。UI600に示されるように、現在表示されている唯一のアプリケーションは、「SMSエージェント」658である。UI600は、SMSエージェントの構成ファイルに対して加えられる変更を659に示し得る。いくつかの実施形態において、UI600を提供するコンピューティングシステムは、ソフトウェアアーティファクト(たとえば、SMSエージェント)の以前の構成を識別し、デプロイされるソフトウェアアーティファクトの新たな構成を識別し、ソフトウェアアーティファクトの以前の構成から新たな構成への変更の表示を提供し得る(たとえば、659に表示)。示されているように、この変更は、行5を削除して(5-によって示される)新たな行5を追加する(5+によって示される)ことを含み得る。いくつかの実施形態において、「変更」(更新とも称される)は、削除も作成も含み得る。更新の作成/削除は、CRUD動作列648内の作成/削除ではなく、更新動作として表示され得る。アプリケーションのリスト654は、選択されたリリースのためのその他の好適なアプリケーションも含み得る。
デプロイメント進捗列646は、関連する実行ターゲットにおけるリリースのステータスを表示することができる。UI600に示されるように、示されているリリースについての実行ターゲットのステータスは「適用」であるが、任意の好適なステータス(たとえば、「適用」、「承認が必要」、「未着手」、「済」、「失敗」など)が表示されてもよい。CRUD動作列648は、関連するターゲットについて実行される動作についての情報を含み得る。これらの動作は、作成コマンド、更新コマンド、削除コマンドまたは変更なしコマンドを含み得て、これらの動作は、各実行ターゲット、各アプリケーション、または任意の好適なソフトウェアおよび/もしくはハードウェアコンポーネントに適用可能である。ターゲットレビューステータス列650は、これらの動作が各エンティティ上でレビューされたか否かについての情報を含み得る。UI600に示されるように、ターゲットレビューステータスは、「レビュー済」として示されているが、ターゲットレビューステータスは、関連するリリースにおける動作を追跡するのに適した任意のステータスであってもよい。
フェーズプランセクション634は、一組の選択オプション(たとえば、選択オプション660)も含み得て、これらの一組の選択オプションは、「プラン」、「状態」、「ログ」、「承認」などのためのオプションを含み得る。UI600および対応するデータは、「プラン」オプションが選択されると提供されるよう意図される。
リリース履歴セクション662もUI600上に位置し得る。UI600に示されるように、リリース履歴セクション662は、UI600の左側部分に位置しているが、リリース履歴セクション662は、UI600上の任意の好適な位置に位置してもよい。リリース履歴セクション662は、関連するフロック内のさまざまなリリースに関する情報を含み得る。UI600に示されるように、「ラバブル」、「エキサイテッド」および「エレガント」という3つのリリースが表示されているが、任意の好適な数のリリースがリリース履歴セクション662に表示されてもよい。リリース履歴セクション662からリリースのうちのいずれか1つを選択することにより、上記のUI要素602~660の各々についてそのリリースに関連付けられた対応するデータが表示され得る。いくつかの実施形態において、リリース履歴セクション662は、変更タイプインジケータ664(たとえば、「インフラストラクチャ」、「アプリケーション」など)、ターゲット数インジケータ666、リリースタイムスタンプ668、ロールフォワードオプション670および新リリース作成オプション672も含み得る。ターゲット数666は、特定のリリースがプロビジョニングされるよう意図される実行ターゲットがいくつあるかを示し得る。ターゲット数666は、各々の特定のリリースについて表示され、関連するリリースについて任意の好適な数のターゲットを含み得る。リリースタイムスタンプ668は、選択されたリリースが作成された時刻またはプロビジョニングが完了した時刻を、ステータスインジケータ(たとえば、「作成」、「完了」など)とともに含み得る。リリースタイムスタンプ668は、関連するリリース上の任意の好適な位置に位置してもよく、または、リリースタイムスタンプ668は、任意の特定のリリースには無くてもよい。ロールフォワードオプション672は、ユーザが、以前にロールバックされた構成を再デプロイすることを可能にする。新リリース作成オプション656は、ユーザが、選択されたフロックについて新たなリリースを作成することを可能にし得る。
いくつかの実施形態において、ユーザは、マウスを右クリックしてオプション656が出現するようにさせ得る。オプション656は、大体ユーザのマウスカーソル付近に出現し得る。オプション656を選択することにより、ユーザは以下でさらに説明する図8のUI800にナビゲートされ得る。
ユーザは、フェーズプランセクション634内で上方向または下方向にスクロールして、選択された特定のフェーズに関連するデータのさまざまな部分を見ることができる機能を提供され得る、ということが理解されるべきである。いくつかの実施形態において、対応するフェーズが選択されたことおよびフェーズプランセクション634における情報が選択されたフェーズに対応することを示す選択されたフェーズのステータスバー(たとえば、ステータスバー620)は、強調表示および/または拡大され得る。
図7は、少なくとも1つの実施形態に係る、リリースの状態を見るための例示的なユーザインターフェイス(たとえば、UI700)を示す概略図である。
リリースステータスセクション704は、UI700上の任意の好適な位置に位置し得る。UI700に示されるように、リリースステータスセクション704は、UI700の上部にある。リリースステータスセクション704は、リリースに関連する任意の好適な情報であり得て、この情報は、リリースのステータス(たとえば、「適用」、「一時停止」、「済」、「失敗」など)と、関連するリリース(たとえば、図7に示される関連情報に対応するリリース)が開始、完了、一時停止などした時刻を含み得るタイムスタンプとを含む。リリースステータスセクション704は、関連するリリースのステータスを追跡するためのその他の好適な情報を含み得る。
少なくとも1つの実施形態において、UI700は、フェーズプランセクション706を含み得る。いくつかの実施形態において、フェーズプランセクション706を含むUI700は、図6の選択オプション660の「状態」オプション702の選択に応答して表示され得る。「状態」オプション702を選択することにより、関連するリリースの状態についての情報または関連するリリースのステータスに関連するその他の好適な情報を表示することができる。
いくつかの実施形態において、フェーズプランセクション706は、フェーズ(たとえば、図6に関連して上記したフェーズII)に対応する複数組の実行ターゲットを記載することができる。図6および同様に図7に示されるように、フェーズは、ノード632,710および712を含むグラフ620に関連付けられ得る。各ノードは、そのフェーズの一組のタスクに対応し得る。一例として、実行ターゲットタスクセット714,716および718が記載され得る。実行ターゲットタスクセット714はノード632に対応し得て、実行ターゲットタスクセット716はノード710に対応し得て、実行ターゲットタスクセット718はノード712に対応し得る。UI700に示されるように、10個の実行ターゲット(たとえば、ノード712にも実行ターゲットタスクセット718にも示されている)を含む実行ターゲットタスクセット718が選択されている。実行ターゲットタスクセット718を選択すると、対応する10個の実行タスクが実行ターゲットタスクセット718の下に個々の行として表示され得る。図7に示されるように、各タスクは、リリースがプロビジョニングされる特定の実行ターゲットに対応し得る。
いくつかの実施形態において、リリースオプションメニュー720が提供され得る。リリースオプションメニュー720を選択すると、いくつかのメニューオプションが提供され得る(たとえば、リリースを一時停止(図示せず)、リリース詳細、再開、リリースをキャンセル、など)。いくつかの実施形態において、リリースは、リリースオプションメニュー720を選択し、続いて、リリースを一時停止するためのオプションを選択することによって、一時停止され得る。UI700のビューは、リリースが一時停止された後にUI700の状態を表示するよう意図されている。いくつかの実施形態において、一時停止された状態は、フィールド722に表示され得る。ユーザがフィールド722上をホバーする場合、一時停止された状態に関するステータス情報は、724に示されるように表示され得る。724において提供される情報は、特定のリリースに対応する特定のフェーズの状態についての任意の好適な情報を含み得る。
リリースを一時停止した後、ユーザは、再びリリースオプションメニュー720を選択して、リリース詳細オプション728、再開オプション730およびリリースキャンセルオプション732を表示し得る。リリース詳細オプション728は、選択されると、関連するリリースについての任意の好適な情報(たとえば、リリース番号)を表示することができる。再開オプション712は、選択されると、それが一時停止された場所から関連するリリースのデプロイメントを開始することができる。リリースキャンセルオプション714は、選択されると、関連するリリースをキャンセルして、キャンセルされたリリースをフロックから除去することができる。
ユーザは、フェーズプランセクション634内で上方向または下方向にスクロールして、選択された特定のフェーズに関連するデータのさまざまな部分を見ることができる機能を提供され得る、ということが理解されるべきである。
図8は、少なくとも1つの実施形態に係る、リリースに関連付けられたログを見るための例示的なユーザインターフェイス(たとえば、UI800)を示す概略図である。いくつかの実施形態において、フェーズプランセクション634を含むUI800は、図6の選択オプション660の「ログ」オプション802の選択に応答して表示され得る。「ログ」オプション802を選択することにより、既に選択されている実行ターゲットのログおよび/またはソースコードについての情報を表示することができ、または、選択されたフェーズ(または、その後選択されるフェーズ)に対応する任意の好適な実行ターゲットのログおよび/またはソースコードについての情報にアクセスするためのユーザインターフェイスオプションを提供することができる。
UI800は、図6のフェーズプランセクション634を含み得る。実行タスクセット804は、実行タスクセット804の1つまたは複数のタスクを表示するように選択され得る。実行タスクセット804は、図6に関連して上記して図8にもう一度示されているノード632に対応し得る。いくつかの実施形態において、実行タスクセット804を選択すると(または、任意の好適なときに)、特定の実行ターゲットにおいてリリースを提供することに対応するタスク806(たとえば、UK-ロンドン)が表示され得る。いくつかの実施形態において、ユーザは、(たとえば、オプション808を選択することによって)タスク806を拡張して、その実行ターゲットに対応する1つまたは複数のログを見ることができる。
図9は、少なくとも1つの実施形態に係る、選択された実行ターゲット(たとえば、図8からの実行ターゲットタスク806に対応する実行ターゲット)の実行ターゲットリソースを表示する例示的なUI900を示す図である。UI900は、図8に示される実行ターゲットタスク806の名前をクリックすることによって、またはその他の好適な方法によって表示可能であり、UI900は、UI900の定期的なまたは強制的なリフレッシュによって、実行ターゲットタスク806に対応する実行ターゲットについての情報で更新され得る。UI900は、実行ターゲットの名前902と、フロックのバージョン904とを含み得る。名前902およびバージョン904は、UI900上の任意の好適な位置に位置し得るが、図9に示されるように、UI900の上部に位置している。
UI900は、リソースセクション906も含み得る。いくつかの実施形態において、リソースセクション906は、特定の実行ターゲットに関連付けられた任意の好適な数のインフラストラクチャおよび/またはソフトウェアアプリケーションコンポーネントを表示することができる。一例として、リソースセクション906は、908に示されるようなさまざまなリソース(インフラストラクチャコンポーネント「ボブ」、「カール」、「DNS」など)と、910に示されるようなソフトウェアアーティファクト(たとえば、アプリケーションコード)(「アプリケーション1」、「アプリケーション2」および「テスト」など)とを含み得る。各リソースは、リソースが(910に示されているような)インフラストラクチャコンポーネントであるか、(912に示されているような)アプリケーションであるかを示し得る。912および同様に914に示されるように、各リソースは、リソースタイプ(たとえば、「インフラ」、「アプリケーション」など)およびリソース数などの付随情報を有し得て、リソース数は、選択された実行ターゲット内に各リソースがいくつ存在するかを記載するのに適した任意の数字であり得る。リソースは、選択されると、ボックス916に見られるような選択されたリソースに関連する構成(たとえば、DNS)、および、選択されたリソースに関連するその他の好適な情報を表示することができる。示されているように、UI900は、任意の好適なインターフェイス(たとえば、図5~図8のUI500~800)の上に重ね合わせられ得るダイアログボックスまたは別の好適なポップアップウィンドウとして表示され得る、ということが理解されるべきである。
図10は、少なくとも1つの実施形態に係る、選択されたリリースの選択されたフェーズについての情報を表示するための例示的なユーザインターフェイス(たとえば、UI1000)を示す概略図である。UI1000は、プログレスバー1002を含み得て、プログレスバー1002は、選択されたリリース1004の全てのフェーズまたはそれらのフェーズの任意の好適なサブセットを含み得る。プログレスバー1002は、UI1000の上部に示されているが、UI1000上の任意の好適な位置に位置してもよい。プログレスバー1002は、選択されたリリース1004の各フェーズについてのさまざまな情報も含み得て、これらの情報は、フェーズ名、実行ターゲットの数、タイムスタンプ、承認ステータス、フェーズステータス、および選択されたリリース1004の各フェーズに関連するその他の好適な情報を含むが、それらに限定されるものではない。UIに示される選択されたフェーズ1006は、「stable(13)」であるが、それぞれのフェーズについての関連情報を表示するようにプログレスバー1002におけるいずれかのフェーズが選択されてもよい。選択されたフェーズ1006は、選択されたフェーズ1006の集合的なタスクの進捗を視覚的に追跡することができる円形のプログレスバー1007も含み得る。別の言い方をすれば、円形のプログレスバー1007は、フェーズに対応する進捗の視覚表示を表示(提示)し得る。いくつかの実施形態において、円形のプログレスバー1007は、選択されたフェーズ1002のタスクが現在進行中であることを示すように脈動してもよい。いくつかの実施形態において、円形のプログレスバー1007は、1つもしくは複数の緑色部分(たとえば、インジケータ)および/または1つもしくは複数の赤色部分(たとえば、インジケータ)および/または1つもしくは複数の白色部分(たとえば、インジケータ)を含み得て、各部分は、フェーズに関連付けられた一組のタスクのうちのあるタスクに対応する。いくつかの実施形態において、円形のプログレスバー1007の緑色部分(たとえば、緑色インジケータ)は、選択されたフェーズ1006の完了したタスクを表し得て、プログレスバー1007の赤色部分(たとえば、赤色インジケータ)は、選択されたフェーズ1006の失敗したタスクを表し得る。プログレスバー1007の白色部分(たとえば、白色インジケータ)は、まだ失敗も完了もしていない選択されたフェーズ1006のタスクを表し得る。UI1000は、リリース履歴セクション1108(たとえば、図6のリリース履歴セクション646)も含み得て、選択されたフェーズ1004は、UI1000のリリース履歴セクション1008内に位置し得る。
フェーズの各実行タスク(たとえば、リリースがデプロイされる実行ターゲットに対応する)は、ステータスエリア1010に表示され得る。いくつかの実施形態において、タスクは、それらが実行される順序で、および/または、UI1000上の任意の好適な位置に表示され得る。示されているように、実行タスクのリストは、UI1000の下部に位置している。エリア1010に表示されるタスクのリストは、進捗列1012と、動作列1014と、記載されているタスクに関連するその他の好適な情報とを含み得る。進捗列1012は、実行ターゲットのリスト1008における各実行ターゲットの進捗ステータス(たとえば、「成功」、「失敗」、「適用」など)を表示し得る。動作列1014は、選択されたフェーズ1006の各タスク(たとえば、選択されたフェーズ1006の実行ターゲットに対応する各タスク)に関してどの動作が実行され得るかについての情報を含み得る。
図11は、少なくとも1つの実施形態に係る、一組の実行タスクの実行順序を説明するための実行グラフを表示する例示的なユーザインターフェイス1100を示す概略図である。選択されたフェーズ1102は、プログレスバー1104(たとえば、図10のプログレスバー1006の一例)から選択され得る。選択されたフェーズ1102に対応するセクションは、グラフ1106を含み得る。グラフ1106は、実行ターゲットに対応する実行タスクを実行することができる順序を示し得る。UI1100に示されるように、グラフ1106は、ノード1108,1110および1112を含み得る。ノード1108は、1つの実行ターゲットに対応する1つの実行タスクに関連付けられ得る。ノード1110は、1つの実行ターゲットに対応する1つの実行タスクに関連付けられ得る。ノード1112は、7つの実行ターゲットに対応する7つの実行タスクに関連付けられ得る。グラフ1106は、ノード1108,1110および1112に対応するタスクの各グループ間の実行のシーケンスを示す。たとえば、ノード1108に関連付けられたタスクは、ノード1110に関連付けられたタスクが開始し得る前に完了するよう要求され得る。同様に、ノード1110に関連付けられたタスクは、ノード1112に関連付けられたタスクが実行され得る前に完了するよう要求され得る。ノードが2つ以上のタスクを含む場合には、それらのタスクは、少なくとも部分的に並列に(たとえば、実質的に並列に)実行され得る。UI1100は、直列または並列に実行される任意の好適な数の実行ターゲットに対応する実行タスクの任意の好適な組み合わせも含み得る。UI1100は、タスクが実行される順序で各タスクのリストをエリア1114内に表示し得る。いくつかの実施形態において、並列に実行され得るタスクは、任意の好適な順序でエリア1114内に表示され得る。
図12は、少なくとも1つの実施形態に係る、選択されたリリースの1つまたは複数のフェーズに関連する実行ステータスを表示する例示的なユーザインターフェイス(たとえば、UI1200)を示す概略図である。フェーズ1202は、プログレスバー1204(たとえば、図10のプログレスバー1002の一例)またはUI1200上のその他の好適な位置に位置し得る。フェーズ1002は、ノード1208およびノード1210に対応するタスク実行の特定のシーケンスを示すグラフ1206を含み得る。UI1200に示されるように、ノード1208に対応するタスクは、ノード1210に対応するタスクの前に実行され得る。円形のプログレスバー1212(たとえば、図10の円形のプログレスバー1007の一例)は、各ノードの実行タスクのステータスを示すために各ノードについて利用され得る。円形のプログレスバー1212で示されるように、ノード1208に対応するタスクは完了しているが、ノード1210に対応するタスクは依然として進行中であり得る。
UI1200は、タスクリスト1214も含み得る。フェーズ1002が選択されると、各タスクに対応する実行ターゲットは、タスクリスト1214に表示され得る。UI1200に示されるように、ノード1208に対応する実行タスクは1216に表示され得て、ノード1210に対応する実行タスクは1218に表示され得る。したがって、いくつかの実施形態において、これらの実行タスクは、実行順序に対応する順序で表示され得る。ステータス1220および1222は、タスクリスト1214に表示され得る。ステータス1220は、ノード1208に対応するステータスのテキスト表示に対応し得て、ステータス1222は、ノード1210に対応するステータスのテキスト表示に対応し得る。
図13は、少なくとも1つの実施形態に係る、例示的な安全プランを表示する例示的なユーザインターフェイス(たとえば、UI1300)を示す概略図である。UI1300は、UI1300上の任意の好適な位置に位置し得る実行タスクリスト1302(たとえば、図10の実行タスクリスト1008)を含み得て、示されているように、この実行タスクリスト1302は、UI1300の上部にある。実行タスクリスト1302は、実行ターゲットに関連付けられたソフトウェアリソースを第1の状態から第2の状態に変更することに対応し得る。いくつかの実施形態において、UI1300は、ソフトウェアリソースを第1の状態から第2の状態に変更することの一部としてそれらのソフトウェアリソースに対して加えられる一組の変更を表示するために利用され得る。示されているように、実行タスクリスト1302は、ターゲットに対応する実行タスク1304(たとえば、「unstable」と表記)を含み、実行タスク1304は、選択されるとモジュール1306を表示することができ、モジュール1306は、次に選択されるとモジュール1308(示されているように、「app_deployment」と表記)を表示することができ、モジュール1308は、選択されるとモジュール1310を表示することができる。実行ターゲット1304は、実行タスク1304に対応する任意の好適な数のモジュールおよび/またはアプリケーションデプロイメントを表示し得る。2つ以上のモジュール1306を有する実施形態では、モジュール1306は、作成、更新、削除または変更なし動作の回数の多い順に記載され得る。一例として、モジュール1306~1310は、作成回数が最も多いモジュールがリストの最上部に記載され得て、残りのタスクが各タスクの対応する作成動作回数に従って多い順に表示され得るように、表示されてもよい。いくつかの実施形態では、モジュール1306~1310は、異なったように(たとえば、少ない順に、またはモジュール1306~1310を編成するためのその他の好適な方法で)編成されてもよい。いくつかの実施形態において、モジュール1310が選択されると、UI1300は、安全プランログ1312、およびタスク1304に対応するその他の好適な情報を表示し得る。
安全プランログ1312は、UI1300上の任意の好適な位置に表示され得るが、UI1300に示されるように、安全プランログ1310は、UI1300の右下の角に位置している。安全プランログは、モジュール1310に対応するアプリケーションコードに対して加えられる変更についての情報を表示することができる。たとえば、行1314は、コードの追加された行を示し得て、行1316は、行1314と置換されているコードの削除された行を示し得る。いくつかの実施形態において、行1312(および/または、追加されるコードの任意の部分)は、追加されるコードの1つまたは複数の行を識別するのに適した緑色の背景またはその他の色の背景で表示することができる。行1314(たとえば、または、削除されるコードの任意の部分)は、削除されるコードの1つまたは複数の行を識別するのに適した赤色の背景またはその他の色の背景で表示することができる。
UI1300を使用して、ユーザは、タスクの各部分についての各々の計画的なコード変更を見ることを可能にされ得る。
図14は、本開示の特定の実施形態に係る、CIOSの技術を実現するためのプロセス1400を示す例示的なフロー図である。このプロセスは、論理フロー図として示されており、その各動作は、ハードウェアで実現されてもよく、コンピュータ命令で実現されてもよく、またはそれらの組み合わせで実現されてもよい。コンピュータ命令の文脈においては、これらの動作は、1つまたは複数のプロセッサによって実行されると記載されている動作を実行する、1つまたは複数のコンピュータ読取可能記憶媒体に格納されたコンピュータによって実行可能な命令を表し得る。一般に、コンピュータによって実行可能な命令は、特定の機能を実行するまたは特定のデータタイプを実現するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が記載されている順序は、限定として解釈されるよう意図されるものではなく、このプロセスを実現するために、任意の数の記載されている動作を任意の順序でおよび/または並列に組み合わせることができる。
さらに、このプロセスは、実行可能な命令で構成された1つまたは複数のコンピューティングデバイスまたはコンピュータシステムの制御下で実行され得て、1つもしくは複数のプロセッサ上で集合的に実行されるコード(たとえば、実行可能な命令、1つもしくは複数のコンピュータプログラム、または1つもしくは複数のアプリケーション)として実現されてもよく、ハードウェアによって実現されてもよく、またはそれらの組み合わせによって実現されてもよい。上記のように、コードは、たとえば1つまたは複数のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形式でコンピュータ読取可能記憶媒体に格納され得る。いくつかの実施形態において、プロセス1400は、複数のプロセッサによって並列に実行され得る。コンピュータ読取可能記憶媒体は、非一時的であり得る。
プロセス1400は、ブロック1402から開始し得て、ブロック1402において、コンピューティングシステムは、宣言型インフラストラクチャプロビジョナ(たとえば、図2の地域CIOS202)を実行する。図2に関連して上記したように、宣言型インフラストラクチャプロビジョナ(地域CIOS202など)は、コンポーネントおよびそれらがどのように相互作用するかを記載する宣言ファイルを使用してリソースをプロビジョニングし得る。構成ファイルは、リソースと、要素を作成するのに必要とされる関連するフィールドとを記載することができるため、以前に記載された要素を参照する他の要素も記載されることができる。いくつかの例において、プロビジョニングツールは、次いで、構成ファイルに記載されている要素を作成して管理するためのワークフローを生成することができる。いくつかの実施形態において、宣言型インフラストラクチャプロビジョナは、インフラストラクチャコンポーネントを構築、変更およびバージョン化するためのツールであるテラフォームに従ってフォーマットされた宣言文を利用してもよい。
プロセス1400は、ブロック1404に進み得て、ブロック1404において、コンピューティングシステムは、第1の一組のインフラストラクチャコンポーネントをプロビジョニングする。この第1の一組のインフラストラクチャコンポーネントは、コンピューティングシステムが第1の一組の宣言命令を宣言型インフラストラクチャプロビジョナに提供することに少なくとも部分的に基づき得る。
プロセス1400は、ブロック1406に進み得て、ブロック1406において、コンピューティングシステムは、第2の一組のソフトウェアアーティファクトをデプロイする。この第2の一組のソフトウェアアーティファクトは、コンピューティングシステムが第2の一組の宣言命令を宣言型インフラストラクチャプロビジョナに提供することに少なくとも部分的に基づき得る。
プロセス1400は、ブロック1408に進み得て、ブロック1408において、コンピューティングシステムは、一組のユーザインターフェイス要素(たとえば、たとえば図5のインフラストラクチャエリア502およびアプリケーションエリア504)を表示するユーザインターフェイスシステムを提供する。これらのユーザインターフェイス要素は、少なくとも、第1の一組のインフラストラクチャコンポーネントをプロビジョニングすることに関連付けられた第1のステータス(たとえば、プログレスバー510)と、第2の一組のソフトウェアアーティファクトをデプロイすることに関連付けられた第2のステータス(たとえば、プログレスバー516)とを識別し得る。
コンピューティングシステムは、上記の図5~図13のユーザインターフェイス500~1300などの任意の好適なインターフェイスを提供するように構成されてもよい、ということが理解されるべきである。
例示的なシステム
図15~図17は、さまざまな実施形態に係る、本開示の局面を実現するための例示的な環境の局面を示す図である。図15は、本開示の一実施形態を実現するための分散型システム1500の簡略図である。示されている実施形態において、分散型システム1500は、1つまたは複数のクライアントコンピューティングデバイス1502,1504,1506および1508を含み、それらは、1つまたは複数のネットワーク1510を介してクライアントアプリケーション(ウェブブラウザ、プロプライエタリクライアント(たとえば、オラクルフォームズ)など)を実行して動作させるように構成される。サーバ1512は、ネットワーク1510を介してリモートクライアントコンピューティングデバイス1502,1504,1506および1508と通信可能に結合され得る。
さまざまな実施形態において、サーバ1512は、1つまたは複数のサービスまたはソフトウェアアプリケーション(アイデンティティ管理サービスを提供するサービスおよびアプリケーションなど)を実行するように適合され得る。特定の実施形態において、サーバ1512は、非仮想環境および仮想環境を含み得る他のサービスまたはソフトウェアアプリケーションも提供し得る。いくつかの実施形態において、これらのサービスは、ウェブベースのサービスもしくはクラウドサービスとして、またはソフトウェア・アズ・ア・サービス(SaaS)モデル下で、クライアントコンピューティングデバイス1502,1504,1506および/または1508のユーザに対して提供され得る。そして、クライアントコンピューティングデバイス1502,1504,1506および/または1508を動作させるユーザは、1つまたは複数のクライアントアプリケーションを利用してサーバ1512と対話して、これらのコンポーネントによって提供されるサービスを利用し得る。
図15に示される構成では、システム1500のソフトウェアコンポーネント1518,1520および1522は、サーバ1512上で実行されるものとして示されている。他の実施形態では、システム1500のコンポーネントのうちの1つもしくは複数のコンポーネントおよび/またはこれらのコンポーネントによって提供されるサービスも、クライアントコンピューティングデバイス1502,1504,1506および/または1508のうちの1つまたは複数のクライアントコンピューティングデバイスによって実行され得る。次いで、これらのクライアントコンピューティングデバイスを動作させるユーザは、1つまたは複数のクライアントアプリケーションを利用して、これらのコンポーネントによって提供されるサービスを使用し得る。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実現されてもよい。さまざまな異なるシステム構成が可能であり、これらは分散型システム1500とは異なっていてもよい、ということが理解されるべきである。図15に示される実施形態は、したがって、実施形態のシステムを実現するための分散型システムの一例であり、限定的であるよう意図されるものではない。
クライアントコンピューティングデバイス1502,1504,1506および/または1508は、さまざまなタイプのコンピューティングシステムを含み得る。たとえば、クライアントコンピューティングデバイスは、ソフトウェア(マイクロソフトウィンドウズモバイル(登録商標)など)および/またはさまざまなモバイルオペレーティングシステム(iOS、ウィンドウズフォン、アンドロイド(登録商標)、ブラックベリー10、パームOSなど)を実行する携帯型の手持ち式デバイス(たとえば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、パーソナルデジタルアシスタント(PDA))またはウェアラブルデバイス(たとえば、グーグルグラス(登録商標)頭部装着型ディスプレイ)を含み得る。これらのデバイスは、さまざまなアプリケーション(さまざまなインターネット関連アプリ、電子メール、ショートメッセージサービス(SMS)アプリケーションなど)をサポートし得て、さまざまな他の通信プロトコルを使用し得る。クライアントコンピューティングデバイスは、汎用パーソナルコンピュータも含み得て、これらの汎用パーソナルコンピュータは、一例として、マイクロソフトウィンドウズ(登録商標)、アップルマッキントッシュ(登録商標)および/またはLinux(登録商標)オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む。クライアントコンピューティングデバイスは、さまざまな市場で入手可能なUNIX(登録商標)またはUNIX系オペレーティングシステムのうちのいずれかを実行するワークステーションコンピュータであり得て、これらのUNIX(登録商標)またはUNIX系オペレーティングシステムは、さまざまなGNU/Linuxオペレーティングシステム(たとえば、グーグルクロームOSなど)を含むが、それらに限定されるものではない。また、クライアントコンピューティングデバイスは、ネットワーク1510を介して通信することができる電子デバイス(シンクライアントコンピュータ、インターネット対応ゲームシステム(たとえば、キネクト(登録商標)ジェスチャ入力デバイスを備えていたり備えていなかったりするマイクロソフトXboxゲーム機)および/またはパーソナルメッセージングデバイスなど)も含み得る。
図15における分散型システム1500は、4つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。他のデバイス(センサを備えたデバイスなど)がサーバ1512と対話してもよい。
分散型システム1500におけるネットワーク1510は、さまざまな入手可能なプロトコルのうちのいずれかを使用したデータ通信をサポートすることができる、当業者が精通している任意のタイプのネットワークであり得て、これらのプロトコルは、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、アップルトークなどを含むが、それらに限定されるものではない。単に一例として、ネットワーク1510は、ローカルエリアネットワーク(LAN)、イーサネット(登録商標)に基づくネットワーク、トークンリング、ワイドエリアネットワーク、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、ワイヤレスネットワーク(たとえば、米国電気電子学会(IEEE)1002.11のプロトコル一式、ブルートゥース(登録商標)および/もしくはその他のワイヤレスプロトコルのうちのいずれかの下で動作するネットワーク)、ならびに/または、これらのいずれかの組み合わせおよび/もしくは他のネットワークであり得る。
サーバ1512は、1つもしくは複数の汎用コンピュータ、専用のサーバコンピュータ(一例として、PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、または、その他の適切な構成および/もしくは組み合わせで構成され得る。サーバ1512は、仮想オペレーティングシステムを実行する1つもしくは複数の仮想マシン、または、仮想化を含む他のコンピューティングアーキテクチャを含み得る。論理ストレージデバイスの1つもしくは複数のフレキシブルなプールは、サーバのために仮想ストレージデバイスを維持するように仮想化され得る。仮想ネットワークは、ソフトウェアによって定義されるネットワーキングを使用してサーバ1512によって制御され得る。さまざまな実施形態において、サーバ1512は、前述の開示に記載されている1つまたは複数のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。たとえば、サーバ1512は、本開示の一実施形態に従って上記の処理を実行するためのサーバに対応し得る。
サーバ1512は、上記のもののうちのいずれかを含むオペレーティングシステム、および、任意の市場で入手可能なサーバオペレーティングシステムを実行し得る。サーバ1512は、さまざまなさらに他のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかも実行し得て、これらのアプリケーションは、HTTP(ハイパーテキスト転送プロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含む。例示的なデータベースサーバは、オラクル社、マイクロソフト社、サイベース社、IBM社(インターナショナルビジネスマシンズ)などから市場で入手可能なものを含むが、それらに限定されるものではない。
いくつかの実現例において、サーバ1512は、クライアントコンピューティングデバイス1502,1504,1506および1508のユーザから受信されるデータフィードおよび/またはイベント更新情報を解析および整理統合するための1つまたは複数のアプリケーションを含み得る。一例として、データフィードおよび/またはイベント更新情報は、1つまたは複数の第三者情報源および連続データストリームから受信される、ツイッター(登録商標)フィード、フェイスブック(登録商標)更新情報またはリアルタイムの更新情報を含み得るが、それらに限定されるものではなく、これらは、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などに関連するリアルタイムのイベントを含み得る。サーバ1512は、データフィードおよび/またはリアルタイムのイベントをクライアントコンピューティングデバイス1502,1504,1506および1508の1つまたは複数のディスプレイデバイスを介して表示するための1つまたは複数のアプリケーションも含み得る。
分散型システム1500は、1つまたは複数のデータベース1514および1516も含み得る。これらのデータベースは、アイデンティティ情報などの情報、および、本開示の実施形態によって使用される他の情報を格納するための機構を提供し得る。データベース1514および1516は、さまざまな場所にあり得る。一例として、データベース1514および1516のうちの1つまたは複数のデータベースは、サーバ1512にローカルな(および/または、サーバ1512内にある)非一時的な記憶媒体上にあってもよい。代替的に、データベース1514および1516は、サーバ1512から離れていて、ネットワークベースのまたは専用の接続を介してサーバ1512と通信してもよい。一組の実施形態では、データベース1514および1516は、ストレージエリアネットワーク(SAN)内にあってもよい。同様に、サーバ1512によるものである機能を実行するための任意の必要なファイルは、適宜、サーバ1512上にローカルにおよび/またはリモートで格納され得る。一組の実施形態において、データベース1514および1516は、SQLによってフォーマットされたコマンドに応答してデータを格納、更新および検索するように適合されたリレーショナルデータベース(オラクル社によって提供されるデータベースなど)を含み得る。
図16は、本開示の一実施形態を実現するために使用され得る例示的なコンピュータシステム1600を示す図である。いくつかの実施形態において、コンピュータシステム1600は、上記のさまざまなサーバおよびコンピュータシステムのうちのいずれかを実現するために使用され得る。図16に示されるように、コンピュータシステム1600は、処理サブシステム1604を含むさまざまなサブシステムを含み、処理サブシステム1604は、バスサブシステム1602を介していくつかの周辺サブシステムと通信する。これらの周辺サブシステムは、処理加速ユニット1606と、I/Oサブシステム1608と、ストレージサブシステム1618と、通信サブシステム1624とを含み得る。ストレージサブシステム1618は、有形のコンピュータ読取可能記憶媒体1622と、システムメモリ1610とを含み得る。
バスサブシステム1602は、コンピュータシステム1600のさまざまなコンポーネントおよびサブシステムに意図した通りに互いに通信させるための機構を提供する。バスサブシステム1602は、単一のバスとして概略的に示されているが、バスサブシステムの代替的な実施形態は、複数のバスを利用してもよい。バスサブシステム1602は、いくつかのタイプのバス構造のうちのいずれかであり得て、これらのバス構造は、さまざまなバスアーキテクチャのうちのいずれかを用いるメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む。たとえば、このようなアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)ローカルバス、およびIEEE P1386.1規格に従って製造される中二階バスとして実現され得る周辺コンポーネントインターコネクト(PCI)バスなどを含み得る。
処理サブシステム1604は、コンピュータシステム1600の動作を制御し、1つまたは複数の処理ユニット1632,1634などを備え得る。処理ユニットは、シングルコアもしくはマルチコアプロセッサを含む1つもしくは複数のプロセッサ、プロセッサの1つもしくは複数のコア、またはそれらの組み合わせを含み得る。いくつかの実施形態において、処理サブシステム1604は、1つまたは複数の特別目的コプロセッサ(グラフィックスプロセッサ、デジタル信号プロセッサ(DSP)など)を含み得る。いくつかの実施形態において、処理サブシステム1604の処理ユニットの一部または全ては、カスタマイズされた回路(特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)など)を使用して実現可能である。
いくつかの実施形態において、処理サブシステム1604内の処理ユニットは、システムメモリ1610内またはコンピュータ読取可能記憶媒体1622上に格納された命令を実行することができる。さまざまな実施形態において、処理ユニットは、さまざまなプログラムまたはコード命令を実行することができ、複数の同時実行プログラムまたはプロセスを維持することができる。どんなときでも、実行対象のプログラムコードの一部または全ては、システムメモリ1610内および/またはコンピュータ読取可能記憶媒体1622上(場合によっては、1つまたは複数のストレージデバイス上を含む)にあることができる。好適なプログラミングを通じて、処理サブシステム1604は、使用パターンに応答してドキュメント(たとえば、ウェブページ)を動的に変更するための上記のさまざまな機能を提供することができる。
特定の実施形態において、処理加速ユニット1606は、コンピュータシステム1600によって実行される処理全体を加速させるために、カスタマイズされた処理を実行するように、または、処理サブシステム1604によって実行される処理の一部をオフロードするように設けられ得る。
I/Oサブシステム1608は、情報をコンピュータシステム1600に入力する、および/または、情報をコンピュータシステム1600からもしくはコンピュータシステム1600を介して出力するためのデバイスおよび機構を含み得る。一般に、入力デバイスという語の使用は、情報をコンピュータシステム1600に入力するための全ての可能なタイプのデバイスおよび機構を含むよう意図されている。ユーザインターフェイス入力デバイスは、たとえば、キーボード、ポインティングデバイス(マウスまたはトラックボールなど)、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを備えたオーディオ入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含み得る。ユーザインターフェイス入力デバイスは、ユーザが入力デバイスを制御して入力デバイスと対話することを可能にするモーション感知および/またはジェスチャ認識デバイス(マイクロソフトキネクト(登録商標)モーションセンサなど)、マイクロソフトXbox(登録商標)360ゲームコントローラ、ジェスチャおよび口頭のコマンドを使用して入力を受信するためのインターフェイスを提供するデバイスも含み得る。ユーザインターフェイス入力デバイスは、ユーザから目の動き(たとえば、写真を撮っている間および/またはメニュー選択を行なっている間の「まばたき」)を検出してアイジェスチャを入力デバイス(たとえば、グーグルグラス(登録商標))への入力として変換するアイジェスチャ認識デバイス(グーグルグラス(登録商標)瞬き検出器など)も含み得る。さらに、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(たとえば、Siri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含み得る。
ユーザインターフェイス入力デバイスの他の例としては、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにオーディオ/ビジュアルデバイス(スピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡デバイスなど)が挙げられるが、それらに限定されるものではない。さらに、ユーザインターフェイス入力デバイスは、たとえば、医療用画像化入力デバイス(コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、医療用超音波検査デバイスなど)を含み得る。ユーザインターフェイス入力デバイスは、たとえば、オーディオ入力デバイス(MIDIキーボード、デジタル楽器など)も含み得る。
ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または非ビジュアルディスプレイ(オーディオ出力デバイスなど)を含み得る。ディスプレイサブシステムは、陰極線管(CRT)、フラットパネルデバイス(液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するものなど)、投影デバイス、タッチスクリーンなどであり得る。一般に、「出力デバイス」という語の使用は、情報をコンピュータシステム1600からユーザまたは他のコンピュータに出力するための全ての可能なタイプのデバイスおよび機構を含むよう意図されている。たとえば、ユーザインターフェイス出力デバイスは、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまなディスプレイデバイス(モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなど)を含み得るが、それらに限定されるものではない。
ストレージサブシステム1618は、コンピュータシステム1600によって使用される情報を格納するためのリポジトリまたはデータストアを提供する。ストレージサブシステム1618は、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を格納するための有形の非一時的なコンピュータ読取可能記憶媒体を提供する。処理サブシステム1604によって実行されると上記の機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、ストレージサブシステム1618に格納され得る。このソフトウェアは、処理サブシステム1604の1つまたは複数の処理ユニットによって実行され得る。ストレージサブシステム1618は、本開示に従って使用されるデータを格納するためのリポジトリも提供し得る。
ストレージサブシステム1618は、揮発性および不揮発性メモリデバイスを含む1つまたは複数の非一時的なメモリデバイスを含み得る。図16に示されるように、ストレージサブシステム1618は、システムメモリ1610と、コンピュータ読取可能記憶媒体1622とを含む。システムメモリ1610は、いくつかのメモリを含み得て、これらのメモリは、プログラム実行中に命令およびデータを格納するための揮発性メインランダムアクセスメモリ(RAM)、および、固定された命令が格納される不揮発性リードオンリメモリ(ROM)またはフラッシュメモリを含む。いくつかの実現例において、起動中などにコンピュータシステム1600内の要素間で情報を転送するのを手助けする基本的なルーチンを含むベーシックインプット/アウトプットシステム(BIOS)は、ROMに格納され得る。RAMは、処理サブシステム1604によって現在動作および実行されているデータおよび/またはプログラムモジュールを含み得る。いくつかの実現例において、システムメモリ1610は、複数の異なるタイプのメモリ(スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM))を含み得る。
一例として、図16に示されるように、システムメモリ1610は、アプリケーションプログラム1612(クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などを含み得る)と、プログラムデータ1614と、オペレーティングシステム1616とを格納し得るが、それらに限定されるものではない。一例として、オペレーティングシステム1616は、マイクロソフトウィンドウズ(登録商標)、アップルマッキントッシュ(登録商標)および/もしくはLinuxオペレーティングシステムのさまざまなバージョン、さまざまな市場で入手可能なUNIX(登録商標)もしくはUNIX系オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、グーグルクローム(登録商標)OSなどを含むが、それらに限定されるものではない)、ならびに/または、モバイルオペレーティングシステム(iOS、ウィンドウズ(登録商標)フォン、アンドロイド(登録商標)OS、ブラックベリー(登録商標)10OS、およびパーム(登録商標)OSオペレーティングシステム)を含み得る。
コンピュータ読取可能記憶媒体1622は、いくつかの実施形態の機能を提供するプログラミングおよびデータ構造を格納し得る。処理サブシステム1604によって実行されるとプロセッサが上記の機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、ストレージサブシステム1618に格納され得る。一例として、コンピュータ読取可能記憶媒体1622は、不揮発性メモリ(ハードディスクドライブ、磁気ディスクドライブ、光ディスクドライブ(CD ROM、DVD、ブルーレイ(登録商標)ディスクなど)、または他の光学メディアなど)を含み得る。コンピュータ読取可能記憶媒体1622は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含み得るが、それらに限定されるものではない。コンピュータ読取可能記憶媒体1622は、不揮発性メモリに基づくソリッドステートドライブ(SSD)(フラッシュメモリベースのSSD、企業フラッシュドライブ、ソリッドステートROMなど)、揮発性メモリに基づくSSD(ソリッドステートRAM、ダイナミックRAM、スタティックRAMなど)、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMベースのSSDとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDも含み得る。コンピュータ読取可能媒体1622は、コンピュータ読取可能な命令、データ構造、プログラムモジュールおよび他のデータのストレージをコンピュータシステム1600に提供し得る。
特定の実施形態において、ストレージサブシステム1600は、コンピュータ読取可能記憶媒体1622にさらに接続可能なコンピュータ読取可能記憶媒体リーダ1620も含み得る。システムメモリ1610とともに、および任意にシステムメモリ1610と組み合わせて、コンピュータ読取可能記憶媒体1622は、コンピュータ読取可能情報を格納するための、リモートの、ローカルの、固定された、および/または、取り外し可能なストレージデバイスと記憶媒体との組み合わせを包括的に表し得る。
特定の実施形態において、コンピュータシステム1600は、1つまたは複数の仮想マシンを実行するためのサポートを提供し得る。コンピュータシステム1600は、仮想マシンの構成および管理を容易にするためのプログラム(ハイパーバイザなど)を実行し得る。各仮想マシンは、割り当てられたメモリ、コンピュータ(たとえば、プロセッサ、コア)、I/Oおよびネットワーキングリソースであり得る。各仮想マシンは、自身のオペレーティングシステムを実行し得て、このオペレーティングシステムは、コンピュータシステム1600によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同一であってもよく、または異なっていてもよい。したがって、場合によっては、複数のオペレーティングシステムがコンピュータシステム1600によって同時に実行され得る。各仮想マシンは、一般に、他の仮想マシンから独立して動作する。
通信サブシステム1624は、他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム1624は、他のシステムとコンピュータシステム1600との間のデータの送受のためのインターフェイスとしての役割を果たす。たとえば、通信サブシステム1624は、コンピュータシステム1600が、クライアントデバイスとの間での情報の送受のための、インターネットを介した1つまたは複数のクライアントデバイスとの通信チャネルを確立することを可能にし得る。さらに、通信サブシステム1624は、ログインが成功したことの通知、または、特権が付与されているアカウントマネージャから要求元のユーザにパスワードを再入力するための通知を伝達するのに使用され得る。
通信サブシステム1624は、ワイヤードおよび/またはワイヤレス通信プロトコルを両方ともサポートし得る。たとえば、特定の実施形態において、通信サブシステム1624は、(たとえば、セルラー電話技術、先進データネットワーク技術(3G、4GもしくはEDGE(グローバル進化のための拡張版データ通信速度)など)、WiFi(IEEE802.11ファミリー規格)、または他のモバイル通信技術、またはそれらの任意の組み合わせを使用して)ワイヤレス音声および/またはデータネットワークにアクセスするための無線周波数(RF)送受信機コンポーネント、グローバルポジショニングシステム(GPS)受信機コンポーネント、ならびに/または、他のコンポーネントを含み得る。いくつかの実施形態において、通信サブシステム1624は、ワイヤレスインターフェイスに加えて、またはその代わりに、ワイヤードネットワーク接続(たとえば、イーサネット)を提供することができる。
通信サブシステム1624は、データをさまざまな形式で送受信することができる。たとえば、いくつかの実施形態において、通信サブシステム1624は、構造化されたおよび/または構造化されていないデータフィード1626、イベントストリーム1628、イベント更新情報1630などの形式で入力通信を受信し得る。たとえば、通信サブシステム1624は、ソーシャルメディアネットワークのユーザからリアルタイムでデータフィード1626および/または他の通信サービス(ツイッター(登録商標)フィード、フェイスブック(登録商標)更新情報、ウェブフィード(リッチ・サイト・サマリ(RSS)フィードなど)、および/または、1つもしくは複数の第三者情報源からのリアルタイム更新情報など)を受信(または、送信)するように構成され得る。
特定の実施形態において、通信サブシステム1624は、連続データストリームの形式でデータを受信するように構成され得て、当該連続データストリームは、明確な終端を持たない、事実上連続的または無限であり得るリアルタイムイベントのイベントストリーム1628および/またはイベント更新情報1630を含み得る。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などを挙げることができる。
また、通信サブシステム1624は、コンピュータシステム1600に結合された1つまたは複数のストリーミングデータソースコンピュータと通信し得る1つまたは複数のデータベースに、構造化されたおよび/または構造化されていないデータフィード1626、イベントストリーム1628、イベント更新情報1630などを出力するように構成され得る。
コンピュータシステム1600は、さまざまなタイプ(手持ち式の携帯型デバイス(たとえば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえば、グーグルグラス(登録商標)頭部装着型ディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む)のもののうちの1つであり得る。
常に変化するコンピュータおよびネットワークの性質のために、図16に示されるコンピュータシステム1600の記載は、具体例として意図されているに過ぎない。図16に示されているシステムよりも多くのコンポーネントまたは少ないコンポーネントを有する多くの他の構成が可能である。本明細書において提供されている開示および教示に基づいて、当業者は、さまざまな実施形態を実現するための他の態様および/または方法を理解するであろう。
いくつかの図面に示されているシステムは、さまざまな構成で提供されてもよい。いくつかの実施形態において、これらのシステムは、システムの1つまたは複数のコンポーネントが1つまたは複数のクラウドインフラストラクチャシステム内の1つまたは複数のネットワークにわたって分散される分散型システムとして構成されてもよい。
クラウドインフラストラクチャシステムは、1つまたは複数のサーバコンピューティングデバイス、ネットワークデバイスおよび/またはストレージデバイスの集合体である。これらのリソースは、クラウドサービスプロバイダによって分割されて、その顧客に何らかの方法で割り当てられ得る。たとえば、クラウドサービスプロバイダ(カリフォルニア州レッドウッドショアーズのオラクル社など)は、さまざまなタイプのクラウドサービス(ソフトウェア・アズ・ア・サービス(SaaS)カテゴリ下で提供される1つまたは複数のサービス、プラットフォーム・アズ・ア・サービス(PaaS)カテゴリ下で提供されるサービス、インフラストラクチャ・アズ・ア・サービス(IaaS)カテゴリ下で提供されるサービス、またはハイブリッドサービスを含むサービスの他のカテゴリを含むが、それらに限定されるものではない)を提供し得る。SaaSサービスの例としては、オンデマンドアプリケーション(オラクルフージョンアプリケーションなど)一式を構築して提供する機能が挙げられるが、それに限定されるものではない。SaaSサービスは、顧客がクラウドインフラストラクチャシステム上で実行されるアプリケーションのためのソフトウェアを購入する必要なく、顧客がこれらのアプリケーションを利用することを可能にする。PaaSサービスの例としては、組織(オラクル社など)が既存のアプリケーションを共有の共通のアーキテクチャ上で整理統合することを可能にするサービス、プラットフォームによって提供される共有のサービス(オラクルJavaクラウドサービス(JCS)、オラクルデータベースクラウドサービス(DBCS)など)を活用する新たなアプリケーションを構築する機能などが挙げられるが、それらに限定されるものではない。IaaSサービスは、SaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用する顧客のために、基本的なコンピューティングリソース(ストレージ、ネットワークおよび他の基本的なコンピューティングリソースなど)の管理および制御を容易にし得る。
図17は、本開示の一実施形態に係る、実施形態のシステムの1つまたは複数のコンポーネントによって提供されるサービスがクラウドサービスとして提供され得るシステム環境1700の1つまたは複数のコンポーネントの簡略ブロック図である。示されている実施形態において、システム環境1700は、1つまたは複数のクライアントコンピューティングデバイス1704,1706および1708を含み、1つまたは複数のクライアントコンピューティングデバイス1704,1706および1708は、クラウドサービスを提供するクラウドインフラストラクチャシステム1702と対話するためにユーザによって使用され得る。これらのクライアントコンピューティングデバイスは、クライアントアプリケーション(ウェブブラウザ、プロプライエタリクライアントアプリケーション(たとえば、オラクルフォームズ)、または何らかの他のアプリケーションなど)を動作させるように構成され得て、このクライアントアプリケーションは、クラウドインフラストラクチャシステム1702と対話して、クラウドインフラストラクチャシステム1702によって提供されるサービスを使用するためにクライアントコンピューティングデバイスのユーザによって使用され得る。
図に示されているクラウドインフラストラクチャシステム1702は、示されているコンポーネント以外のコンポーネントを有していてもよい、ということが理解されるべきである。さらに、図に示されている実施形態は、本開示の一実施形態を組み込むことができるクラウドインフラストラクチャシステムの一例に過ぎない。いくつかの他の実施形態では、クラウドインフラストラクチャシステム1702は、図に示されているよりも多くのコンポーネントもしくは少ないコンポーネントを有していてもよく、2つもしくはそれ以上のコンポーネントを組み合わせてもよく、またはコンポーネントの異なる構成もしくは配置を有していてもよい。
クライアントコンピューティングデバイス1704,1706および1708は、クライアントコンピューティングデバイス1502,1504,1506および1508について上記したものと同様のデバイスであってもよい。
例示的なシステム環境1700は3つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。他のデバイス(センサを備えたデバイスなど)がクラウドインフラストラクチャシステム1702と対話してもよい。
ネットワーク1710は、クライアント1704,1706および1708とクラウドインフラストラクチャシステム1702との間におけるデータの通信および交換を容易にし得る。各ネットワークは、ネットワーク1510について上記したものを含む、さまざまな市場で入手可能なプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者が精通している任意のタイプのネットワークであり得る。
クラウドインフラストラクチャシステム1702は、1つもしくは複数のコンピュータ、および/または、サーバ1512について上記したものを含み得るサーバを備え得る。
特定の実施形態において、クラウドインフラストラクチャシステムによって提供されるサービスは、オンデマンドでクラウドインフラストラクチャシステムのユーザに利用可能にされる多数のサービス(オンラインデータストレージおよびバックアップソリューション、ウェブベースの電子メールサービス、ホスト型オフィススイートおよび文書コラボレーションサービス、データベース処理、管理された技術サポートサービスなど)を含み得る。クラウドインフラストラクチャシステムによって提供されるサービスは、動的にスケーリングしてそのユーザのニーズを満たすことができる。クラウドインフラストラクチャシステムによって提供されるサービスのある具体的なインスタンス化は、本明細書では「サービスインスタンス」と称される。一般に、クラウドサービスプロバイダのシステムからインターネットなどの通信ネットワークを介してユーザに利用可能にされる任意のサービスは、「クラウドサービス」と称される。パブリックなクラウド環境においては、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスのサーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションを運営管理し得て、ユーザは、インターネットなどの通信ネットワークを介して、オンデマンドで、アプリケーションをオーダーして使用し得る。
いくつかの例において、コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、ストレージ、ホスト型データベース、ホスト型ウェブサーバ、ソフトウェアアプリケーション、またはクラウドベンダによってユーザに提供される他のサービス、またはそうでなければ当該技術分野において公知であるような他のサービスに対する保護されたコンピュータネットワークアクセスを含み得る。たとえば、サービスは、クラウド上のリモートストレージに対するインターネットを介してのパスワード保護されたアクセスを含み得る。別の例として、サービスは、ネットワーク接続された開発者による個人的な使用のための、ウェブサービスベースのホスト型リレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、サービスは、クラウドベンダのウェブサイトにおいて運営管理される電子メールソフトウェアアプリケーションに対するアクセスを含み得る。
特定の実施形態において、クラウドインフラストラクチャシステム1702は、セルフサービスの、サブスクリプションベースの、弾性的にスケーラブルで、信頼性があり、高可用性の、安全な態様で顧客に対して提供される一連のアプリケーション、ミドルウェア、およびデータベースサービス提供を含み得る。このようなクラウドインフラストラクチャシステムの一例は、本譲受人によって提供されるオラクルパブリッククラウド(Oracle Public Cloud)である。
さまざまな実施形態において、クラウドインフラストラクチャシステム1702は、クラウドインフラストラクチャシステム1702によって提供されるサービスに対する顧客のサブスクリプションを自動的にプロビジョニングし、管理し、および追跡するように適合され得る。クラウドインフラストラクチャシステム1702は、クラウドサービスをさまざまなデプロイメントモデルを介して提供し得る。たとえば、サービスは、クラウドインフラストラクチャシステム1702が(たとえばオラクル社によって所有される)クラウドサービスを販売する組織によって所有され、サービスが一般大衆または異なる業界企業に利用可能にされるパブリッククラウドモデルの下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム1702がもっぱら単一の組織について動作され、その組織内における1つまたは複数のエンティティに対してサービスを提供し得るプライベートクラウドモデルの下で提供されてもよい。また、クラウドサービスは、クラウドインフラストラクチャシステム1702およびクラウドインフラストラクチャシステム1702によって提供されるサービスが、関連するコミュニティにおけるいくつかの組織によって共有されるコミュニティクラウドモデルの下で提供されてもよい。また、クラウドサービスは、2つまたはそれ以上の異なるモデルの組み合わせであるハイブリッドクラウドモデルの下で提供されてもよい。
いくつかの実施形態において、クラウドインフラストラクチャシステム1702によって提供されるサービスは、ソフトウェア・アズ・ア・サービス(SaaS)カテゴリ、プラットフォーム・アズ・ア・サービス(PaaS)カテゴリ、インフラストラクチャ・アズ・ア・サービス(IaaS)カテゴリ、またはハイブリッドサービスを含む他のサービスのカテゴリの下で提供される1つまたは複数のサービスを含み得る。顧客は、サブスクリプションオーダーを介して、クラウドインフラストラクチャシステム1702によって提供される1つまたは複数のサービスをオーダーし得る。クラウドインフラストラクチャシステム1702は、次いで、処理を実行して、顧客のサブスクリプションオーダーにおけるサービスを提供する。
いくつかの実施形態において、クラウドインフラストラクチャシステム1702によって提供されるサービスは、アプリケーションサービス、プラットフォームサービスおよびインフラストラクチャサービスを含み得るが、それらに限定されるものではない。いくつかの例において、アプリケーションサービスは、クラウドインフラストラクチャシステムによってSaaSプラットフォームを介して提供され得る。SaaSプラットフォームは、SaaSカテゴリに該当するクラウドサービスを提供するように構成され得る。たとえば、SaaSプラットフォームは、統合された開発およびデプロイメントプラットフォーム上で一連のオンデマンドアプリケーションを構築して提供する機能を提供し得る。SaaSプラットフォームは、SaaSサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御し得る。SaaSプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムにおいて実行されるアプリケーションを利用することができる。顧客は、別個のライセンスおよびサポートを購入する必要なくアプリケーションサービスを取得することができる。さまざまな異なるSaaSサービスが提供されてもよい。その例としては、大組織に対して販売実績管理、企業統合、およびビジネスの柔軟性のためのソリューションを提供するサービスが挙げられるが、それらに限定されるものではない。
いくつかの実施形態において、プラットフォームサービスは、クラウドインフラストラクチャシステムによってPaaSプラットフォームを介して提供され得る。PaaSプラットフォームは、PaaSカテゴリに該当するクラウドサービスを提供するように構成され得る。プラットフォームサービスの例としては、組織(オラクル社など)が既存のアプリケーションを共有の共通のアーキテクチャ上で整理統合することを可能にするサービス、およびプラットフォームによって提供される共有のサービスを活用する新たなアプリケーションを構築する機能を挙げることができるが、それらに限定されるものではない。PaaSプラットフォームは、PaaSサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御し得る。顧客は、クラウドインフラストラクチャシステムによって提供されるPaaSサービスを、別個のライセンスおよびサポートを購入する必要なく取得することができる。プラットフォームサービスの例としては、オラクルJavaクラウドサービス(JCS)、オラクルデータベースクラウドサービス(DBCS)などが挙げられるが、それらに限定されるものではない。
PaaSプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムによってサポートされるプログラミング言語およびツールを使用することができ、デプロイされたサービスを制御することもできる。いくつかの実施形態において、クラウドインフラストラクチャシステムによって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス(たとえば、オラクル・フュージョン・ミドルウェアサービス)、およびJavaクラウドサービスを含み得る。一実施形態において、データベースクラウドサービスは、組織がデータベースリソースをプールし、顧客にデータベース・アズ・ア・サービスをデータベースクラウドの形式で提供することを可能にする共有のサービスデプロイメントモデルをサポートし得る。ミドルウェアクラウドサービスは、顧客がさまざまなビジネスアプリケーションを開発およびデプロイするためのプラットフォームをクラウドインフラストラクチャシステムにおいて提供し得て、Javaクラウドサービスは、顧客がJavaアプリケーションをデプロイするためのプラットフォームをクラウドインフラストラクチャシステムにおいて提供し得る。
さまざまな異なるインフラストラクチャサービスがIaaSプラットフォームによってクラウドインフラストラクチャシステムにおいて提供され得る。インフラストラクチャサービスは、SaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用する顧客のために、基本的なコンピューティングリソース(ストレージ、ネットワークおよび他の基本的なコンピューティングリソースなど)の管理および制御を容易にする。
特定の実施形態において、クラウドインフラストラクチャシステム1702は、クラウドインフラストラクチャシステムの顧客に対してさまざまなサービスを提供するために用いられるリソースを提供するためのインフラストラクチャリソース1730も含み得る。一実施形態において、インフラストラクチャリソース1730は、PaaSプラットフォームおよびSaaSプラットフォームによって提供されるサービスを実行するためのハードウェア(サーバ、ストレージおよびネットワーキングリソースなど)の予め統合され最適化された組み合わせを含み得る。
いくつかの実施形態において、クラウドインフラストラクチャシステム1702におけるリソースは、複数のユーザによって共有され、要求ごとに動的に再割り当てされ得る。さらに、リソースは、ユーザに対してさまざまな時間ゾーンで割り当てられ得る。たとえば、クラウドインフラストラクチャシステム1702は、第1の時間ゾーンにおけるユーザの第1の組がクラウドインフラストラクチャシステムのリソースをある特定の時間の間利用することを可能にし、次いで、異なる時間ゾーンに位置するユーザの別の組に対する同じリソースの再割り当てを可能にし、それによって、リソースの利用を最大化し得る。
特定の実施形態において、クラウドインフラストラクチャシステム1702のさまざまなコンポーネントまたはモジュールによって共有されてクラウドインフラストラクチャシステム1702によって提供されるサービスによって共有されるいくつかの内部共有サービス1732が提供され得る。これらの内部共有サービスは、セキュリティおよびアイデンティティサービス、統合サービス、企業リポジトリサービス、企業マネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性、バックアップおよび回復サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを含み得るが、それらに限定されるものではない。
特定の実施形態において、クラウドインフラストラクチャシステム1702は、クラウドインフラストラクチャシステムにおいてクラウドサービス(たとえば、SaaS、PaaS、およびIaaSサービス)の包括的な管理を提供し得る。一実施形態において、クラウド管理機能は、クラウドインフラストラクチャシステム1702によって受信される顧客のサブスクリプションをプロビジョニングし、管理し、および追跡する機能などを含み得る。
一実施形態において、図に示されるように、クラウド管理機能は、1つまたは複数のモジュール(オーダー管理モジュール1720、オーダーオーケストレーションモジュール1722、オーダープロビジョニングモジュール1724、オーダー管理および監視モジュール1726およびアイデンティティ管理モジュール1728など)によって提供され得る。これらのモジュールは、1つもしくは複数のコンピュータおよび/もしくはサーバを含み得て、またはそれらを用いて提供され得て、それらは、汎用コンピュータ、専用のサーバコンピュータ、サーバファーム、サーバクラスタ、またはその他の適切な構成および/もしくは組み合わせであり得る。
例示的な動作1734において、顧客は、クラウドインフラストラクチャシステム1702によって提供される1つまたは複数のサービスを要求し、クラウドインフラストラクチャシステム1702によって提供される1つまたは複数のサービスのサブスクリプションに対するオーダーを行なうことによって、クライアントデバイス(クライアントデバイス1704,1706または1708など)を用いてクラウドインフラストラクチャシステム1702と対話し得る。特定の実施形態において、顧客は、クラウドユーザインターフェイス(UI)、すなわちクラウドUI1712、クラウドUI1714および/またはクラウドUI1716にアクセスし、サブスクリプションオーダーをこれらのUIを介して行ない得る。顧客がオーダーを行なうことに応答してクラウドインフラストラクチャシステム1702によって受信されるオーダー情報は、顧客、およびその顧客が契約する予定の、クラウドインフラストラクチャシステム1702によって提供される1つまたは複数のサービスを識別する情報を含み得る。
オーダーが顧客によって行われた後、オーダー情報は、クラウドUI1712,1714および/または1716を介して受信される。
動作1736において、オーダーは、オーダーデータベース1718に保存される。オーダーデータベース1718は、クラウドインフラストラクチャシステム1702によって動作されて他のシステム要素と連携して動作されるいくつかのデータベースのうちの1つであり得る。
動作1738において、オーダー情報は、オーダー管理モジュール1720に転送される。いくつかの例において、オーダー管理モジュール1720は、オーダーに関連する請求および課金機能(オーダーを検証すること、および検証すると同時にオーダーを予約することなど)を実行するように構成され得る。
動作1740において、オーダーに関する情報は、オーダーオーケストレーションモジュール1722に通信される。オーダーオーケストレーションモジュール1722は、オーダー情報を利用して、顧客によってなされたオーダーに対してサービスおよびリソースのプロビジョニングをオーケストレーションし得る。いくつかの例において、オーダーオーケストレーションモジュール1722は、オーダープロビジョニングモジュール1724のサービスを使用してサブスクライブされたサービスをサポートするようにリソースのプロビジョニングをオーケストレーションし得る。
特定の実施形態において、オーダーオーケストレーションモジュール1722は、各オーダーに関連付けられたビジネスプロセスの管理を可能にし、ビジネス論理を適用して、オーダーがプロビジョニングに進むべきか否かを判断する。動作1742において、新たなサブスクリプションに対するオーダーを受信すると、オーダーオーケストレーションモジュール1722は、リソースを割り当てて、サブスクリプションオーダーを満たすのに必要とされるそれらのリソースを構成するように、オーダープロビジョニングモジュール1724に対して要求を送信する。オーダープロビジョニングモジュール1724は、顧客によってオーダーされたサービスに対するリソースの割り当てを可能にする。オーダープロビジョニングモジュール1724は、クラウドインフラストラクチャシステム1702によって提供されるクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするために用いられる物理的インプリメンテーション層との間の抽象化レベルを提供する。これにより、インプリメンテーション詳細(サービスおよびリソースが実際にオンザフライでプロビジョニングされるか、サービスおよびリソースが予めプロビジョニングされて要求時には割り当てられる/あてがわれるのみであるかなど)からオーダーオーケストレーションモジュール1722を分離することができる。
動作1744において、サービスおよびリソースがプロビジョニングされると、提供されたサービスの通知が、クラウドインフラストラクチャシステム1702のオーダープロビジョニングモジュール1724によってクライアントデバイス1704,1706および/または1708上の顧客に送信され得る。動作1746において、顧客のサブスクリプションオーダーは、オーダー管理および監視モジュール1726によって管理および追跡され得る。いくつかの例において、オーダー管理および監視モジュール1726は、サブスクリプションオーダーにおけるサービスの使用統計(使用されるストレージの量、転送されるデータの量、ユーザの人数、ならびにシステムアップ時間およびシステムダウン時間の量など)を収集するように構成され得る。
特定の実施形態において、クラウドインフラストラクチャシステム1700は、アイデンティティ管理モジュール1728を含み得る。アイデンティティ管理モジュール1728は、アイデンティティサービス(クラウドインフラストラクチャシステム1700におけるアクセス管理および認可サービスなど)を提供するように構成され得る。いくつかの実施形態において、アイデンティティ管理モジュール1728は、クラウドインフラストラクチャシステム1702によって提供されるサービスを利用することを望む顧客についての情報を制御し得る。このような情報は、このような顧客のアイデンティティを認証する情報、およびそれらの顧客がさまざまなシステムリソース(たとえば、ファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど)に対してどのアクションを実行することが認可されるかを記述する情報を含み得る。アイデンティティ管理モジュール1728は、各顧客についての記述的情報ならびにその記述的情報がどのように誰によってアクセスおよび修正され得るかについての情報の管理も含み得る。
本開示の特定の実施形態について説明してきたが、さまざまな変形例、変更例、代替的な構成および等価物も本開示の範囲内に包含される。本開示の実施形態は、特定の具体的なデータ処理環境内での動作に限定されるものではなく、複数のデータ処理環境内で自由に動作できる。さらに、特定の一連のトランザクションおよびステップを使用して本開示の実施形態について説明してきたが、本開示の範囲は記載されている一連のトランザクションおよびステップに限定されるものではないということが当業者に明らかであるべきである。上記の実施形態のさまざまな特徴および局面は、個々に使用されてもよく、または一緒に使用されてもよい。
さらに、ハードウェアとソフトウェアとの特定の組み合わせを使用して本開示の実施形態について説明してきたが、ハードウェアとソフトウェアとの他の組み合わせも本開示の範囲内であるということが認識されるべきである。本開示の実施形態は、ハードウェアのみで実現されてもよく、ソフトウェアのみで実現されてもよく、またはそれらの組み合わせを使用して実現されてもよい。本明細書に記載されているさまざまなプロセスは、同一のプロセッサ上で実現されてもよく、または任意の組み合わせの異なるプロセッサ上で実現されてもよい。したがって、コンポーネントまたはモジュールは、特定の動作を実行するように構成されるものとして説明されているが、このような構成は、たとえば、動作を実行するように電子回路を設計することによって、動作を実行するようにプログラム可能電子回路(マイクロプロセッサなど)をプログラムすることによって、またはそれらの任意の組み合わせによって達成することができる。プロセスは、さまざまな技術(プロセス間通信のための従来の技術を含むが、それに限定されるものではない)を使用して通信することができ、異なるプロセスペアは異なる技術を使用してもよく、同じプロセスペアが別々のタイミングで異なる技術を使用してもよい。
したがって、明細書および図面は、限定的な意味ではなく例示的な意味で考えられるべきである。しかし、特許請求の範囲に記載されているより広い精神および範囲から逸脱することなく、追加、減算、削除ならびに他の変形および変更がなされてもよい、ということは明らかであろう。したがって、本開示の特定の実施形態について説明してきたが、これらは限定的であるよう意図されるものではない。さまざまな変形例および等価物は、以下の特許請求の範囲の範囲内である。これらの変形例は、開示されている特徴の任意の関連する組み合わせを含む。

Claims (24)

  1. コンピュータによって実行される方法であって、
    コンピューティングシステムが、宣言型インフラストラクチャプロビジョナを実行するステップと、
    前記コンピューティングシステムが、第1の一組の宣言命令を前記宣言型インフラストラクチャプロビジョナに提供することに少なくとも部分的に基づいて、第1の一組のインフラストラクチャコンポーネントをプロビジョニングするステップと、
    前記コンピューティングシステムが、第2の一組の宣言命令を前記宣言型インフラストラクチャプロビジョナに提供することに少なくとも部分的に基づいて、第2の一組のソフトウェアアーティファクトをデプロイするステップと、
    前記コンピューティングシステムが、複数のユーザインターフェイス要素を表示するユーザインターフェイスを提供するステップとを備え、前記複数のユーザインターフェイス要素は、少なくとも、前記第1の一組のインフラストラクチャコンポーネントをプロビジョニングするステップに関連付けられた第1のステータスと、前記第2の一組のソフトウェアアーティファクトをデプロイするステップに関連付けられた第2のステータスとを識別する、コンピュータによって実行される方法。
  2. 前記第1の一組のインフラストラクチャコンポーネントをプロビジョニングするステップに関連付けられた前記第1のステータス、および、前記第2の一組のソフトウェアアーティファクトをデプロイするステップに関連付けられた前記第2のステータスは、1つまたは複数の実行ターゲットに個々に対応し、前記1つまたは複数の実行ターゲットの各実行ターゲットは、少なくとも1つの物理的位置を備える予め定義された領域に対応する、請求項1に記載のコンピュータによって実行される方法。
  3. 前記コンピューティングシステムが、複数のフェーズのうちのあるフェーズに対応する進捗の視覚表示を表示するステップをさらに備え、前記複数のフェーズの各フェーズは、インフラストラクチャコンポーネントのそれぞれの組をプロビジョニングするステップまたはソフトウェアアーティファクトのそれぞれの組を一組の実行ターゲットにデプロイするステップに関連付けられ、前記一組の実行ターゲットの各実行ターゲットは、少なくとも1つの物理的位置を備える予め定義された領域に対応し、前記複数のフェーズは、予め定義された実行順序に関連付けられる、請求項1または2に記載のコンピュータによって実行される方法。
  4. 前記フェーズに対応する前記進捗の視覚表示を表示するステップは、前記フェーズに対応する前記進捗の視覚表示内に、前記一組の実行ターゲットに対応するステータスのそれぞれのインジケータを表示するステップを備える、請求項3に記載のコンピュータによって実行される方法。
  5. 前記コンピューティングシステムが、前記第2の一組のソフトウェアアーティファクトのうちのあるソフトウェアアーティファクトの以前の構成を識別するステップと、
    前記コンピューティングシステムが、前記第2の一組のソフトウェアアーティファクトをデプロイするステップに少なくとも部分的に基づいて、前記ソフトウェアアーティファクトの新たな構成を識別するステップと、
    前記コンピューティングシステムが、前記ユーザインターフェイスを介して、前記ソフトウェアアーティファクトの前記以前の構成から前記新たな構成への変更の表示を提供するステップとをさらに備える、先行する請求項のいずれか1項に記載のコンピュータによって実行される方法。
  6. 前記コンピューティングシステムが、前記第1の一組のインフラストラクチャコンポーネントのうちの少なくとも1つのインフラストラクチャコンポーネントのプロビジョニングにおける失敗を検出するステップと、
    前記コンピューティングシステムが、前記ユーザインターフェイスを介して、前記失敗の表示を表示するステップと、
    前記コンピューティングシステムが、ユーザ入力を受信するステップと、
    前記コンピューティングシステムが、前記ユーザ入力に応答して少なくとも1つの改善措置を実行するステップとをさらに備える、先行する請求項のいずれか1項に記載のコンピュータによって実行される方法。
  7. 前記コンピューティングシステムが、前記第2の一組のソフトウェアアーティファクトのうちの少なくとも1つのソフトウェアアーティファクトのデプロイメントにおける失敗を検出するステップと、
    前記コンピューティングシステムが、前記ユーザインターフェイスを介して、前記失敗の表示を表示するステップと、
    前記コンピューティングシステムが、ユーザ入力を受信するステップと、
    前記コンピューティングシステムが、前記ユーザ入力に応答して少なくとも1つの改善措置を実行するステップとをさらに備える、先行する請求項のいずれか1項に記載のコンピュータによって実行される方法。
  8. 前記第2の一組のソフトウェアアーティファクトをデプロイするステップは、実行ターゲットに関連付けられたソフトウェアリソースを第1の状態から第2の状態に変更するステップを備え、前記コンピュータによって実行される方法は、前記コンピューティングシステムが、前記ソフトウェアリソースを前記第1の状態から前記第2の状態に変更するステップの一部として前記ソフトウェアリソースに対して加えられる一組の変更を表示するステップをさらに備える、先行する請求項のいずれか1項に記載のコンピュータによって実行される方法。
  9. 少なくとも、前記第1の一組のインフラストラクチャコンポーネントをプロビジョニングするステップに関連付けられた前記第1のステータスと、前記第2の一組のソフトウェアアーティファクトをデプロイするステップに関連付けられた前記第2のステータスとを識別する前記複数のユーザインターフェイス要素を備えるように前記ユーザインターフェイスを生成するステップをさらに備える、先行する請求項のいずれか1項に記載のコンピュータによって実行される方法。
  10. システムであって、
    1つまたは複数のプロセッサと、
    コンピュータによって実行可能な命令を格納する1つまたは複数のメモリとを備え、前記コンピュータによって実行可能な命令は、前記1つまたは複数のプロセッサによって実行されると、前記システムに、
    宣言型インフラストラクチャプロビジョナを実行させ、
    第1の一組の宣言命令を前記宣言型インフラストラクチャプロビジョナに提供することに少なくとも部分的に基づいて、第1の一組のインフラストラクチャコンポーネントをプロビジョニングさせ、
    第2の一組の宣言命令を前記宣言型インフラストラクチャプロビジョナに提供することに少なくとも部分的に基づいて、第2の一組のソフトウェアアーティファクトをデプロイさせ、
    複数のユーザインターフェイス要素を表示するユーザインターフェイスを提供させ、前記複数のユーザインターフェイス要素は、少なくとも、前記第1の一組のインフラストラクチャコンポーネントをプロビジョニングさせることに関連付けられた第1のステータスと、前記第2の一組のソフトウェアアーティファクトをデプロイさせることに関連付けられた第2のステータスとを識別する、システム。
  11. 前記第1の一組のインフラストラクチャコンポーネントをプロビジョニングさせることに関連付けられた前記第1のステータス、および、前記第2の一組のソフトウェアアーティファクトをデプロイさせることに関連付けられた前記第2のステータスは、1つまたは複数の実行ターゲットに個々に対応し、前記1つまたは複数の実行ターゲットの各実行ターゲットは、少なくとも1つの物理的位置を備える予め定義された領域に対応する、請求項10に記載のシステム。
  12. 前記命令の実行はさらに、前記システムに、複数のフェーズのうちのあるフェーズに対応する進捗の視覚表示を表示させ、前記複数のフェーズの各フェーズは、インフラストラクチャコンポーネントのそれぞれの組をプロビジョニングすることまたはソフトウェアアーティファクトのそれぞれの組を一組の実行ターゲットにデプロイすることに関連付けられ、前記一組の実行ターゲットの各実行ターゲットは、少なくとも1つの物理的位置を備える予め定義された領域に対応し、前記複数のフェーズは、予め定義された実行順序に関連付けられる、請求項10または11に記載のシステム。
  13. 前記命令の実行はさらに、前記システムに、
    前記第2の一組のソフトウェアアーティファクトのうちのあるソフトウェアアーティファクトの以前の構成を識別させ、
    前記第2の一組のソフトウェアアーティファクトをデプロイさせることに少なくとも部分的に基づいて、前記ソフトウェアアーティファクトの新たな構成を識別させ、
    前記ユーザインターフェイスを介して、前記ソフトウェアアーティファクトの前記以前の構成から前記新たな構成への変更の表示を提供させる、請求項10~12のいずれか1項に記載のシステム。
  14. 前記命令の実行はさらに、前記システムに、
    前記第1の一組のインフラストラクチャコンポーネントのうちの少なくとも1つのインフラストラクチャコンポーネントのプロビジョニングまたは前記第2の一組のソフトウェアアーティファクトのうちの少なくとも1つのソフトウェアアーティファクトのデプロイメントにおける失敗を検出させ、
    前記ユーザインターフェイスを介して、前記失敗の表示を表示させ、
    ユーザ入力を受信させ、
    前記ユーザ入力に応答して少なくとも1つの改善措置を実行させる、請求項10~13のいずれか1項に記載のシステム。
  15. 非一時的なコンピュータ読取可能記憶媒体であって、前記非一時的なコンピュータ読取可能記憶媒体は、1つまたは複数のプロセッサと、コンピュータによって実行可能な命令を格納する1つまたは複数のメモリとを備え、前記コンピュータによって実行可能な命令は、前記1つまたは複数のプロセッサによって実行されると、コンピューティングデバイスに、
    宣言型インフラストラクチャプロビジョナを実行させ、
    第1の一組の宣言命令を前記宣言型インフラストラクチャプロビジョナに提供することに少なくとも部分的に基づいて、第1の一組のインフラストラクチャコンポーネントをプロビジョニングさせ、
    第2の一組の宣言命令を前記宣言型インフラストラクチャプロビジョナに提供することに少なくとも部分的に基づいて、第2の一組のソフトウェアアーティファクトをデプロイさせ、
    複数のユーザインターフェイス要素を表示するユーザインターフェイスを提供させ、前記複数のユーザインターフェイス要素は、少なくとも、前記第1の一組のインフラストラクチャコンポーネントをプロビジョニングさせることに関連付けられた第1のステータスと、前記第2の一組のソフトウェアアーティファクトをデプロイさせることに関連付けられた第2のステータスとを識別する、非一時的なコンピュータ読取可能記憶媒体。
  16. 前記第1の一組のインフラストラクチャコンポーネントをプロビジョニングさせることに関連付けられた前記第1のステータス、および、前記第2の一組のソフトウェアアーティファクトをデプロイさせることに関連付けられた前記第2のステータスは、1つまたは複数の実行ターゲットに個々に対応し、前記1つまたは複数の実行ターゲットの各実行ターゲットは、少なくとも1つの物理的位置を備える予め定義された領域に対応する、請求項15に記載の非一時的なコンピュータ読取可能記憶媒体。
  17. 前記命令の実行はさらに、前記コンピューティングデバイスに、複数のフェーズのうちのあるフェーズに対応する進捗の視覚表示を表示させ、前記複数のフェーズの各フェーズは、インフラストラクチャコンポーネントのそれぞれの組をプロビジョニングすることまたはソフトウェアアーティファクトのそれぞれの組を一組の実行ターゲットにデプロイすることに関連付けられ、前記一組の実行ターゲットの各実行ターゲットは、少なくとも1つの物理的位置を備える予め定義された領域に対応し、前記複数のフェーズは、予め定義された実行順序に関連付けられる、請求項15または16に記載の非一時的なコンピュータ読取可能記憶媒体。
  18. 前記命令の実行はさらに、前記コンピューティングデバイスに、
    前記第2の一組のソフトウェアアーティファクトのうちのあるソフトウェアアーティファクトの以前の構成を識別させ、
    前記第2の一組のソフトウェアアーティファクトをデプロイさせることに少なくとも部分的に基づいて、前記ソフトウェアアーティファクトの新たな構成を識別させ、
    前記ユーザインターフェイスを介して、前記ソフトウェアアーティファクトの前記以前の構成から前記新たな構成への変更の表示を提供させる、請求項15~17のいずれか1項に記載の非一時的なコンピュータ読取可能記憶媒体。
  19. 前記命令の実行はさらに、前記コンピューティングデバイスに、
    前記第1の一組のインフラストラクチャコンポーネントのうちの少なくとも1つのインフラストラクチャコンポーネントのプロビジョニングまたは前記第2の一組のソフトウェアアーティファクトのうちの少なくとも1つのソフトウェアアーティファクトのデプロイメントにおける失敗を検出させ、
    前記ユーザインターフェイスを介して、前記失敗の表示を表示させ、
    ユーザ入力を受信させ、
    前記ユーザ入力に応答して少なくとも1つの改善措置を実行させる、請求項15~18のいずれか1項に記載の非一時的なコンピュータ読取可能記憶媒体。
  20. 前記第2の一組のソフトウェアアーティファクトをデプロイさせることは、実行ターゲットに関連付けられたソフトウェアリソースを第1の状態から第2の状態に変更することを備え、前記命令の実行はさらに、前記コンピューティングデバイスに、前記ソフトウェアリソースを前記第1の状態から前記第2の状態に変更することの一部として前記ソフトウェアリソースに対して加えられる一組の変更を表示させる、請求項15~19のいずれか1項に記載の非一時的なコンピュータ読取可能記憶媒体。
  21. コンピュータによって実行される方法であって、
    コンピューティングシステムが、複数のユーザインターフェイス要素を表示するユーザインターフェイスを提供するステップを備え、前記複数のユーザインターフェイス要素は、少なくとも、第1の一組のインフラストラクチャコンポーネントをプロビジョニングすることに関連付けられた第1のステータスと、第2の一組のソフトウェアアーティファクトをデプロイすることに関連付けられた第2のステータスとを識別し、前記第1の一組のインフラストラクチャは、宣言型インフラストラクチャプロビジョナに少なくとも部分的に基づいてプロビジョニングされ、前記第2の一組のソフトウェアアーティファクトは、前記宣言型インフラストラクチャプロビジョナに少なくとも部分的に基づいてプロビジョニングされる、コンピュータによって実行される方法。
  22. システムであって、
    1つまたは複数のプロセッサと、
    コンピュータによって実行可能な命令を格納する1つまたは複数のメモリとを備え、前記コンピュータによって実行可能な命令は、前記1つまたは複数のプロセッサによって実行されると、前記システムに、
    複数のユーザインターフェイス要素を表示するユーザインターフェイスを提供させ、前記複数のユーザインターフェイス要素は、少なくとも、第1の一組のインフラストラクチャコンポーネントをプロビジョニングすることに関連付けられた第1のステータスと、第2の一組のソフトウェアアーティファクトをデプロイすることに関連付けられた第2のステータスとを識別し、前記第1の一組のインフラストラクチャは、宣言型インフラストラクチャプロビジョナに少なくとも部分的に基づいてプロビジョニングされ、前記第2の一組のソフトウェアアーティファクトは、前記宣言型インフラストラクチャプロビジョナに少なくとも部分的に基づいてプロビジョニングされる、システム。
  23. 非一時的なコンピュータ読取可能記憶媒体であって、前記非一時的なコンピュータ読取可能記憶媒体は、1つまたは複数のプロセッサと、コンピュータによって実行可能な命令を格納する1つまたは複数のメモリとを備え、前記コンピュータによって実行可能な命令は、前記1つまたは複数のプロセッサによって実行されると、コンピューティングデバイスに、
    複数のユーザインターフェイス要素を表示するユーザインターフェイスを提供させ、前記複数のユーザインターフェイス要素は、少なくとも、第1の一組のインフラストラクチャコンポーネントをプロビジョニングすることに関連付けられた第1のステータスと、第2の一組のソフトウェアアーティファクトをデプロイすることに関連付けられた第2のステータスとを識別し、前記第1の一組のインフラストラクチャは、宣言型インフラストラクチャプロビジョナに少なくとも部分的に基づいてプロビジョニングされ、前記第2の一組のソフトウェアアーティファクトは、前記宣言型インフラストラクチャプロビジョナに少なくとも部分的に基づいてプロビジョニングされる、非一時的なコンピュータ読取可能記憶媒体。
  24. 請求項1~9および21のいずれか1項に記載のステップを実行するための手段を備える装置。
JP2022542782A 2020-01-20 2020-11-12 インフラストラクチャオーケストレーションサービスのためのユーザインターフェイス技術 Pending JP2023511535A (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US202062963456P 2020-01-20 2020-01-20
US62/963,456 2020-01-20
US202062964596P 2020-01-22 2020-01-22
US62/964,596 2020-01-22
US17/001,626 2020-08-24
US17/001,626 US20210223923A1 (en) 2020-01-20 2020-08-24 User interface techniques for an infrastructure orchestration service
PCT/US2020/060081 WO2021150291A1 (en) 2020-01-20 2020-11-12 User interface techniques for an infrastructure orchestration service

Publications (2)

Publication Number Publication Date
JP2023511535A true JP2023511535A (ja) 2023-03-20
JPWO2021150291A5 JPWO2021150291A5 (ja) 2023-10-31

Family

ID=76991830

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022542782A Pending JP2023511535A (ja) 2020-01-20 2020-11-12 インフラストラクチャオーケストレーションサービスのためのユーザインターフェイス技術

Country Status (4)

Country Link
EP (1) EP4094148A1 (ja)
JP (1) JP2023511535A (ja)
CN (1) CN114730258A (ja)
WO (1) WO2021150291A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114338423A (zh) * 2021-12-30 2022-04-12 贵州国卫信安科技有限公司 一种持续迭代的自动化网络靶标构建技术

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015184158A1 (en) * 2014-05-28 2015-12-03 New Media Solutions, Inc. Generation and management of computing infrastructure instances
US11366744B2 (en) * 2017-04-07 2022-06-21 Microsoft Technology Licensing, Llc Partitioning and orchestrating infrastructure software deployments for safety and agility across diverse configurations and hardware types
US10769281B2 (en) * 2017-12-07 2020-09-08 International Business Machines Corporation Compliant software component infrastructure deployment
US10990368B2 (en) * 2017-12-26 2021-04-27 Oracle International Corporation On-premises and cloud-based software provisioning

Also Published As

Publication number Publication date
CN114730258A (zh) 2022-07-08
EP4094148A1 (en) 2022-11-30
WO2021150291A1 (en) 2021-07-29

Similar Documents

Publication Publication Date Title
US20210223923A1 (en) User interface techniques for an infrastructure orchestration service
US11755337B2 (en) Techniques for managing dependencies of an orchestration service
EP4094149B1 (en) Updating code in distributed version control system
JP2023511113A (ja) 宣言型プロビジョニングツールを使用してインフラストラクチャリソースを展開するための技術
JP2023511114A (ja) デプロイ命令のために有向非巡回グラフを利用するための技術
JP2023511111A (ja) デプロイメントオーケストレータにおけるドリフトを検出するための技術
JP2023511535A (ja) インフラストラクチャオーケストレーションサービスのためのユーザインターフェイス技術

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231023

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231023