詳細な説明
以下の記載において、本発明の実施形態が完全に理解されるように説明目的のために、多くの特定の詳細を記載する。しかしながら、これらの特定の詳細がなくてもさまざまな実施形態が実施され得るということは明らかであろう。図面および記載は、限定的であるように意図されない。
多くのタイプのコンピューティングシステムおよびアプリケーションは、当該コンピューティングシステムまたはアプリケーションの動作に関する莫大な量のデータを生成するか、または、当該動作の結果として得られる莫大な量のデータを生成する。その後、これらの莫大な量のデータは、ログファイル/レコードといったような収集位置に頻繁に格納され、システムまたはアプリケーションの挙動または動作を分析する必要がある場合に、その後の期間において検討され得る。
以下の説明において、例示として、「ログ」データに関して実施形態が記載され得るが、他のタイプのデータの処理もさらに考えられる。したがって、実施形態は、その適用において、ログデータのみに限定されるべきでない。さらに、以下の記載はさらに、処理されるデータを「レコード」または「メッセージ」として交換可能に言及する場合があるが、本発明の範囲を当該データについての任意の特定のフォーマットに限定する意図はない。
図1Aは、本発明のいくつかの実施形態に従った、ログデータを構成、収集、および分析するための例示的なシステム100を示す。システム100は、いくつかの実施形態において、クラウドベースおよび/またはSaaS(software as a service(ソフトウェア・アズ・ア・サービス))ベースのアーキテクチャとして具現化されるログ分析システム101を含む。これは、ログ分析システム101は、サービスを必要とする各顧客が、顧客自身のネットワークにサービスコンポーネントを個々にインストールおよび構成する必要がないように、ホストされたプラットホーム上のサービスとしてログ分析機能を提供することが可能であるということを意味する。ログ分析システム101は、複数の別個の顧客にログ分析サービスを提供することができ、如何なる数の顧客にもサービスを提供するようスケールされ得る。
各顧客ネットワーク104は、任意数のホスト109を含み得る。ホスト109は、1つ以上のログファイルとしてログデータを生成する、顧客ネットワーク104内のコンピューティングプラットフォームである。ホスト109内で作り出される生ログデータは、任意のログ生成源から生じ得る。たとえば、生ログデータは、データベース管理システム(DBMS: database management system)、データベースアプリケーション(DB App)、ミドルウェア、オペレーティングシステム、ハードウェアコンポーネント、または、任意の他のログ生成アプリケーション、コンポーネントもしくはシステムから生じ得る。ログ分析システム101と通信するために、1つ以上のゲートウェイ108が各顧客ネットワークにおいて提供される。
システム100は、ログ分析システム101を動作させかつログ分析システム101とインタラクションするためにシステム100を使用する1つ以上のユーザステーション103における1人以上のユーザを含み得る。ユーザステーション103は、システム100においてログ分析システム101を動作するかまたはログ分析システム101とインターフェイス接続するために使用され得る任意のタイプのコンピューティングステーションを含む。そのようなユーザステーションの例はたとえば、ワークステーション、パーソナルコンピュータ、モバイルデバイスまたはリモートコンピューティングターミナルを含んでいる。ユーザステーションは、ディスプレイモニタのような、ユーザステーションにてユーザにユーザインターフェイスを表示するためのディスプレイデバイスを含む。ユーザステーションはさらに、システム100のアクティビティに対して動作制御を提供するよう、ユーザのための1つ以上の入力デバイスを含む。入力デバイスとしては、ユーザ入力を生成するようグラフィカルユーザインターフェイスにおいてポインティングオブジェクトを操作するマウスまたはキーボードがある。いくつかの実施形態では、ユーザステーション103は、顧客ネットワーク104内に位置し得る(が顧客ネットワーク104内に位置する必要はない)。
ログ分析システム101は、ユーザステーション101におけるユーザにアクセス可能な機能を含んでおり、ログ分析システム101は、ログデータの構成、収集および分析を実行するよう、エンジン、メカニズムおよび/またはモジュール(ハードウェア、ソフトウェアまたはハードウェアおよびソフトウェアの混合に関わらず)の集合として実現される。ユーザインターフェイス(UI)メカニズムは、分類および分析結果を表示し、ユーザがログ分析システムとインタラクションすることを可能にするようUIを生成する。
図1Bは、ログデータを構成、収集および分析するためにシステム100を使用するアプローチのフローチャートを示す。この図1Bの議論は、図1Aにおけるシステム100のために示されるコンポーネントに言及する。
120において、システム内でログモニタリングが構成される。これはたとえば、ユーザ/顧客が望むログモニタリング/データ収集のタイプを構成するようユーザ/顧客によって行われ得る。システム101内において、UI制御を含む構成メカニズム129が、ログ収集構成111およびログ収集構成についてのターゲット表現113を選択および構成するよう、ユーザによって動作可能である。
ログ収集構成111は、何のデータを収集するべきか(たとえばどのログファイル)、収集するべきデータの位置(たとえばディレクトリ位置)、データにどのようにアクセスするか(たとえば取得するべきログ内のログおよび/または特定フィールドのフォーマット)、および/または、データを収集するべきとき(たとえば周期ベース)を識別する情報の集合(たとえばログルール、ログソース情報およびログタイプ情報)を含む。ログ収集構成111は、サービスプロバイダによって含まれるアウト・オブ・ザ・ボックスルール(out-of-the-box rules)を含み得る。ログ収集構成111はさらに、顧客が規定したルール/顧客がカスタマイズしたルールを含み得る。
ターゲット表現113は、ログを含むおよび/または生成する、顧客環境内の個々のコンポーネントである「ターゲット」を識別する。これらのターゲットは、顧客環境において特定のコンポーネント/ホストに関連付けられる。例示的なターゲットは、1つ以上のログおよび/または1つ以上のホストに関連付けられる特定のデータベースアプリケーションであり得る。
122での次のアクションは、ユーザ構成に従ってログデータをキャプチャすることである。ログデータは、データベース管理システム、データベースアプリケーション、ミドルウェア、ハードウェアログ、オペレーティングシステムログ、アプリケーションログ、アプリケーションサーバログ、データベースサーバログ、および、システムまたはアプリケーションの挙動をモニタする任意の他のタイプのログといった、任意のログ生成ソース位置から生じ得る。
いくつかの場合では、ログルール111とターゲット表現との間の関連性が処理のために顧客ネットワーク104へ送信される。ログ分析システムのエージェントが、ホスト109上において適切なログからデータを収集するようホスト109の各々上に存在する。
いくつかの実施形態では、キャプチャされたデータに対してデータマスキングが実行され得る。マスキングは、顧客ネットワークを離れる前に顧客データを保護するよう、収集時間において実行される。たとえば収集されたログデータ中のさまざまなタイプの情報(たとえばユーザ名および他の個人情報)は、サーバへ送信される前にマスキングされるには十分にセンシティブであり得る。そのようなデータについて、サーバに収集される前に除去され得るか、および/または、プロキシデータに変更され得るパターンが識別される。これにより、センシティブなデータを隠しつつ、データが分析目的のために使用されることが可能になる。いくつかの実施形態は、センシティブなデータを永久的に除去する(たとえば、すべてのそのようなデータを「***」記号に変更する)か、または、オリジナルデータが回復され得るようにマッピングされるデータに変更され得る。
124において、収集されたログデータが顧客ネットワーク104からログ分析システム101に送達される。顧客ネットワーク104中の複数のホスト109が、収集されたデータを少数の1つ以上のゲートウェイ108に提供し、次いで、当該ゲートウェイ108は、ログ分析システム101におけるエッジサービス106にログデータを送信する。エッジサービス106は、収集されたデータを1つ以上の顧客ネットワークから受け取り、任意のインテイク処理(intake processing)を実行し(たとえばクラスタ間でのメッセージ変動性の要素を欠く正規化されたメッセージまたはスケルトンメッセージに各メッセージを変換するために文法ルールを適用し、変換されたメッセージのハッシュを使用して識別される初期クラスタに各変換されたメッセージを割り当て)、ログ処理パイプライン107によるさらに別の処理のためにインバウンドデータストアにデータを配置し得る。
126において、ログ処理パイプライン107は、収集されたログデータに対して一連のデータ処理および分析動作を実行する。さまざまな場合において、これらの処理および分析動作は、データを格納する前であって、および/または、データストアから抽出されたデータに対してアクションを実行することによって実行されるアクションを含み得る。たとえば、1つ以上のログメッセージは、(たとえばソースからログメッセージを受け取る際に)インジェスト時間(ingest time)に初期クラスタに割り当てられ得、その後、初期クラスタリングを修正または補足し、クラスタリングに基づいて統計および/またはプレゼンテーションを生成するクエリに応答してログメッセージが抽出され得る。
次いで、128において、処理されたデータがデータストレージデバイス110へ格納される。コンピュータ読取可能ストレージデバイス110は、コンピュータ読取可能ストレージデバイス110に位置するデータへの実行可能なアクセスを可能にするハードウェアおよびソフトウェアの任意の組み合わせを含む。たとえば、コンピュータ読取可能ストレージデバイス110は、オペレーティングシステムによって動作可能に管理されるコンピュータメモリとして実現され得る。コンピュータ読取可能ストレージデバイス110中のデータは、データベースオブジェクト、クラウドオブジェクトおよび/またはファイルシステム中のファイルとして実現され得る。いくつかの実施形態では、処理されたデータは、(たとえばSOLRクラスタとしての)テキスト/インデックス付データストア110aと、(たとえばHDFSクラスタとしての)生/履歴データストア110bとの両方内に格納される。
SOLRクラスタは、Apache(商標)オープンソースローカルサーチプラットホームに対応する。SOLRクラスタは、HDFSクラスタに格納されるデータのフルテキストインデキシングおよびサーチを実行するためにサーチライブラリを使用し得る。SOLRクラスタは、他のプログラムおよびアプリケーションにサーチ機能をインターフェイス接続するために、さまざまな言語と互換性のあるAPIを提供し得る。インデキシングはほぼリアルタイムで実行され得る。クラスタは、フォールトトレランスおよび可用性を促進するようにサーバの集合上で動作し得る。インデキシングおよびサーチタスクは、当該サーバの集合に亘って分散され得る。
HDFSクラスタは、Hadoop分散ファイルシステムクラスタに対応する。HDFSクラスタは、ストレージ(たとえば直接的に取り付けられたストレージ)をホストし、ユーザアプリケーションによって規定されるタスクのようなタスクを実行するために、多くのサーバ(たとえば何千)を含み得る。HDFSクラスタは、クラスタのネームスペースを管理するための単一のマスタサーバを有するマスタ/スレーブアーキテクチャを含み得る。ファイルは、HDFSクラスタの複数のデータノード(DataNodes)に格納されるよう、ブロックに分割され得る。マスタサーバは、ファイル操作(たとえば、開く、閉じるなど)を実行し得、どのブロックがどのデータノードに格納されるべきであるかを決定し得る。マスタサーバは、対応するファイル操作の受信に応答して、データを読み出すまたは書き込む要求についてデータノードと通信し得る。
130において、レポートメカニズム/UI115を使用して、処理されたデータに対してレポートが実行され得る。図2に示されるように、レポートUI200は、ログサーチ機構202、1つ以上のダッシュボード204、および/または、処理されたログデータを分析/閲覧するための任意の好適なアプリケーション206を含み得る。そのようなレポートコンポーネントの例は以下により詳細に記載される。
132において、処理されたデータに対してインシデント管理が実行され得る。アラート条件の検出の際に、インシデント管理メカニズム117がインシデント/アラートをユーザの指定された集合に通知を提供するように、1つ以上のアラート条件がログ分析システム内に構成され得る。
134において、補正アクションエンジン119が、顧客ネットワーク104内で行われるべき任意の必要なアクションを実行し得る。たとえば、データベースシステムがダウンしているというログエントリが受け取られ得る。そのようなログエントリが識別された場合、可能な自動補正アクションは、データベースシステムを復旧することを試みることである。顧客は、この状況に対処するために補正アクションスクリプトを作成し得る。補正アクションを実行するためにスクリプトを実行するようトリガーが実行され得る(たとえば、当該トリガーは、スクリプトを実行するよう顧客ネットワーク上のエージェントへ命令を送信させる)。代替的な実施形態では、当該状況についての適切なスクリプトが、実行されるようサーバから顧客ネットワークへとプッシュダウンされる。さらに、136において、任意の他の付加的な機能および/またはアクションが、処理されたデータに少なくとも基づいて適切なように行われ得る。
図3Aは、ホスト環境340におけるログ分析システムの内部構造と、ログ分析システムとインタラクションする顧客環境342内のコンポーネントとのさらに詳細な図を提供する。このアーキテクチャ300は、大量のログデータのインジェストに対応可能であるログモニタリングのためのフローを提供するように構成される。
単一の顧客ホスト/サーバ344内の顧客環境342において、LA(ログ分析(log analytics))エージェント333は、ログモニタリング構成データ332(たとえばスニッファ構成またはターゲットサイド構成マテリアル)を取得し、ログファイルスニッファ336(本願明細書において「ログコレクタ」とも称される)を呼び出して1つ以上のログファイル338からログデータを収集する。
ログファイルスニッファ336にインターフェイス接続するようにデーモンマネージャ334が使用され得る。ログファイルスニッファ336は、ホストマシン344上の1つ以上のログファイル338から読み出しを行う。デーモンマネージャ334はログコンテンツを取得し、LAエージェント333に戻され得るようにログコンテンツをパッケージ化する。なお、システムは、異なる種類の任意数のスニッファを含み得、ログスニッファ336は単に、システムにおいて使用され得る単一のタイプのスニッファの例である。したがって、レジストリ、データベース、ウィンドウイベントログなどをモニタするスニッファといった他のタイプのスニッファが本発明のさまざまな実施形態において使用されてもよい。さらに、いくつかの実施形態におけるログスニッファは、集合的な/圧縮されたファイル(たとえばzipファイル)を処理するように構成される。
LAエージェント333は、ゲートウェイエージェント330に、収集されたログデータを送信する。ゲートウェイエージェント330は、複数の顧客ホスト/サーバから収集されるログデータをパッケージ化し、複数のホストからのログコンテンツを集合するアグリゲータとして本質的に動作する。その後、パッケージ化されたコンテンツは、ゲートウェイエージェント330からエッジサービス306に送信される。エッジサービス306は、任意数の異なる顧客環境342からの複数のゲートウェイエージェント330から大量のデータを受信する。
エッジサービス306において受信され得る潜在的に大きなボリュームのデータが与えられると、当該データは、初期クラスタに各ログメッセージを割り当てるようにすぐに処理され得、インバウンドデータストレージデバイス304(「プラットホームインバウンドクラスタリングストア」)に格納され得る。いくつかの場合では、初期処理または予備処理が、インジェスト時間において実行され得る。インジェスト時間は、データの格納に対応する時間(たとえば、データの格納の前の時間、データの格納の少し後もしくは直後の時間、または、データの格納と同時の時間)を含み得る。初期処理または予備処理は(たとえば)、データのどの部分が非変動コンポーネントであるかを検出することと、メッセージにおいて検出された非変動コンポーネントに基づいて各ログメッセージについて初期クラスタを決定することとを含み得る。たとえば、初期クラスタの識別子を生成するよう、各非変動コンポーネントの値にハッシング技術が適用され得る。その後、ログメッセージは初期クラスタの識別子に関連付けられて格納され得るか、または、ログメッセージが初期クラスタに関連付けられていることを示す他のクラスタデータが格納され得る。クラスタ割り当てはさらに、その後のリソース可用性の時間中に発生する処理のようなその後の処理中に、および/または、関連付けられたログメッセージに対応するかもしくは潜在的に対応するデータについてのクエリを受信することに応答して、改良、増強および/または使用され得る。
したがって、いくつかの場合では、キューが管理および維持される。キュー要素は、クラスタ割り当てが改良、増強および/または使用される1つ以上のログメッセージに対応する。(たとえば)キュー要素の初期格納の後、および/または、1つ以上の関連付けられるログメッセージに対応するかもしくは潜在的に対応するデータについてのクエリを受信することに応答して、要素がキューに加えられ得る。キューはログ処理パイプライン308のために使用され得る。
インバウンドデータストア内で処理されるべきアイテムを管理するためにデータ構造が提供される。いくつかの実施形態では、キュー内の処理されるべきアイテムをトラッキングするよう、(たとえば、Kafkaプロダクトを使用して実現される)メッセージングプラットホーム302が使用され得る。ログ処理パイプライン308内において、キューコンシューマ310が、処理されるべきキュー内の次のアイテムを識別し、当該次のアイテムが次いでプラットホームインバウンドストアから抽出される。キューコンシューマ310は、プロセス、スレッド、ノードまたはタスクといった、キューからシステム内のワークを処理することが可能な任意のエンティティを含む。
抽出されたログデータは「パース(parse)」ステージ312を経て、ログエントリがパースされ、特定フィールドまたはコンポーネントへ分割される。ログのために構成された「ログタイプ」は、どのように所望のフィールドへとログエントリを分割するかを指定する。
「クラスタ」ステージ313では、ログデータはさらに、クラスタに個々のログメッセージを割り当てるよう分析される。具体的には、ログメッセージが(たとえば304において)インテイク処理中に割り当てられた複数の初期クラスタが、当該初期クラスタのうちのいくつかがともにマージされるべきか否かを決定するためにアセスメントがなされ得る。当該アセスメントは、各クラスタについて1つ以上の代表的なサンプルを識別することと、対の量的比較アセスメントを実行することとを含み得る。対の比較アセスメントを介してアセスメントがなされたクラスタ対は、同じ数または同様の数のコンポーネント(またはワード)を有するログメッセージを有するクラスタを含み得る。いくつかの場合では、クラスタの各対は、同じであるか、または、(たとえば、予め規定されているか、デフォルト数であるか、または、ユーザによって識別される)しきい値数未満だけ互いに異なる数のコンポーネントに関連付けられるクラスタを含み、上記アセスメントを使用して評価される。比較アセスメントは、反復しておよび/または構造化された態様で(たとえば同じ数のコンポーネントを有する対が、異なる数のコンポーネントを有する対を評価する前に評価されるように)実行され得る。
上記対の量的比較アセスメントは、たとえば、代表的なメッセージを使用して類似性メトリック(similarity metric)を生成することと、当該メトリックが(たとえば、予め規定されているか、デフォルト数であるか、ユーザによって識別される)しきい値メトリックを上回っているか否か決定することとを含み得る。類似性メトリックは(たとえば)、代表的なメッセージが、同じ(または同様の)数のコンポーネント、同じ(または同様の)数の変動(または非変動)コンポーネント、1つ以上の非変動コンポーネントの各々のコンテンツ、および、1つ以上の変動コンポーネントの特徴(たとえばフォーマット、文字タイプあるいは長さ)などを含むか否かに基づき得る。類似性メトリックは、クラスタ間のメッセージ同士の間の相関係数を生成することに基づき得るか、または、(たとえば、技術が、主コンポーネント分析または独立コンポーネント分析のようなコンポーネント分析を使用することを含んでいる場合)クラスタの代表的なメッセージが同じクラスタに割り当てられるか、もしくは、コンポーネントをシェアする程度までメッセージのより大きな集合を使用してクラスタリング技術を実行することに基づき得る。
「正規化」ステージ314では、識別されたフィールドが正規化される。たとえば、「時間」フィールドは異なるログにおいて任意数の異なる態様で表わされ得る。この時間フィールドは、単一の認識可能なフォーマット(たとえばUTCフォーマット)へ正規化され得る。別の例として、「error」という用語は、異なるシステム上において異なる態様で表わされ得る(たとえば、すべてが大文字の「ERROR」、すべてが小文字の「error」、最初の文字が大文字である「Error」、または、省略形の「err」)。この状況においては、異なる用語形態/タイプが単一のフォーマット(たとえばすべてが小文字で省略形でない用語「error」)へ正規化される必要がある。
「変換」ステージ316は、ログデータから新しいコンテンツを合成するために使用され得る。例として、「タグ」は、ログエントリに関する付加的な情報を提供するよう、ログデータに加えられ得る。別の例として、タグは、ログメッセージが割り当てられるクラスタを識別し得る。
「条件評価」ステージ318は、ログデータに対する特定条件について評価するために使用される。このステージは、ログデータ内のパターンを識別し、ログ内のアラート条件を作成/識別するために実行され得る。このステージにおいて、たとえば管理者/顧客に送信されるEメール/テキストメッセージ/コール、または、別のシステムもしくはメカニズムへのアラートを含む任意のタイプの通知が実行され得る。一例として、条件は、所与のクラスタに割り当てられたログメッセージの量(たとえば数またはパーセンテージ)が(たとえば、ユーザ、クライアントまたはルールによって、固定されるか、あらかじめ規定されるかまたは規定される)しきい値を越えたことを検出するといった、クラスタ割り当ての変更に対応するイベントを規定し得る。しきい値を越えることは、たとえば、下側しきい値を下回るか、または、上側しきい値を上回ることである。別の例として、条件は、たとえば、時系列スロープについてのしきい値を識別すること、または、クラスタに割り当てられたログメッセージのカウントもしくはパーセンテージにおける2つの時間ビン(time bin)の間での差についてのしきい値を識別することによって、所与のしきい値に割り当てられるログメッセージの量が変化している程度に対応するイベントを規定し得る。さらに別の例として、条件は、(たとえばカーブフィット係数がしきい値量内に存在するのに十分に類似しているか否か決定し、時系列中の1つ以上のピークの時間が規定されたしきい値時間内にあるか否か決定し、クラスタの時系列同士間の相関係数がしきい値を越えているか否か決定し、および/または、個々のクラスタの各々の時系列の変動性と、時系列の合計の変動性との間の差がしきい値を上回っているか否かを決定することによって)複数のクラスタの各々の時系列が同様の形状を有することを示すイベントといった、複数のクラスタ割り当てに対応するイベントを規定し得る。
その後、ログライタ320は、処理されたログデータを1つ以上のデータストア324に書き込む。いくつかの実施形態では、処理されたデータは、(たとえばSOLRクラスタとしての)テキスト/インデックス付データストアと、(たとえばHDFSクラスタとしての)生および/または履歴データストアとの両方に格納される。ログライタはさらに、別の処理ステージ322および/または下流の処理エンジンにログデータを送信し得る。
図3Bに示されるように、いくつかの実施形態は、クライアントサイドのエージェント333を通じて進める必要なくログデータを収集するよう、サイドローディングメカニズム350を提供する。このアプローチでは、ユーザは、ローカルシステム上の1つ以上のファイルを選択するためにサーバにログインする。システムは、サーバにおいてそのファイルをロードし、(たとえばユーザにログタイプを提供させ、可能性のあるログタイプを試み、異なるログタイプによってロールすることによって、または、ログタイプの経験的(educated)「推測」を行うことによって)そのファイルを通じてスニッフィングを行う。次いで、スニッフィング結果が、前述のように、エッジサービスおよび処理に渡される。図3Cの実施形態では、サイドローディングメカニズム350のみがログファイルを収集するために存在する。すなわち、エージェント/スニッファエンティティはいずれも、クライアントサーバ344上にインストールされないか、および/または、クライアントサーバ344上にて必要とされない。
図4は、オンプレミスアプリケーションをクラウドシステムにエクスポートするための例示的なネットワーク環境400を示す。ネットワーク環境400はローカルシステム410およびクラウドシステム450を含み得る。ローカルシステム410は、データベース420、アプリケーションサーバ430およびウェブサーバ440といった、1つ以上の内部サブシステムを含み得る。ローカルシステム410の内部サブシステムの各々は、クラウドシステムに含まれていない場合があり得る。いくつかの実現例では、データベース420、アプリケーションサーバ430およびウェブサーバ440の物理コンポーネントは、会社に関連付けられる施設においてオンプレミスであり得る。データベース420、アプリケーションサーバ430およびウェブサーバ440の各々は、少なくとも部分的に、1つ以上のアプリケーションを実行し得る。
「オンプレミス」という用語は会社の施設に位置するシステムを指すように使用されるが、本開示はそれに限定されないということが認識されるであろう。たとえば、ローカルシステム410およびその内部サブシステムは、会社の施設において物理的にオンプレミスであってもよく、物理的にオンプレミスでなくてもよいが、内部サブシステムは、会社に関連していないエリアに亘って分散され得る(たとえば賃貸したサーバ)。さらに、ローカルシステム410は、会社によって管理される1つ以上のアプリケーションを実行するために使用され得る。
いくつかの実現例では、クラウドシステム450は、リポジトリ460、クラウドマネージャ470、クラウドマネージャアプリケーションスタック475、および、中央サーバ480を含み得る。多層アプリケーションスタックへのアップデートは、中央サーバ480に周期的に格納され得る。たとえば、アップデート490は、1つ以上のアプリケーションをアップデートするコードを含み得る。アップデート490の非限定的な例は、バグフィックス、アプリケーションへの特徴の追加、アプリケーションへの機能の追加、特徴の修正、機能の修正、特徴の削除、および/または、機能の削除を含み得る。アップデート490は、1人以上のプログラマによって規定され得る(たとえばコードが記述された)か、または、いくつかの場合では、アップデート490は、1つ以上のルールおよび/または機械学習技術に基づいて自動的に作成され得る。新しいアップデートが周期的に規定されると、当該アップデートはアップデート490として中央サーバ480に格納され得る。中央サーバ480はさまざまなアプリケーションのために複数のアップデートを格納し得る。リポジトリ460は、ローカルシステムからクラウドシステム450にエクスポートされている入力アプリケーションのデプロイメントパッケージを格納するための1つ以上のストレージシステムを含み得る。たとえば、デプロイメントパッケージは、システムに亘ってエクスポート可能なアプリケーションのシリアライズされたバージョンであり得る。クラウドマネージャ470は、クラウドマネージャアプリケーションスタック475の1つ以上の局面を管理するように構成される1つ以上のアプリケーション、システムまたはエンジンであり得る。たとえば、クラウドマネージャアドミニストレータは、クラウドマネージャアプリケーションスタック475を使用してクラウドマネージャアプリケーションを実行するよう、クラウドマネージャ470を動作し得るか、または、クラウドマネージャ470にアクセスし得る。クラウドマネージャ470は、クラウドシステム450において環境のデプロイメントを提供するアプリケーションであり得る。たとえば、クラウドマネージャ470は、自動化された態様でクラウドシステム450上のさまざまなアプリケーションをデプロイし得る。クラウドマネージャアプリケーションに関する付加的な詳細については、「クラウドベースシステムを使用するアプリケーションの分散したバージョニング(Distributed Versioning of Applications Using Cloud-Based Systems)」という名称を有する2017年5月16日に出願された米国連続番号62/507,086号を参照すること。その開示は、すべての目的について、本願明細書において全文、参照により援用される。
いくつかの例では、ローカルシステム410のネットワークアドミニストレータは、(たとえばエンタープライズアプリケーションのスケーラビリティを増加させるために)クラウドへエンタープライズアプリケーションをエクスポートする必要があり得る。本開示の実施形態は、ローカルシステムのネットワークアドミニストレータが内部サブシステムからクラウドシステム450にエンタープライズアプリケーションをエクスポートすることを可能にする。いくつかの例では、アプリケーションのライフサイクルの間、アプリケーションアドミニストレータは、オンプレミスアプリケーションをクラウドシステム470に移行させ得る。移行プロセスの間、アプリケーションアドミニストレータは、デプロイメントパッケージを使用してオンプレミス環境をエクスポートし、クラウドシステム450へデプロイメントパッケージをインポートし得る。クラウドマネージャ470は、エンタープライズアプリケーションのデプロイメントパッケージを読み出し得、クラウドシステム450上で当該アプリケーションをデプロイし得る。
新しい特徴セットまたは新しいイメージが、中央サーバにおいて公開されるか、中央サーバにおいて利用可能であるか、または、中央サーバに格納され得るということが認識されるであろう。新しい特徴セットまたは新しいイメージは、アプリケーションの最新バージョンのすべての新しい特徴を含み得る。その新しい特徴セットまたは新しいイメージは、アプリケーションの古いバージョンと比較され得、新しい特徴セットまたは新しいイメージは、自動化されたワンステッププロセスでアプリケーションの古いバージョンに移動され得る。たとえば、新しい特徴セットまたは新しいイメージは、ユーザからの単一の入力により、アプリケーションの古いバージョンに適用され得る。
さらに、クラウドシステム450はメタデータ駆動アーキテクチャとして実現され得るということが認識されるであろう。たとえばソフトウェアコンポーネント、javaコード、pythonコード、任意の他の好適なソースコードは、ランタイム環境内においてデータベースオブジェクトとして個々に表わされ得る。この例を引き続き参照して、アプリケーションの基礎となるソースコードに含まれるソフトウェアコンポーネントは、ファイルリファレンスオブジェクトと称され得る。各ファイルリファレンスオブジェクトは、メタデータテーブルに格納されるメタデータに関連付けられ得る。たとえば、ファイルリファレンスオブジェクトのメタデータは、ファイルリファレンスオブジェクトの内部バージョン識別子を含み得る。内部バージョン番号は、ファイルリファレンスオブジェクトおよび/またはファイルリファレンスオブジェクトのバージョンを一意に識別する一意識別子であり得る。ファイルリファレンスオブジェクトの新バージョンが作成される場合(たとえばファイルリファレンスオブジェクトが修正またはアップデートされる場合)、ファイルリファレンスオブジェクトの新バージョンが新しい内部バージョン番号に関連付けられ得る。いくつかの実現例において、ファイルリファレンスオブジェクトは、バイナリオブジェクトとして表わされ得、そのバイナリオブジェクト(たとえば一意識別子)のリファレンスは、バイナリオブジェクトおよび/またはバイナリオブジェクトのネットワーク位置にリファレンスを関連付けるよう、データベースに格納され得る。
いくつかの実現例では、コードのブロックは、データベースオブジェクトに対応し得るか、データベースオブジェクトと称され得るか、または、データベースオブジェクトであり得る。データベースオブジェクトは、内部一意識別子に対応し得、および/または、データベースオブジェクトの属性を記述する付加的な内部メタデータに対応し得る。たとえば、データベースオブジェクトに関連付けられるメタデータとして格納されるデータベースオブジェクトの属性は、コードのブロックがどのように実行されるか、および、コードのブロックまたはデータベースがどのようにランタイムにて表わされるかなどを含み得る。本開示はファイルリファレンスオブジェクトおよびデータベースオブジェクトに限定されず、その代わりに、任意のタイプのオブジェクトが本開示の実施形態において使用されてもよいということが認識されるであろう。
さらに、オブジェクト(たとえばデータベースオブジェクト)が作成されると、オブジェクトのバージョンが生成され、オブジェクトの属性を規定または記述するメタデータがデプロイメントテーブルまたは表現テーブルに格納される。たとえば、2つのオブジェクトについて表現テーブルに格納されるメタデータについてクエリ送信することによって、アプリケーションおよび/または変更アシスタントツールが、2つのオブジェクト間の差および/または類似点を識別するよう構成され得る。非限定的な例として、アプリケーションおよび/または変更アシスタントツールは、ターゲット(たとえばアプリケーションの現在実行されているインスタンス)をソース(たとえばアプリケーションの新しいインスタンス)と比較して、ターゲットとソースとの間の差を識別するよう構成され得る。比較の結果は、ソースがファイルリファレンスオブジェクトABC,バージョン12(一意識別子ABC12に関連付けられる)を含み、ターゲットが、ファイルリファレンスオブジェクトABC,バージョン11(一意識別子ABC11に関連付けられる)を含むという決定であり得る。したがって、アプリケーションは、一意識別子ABC12およびABC11の各々に関連付けられるメタデータを格納する表現テーブルにアクセスし得る。その後、アプリケーションは、識別子ABC12に関連付けられるファイルリファレンスオブジェクトをアップデートデータパッケージへとシリアライズし、現在実行されているインスタンスのファイルリファレンスオブジェクトABCのバージョン11がバージョン12にアップデートされ得るように、現在実行されているインスタンスにそのアップデートデータパッケージを適用する(たとえば、インストールする)。いくつかの実現例では、ABC12とABC11との間で異なる任意の他のメタデータが、識別され、現在実行されているインスタンスにインストールされ得、これにより、新しいインスタンスにインストールされたアップデートのすべてを含むよう、現在実行されているインスタンスをアップデートする。さらに、アップデートデータパッケージは、システム同士の間でエクスポート可能なファイルであり得る。アップデートデータパッケージは、現在実行されているインスタンスに新しいインスタンスの全体をエクスポートする代わりに、表現テーブルに格納されるメタデータの特徴が、現在実行されているインスタンスにエクスポートされることを可能にする。有利なことに、アップデートされたオブジェクトのエクスポートは単に、現在実行されているインスタンスに送信または移動されるエクスポートファイルのサイズを低減することによってネットワークリソースの使用を改善する。
図5は、多層アプリケーションスタックを自動的にアップデートするための処理フローを示すブロック図である。周期的に、多層アプリケーションスタックへのアップデートは中央サーバ480に格納され得る。アプリケーション環境530は、中央サーバ480からアップデート(たとえばアップデート490)を抽出し格納するように構成されるリポジトリ460を含み得る。アップデートの非限定的な例はアップデートイメージおよびパッチセットを含み得る。たとえば、アップデートイメージ(たとえば四半期につき約1回発行するメジャーアプリケーションアップデート)は、アプリケーションの特定のバージョンのすべてのバグフィックスおよび新しい特徴を含む1つ以上のデータパッケージであり得る。パッチセット(たとえば、バグをフィックスするためのマイナーアプリケーションアップデートであって、メジャーアプリケーションアップデート同士の間に発行するマイナーアプリケーションアップデート)は、最後のアップデートイメージがリリースされてからレポートされた個々のバグフィックスを含む1つ以上のデータパッケージであり得る。アップデートイメージがリリースされるごとに、アップデートイメージのソースファイルは中央サーバ480に格納され得る。たとえば、図5では、中央サーバ480はアップデートイメージまたはパッチセットとしてアップデート490を格納し得る。中央サーバ480はクラウドシステム450でのすべてのアプリケーションスタックにアクセス可能であり、したがって、中央サーバ480は、任意数のアプリケーションスタックについて任意数のアップデートを格納し得る。図5を参照して、アップデート490は特定の多層アプリケーションスタックのためのアップデートであり得る。
いくつかの実現例では、アップデート490に関連付けられるアプリケーションスタックは、周期的に(規則的または不規則的な間隔で)アップデートのために中央サーバ480にクエリ送信するように構成され得る。いくつかの実現例では、中央サーバ480は1つ以上のアプリケーションスタックに通知を送信し得る。通知は、アップデート490がたとえば中央サーバ480からのダウンロードにより現在利用可能であるということをアプリケーションのユーザまたはアプリケーション自体に通知するよう機能し得る。図6は、新しいアップデートが中央サーバ480において利用可能であるという通知を示す例示的なインターフェイスを示す。新しいアップデートが中央サーバ480において利用可能な場合、アプリケーションスタックの現在実行されているインスタンスのバージョンは古くなっている場合があり得る。本発明のある実施形態は、新しいアップデートが中央サーバ480において利用可能な場合、アプリケーションが最新バージョンに自動的にアップデートすることを可能にする。
いくつかの実施形態では、リポジトリ460は、中央サーバ480から抽出されたアップデートを格納し得る。たとえば、リポジトリ460は、任意のアップデートについて中央サーバ480にクエリ送信し得、アップデート490が、利用可能な場合、リポジトリ460へダウンロードされ得る。さらに、アプリケーション環境530は、多層アプリケーションスタックに関連付けられる現在実行されているインスタンス500を含み得る。たとえば、現在実行されているインスタンス500はアプリケーション環境530において実行され得、また、プロダクション環境においてアプリケーションスタック上で実行され得る。たとえば、アプリケーションがユーザにサービスを提供することを可能にするよう、実際のユーザデバイスが、プロダクション環境において現在実行されているインスタンス500と通信している場合がある。アプリケーションがプロダクション環境において実行されているので、アップデートのための如何なるサーバダウンタイムも負のインパクトを有する。ユーザがアプリケーションおよびその対応するサービスにアクセスすることができない場合があり得るからである。有利なことに、新規性の技術的なポイントとして、本発明の実施形態によって、アップデートのサイズ(たとえば1個のバグフィックスまたは10,000個のバグフィックス)に関わらず、アプリケーションが最小のサーバダウンタイムでアップデートされることが可能になる。
上述したように、現在のインスタンス500はアプリケーションの古いバージョンであり得る。たとえば、現在のインスタンス500はアップデート490を含んでいないアプリケーションのバージョンであり得る。アップデート490により現在のインスタンス500をアップデートするために、アプリケーション環境530は新しいインスタンス510を生成し得る。現在のインスタンス500および新しいインスタンス510の各々は、予め規定された構成セッティング(たとえばCPUパラメータおよびRAMアロケーションなど)を有する同じまたは異なるバーチャルマシン上で実行され得る。さらに、アプリケーション環境530は、新しいインスタンス510にアップデート490をインストールするように構成され得る。したがって、新しいインスタンス510は、アプリケーションの最新バージョン(たとえばアップデート490がインストールされユーザに利用可能であるアプリケーションのバージョン)であり得る。
アプリケーション環境530は、現在のインスタンス500と新しいインスタンス510との間に任意のデルタ520(たとえば差)が存在するか否かを識別するために、新しいインスタンス510と現在のインスタンス500とを比較するように構成され得る。いくつかの実施形態では、デルタ520を識別するために現在のインスタンス500と新しいインスタンス510とを比較することは、各インスタンスに関連付けられるバグ番号を比較することを含み得る。たとえば、バグ番号は、アプリケーションのソースコード内においてフィックスされた(またはソースコードがバグに対処するために修正された)1つ以上のバグに対応する特定のバグレポートを識別する一意識別子であり得る。たとえば、インスタンスのバグ番号はインスタンスに関連付けられるメタデータとして格納され得る。この例において、現在のインスタンス500についてのメタデータは、バグ番号1および3が以前にフィックスされたか、または、現在のインスタンス500に適用されたということを示すデータを格納し得る。さらに、新しいインスタンス510についてのメタデータは、バグ番号1、3および6が新しいインスタンス510に適用されたことを示すデータを格納し得る。この例において、新しいインスタンス510は現在のインスタンス500の新しく生成されたインスタンスであるので、バグ番号1および3は、新しいインスタンス510に既に適用されており、したがって、バグ番号6がアップデートとして検出されることになる。たとえば、アプリケーション環境530は、これらの2つのインスタンス同士間のデルタ520がバグ番号6であるということを決定するよう、現在のインスタンス500のメタデータを新しいインスタンス510のメタデータと比較し得る。
したがって、アップデート490が、現在のインスタンス500において実行されているアプリケーションのバージョンの後の次のバージョンまたは後継である状況において、アップデート490はバグ番号6に対応し、アップデート490がバグ番号6に関連付けられる1つ以上のバグをフィックスするということを示す。デルタ520がバグ番号6に対応することをアプリケーション環境530が識別すると、アプリケーション環境530は、バグ番号6のバグレポートによって対処されるバグに関連付けられる1つ以上のオブジェクトにアクセスし得る。アプリケーション環境530は1つ以上のオブジェクトをエクスポートし得、また、バグ番号6に関連付けられるバグフィックスをアプリケーション環境530のソースコードへ組み込み得る。ウェブサーバ、アプリケーションサーバおよび/またはデータベースサーバ上で実行される特定のソフトウェアコンポーネントにおいてバグがフィックスされ得るので、1つ以上のオブジェクトが、関連するソフトウェアコンポーネントに適用され得る(たとえば、バグがウェブサーバのソフトウェアコンポーネントにおいてフィックスされる場合、1つ以上のオブジェクトが、現在のインスタンス500に関連付けられるウェブサーバのソフトウェアコンポーネントに適用される)。有利なことに、プロダクション環境において実行されておりユーザにアクセス可能である現在のインスタンス500は、最小のダウンタイムで自動的にアップデートされ得る。
比較が実行されても、現在のインスタンス500がユーザへのサービスを提供し続ける(たとえば、サーバのダウンタイムがない)ことが可能であるということが認識されるであろう。アプリケーションスタックがデルタ520に基づいてアップデートされている場合、アプリケーション環境530はロックを開始し得、これにより、規定された期間中のトランザクションを防止する。ロック中は、現在のインスタンス500はデルタ520に関連付けられる1つ以上のオブジェクトによりアップデートされ得る。現在のインスタンス500がアップデートされた後、現在のインスタンス500がリブートされ得、アップデート490が利用可能であり得るか、または、現在のインスタンス500に組み込まれ得るように、ロックが解除され得る。
アプリケーションの新バージョンがリリースされると、アプリケーションの新しいイメージが中央サーバに公開される(たとえば、アップデートが中央サーバに格納される)ということが認識されるであろう。新しいイメージは、アプリケーションの新バージョンの特徴のすべてを含む。アプリケーションは、新バージョンの特徴をアプリケーションの新しいインスタンスに提供するように構成され得る。変更アシスタントツールは、新しいインスタンスのメタデータを、アプリケーションの新バージョンより古いバージョンとなるアプリケーションの現在実行されているインスタンスと比較するように構成され得る。その後、アプリケーションは、データベースオブジェクトおよびバイナリランタイムの両方を含み得るアップデートされたソースコードまたはアップデートされたバイナリコードのメタデータをインストールし得る。さらに、アップデートされたソースコードのメタデータは、アップデートデータパッケージとして、シリアライズされた形態で、現在実行されているインスタンスに移動され得、現在実行されているインスタンスにインストールまたは適用され得る。
図6~図8は、ユーザが多層アプリケーションスタック上で実行されるアプリケーションにアクセスする場合、ユーザデバイス上で提示される例示的なインターフェイスを示す。たとえば、インターフェイス600は、「新しいフィックスがクラウドマネージャについて利用可能であり、適用する準備ができています」という通知を提示する。いくつかの実現例では、ユーザがアプリケーションのセッティング構成ページにアクセスする場合、インターフェイス600はユーザデバイス上に提示され得る。非限定的な例として、いくつかの構成は、ファイルサーバ構成、バーチャルマシン構成およびアップデート管理構成といったセッティング構成ページ上で規定され得る。新しいアップデートが中央サーバ(たとえば中央サーバ480)に格納され利用可能な場合、インターフェイス600は通知を提示し得るが、いくつかの実施形態では、中央サーバにおいて利用可能な新しいアップデートは、自動的にダウンロードされてアプリケーションに適用され、したがって、通知は必要でなくなる。いくつかの実施形態では、利用可能なアップデートが中央サーバからダウンロードされ、現在実行されているインスタンスにインストールされた後(たとえば比較が実行されてデルタが決定された後)でユーザに通知されてもよい。図7は、中央サーバ(たとえば中央サーバ480)において利用可能である(たとえば格納されている)アップデートを示す例示的なインターフェイスの図である。インターフェイス700から分かり得るように、アップデートの例は、アップデートの一部としてフィックスされた1つ以上のバグを表わすバグ番号であり得る。例示のために、インターフェイス700に示されるアイテム番号10はバグ番号22093199に対応する。バグ番号22093199の記載は「デザインフォームウィザードを使用する場合にOkボタンが表示されない」である。この例示では、バグ番号22093199はアプリケーションにおけるエラーをフィックスするように構成される。すなわち、具体的には、デザインフォームウィザードに「Ok」ボタンが表示されないというエラーをフィックスするように構成される。この例において、現在実行されているインスタンスは、まだバグ番号22093199をインストールしておらず、したがって、現在実行されているインスタンスはアプリケーションの古いバージョンである。しかしながら、バグ番号22093199に対応するバグフィックスは、アプリケーションの新しいインスタンスにインストールされる。現在実行されているインスタンスのメタデータを新しいインスタンスのメタデータと比較することにより、バグ番号2209199は、現在実行されているインスタンスにまだ適用されていないバグ番号であると識別される。いくつかの実施形態では、中央サーバに格納された利用可能なアップデートのうちのいくつかまたはすべては、アプリケーションに関連付けられるリポジトリ(たとえばリポジトリ460)へ自動的にダウンロードされる。いくつかの実施形態では、インターフェイス700は、ユーザがどのアップデートをアプリケーションの現在実行されているインスタンスに適用することを望むのかをユーザが選択することを可能にする。いくつかの実施形態では、現在実行されているインスタンスに関連付けられるアップデートは、ユーザから入力または命令を受け取る必要なく、現在実行されているインスタンスに自動的に適用される。これらの実施形態では、現在実行されているインスタンスは、常に最新のバージョンで実行されている。
図8は、アプリケーションの現在実行されているインスタンスを自動的にアップデートするために行われる例示的なステップを示す例示的なインターフェイス800の図である。各ステップのステータスは個々にインターフェイス800上に提示され得る。ステップ1は、アプリケーションの新しいインスタンスがデプロイされ得る新しい環境テンプレートを作成することを含み得る。ステップ2は、新しい環境テンプレートにおいて新しいインスタンスをデプロイすることを含み得る。ステップ3は、ソースデータベース(たとえばアップデートをインストールする新しいインスタンス)をターゲットデータベース(たとえばアップデートがインストールされていない現在実行されているインスタンス)と比較するツールである「変更アシスタント」をインストールすることを含む。ステップ4では、アップデート(たとえばソースコード内のバグフィックスを含み得るパッチセット)が、ソースデータベース(たとえばアップデートがインストールされている新しいインスタンス)に適用され得る。ステップ5では、アップデートデータパッケージ(たとえば、1つの「メイク・ミー・カレント(make me current)」変更パッケージ)が規定され得る。アップデートデータパッケージは、ソースデータベースとターゲットデータベースとの間で異なるオブジェクトの識別子を含み得る。たとえば、ソースデータベースとターゲットデータベースとの間で異なるオブジェクトの識別子は、ソースデータベースにインストールされたアップデートを表わし得る。いくつかの例において、ソースデータベースとターゲットデータベースとの間の差がひとたび識別されると、変更アシスタントは、アップデートによって変更されたオブジェクトのすべてを含むアップデートデータパッケージを生成し得る。オブジェクトがソースデータベースとターゲットデータベースとの間で異なる場合、そのオブジェクトは一意識別子によって表わされ得る。そのオブジェクトは、ひとたび識別されると、ファイルにダウンロードされ得、次いで、シリアライズされた形態でエクスポートされ得る。ステップ6では、アップデートデータパッケージが作成される(たとえば、ソースデータベースとターゲットデータベースとの間で変更されたと検出されたオブジェクトの識別子を含むデータパッキング)。ステップ7では、アップデートデータパッケージがターゲットデータベースに適用され得、ターゲットデータベースのファイルがアップデートされ得、アプリケーションの最新のバージョンにされ得る。
図9は、多層アプリケーションを自動的にアップデートするための例示的なプロセス900を示すフローチャートである。上述したように、メジャーリリースは、規則的または不規則的ベースで周期的に利用可能になり得、マイナーリリースは、メジャーリリース同士間で周期的に利用可能になり得る。たとえば、メジャーリリース同士の間で、マイナーアップデートが、メジャーリリースで見つかったバグをフィックスするよう利用可能であり得る。ある実施形態は、最も最近のアップデートがメジャーリリースまたはマイナーアップデートであったか否かに関わらず、アプリケーションスタックが最小のダウンタイムおよび最小のネットワーク負荷で自動的にアップデートされることを可能にする。
処理フロー900はブロック910において開始し、ブロック910では、アプリケーションが、アップデートが中央サーバに格納されているか否かを決定するために周期的に中央サーバにアクセスする。たとえば、アプリケーションは、中央サーバにおいて利用可能または格納されている任意の新しいアップデートについて、ランダムにまたは規則的に中央サーバにクエリ送信するように構成され得る。ブロック920では、アプリケーションは、アップデートが利用可能か否か決定し得る。アップデートが利用可能でない場合、アプリケーションは、別の時間に、アップデートについて中央サーバにクエリ送信し続ける。しかしながら、1つ以上のアップデートが中央サーバにおいて格納されている場合、当該1つ以上のアップデートは、ブロック930においてのように、アプリケーションに関連付けられるリポジトリへダウンロードされ得る。アップデートがひとたび中央サーバからリポジトリへダウンロードされると、アップデートは中央サーバから削除され得るか、または、ダウンロード済であるとしてフラグが立てられ得る。ブロック940では、アプリケーション環境は、クラウドにおいて自身の新しいインスタンスを提供し、当該新しいインスタンスに1つ以上のアップデートをインストールする。たとえば新しいインスタンスを提供することは、あらかじめ規定された構成セッティングまたは規定されたオンザフライの構成セッティング(たとえばCPUおよびRAMアロケーション)を有する新しいバーチャルマシンを生成することと、1つ以上のアップデートがインストールされた状態で新しいバーチャルマシン上でアプリケーションスタックを実行することとを含み得る。このとき、アプリケーション環境は、アプリケーションの現在実行されているインスタンス(たとえばユーザと現在インタラクションしているアプリケーションのインスタンス)と、ダウンロードされたアップデートがインストールされたアプリケーションの新しいインスタンスとの両方に関連付けられ得る。しかしながら、いくつかの実現例では、現在実行されているインスタンスはプロダクション環境にあり、その一方、アプリケーションの新しいインスタンスはプロダクション環境にない。これらの実現例では、エンドユーザはアプリケーションの新しいインスタンスと通信できず、および/または、アプリケーションの新しいインスタンスは、新しいインスタンスとエンドユーザデバイスとの間のインタラクションに基づいてトランザクションを処理しない。代わりに、エンドユーザは現在実行されているインスタンスと通信し続ける。
ブロック950では、アプリケーションは、2つのインスタンス同士間に任意の差(たとえばデルタ)が存在するか否かを決定するために、現在実行されているインスタンスを新しいインスタンスと比較する。たとえば、上述したように、2つのインスタンスを比較することは、現在実行されているインスタンスのメタデータと、新しいインスタンスのメタデータとを比較することを含み得る。いくつかの実現例では、メタデータは、インスタンスのソースコードに適用されたことがあるかまたは以前に適用されたバグ番号を含み得る。新しいインスタンスのメタデータに含まれるバグ番号の集合が、現在のインスタンスのメタデータに含まれるバグ番号の集合と異なる場合、アプリケーションは、アップデートがバグ番号における差(たとえばデルタ)に対応すると決定し得る。たとえば、バグ番号1および3は以前に現在のインスタンスに適用されており、また、バグ番号1、3および5が以前に新しいインスタンスに適用された場合、バグ番号5のデルタは、現在のインスタンスをアプリケーションの最新バージョンにアップデートするために、現在のインスタンスに適用されるべきであると決定される。メタデータがバグ番号以外のデータを含んでもよいことが認識されるであろう。たとえば、修正されたソースコードを表わすファイルリファレンスオブジェクトの識別子および/またはファイルリファレンスオブジェクトがメタデータとして格納され得る。この例において、新しいインスタンスのメタデータを現在のインスタンスのメタデータと比較することによって、新しいインスタンスにインストールされたアップデートによって修正されたファイルリファレンスオブジェクトが識別され得る。ブロック960では、アプリケーションは、現在のインスタンスのメタデータと新しいインスタンスのメタデータとの間のデルタを含むアップデートデータパッケージを作成し得る。ブロック970では、現在のインスタンスは、自身にデータパッケージを適用し得、これにより、現在のインスタンスを実際上アップデートする。有利なことに、現在のインスタンスに対するアップデートでは、アプリケーションによって提供されるサービスの中断が最小となり、ネットワーク効率を改善する。
図10は、実施形態のうちの1つを実現するための分散型システム1000の簡略図を示す。例示される実施形態において、分散型システム1000は、ネットワーク1010を介して、ウェブブラウザまたはプロプラエタリクライアント(たとえばOracle Forms)などといったクライアントアプリケーションを実行および動作するように構成される1つ以上のクライアントコンピューティングデバイス1002、1004、1006および1008を含む。サーバ1012は、ネットワーク1010を介して、リモートクライアントコンピューティングデバイス1002、1004、1006および1008と通信可能に結合され得る。
さまざまな実施形態では、サーバ1012は、システムのコンポーネントの1つ以上によって提供される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。いくつかの実施形態では、これらのサービスは、ウェブベースのサービスもしくはクラウドサービスとして、または、ソフトウェア・アズ・ア・サービス(SaaS)モデルとして、クライアントコンピューティングデバイス1002、1004、1006および/または1008のユーザに提供され得る。クライアントコンピューティングデバイス1002、1004、1006および/または1008を動作するユーザは、これらのコンポーネントによって提供されるサービスを利用するためにサーバ1012とインタラクションするよう1つ以上のクライアントアプリケーションを利用する。
図において示される構成では、システム1000のソフトウェアコンポーネント1018、1020および1022は、サーバ1012上で実現されるように示されている。他の実施形態では、システム1000のコンポーネントの1つ以上および/またはこれらのコンポーネントによって提供されるサービスも、クライアントコンピューティングデバイス1002、1004、1006および/または1008の1つ以上によって実現され得る。クライアントコンピューティングデバイスを動作するユーザは、これらのコンポーネントによって提供されるサービスを使用するために、1つ以上のクライアントアプリケーションを利用し得る。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェアまたはその組み合わせで実現されてもよい。分散型システム1000とは異なってもよいさまざまな異なるシステム構成が可能であることが認識されるべきである。したがって、図面において示される実施形態は、実施形態のシステムを実現するための分散型システムの一例であって、限定的であるようには意図されない。
クライアントコンピューティングデバイス1002、1004、1006および/または1008は、ポータブルハンドヘルドデバイス(たとえばiPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))、または、ウェアブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)、Microsoft Windows Mobile(登録商標)のような実行されているソフトウェア、ならびに/または、iOSおよびWindows Phone、Android、ブラックベリー10、Palm OSのようなさまざまなモバイルオペレーティングシステムなどであり得、インターネット、Eメール、ショートメッセージサービス(SMS: short message service)、ブラックベリー(登録商標)、または、他の通信プロトコルが有効化されている。クライアントコンピューティングデバイスは、例としてMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinux(登録商標)オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む汎用パーソナルコンピュータであり得る。クライアントコンピューティングデバイスは、たとえばGoogle Chrome OSといった様々なGNU/Linuxオペレーティングシステムを含むがそれに限定されないさまざまな商業的に利用可能なUNIX(登録商標)またはUNIXライクのオペレーティングシステムのいずれかを実行するワークステーションコンピュータであり得る。代替的または付加的には、クライアントコンピューティングデバイス1002、1004、1006および1008は、シンクライアントコンピュータ、インターネット有効化ゲームシステム(たとえばKinect(登録商標)ジェスチャ入力デバイスを有するかまたは有していないMicrosoft Xboxゲームコンソール)、および/または、パーソナルメッセージングデバイスといった、ネットワーク1010を介して通信することができる任意の他の電子デバイスであり得る。
例示的な分散型システム1000は4つのクライアントコンピューティングデバイスを有しているのが示されているが、任意数のクライアントコンピューティングデバイスがサポートされ得る。センサなどを有するデバイスのような他のデバイスがサーバ1012とインタラクションしてもよい。
分散型システム1000におけるネットワーク1010は、TCP/IP(transmission control protocol/Internet protocol)、SNA(systems network architecture)、IPX(Internet packet exchange)、およびAppleTalkなどを含むがこれらに限定されないさまざまな商業的に利用可能なネットワークプロトコルのいずれかを用いるデータ通信をサポートし得る、当業者が精通している任意のタイプのネットワークであり得る。単に例として、ネットワーク1010はたとえば、イーサネット(登録商標)および/またはトークンリングなどに基づいたローカルエリアネットワーク(LAN)であり得る。ネットワーク1010は、ワイドエリアネットワークおよびインターネットであり得る。当該ネットワークは、バーチャルネットワークを含み得、当該バーチャルネットワークは、バーチャルプライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、ワイヤレスネットワーク(たとえばInstitute of Electrical and Electronics(IEEE)802.11のプロトコルスイートに従って動作するネットワーク、ブルートゥース(登録商標)、もしくは、任意の他のワイヤレスプロトコル)、ならびに/または、これらおよび/もしくは他のネットワークの任意の組み合わせを含むがこれらに限定されない。
サーバ1012は、1つ以上の汎用コンピュータ、特殊サーバコンピュータ(例として、PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウントサーバなどを含む)、サーバファーム、サーバクラスタ、または、任意の他の適切な構成および/もしくは組み合わせから構成され得る。さまざまな実施形態では、サーバ1012は、上記開示に記載される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。たとえば、サーバ1012は、本開示の実施形態に従った、上記の処理を実行するためのサーバに対応し得る。
サーバ1012は、上で論じたもののうちのいずれかを含むオペレーティングシステムと、任意の商業的に利用可能なサーバオペレーティングシステムとを実行し得る。サーバ1012はさらに、さまざまな付加的なサーバアプリケーションおよび/またはミッドティアアプリケーションのいずれかを実行し得、HTTP(ハイパーテキストトランスポートプロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバおよびデータベースサーバなどを含む。例示的なデータベースサーバはOracle、Microsoft、Sybase、およびIBM(International Business Machines)などから商業的に利用可能なものを含むがこれらに限定されない。
いくつかの実現例では、サーバ1012は、クライアントコンピューティングデバイス1002、1004、1006および1008のユーザから受け取られるデータフィードおよび/またはイベントアップデートを分析および統合するために1つ以上のアプリケーションを含み得る。例として、データフィードおよび/またはイベントアップデートは、Twitter(登録商標)フィード、Facebook(登録商標)アップデート、または、1つ以上のサードパーティ情報源および連続的なデータストリームから受け取られるリアルタイムアップデートを含み得るがこれらに限定されない。当該リアルタイムアップデートは、センサデータアプリケーションに関係するリアルタイムイベント、金融ティッカ、ネットワークパフォーマンス測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム分析ツール、および自動車交通モニタリングなどを含み得る。サーバ1012はさらに、クライアントコンピューティングデバイス1002、1004、1006および1008の1つ以上のディスプレイデバイスを介してデータフィードおよび/またはリアルタイムイベントを表示するために1つ以上のアプリケーションを含み得る。
分散型システム1000はさらに、1つ以上のデータベース1014および1016を含み得る。データベース1014および1016は、さまざまな位置に存在し得る。例として、データベース1014および1016の1つ以上は、サーバ1012に対してローカルである(および/またはサーバ1012中に存在する)一時的でない記憶媒体上で存在し得る。代替的には、データベース1014および1016はサーバ1012からリモートであり得、ネットワークベースの接続または専用接続を介してサーバ1012と通信し得る。実施形態のうちの1つの集合では、データベース1014および1016はストレージエリアネットワーク(SAN: storage-area network)に存在し得る。同様に、サーバ1012に起因する機能を実行するための任意の必要なファイルが適切なように、サーバ1012上にローカルにおよび/またはリモートに格納され得る。実施形態のうちの1つの集合では、デー夕ベース1014および1016は、Oracleによって提供されるデータベースのような、SQLフォーマットのコマンドに応答してデータを格納、更新、および抽出するよう適合されるリレーショナルデータベースを含み得る。
図11は、本開示の実施形態に従った、実施形態のシステムの1つ以上のコンポーネントによって提供されるサービスがクラウドサービスとして提供され得るシステム環境1100の1つ以上のコンポーネントの簡略ブロック図である。例示される実施形態では、システム環境1100は、クラウドサービスを提供するクラウドインフラストラクチャシステム1102とインタラクションするためにユーザによって使用され得る1つ以上のクライアントコンピューティングデバイス1104、1106および1108を含む。クライアントコンピューティングデバイスは、ウェブブラウザ、プロプラエタリクライアントアプリケーション(たとえばOracle Forms)またはいくつかの他のアプリケーションといった、クラウドインフラストラクチャシステム1102によって提供されるサービスを使用するためにクラウドインフラストラクチャシステム1102とインタラクションするようクライアントコンピューティングデバイスのユーザによって使用され得るクライアントアプリケーションを動作するように構成され得る。
図において示されるクラウドインフラストラクチャシステム1102は、示されたもの以外のコンポーネントを有し得るということが認識されるべきである。さらに、図において示される実施形態は、本発明の実施形態を組み込み得るクラウドインフラストラクチャシステムの単なる一例である。他のいくつかの実施形態では、クラウドインフラストラクチャシステム1102は、図において示されるよりも多いまたは少ないコンポーネントを有し得るか、2つ以上のコンポーネントを組み合わせ得るか、または、コンポーネントの異なる構成または配置を有し得る。
クライアントコンピューティングデバイス1104、1106および1108は、1002、1004、1006および1008について上で記載されたものと同様のデバイスであり得る。
例示的なシステム環境1100は3つのクライアントコンピューティングデバイスを有するように示されているが、任意数のクライアントコンピューティングデバイスがサポートされ得る。センサなどを有するデバイスのような他のデバイスが、クラウドインフラストラクチャシステム1102とインタラクションし得る。
ネットワーク1110は、クライアント1104、1106および1108とクラウドインフラストラクチャシステム1102との間のデータの通信および交換を促進し得る。各ネットワークは、ネットワーク1010について上で記載されたものを含む、さまざまな商業的に利用可能なプロトコルのいずれかを用いるデータ通信をサポートし得る、当業者が精通している任意のタイプのネットワークであり得る。
クラウドインフラストラクチャシステム1102は、サーバ1012について上で記載されたものを含み得る1つ以上のコンピュータおよび/またはサーバを含み得る。
ある実施形態では、クラウドインフラストラクチャシステムによって提供されるサービスは、オンラインデータストレージおよびバックアップソリューション、ウェブベースのEメールサービス、ホストされたオフィススイートおよびドキュメントコラボレーションサービス、データベース処理、および、管理された技術サポートサービスなどといった、クラウドインフラストラクチャシステムのユーザにオンデマンドで利用可能になるサービスのホストを含み得る。クラウドインフラストラクチャシステムによって提供されるサービスは、そのユーザのニーズを満たすために動的にスケールされ得る。クラウドインフラストラクチャシステムによって提供されるサービスの特定のインスタンス化は、本願明細書において「サービスインスタンス」と称される。一般に、クラウドサービスプロバイダのシステムからインターネットのような通信ネットワークを介してユーザに利用可能になる任意のサービスは、「クラウドサービス」と称される。典型的に、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムがアプリケーションをホストし得、ユーザが、インターネットのような通信ネットワークを介してオンデマンドでアプリケーションをオーダし使用し得る。
いくつかの例において、コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、ストレージ、ホストされたデータベース、ホストされたウェブサーバ、ソフトウェアアプリケーション、もしくは、クラウドベンダーによってユーザに提供される他のサービス、または、当該技術において別の態様で知られるものへの保護されたコンピュータネットワークアクセスを含み得る。たとえば、サービスは、インターネットを通じてクラウド上のリモートストレージへのパスワードで保護されたアクセスを含み得る。別の例として、サービスは、ネットワーク接続されたデベロッパによるプライベートの使用のためのウェブサービスベースのホストされたリレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、サービスは、クラウドベンダーのウェブサイト上にホストされたEメールソフトウェアアプリケーションへのアクセスを含み得る。
ある実施形態では、クラウドインフラストラクチャシステム1102は、セルフサービスであり、サブスクリプションベースであり、弾力的にスケーラブルであり、信頼性があり、高可用性であり、かつ、セキュアな態様で顧客に送達されるアプリケーションスイート、ミドルウェアおよびデータベースサービスオファリングを含み得る。そのようなクラウドインフラストラクチャシステムの一例は、本願の譲受人によって提供されるOracle Public Cloudである。
さまざまな実施形態では、クラウドインフラストラクチャシステム1102は、クラウドインフラストラクチャシステム1102によって提供されるサービスの顧客のサブスクリプションを自動的に提供、管理およびトラッキングするように適合され得る。クラウドインフラストラクチャシステム1102は、異なるデプロイメントモデルを介してクラウドサービスを提供し得る。たとえば、サービスは、クラウドインフラストラクチャシステム1102がクラウドサービスを販売する組織によって所有され(たとえば、Oracleによって所有され)、サービスが一般大衆または異なる企業に利用可能になるパブリッククラウドモデルに従って提供され得る。別の例として、サービスは、クラウドインフラストラクチャシステム1102が単一の組織のためにのみ動作され、当該組織内の1つ以上のエンティティにサービスを提供し得るプライベートクラウドモデルに従って提供され得る。クラウドサービスはさらに、クラウドインフラストラクチャシステム1102およびクラウドインフラストラクチャシステム1102によって提供されるサービスが、関連するコミュニティにおけるいくつかの組織によって共有されるコミュニティクラウドモデルに従って提供され得る。クラウドサービスはさらに、2つ以上の異なるモデルの組み合わせであるハイブリッドクラウドモデルに従って提供され得る。
いくつかの実施形態では、クラウドインフラストラクチャシステム802によって提供されるサービスは、ソフトウェア・アズ・ア・サービス(SaaS)カテゴリ、プラットホーム・アズ・ア・サービス(PaaS: Platform as a Service)カテゴリ、インフラストラクチャ・アズ・ア・サービス(IaaS: Infrastructure as a Service)カテゴリに従って提供される1つ以上のサービス、または、ハイブリッドサービスを含む他のカテゴリのサービスを含み得る。顧客は、サブスクリプションオーダを介して、クラウドインフラストラクチャシステム1102によって提供される1つ以上のサービスをオーダし得る。クラウドインフラストラクチャシステム1102は、顧客のサブスクリプションオーダにおいてサービスを提供するために処理を実行する。
いくつかの実施形態では、クラウドインフラストラクチャシステム1102によって提供されるサービスは、アプリケーションサービス、プラットホームサービスおよびインフラストラクチャサービスを含み得るがこれらに限定されない。いくつかの例において、アプリケーションサービスはSaaSプラットホームを介してクラウドインフラストラクチャシステムによって提供され得る。SaaSプラットホームは、SaaSカテゴリに該当するクラウドサービスを提供するように構成され得る。たとえば、SaaSプラットホームは、統合開発およびデプロイメントプラットホーム上でオンデマンドアプリケーションスイートを構築し送達する能力を提供し得る。SaaSプラットホームは、SaaSサービスを提供するために存在するソフトウェアおよびインフラストラクチャを管理および制御し得る。SaaSプラットホームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステム上で実行されるアプリケーションを利用し得る。顧客は、別個のライセンスおよびサポートを購入する必要なくアプリケーションサービスを取得することができる。さまざまな異なるSaaSサービスが提供され得る。その例は、販売実績管理、エンタープライズインデグレーション、および、大きな組織のためのビジネスフレキシビリティのためのソリューションを提供するサービスを含むがこれに限定されない。
いくつかの実施形態では、プラットホームサービスは、PaaSプラットホームを介してクラウドインフラストラクチャシステムによって提供され得る。PaaSプラットホームは、PaaSカテゴリに該当するクラウドサービスを提供するように構成され得る。プラットホームサービスの例は、(Oracleのような)組織がシェアされた共通のアーキテクチャ上で既存のアプリケーションを統合することを可能にするサービスと、プラットホームによって提供されるシェアされたサービスを強化する新しいアプリケーションを構築する能力とを含み得るがこれらに限定されない。PaaSプラットホームは、PaaSサービスを提供するために存在するソフトウェアおよびインフラストラクチャを管理および制御し得る。顧客は、別個のライセンスおよびサポートを購入する必要なく、クラウドインフラストラクチャシステムによって提供されるPaaSサービスを取得することができる。プラットホームサービスの例は、Oracle Java Cloud Service(JCS)およびOracle Database Cloud Service(DBCS)などを含み得るがこれらに限定されない。
PaaSプラットホームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムにサポートされるプログラミング言語およびツールを使用することができ、デプロイされたサービスを制御できる。いくつかの実施形態では、クラウドインフラストラクチャシステムによって提供されるプラットホームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス(たとえばOracle Fusion Middleware services)およびJavaクラウドサービスを含み得る。一実施形態では、データベースクラウドサービスは、組織がデータベースリソースをプールしデータベースクラウドの形態でデータベース・アズ・ア・サービス(Database as a Service)を顧客に提供することを可能にするシェアされたサービスデプロイメントモデルをサポートし得る。ミドルウェアクラウドサービスは、さまざまなビジネスアプリケーションを開発およびデプロイするための顧客のためのプラットホームを提供し得、Javaクラウドサービスは、クラウドインフラストラクチャシステムにおいて、Javaアプリケーションをデプロイするための顧客のためのプラットホームを提供し得る。
さまざまな異なるインフラストラクチャサービスは、クラウドインフラストラクチャシステムにおいてIaaSプラットホームによって提供され得る。インフラストラクチャサービスは、SaaSプラットホームおよびPaaSプラットホームによって提供されるサービスを顧客が利用するためのストレージ、ネットワークおよび他の基礎的なコンピューティングリソースといった存在するコンピューティングリソースの管理および制御を促進する。
ある実施形態では、クラウドインフラストラクチャシステム1102はさらに、クラウドインフラストラクチャシステムの顧客に様々なサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース1130を含み得る。一実施形態では、インフラストラクチャリソース1130は、PaaSプラットホームおよびSaaSプラットホームによって提供されるサービスを実行するために、サーバ、ストレージおよびネットワークリソースといったハードウェアのあらかじめ統合され最適化された組み合わせを含み得る。
いくつかの実施形態では、クラウドインフラストラクチャシステム1102におけるリソースは、複数のユーザによってシェアされ、要求に応じて動的に再度割り当てられ得る。さらに、リソースは異なる時間ゾーンにおいてユーザに割り当てられ得る。たとえば、クラウドインフラストラクチャシステム1130は、第1の時間ゾーンにおけるユーザの第1の集合が、規定された数の時間の間、クラウドインフラストラクチャシステムのリソースを利用することを可能にし得、その後、異なる時間ゾーンに位置するユーザの別の集合への同じリソースの再割り当てを可能にし得、これによりリソースの利用を最大化する。
ある実施形態では、クラウドインフラストラクチャシステム1102の異なるコンポーネントまたはモジュールと、クラウドインフラストラクチャシステム1102によって提供されるサービスとによってシェアされる多くの内部シェアサービス1132が提供され得る。内部シェアサービスは、セキュリティおよびアイデンティティサービス、インデグレーションサービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウィルススキャニングおよびホワイトリストサービス、高可用性バックアップおよびリカバリサービス、クラウドサポートを可能にするためのサービス、Eメールサービス、通知サービス、および、ファイル転送サービスなどを含み得るがこれらに限定されない。
ある実施形態では、クラウドインフラストラクチャシステム1102は、クラウドインフラストラクチャシステムにおいてクラウドサービス(たとえばSaaS、PaaSおよびIaaSサービス)の包括的な管理を提供し得る。一実施形態では、クラウド管理機能は、クラウドインフラストラクチャシステム1102によって受け取られる顧客のサブスクリプションなどを提供、管理およびトラッキングするための能力を含み得る。
一実施形態において、図に示されるように、クラウド管理機能は、オーダ管理モジュール1120、オーダ調整モジュール1122、オーダ提供モジュール1124、オーダ管理およびモニタリングモジュール1126、ならびに、アイデンティティ管理モジュール1128といった1つ以上のモジュールによって提供され得る。これらのモジュールは、汎用コンピュータ、特殊サーバコンピュータ、サーバファーム、サーバクラスタ、または、任意の他の適切な構成もしくは組み合わせであり得る1つ以上のコンピュータおよび/またはサーバを含み得るか、または、当該1つ以上のコンピュータおよび/またはサーバを使用して提供され得る。
例示的な動作1134では、クライアントデバイス1104、1106または1108といったクライアントデバイスを使用する顧客は、クラウドインフラストラクチャシステム1102によって提供される1つ以上のサービスを要求し、クラウドインフラストラクチャシステム1102によってオファーされる1つ以上のサービスについてのサブスクリプションのオーダを行うことによって、クラウドインフラストラクチャシステム1102とインタラクションし得る。ある実施形態では、顧客は、クラウドユーザインターフェイス(UI)、クラウドUI1112、クラウドUI1114および/またはクラウドUI1116にアクセスし得、これらのUIを介してサブスクリプションオーダを行い得る。顧客がオーダを行ったことに応答してクラウドインフラストラクチャシステム802によって受け取られるオーダ情報は、顧客と、顧客がサブスクライブする意図があるクラウドインフラストラクチャシステム1102によって提供される1つ以上のサービスとを識別する情報を含み得る。
オーダが顧客によって行われた後、オーダ情報は、クラウドUI1112、1114および/または1116を介して受け取られる。
動作1136では、オーダはオーダデータベース1118に格納される。オーダデータベース1118は、クラウドインフラストラクチャシステム1118によって動作されるとともに他のシステム要素と協働して動作されるいくつかのデータベースのうちの1つであり得る。
動作1138において、オーダ情報は、オーダ管理モジュール1120に転送される。いくつかの場合では、オーダ管理モジュール1120は、オーダに関係する、オーダの照合およびオーダの照合の際のオーダの記帳といった請求および会計機能を実行するように構成され得る。
動作1140において、オーダに関する情報がオーダ調整モジュール1122に通信される。オーダ調整モジュール1122は、顧客によって行われたオーダについてサービスおよびリソースの提供を調整するためにオーダ情報を利用し得る。いくつかの場合、オーダ調整モジュール1122は、オーダ提供モジュール1124のサービスを使用して、サブスクライブされたサービスをサポートするために、リソースの提供を調整し得る。
ある実施形態において、オーダ調整モジュール1122は、各オーダに関連付けられるビジネスプロセスの管理を可能にし、ビジネスロジックを適用して、オーダが提供に進むべきか否か決定する。動作1142において、新しいサブスクリプションについてのオーダを受け取ると、オーダ調整モジュール1122は、リソースを割り当てるとともに、サブスクリプションオーダを履行するために必要とされるそれらのリソースを構成するよう、オーダ提供モジュール1124に要求を送信する。オーダ提供モジュール1124は、顧客によってオーダされたサービスのためのリソースの割り当てを可能にする。オーダ提供モジュール1124は、クラウドインフラストラクチャシステム1100によって提供されるクラウドサービスと、要求されたサービスを提供するためのリソースを提供するために使用される物理的なインプリメンテーション層との間の抽象化レベルを提供する。したがって、オーダ調整モジュール1122は、サービスおよびリソースが実際にオンザフライで提供されるか、または、あらかじめ提供され要求の際にのみ割り当てられ得る/アサインされ得るか否かといったインプリメンテーションの詳細から分離され得る。
動作1144において、サービスおよびリソースがひとたび提供されると、提供されたサービスの通知が、クラウドインフラストラクチャシステム1102のオーダ提供モジュール1124によって、クライアントデバイス1104、1106および/または1108上の顧客に送信され得る。
動作1146において、顧客のサブスクリプションオーダは、オーダ管理およびモニタリングモジュール1126によって管理およびトラッキングされ得る。いくつかの場合では、オーダ管理およびモニタリングモジュール1126は、使用されたストレージの量、転送されたデータ量、ユーザの数、および、システムアップタイムおよびシステムダウンタイムの量といった、サブスクリプションオーダにおけるサービスについての使用統計を収集するように構成され得る。
ある実施形態では、クラウドインフラストラクチャシステム1100はアイデンティティ管理モジュール1128を含み得る。アイデンティティ管理モジュール1128は、クラウドインフラストラクチャシステム1100においてアクセス管理および認証サービスのようなアイデンティティサービスを提供するように構成され得る。いくつかの実施形態では、アイデンティティ管理モジュール1128は、クラウドインフラストラクチャシステム1102によって提供されるサービスを利用することを望む顧客に関する情報を制御し得る。そのような情報は、そのような顧客のアイデンティティを認証する情報と、それらの顧客がさまざまなシステムリソース(たとえばファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど)に対してどのアクションを実行することが承認されているかを記述する情報とを含み得る。アイデンティティ管理モジュール1128はさらに、各顧客に関する記述情報と、その記述情報がどのようにおよび誰にアクセスおよび修正され得るのかに関する記述情報との管理を含み得る。
図12は、本発明のさまざまな実施形態が実現され得る例示的なコンピュータシステム1200を示す。システム1200は、上記のコンピュータシステムのうちのいずれかを実現するために使用され得る。図に示されるように、コンピュータシステム1200は、バスサブシステム1202を介して多くの周辺サブシステムと通信する処理ユニット1204を含む。これらの周辺サブシステムは、処理アクセレレーションユニット1206、I/Oサブシステム1208、ストレージサブシステム1218および通信サブシステム1224を含み得る。ストレージサブシステム1218は、有形的なコンピュータ読取可能記憶媒体1222およびシステムメモリ1210を含む。
バスサブシステム1202は、コンピュータシステム1200のさまざまなコンポーネントおよびサブシステムを意図されるように互いと通信させるためのメカニズムを提供する。バスサブシステム1202は単一のバスとして概略的に示されるが、バスサブシステムの代替的な実施形態は複数のバスを利用してもよい。バスサブシステム1202は、さまざまなバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、および、ローカルバスを含むいくつかのタイプのバス構造のいずれかであり得る。たとえば、そのようなアーキテクチャは、産業標準アーキテクチャ(ISA: Industry Standard Architecture)バスと、マイクロチャネルアーキテクチャ(MCA: Micro Channel Architecture)バスと、エンハンスドISA(EISA: Enhanced ISA)バスと、ビデオエレクトロニクス標準組織(VESA:Video Electronics Standards Association)ローカルバスと、IEEEP1386.1規準に従って製造されるメザニンバスとして実現され得るペリフェラルコンポーネントインターコネクト(PCI)バスとを含み得る。
1つ以上の集積回路(たとえば従来のマイクロプロセッサまたはマイクロコントローラ)として実現され得る処理ユニット1204は、コンピュータシステム1200の動作を制御する。1つ以上のプロセッサが処理ユニット1204に含まれ得る。これらのプロセッサは、シングルコアまたはマルチコアプロセッサを含み得る。ある実施形態では、処理ユニット1204は、1つ以上の独立した処理ユニット1232および/または1234として実現され得、シングルまたはマルチコアプロセッサが各処理ユニットに含まれている。他の実施形態では、処理ユニット1204はさらに、2つのデュアルコアプロセッサをシングルチップへと統合することにより形成されるクワッドコア処理ユニットとして実現され得る。
さまざまな実施形態では、処理ユニット1204は、プログラムコードに応答してさまざまなプログラムを実行し得、複数の同時に実行しているプログラムまたはプロセスを維持し得る。任意の所与の時間において、実行されるべきプログラムコードのうちのいくつかまたはすべてがプロセッサ1204および/またはストレージサブシステム1218に存在し得る。好適なプログラミングを通じて、プロセッサ1204は、上に記載されたさまざまな機能を提供し得る。コンピュータシステム1200はさらに、デジタル信号プロセッサ(DSP)および/または専用プロセッサなどを含み得る処理アクセレレーションユニット1206を含み得る。
I/Oサブシステム1208は、ユーザインターフェイス入力デバイスおよびユーザインターフェイス出力デバイスを含み得る。ユーザインターフェイス入力デバイスは、キーボードと、マウスまたはトラックボールのようなポインティングデバイスと、ディスプレイに組み込まれるタッチパッドまたはタッチスクリーンと、スクロールホイールと、クリックホイールと、ダイヤルと、ボタンと、スイッチと、キーパッドと、音声コマンド認識システム、マイクロフォンおよび他のタイプの入力デバイスを有する音声入力デバイスとを含み得る。ユーザインターフェイス入力デバイスはたとえば、Microsoft Kinect(登録商標)モーションセンサのようなモーション感知および/またはジェスチャ認識デバイスを含み得る。当該モーション感知および/またはジェスチャ認識デバイスは、ジェスチャおよび音声コマンドを使用するナチュラルユーザインターフェイスを通じて、ユーザがMicrosoft Xbox(登録商標)360ゲームコントローラのような入力デバイスを制御し、当該入力デバイスとインタラクションすることを可能にする。ユーザインターフェイス入力デバイスはさらに、Google Glass(登録商標)の瞬き検出器のような、ユーザからの目のアクティビティ(たとえば写真を撮る間および/またはメニュー選択を行う間の「瞬き」)を検出し、この目のジェスチャを入力デバイス(たとえば、Google Glass(登録商標))への入力として変換する、アイジェスチャ(eye gesture)認識デバイスを含み得る。さらに、ユーザインターフェイス入力デバイスは、音声コマンドを通じてユーザが音声認識システム(たとえばSiri(登録商標)ナビゲータ)とインタラクションすることを可能にする音声認識感知デバイスを含み得る。
ユーザインターフェイス入力デバイスはさらに、3次元(3D)マウスと、ジョイスティックまたはポインティングスティックと、ゲームパッドおよびグラフィックタブレットと、スピーカのようなオーディオ/ビジュアルデバイスと、デジタルカメラと、デジタルビデオカメラと、ポータブルメディアプレイヤーと、ウェブカメラと、イメージスキャナと、フィンガープリントスキャナと、バーコードリーダ3Dスキャナと、3Dプリンタと、レーザ距離計と、視線トラッキングデバイスとを含むがこれらに限定されない。さらに、ユーザインターフェイス入力デバイスはたとえば、コンピュータトモグラフィ、磁気共鳴イメージング、ポジションエミッショントモグラフィ、医療用超音波検査法デバイスのような医療用画像入力デバイスを含み得る。ユーザインターフェイス入力デバイスはさらに、たとえば、MIDIキーボードおよびデジタル楽器などのようなオーディオ入力デバイスを含み得る。
ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、または、オーディオ出力デバイスなどのノンビジュアルディスプレイを含み得る。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを用いるもののようなフラットパネルデバイス、投射デバイスおよびタッチスクリーンなどであり得る。一般に、「出力デバイス」という用語の使用は、コンピュータシステム1200からユーザまたは他のコンピュータに情報を出力するためのすべての可能なタイプのデバイスおよびメカニズムを含むように意図される。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムといった、視覚的にテキスト、グラフィックスおよびオーディオ/ビデオ情報を伝達するさまざまなディスプレイデバイスを含み得るがこれらに限定されない。
コンピュータシステム1200は、システムメモリ1210内に現在位置しているのが示されるソフトウェア要素を含むストレージサブシステム1218を含み得る。システムメモリ1210は、プロセスユニット1204上にロード可能および実行可能なプログラム命令と、これらのプログラムの実行中に生成されるデータとを格納し得る。
コンピュータシステム1200の構成およびタイプに依存して、システムメモリ1210は、揮発性(たとえばランダムアクセスメモリ(RAM))であり得、および/または、不揮発性(たとえばリードオンリメモリ(ROM)、フラッシュメモリなど)であり得る。RAMは典型的に、処理ユニット1204へすぐにアクセス可能であり、および/または、処理ユニット1204によって現在動作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実現例では、システムメモリ1210は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)といった複数の異なるタイプのメモリを含み得る。いくつかの実現例では、たとえば起動中にコンピュータシステム1200内の要素同士間で情報を転送するのを支援する基本ルーチンを含む基本入出力システム(BIOS)が典型的にROMに格納され得る。限定ではなく例として、システムメモリ1210はさらに、クライアントアプリケーション、ウェブブラウザ、ミッドティアアプリケーション、リレーショナルデータベース管理システム(RDBMS)などを含み得るアプリケーションプログラム1212と、プログラムデータ1214と、オペレーティングシステム1216とを示す。例として、オペレーティングシステム1216は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/もしくはLinuxオペレーティングシステムのさまざまなバージョン、さまざまな商業的に利用可能なUNIX(登録商標)あるいはUNIXライクのオペレーティングシステム(様々なGNU/LinuxオペレーティングシステムおよびGoogle Chrome(登録商標)OSなどを含むがこれらに限定されない)、ならびに/または、iOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)10 OSおよびPalm(登録商標)OSオペレーティングシステムのようなモバイルオペレーティングシステムを含み得る。
ストレージサブシステム1218はさらに、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を格納するための有形的コンピュータ読取可能記憶媒体を提供し得る。プロセッサによって実行されると、上で記載された機能を提供するソフトウェア(プログラム、コードモジュール、命令)が、ストレージサブシステム1218に格納され得る。これらのソフトウェアモジュールまたは命令は、処理ユニット1204によって実行され得る。ストレージサブシステム8112は、さらに本発明に従って使用されるデータを格納するためのリポジトリを提供し得る。
ストレージサブシステム1200はさらに、コンピュータ読取可能記憶媒体1222にさらに接続され得るコンピュータ読取可能記憶媒体リーダ1220を含み得る。それとともにおよび随意に、システムメモリ1210と組み合わせて、コンピュータ読取可能記憶媒体1222は、リモートストレージデバイス、ローカルストレージデバイス、固定ストレージデバイスおよび/またはリムーバブルストレージデバイスと、一時的におよび/またはより永続的にコンピュータ読取可能情報を含有、格納、送信、および抽出するための記憶媒体とを包括的に表す。
コードまたはコードの部分を含むコンピュータ読取可能記憶媒体1222はさらに、当該技術において公知または使用される、記憶媒体および通信媒体を含む任意の適切な媒体を含み得、たとえば、情報の格納および/または送信のための任意の方法もしくは技術で実現される揮発性および不揮発性、リムーバブルならびに非リムーバブル媒体であるがこれらに限定されない。これは、RAM、ROM、電子的に消去可能なプログラマブルROM(EEPROM: electronically erasable programmable ROM)、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタルバーサタイルディスク(DVD)もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または、他の有形的コンピュータ読取可能媒体といった、有形的なコンピュータ読取可能記憶媒体を含み得る。これはさらに、データ信号、データ送信または任意の他の媒体といった、所望の情報を送信するために使用され得るとともにコンピューティングシステム1200によってアクセスされ得る無形的なコンピュータ読取可能媒体を含み得る。
例として、コンピュータ読取可能記憶媒体1222は、非リムーバブル不揮発性磁気媒体からの読み出しおよび非リムーバブルの不揮発性磁気媒体への書き込みを行うハードディスクドライブと、リムーバブル不揮発性磁気ディスクからの読み出しおよびリムーバブル不揮発性磁気ディスクへの書き込みを行う磁気ディスクドライブと、CD-ROM、DVDおよびブルーレイ(登録商標)ディスクまたは他の光学媒体といったリムーバブル不揮発性光ディスクからの読み出しおよびリムーバブル不揮発性光ディスクへの書き込みを行う光ディスクドライブとを含み得る。コンピュータ読取可能記憶媒体1222は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、および、デジタルビデオテープなどを含み得るがこれらに限定されない。コンピュータ読取可能記憶媒体1222はさらに、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブおよびソリッドステートROMなどといった不揮発性メモリに基づいたソリッドステートドライブ(SSD)と、ソリッドステートRAM、ダイナミックRAM、スタティックRAMといった揮発性メモリに基づいたSSDと、DRAMベースのSSDと、磁気抵抗RAM(MRAM)SSDと、DRAMおよびフラッシュメモリベースのSSDの組み合わせを使用するハイブリッドSSDとを含み得る。ディスクドライブおよびそれらの関連するコンピュータ読取可能媒体は、コンピュータシステム1200のためのコンピュータ読取可能命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージを提供し得る。
通信サブシステム1224は、他のコンピュータシステムおよびネットワークへのインターフェイスを提供する。通信サブシステム1224は、コンピュータシステム1200からの他のシステムからデータを受け取るとともに当該他のシステムにデータを送信するためのインターフェイスとして機能する。たとえば、通信サブシステム924は、コンピュータシステム1200がインターネットを介して1つ以上のデバイスに接続することを可能にし得る。いくつかの実施形態では、通信サブシステム1224は、(たとえば携帯電話技術、3G、4GもしくはEDGE(enhanced data rates for global evolution)のような高度なデータネットワーク技術、WiFi(IEEE1202.11ファミリスタンダード)、もしくは、他の移動通信技術、または、その任意の組み合わせを使用する)ワイヤレス音声および/またはデータネットワークにアクセスするための無線周波数(RF)トランシーバコンポーネント、グローバルポジショニングシステム(GPS)レシーバコンポーネント、ならびに/または他のコンポーネントを含み得る。いくつかの実施形態では、通信サブシステム1224は、ワイヤレスインターフェイスに加えてまたはそのワイヤレスインターフェイスの代わりに、有線ネットワーク接続(たとえばイーサネット)を提供し得る。
いくつかの実施形態では、通信サブシステム1224はさらに、コンピュータシステム1200を使用する1人以上のユーザに代わりに、構造化データフィードおよび/または非構造化データフィード1226、イベントストリーム1228ならびにイベントアップデート1230などの形態で入力通信を受け取り得る。
例として、通信サブシステム1224は、Twitter(登録商標)フィードおよびFacebook(登録商標)アップデート、リッチサイトサマリ(RSS: Rich Site Summary)フィードのようなウェブフィードといったソーシャルネットワークおよび/もしくは他の通信サービスのユーザからデータフィード1226、ならびに/または、1つ以上のサードパーティ情報源からのリアルタイムアップデートをリアルタイムで受け取るように構成され得る。
さらに、通信サブシステム1224は、連続データストリームの形態でデータを受け取るように構成され得る。連続データストリームは、リアルタイムイベントのイベントストリーム1228および/またはイベントアップデート1230を含み得、本質的に明確な終わりを有さない連続的または無境界であり得る。連続データを生成するアプリケーションの例は、たとえば、センサデータアプリケーション、金融ティッカ、ネットワークパフォーマンス測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム分析ツール、および、自動車交通モニタリングなどを含み得る。
通信サブシステム1224はさらに、構造化データフィードおよび/または非構造化データフィード1226、イベントストリーム1228、イベントアップデート1230などを、コンピュータシステム1200に結合される1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに出力するように構成され得る。
コンピュータシステム1200は、ハンドヘルドポータブルデバイス(たとえばiPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または、任意の他のデータ処理システムを含むさまざまなタイプのコンピュータシステムのうちの1つであり得る。
コンピュータおよびネットワークの絶えず変化する性質により、図に示されるコンピュータシステム1200の説明は特定の例としてのみ意図される。図示されたシステムよりも多くまたはより少ないコンポーネントを有する多くの構成が可能である。たとえば、カスタマイズされたハードウェアも使用される場合もあり、および/または、特定の要素は、ハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、または、組み合わせで実現される場合もある。さらに、ネットワーク入出力デバイスのような他のコンピューティングデバイスへの接続も採用され得る。当業者であれば、本願明細書において提供される開示および教示に基づいて、さまざまな実施形態を実現する他の態様および/または方法を理解するであろう。
上記明細書において、特定の実施形態を参照して本発明の局面が記載されているが、当業者であれば、本発明が特定の実施形態に限定されないことを認識するであろう。上記発明のさまざまな特徴および局面は、個々にまたは共同で使用されてもよい。さらに、実施形態は、明細書のより広い精神および範囲から逸脱することがなければ、本願明細書において記載されたものを越えた任意数の環境およびアプリケーションにおいて利用され得る。したがって、明細書および図面は、限定的ではなく例示的であるとみなされるべきである。