(57)【要約】  予め形成された命令セットをモバイルクラウドサービスに導入するための方法、システム、およびコンピュータ読取可能な媒体が開示される。いくつかの例において、.zipファイル等のアーカイブファイルは、２つのファイルセットとして、１）アプリケーションプログラミングインターフェイス（ＡＰＩ）を作成してこのＡＰＩを企業エンタープライズネットワークのファイアウォールの後方でバックエンドサービスに接続するためのロジックと、２）カスタムユーザコードとを含み得る。このような例において、ＡＰＩは、チャネルの後方を通してバックエンドサービスに接続できる。いくつかの例において、カスタムユーザコードはクラウドサービス上の安全な仮想マシン（ＶＭ）において実行することができる。このような例において、カスタムユーザコードは、データのエラーチェック、データの再計算もしくは再フォーマット、または、データの修正を、ユーザのモバイルデバイスに送信する前またはユーザのデバイスから受信する前に、実行することができる。
2019511785.tif 000002
【特許請求の範囲】
【請求項１】
予め形成された命令セットをモバイルクラウドサービスに導入する方法であって、
アーカイブファイルパッケージから、ファイルの第１のセットとファイルの第２のセットとを抽出するステップを含み、前記ファイルの第１のセットは、アプリケーションプログラミングインターフェイス（ＡＰＩ）を作成するため、および、前記ＡＰＩをバックエンドサービスに接続するためのロジックを有し、前記ファイルの第２のセットは、ソフトウェアコードを有し、
前記ファイルの第１のセットの前記ロジックを用いてＡＰＩを作成するステップと、
前記ＡＰＩをバックエンドサービスに接続するためのロジックを用いて、前記ＡＰＩをクラウドサービス内のバックエンドサービスに接続するステップと、
前記ファイルの第２のセットの前記ソフトウェアコードを前記クラウドサービスのユーザ空間で実行するステップとを含む、方法。
【請求項２】
ファイアウォールを通してモバイルデバイスから要求を受けるステップと、
第１の仮想マシンにおけるロジックに従い前記ＡＰＩを用いて前記要求を前記ソフトウェアコードにディスパッチするステップとをさらに含み、前記ＡＰＩは、前記ファイアウォールの外側で前記バックエンドサービスに接続し、
前記ソフトウェアコードを用いて前記要求に対するレスポンスを生成するステップをさらに含み、前記ソフトウェアコードは第２の仮想マシンにあり、前記ソフトウェアコードはユーザサンドボックスエリアにあり、
前記応答を前記バックエンドサービスから前記モバイルサービスまでルーティングするステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記要求は、前記モバイルデバイス上のクライアント側アプリケーションによって送信される、請求項２に記載の方法。
【請求項４】
前記パッケージは少なくとも２つのアーカイブファイルパッケージを含み、そのコンテンツは相互参照される、請求項１に記載の方法。
【請求項５】
前記アーカイブファイルパッケージを遠隔デバイスから受信するステップをさらに含む、請求項１に記載の方法。
【請求項６】
前記ソフトウェアコードはユーザによって定義される、請求項１に記載の方法。
【請求項７】
前記ユーザ空間は、前記ソフトウェアコードを、前記クラウドサービスのその他の部分から隔離する、請求項１に記載の方法。
【請求項８】
予め形成された命令セットをモバイルクラウドサービスに導入するためのシステムであって、前記システムは、
１つ以上のプロセッサと、
前記１つ以上のプロセッサによって実行されると前記１つ以上のプロセッサに以下の動作を実行させる命令を含む非一時的なコンピュータ読取可能な媒体とを備え、前記動作は、
アーカイブファイルパッケージから、ファイルの第１のセットとファイルの第２のセットとを抽出することを含み、前記ファイルの第１のセットは、アプリケーションプログラミングインターフェイス（ＡＰＩ）を作成するため、および、前記ＡＰＩをバックエンドサービスに接続するためのロジックを有し、前記ファイルの第２のセットは、ソフトウェアコードを有し、
前記ファイルの第１のセットの前記ロジックを用いてＡＰＩを作成することと、
前記ＡＰＩをバックエンドサービスに接続するためのロジックを用いて、前記ＡＰＩをクラウドサービス内のバックエンドサービスに接続することと、
前記ファイルの第２のセットの前記ソフトウェアコードを前記クラウドサービスのユーザ空間で実行することとを含む。システム。
【請求項９】
前記１つ以上のプロセッサによって実行されると前記１つ以上のプロセッサに以下の動作を実行させる命令をさらに含み、前記動作は、
ファイアウォールを通してモバイルデバイスから要求を受けることと、
第１の仮想マシンにおけるロジックに従い前記ＡＰＩを用いて前記要求を前記ソフトウェアコードにディスパッチすることとを含み、前記ＡＰＩは、前記ファイアウォールの外側で前記バックエンドサービスに接続し、
前記ソフトウェアコードを用いて前記要求に対するレスポンスを生成することを含み、前記ソフトウェアコードは第２の仮想マシンにあり、前記ソフトウェアコードはユーザサンドボックスエリアにあり、
前記応答を前記バックエンドサービスから前記モバイルサービスまでルーティングすることを含む、請求項８に記載のシステム。
【請求項１０】
前記要求は、前記モバイルデバイス上のクライアント側アプリケーションによって送信される、請求項９に記載のシステム。
【請求項１１】
前記パッケージは少なくとも２つのアーカイブファイルパッケージを含み、そのコンテンツは相互参照される、請求項９に記載のシステム。
【請求項１２】
前記１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに、
前記アーカイブファイルパッケージを遠隔デバイスから受信する動作
を実行させる命令をさらに含む、請求項９に記載のシステム。
【請求項１３】
前記ソフトウェアコードはユーザによって定義される、請求項９に記載のシステム。
【請求項１４】
前記ユーザ空間は、前記ソフトウェアコードを、前記クラウドサービスのその他の部分から隔離する、請求項９に記載のシステム。
【請求項１５】
１つ以上のプロセッサによって実行されると前記１つ以上のプロセッサに以下を実行させる１つ以上の命令を格納するコンピュータ読取可能な媒体であって、前記１つ以上のプロセッサは、
アーカイブファイルパッケージから、ファイルの第１のセットとファイルの第２のセットとを抽出し、前記ファイルの第１のセットは、アプリケーションプログラミングインターフェイス（ＡＰＩ）を作成するため、および、前記ＡＰＩをバックエンドサービスに接続するためのロジックを有し、前記ファイルの第２のセットは、ソフトウェアコードを有し、
前記ファイルの第１のセットの前記ロジックを用いてＡＰＩを作成し、
前記ＡＰＩをバックエンドサービスに接続するためのロジックを用いて、前記ＡＰＩをクラウドサービス内のバックエンドサービスに接続し、
前記ファイルの第２のセットの前記ソフトウェアコードを前記クラウドサービスのユーザ空間で実行する、コンピュータ読取可能な媒体。
【請求項１６】
前記１つ以上のプロセッサによって実行されると前記１つ以上のプロセッサに以下を実行させる１つ以上の命令をさらに格納し、前記１つ以上のプロセッサは、
ファイアウォールを通してモバイルデバイスから要求を受け、
第１の仮想マシンにおけるロジックに従い前記ＡＰＩを用いて前記要求を前記ソフトウェアコードにディスパッチし、前記ＡＰＩは、前記ファイアウォールの外側で前記バックエンドサービスに接続し、
前記ソフトウェアコードを用いて前記要求に対するレスポンスを生成し、前記ソフトウェアコードは第２の仮想マシンにあり、前記ソフトウェアコードはユーザサンドボックスエリアにあり、
前記応答を前記バックエンドサービスから前記モバイルサービスまでルーティングする、コンピュータ読取可能な媒体。
【請求項１７】
前記要求は、前記モバイルデバイス上のクライアント側アプリケーションによって送信される、請求項１６に記載のコンピュータ読取可能な媒体。
【請求項１８】
前記パッケージは少なくとも２つのアーカイブファイルパッケージを含み、そのコンテンツは相互参照される、請求項１６に記載のコンピュータ読取可能な媒体。
【請求項１９】
前記１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサが、
前記アーカイブファイルパッケージを遠隔デバイスから受信する
ようにする１つ以上の命令をさらに格納する、請求項１６に記載のコンピュータ読取可能な媒体。
【請求項２０】
前記ユーザ空間は、前記ソフトウェアコードを、前記クラウドサービスのその他の部分から隔離する、請求項１６に記載のコンピュータ読取可能な媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
関連出願の相互参照
本願は、２０１６年３月２８日に出願され「Mobile Cloud Service (MCS) Templates」と題された米国仮特許出願第６２／３１４，１４９号の利益およびそれに基づく優先権を主張し、その開示全体をあらゆる目的のために本明細書に引用により援用する。
【０００２】
著作権
本特許文献の開示の一部には、著作権保護の対象となるものが含まれている。著作権者は、この特許文献または特許開示の何者かによる複製が、特許商標庁の特許ファイルまたは記録にある限り、それに対して異議を唱えないが、そうでなければ、いかなる場合もすべての著作権を留保する。
【０００３】
背景
モバイルアプリケーションは通常、サーバと通信しコンテンツを決定して携帯電話に表示することによって動作する。携帯電話およびサーバはいずれもモバイルアプリケーションの一部を含み得る。サーバ上のこの部分（サーバ側アプリケーションと呼ばれることもある）は、携帯電話上のこの部分（クライアント側アプリケーションと呼ばれることもある）からの要求に対して応答することができる。いくつかの例において、この要求はハイパーテキスト・トランスファー・プロトコル（ＨＴＴＰ）を使用することができる。サーバ側アプリケーションは一般的に、パーシステントデータを格納することができ、携帯電話のユーザからは見ることができない。クライアント側アプリケーションは、携帯電話に含まれていてもよく、ユーザ入力を含む１つ以上の入力に対して応答することができる。クライアント側アプリケーションは、ハイパーテキスト・マークアップ言語（ＨＴＭＬ）、カスケーディングスタイルシート（cascading style sheets：ＣＳＳ）、またはJavaScript（登録商標）を用いることができる。
【０００４】
いくつかの例において、サーバ側アプリケーションは、クライアント側アプリケーションがサーバ側アプリケーションと通信できるようにするプログラミングインターフェイス（たとえばアプリケーションプログラミングインターフェイス）を含み得る。サーバ側アプリケーションはさらに、クライアント側アプリケーションからの通信に対する応答に関連付けられたソフトウェアコードのうちの少なくとも１つ以上と、サーバ側アプリケーションを１つ以上のバックエンドシステム（たとえばデータベース）に接続する１つ以上のコネクタとを含み得る。１つ以上のコネクタは、バックエンドシステムからデータを受けたときにクライアント側アプリケーションによって携帯電話上で見るためにデータをフォーマットし成形することもできる。
【発明の概要】
【０００５】
簡単な概要
本開示は、概してモバイルアプリケーションのサーバ側部分を提供するための、システム、方法、およびコンピュータ読取可能な媒体に関する。特に、モバイルアプリケーションに簡単に接続できるサーバ側アプリケーションをインポートおよびエクスポートするためのプロセスを提供する。サーバ側アプリケーションは、モバイルアプリケーションに関連付けられたカスタムコードのうちの少なくとも１つ以上と、サーバ側アプリケーションとクライアント側アプリケーションとの間でのやり取りのためのプログラミングインターフェイスとを含み得る。サーバ側アプリケーションはさらに、サーバ側アプリケーションとバックエンドシステムとの間のインターフェイスのための１つ以上のコネクタを含み得る。
【０００６】
予め形成された命令セットをモバイルクラウドサービスに導入するための、デバイス、コンピュータプログラムプロダクト、および方法を提供する。たとえば、方法は、ファイルの第１のセットとファイルの第２のセットとを抽出するステップを含み得る。いくつかの例において、ファイルの第１のセットおよびファイルの第２のセットは、アーカイブファイルパッケージから抽出することができる。いくつかの例において、ファイルの第１のセットは、アプリケーションプログラミングインターフェイス（application programming interface：ＡＰＩ）を作成するためのロジックを含み得る。このような例において、ファイルの第１のセットはまた、ＡＰＩをバックエンドサービスに接続するためのロジックを含み得る。いくつかの例において、ファイルの第２のセットはソフトウェアコードを含み得る。いくつかの例において、アーカイブファイルパッケージは遠隔デバイスから受けることができる。
【０００７】
この方法はさらに、ファイルの第１のセットのロジックを用いてＡＰＩを作成するステップと、ＡＰＩをクラウドサービス内のバックエンドサービスに接続するステップとを含み得る。いくつかの例において、ＡＰＩは、ＡＰＩをバックエンドサービスに接続するためのロジックを用いて接続することができる。この方法はさらに、ファイルの第２のセットのソフトウェアコードをクラウドサービスのユーザ空間で実行するステップを含み得る。
【０００８】
いくつかの実装例において、この方法は、モバイルデバイスから要求を受けるステップをさらに含み得る。いくつかの例において、この要求はファイアウォールを通して受けることができる。このような例において、この要求は、サーバ側アプリケーションからの情報またはデータをクエリすることができる。このような例において、この方法は、上記要求を、第１の仮想マシンにおけるロジックに従いＡＰＩを用いてソフトウェアコードにディスパッチするステップをさらに含み得る。このような例において、ＡＰＩは、ファイアウォールの外側でバックエンドサービスに接続し得る。いくつかの例において、この方法は、ソフトウェアコードを用いて上記要求に対するレスポンスを生成するステップをさらに含み得る。このような例において、ソフトウェアコードはさらに含、第２の仮想マシンのユーザサンドボックスエリア内で実行することができる。この方法はさらに、上記応答をバックエンドサービスからモバイルデバイスにルーティングするステップを含み得る。
【０００９】
これまでに使用されている用語および表現は、限定のためではなく説明のために使用されている。このような用語および表現を使用する意図は、示され説明されている特徴またはその一部の何らかの均等物を除外することではない。しかしながら、クレームされているシステムおよび方法の範囲の中でさまざまな修正が可能であることがわかる。よって、本システムおよび方法は例と任意の特徴とによって具体的に開示されているが本明細書に開示される概念の修正および変形は当業者が想到し得るものであること、ならびに、このような修正および変形は添付の請求項によって定められるシステムおよび方法の範囲に含まれると考えられることが、理解されるはずである。
【００１０】
この概要は、クレームしている主題の重要または本質的な特徴を特定することを意図しているのではなく、クレームしている主題の範囲を決めるために単独で使用されることを意図しているのでもない。当該主題は、この特許の明細書全体のうちの適切な部分、いずれかまたはすべての図面、および各請求項の参照によって理解されねばならない。
【００１１】
これまでに述べたことを、他の特徴および例とともに、以下の明細書、請求項、および添付の図面において、より詳しく説明する。
【図面の簡単な説明】
【００１２】
【図１】コンピューティング環境のブロック図の一例を示す図である。
【図２】サーバ側アプリケーションの一例を示す図である。
【図３】サーバ側アプリケーションのためのパッケージを作成するプロセスの一例を示すフローチャートである。
【図４】サーバ側アプリケーションのパッケージをインストールするプロセスの一例を示すフローチャートである。
【図５】モバイルデバイス上のクライアント側アプリケーションからサーバ側アプリケーションへの要求に応答するプロセスの一例を示すフローチャートである。
【図６】エンティティ間の関係の一例を示す図である。
【図７】分散型システムの簡略図を示す。
【図８】システム環境のコンポーネントの簡略ブロック図であり、この環境により、当該コンポーネントから提供されるサービスはクラウドサービスとして提供され得る。
【図９】典型的なコンピュータシステムを示す図であり、このシステムにより、１つ以上のコンポーネントから提供されるサービスはクラウドサービスとして提供され得る。
【発明を実施するための形態】
【００１３】
詳細な説明
以下、説明のために、この開示の例が十分に理解されるよう、具体的な詳細事項を述べる。しかしながら、さまざまな例はこれらの具体的な詳細事項がなくても実施し得ることは明白であろう。図面および説明は限定を意図したものではない。
【００１４】
下記説明は、例のみを提供し、この開示の範囲、可用性、または構成を制限することを意図しているのではない。むしろ、下記の例の説明は、実施を可能にする説明を当業者に提供するであろう。要素の機能および構成は、添付の請求項に記載されている本明細書の精神および範囲から逸脱することなく、さまざまに変更し得ることが、理解されるはずである。
【００１５】
実施例が十分に理解されるよう、以下の説明は具体的な詳細事項を示す。しかしながら、これらの実施例は上記具体的な詳細事項がなくても実施し得ることを当業者は理解するであろう。たとえば、回路、システム、ネットワーク、プロセス、およびその他のコンポーネントは、実施例が不必要な詳細によって曖昧にならないよう、ブロック図形態のコンポーネントとして示す場合がある。それ以外の場合、周知の回路、プロセス、アルゴリズム、構造、および技術は、実施例が曖昧にならないよう、不必要な詳細なしで示す場合がある。
【００１６】
また、個々の実施例は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスとして説明される場合があることに注意されたい。フローチャートは動作を連続プロセスとして説明し得るが、動作の多くは並列または同時に実行することができる。加えて、これらの動作の順序は並べ替えられる場合がある。プロセスは、その動作が完了したときに終了するが、図面には含まれていない追加のステップを有し得る。プロセスは、方法、関数、手順、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応する場合、このプロセスの終了は、関数がコール関数またはメイン関数に戻ることに対応し得る。
【００１７】
「マシン読取可能な記憶媒体」または「コンピュータ読取可能な記憶媒体」という用語は、ポータブルまたは非ポータブル記憶装置、光学記憶装置、ならびに、命令および／またはデータを格納する、含む、または持つことができる、その他さまざまな媒体を含むが、これらに限定されない。マシン読取可能な記憶媒体またはコンピュータ読取可能な記憶媒体は、非一時的な媒体を含み得る。非一時的な媒体は、データを格納することができる媒体であり、無線でまたは無線接続を通して伝搬する搬送波および／または一時的な電子信号を含まない。非一時的な媒体の例は、磁気ディスクまたはテープ、コンパクトディスク（ＣＤ）もしくはデジタル多目的ディスク（ＤＶＤ）等の光学記憶媒体、フラッシュメモリ、メモリまたはメモリデバイスを含み得るが、これらに限定されない。コンピュータプログラムプロダクトは、コードおよび／またはマシンが実行可能な命令を含み得る。これは、手順、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または、命令、データ構造、もしくはプログラムステートメントを組み合わせたものを表し得る。コードセグメントは、別のコードセグメントまたはハードウェア回路に、情報、データ、引数、パラメータ、またはメモリコンテンツを送るおよび／または受けることによって結合し得る。情報、引数、パラメータ、データなどは、メモリシェアリング、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む何らかの適切な手段を介して、送る、転送する、または送信することができる。
【００１８】
さらに、実施例は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはこれらの何らかの組合せによって実現し得る。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実現された場合、必要なタスク（たとえばコンピュータプログラムプロダクト）を実行するためのプログラムコードまたはコードセグメントは、マシン読取可能な媒体に格納されてもよい。プロセッサは必要なタスクを実行し得る。
【００１９】
図面のうちのいくつかに示すシステムは、さまざまな構成で提供し得る。いくつかの例において、これらのシステムは、分散型システムとして構成し得る。その場合、システムの１つ以上のコンポーネントを、クラウドコンピューティングシステムにおいて、１つ以上のネットワークにわたって分散させる。
【００２０】
コンポーネントが特定の動作を実行するように「構成」されていると説明する場合、そのような構成は、たとえば、電子回路またはその他のハードウェアを、この動作を実行するように設計することによって、または、プログラマブル電子回路（たとえばマイクロプロセッサもしくはその他適切な電子回路）をプログラミングすることによって、または、その組合せによって、実現することができる。
【００２１】
本開示は、概して、モバイルアプリケーションのサーバ側部分を提供するための、システム、方法、およびコンピュータ読取可能な媒体に関する。特に、モバイルアプリケーションに簡単に接続できるサーバ側アプリケーションをインポートおよびエクスポートするためのプロセスを提供する。サーバ側アプリケーションは、モバイルアプリケーションに関連付けられたカスタムコード、および、サーバ側アプリケーションとクライアント側アプリケーションとの間のやり取りのためのプログラミングインターフェイス、のうちの、少なくとも１つ以上を含み得る。サーバ側アプリケーションはさらに、サーバ側アプリケーションとバックエンドシステムとの間のインターフェイスへの１つ以上のコネクタを含み得る。
【００２２】
図１は、モバイルコンピューティングデバイス１０２と、クラウドコンピューティングシステム１４０およびオンプレミスエンタープライズコンピュータシステム１５０等の１つ以上のエンタープライズコンピュータシステムとの間の通信を容易にするためのコンピューティング環境１００のブロック図の一例を示す。そのような通信は、エンタープライズデータをやり取りまたは転送すること、エンタープライズコンピュータシステムから提供されるサービスを要求すること、メッセージを伝達すること、またはこれらの組合せであってもよい。
【００２３】
エンタープライズコンピュータシステムは、エンティティまたはエンタープライズのために動作するように構成されるさまざまなコンピューティングシステムを含んでもよい。たとえば、エンタープライズコンピュータシステムは、サービスに対する要求を処理するよう、エンタープライズサーバコンピュータ（たとえば、バックエンドサーバコンピュータ）などの、１つ以上のコンピュータシステムを含んでもよい。エンタープライズコンピュータシステムは、エンタープライズデータを用いて処理および／または動作が可能なアプリケーションおよび／またはサービスを含んでもよい。たとえば、エンタープライズコンピュータシステム１５０は、エンタープライズを管理または動作させるための１つ以上のサービスおよび／またはアプリケーションを提供してもよい。サービスは、顧客関係性管理（customer relationship management：ＣＲＭ）、人的資本管理（human capital management：ＨＣＭ）、人的リソース（human resource：ＨＲ）管理、サプライチェーン管理、エンタープライズ通信、電子メール通信、業務サービス、他のエンタープライズ管理サービスもしくはアプリケーション、またはそれらの組合せを含んでもよい。エンタープライズコンピュータシステム１５０は、１つ以上のサービスを提供するための専用の１つ以上のコンピュータシステムを含み得るが、これらに限定されない。いくつかの例では、あるサービスを提供する異なるコンピュータシステムは各々、エンタープライズのオンプレミスにあってもよく、またはエンタープライズから遠隔地にあってもよい。いくつかの例では、異なるサービスをサポートする複数の異なるコンピュータシステムは、エンタープライズのオンプレミスなどのような、単一の地理的な位置にあってもよい。図１に示される例では、オンプレミスのエンタープライズコンピュータシステム１５０は、ＨＲシステム１５４およびＣＲＭシステム１５６を含んでもよく、それらの両方がエンタープライズのオンプレミスに位置してもよい。いくつかの例では、エンタープライズコンピュータシステム１５０は、エージェントシステム１５２を含むかまたは実現することによって、クラウドコンピュータシステム１１０と１つ以上のエンタープライズシステム１５４，１５６との間における通信を容易にするかまたは処理してもよい。クラウドエンタープライズコンピュータシステム１４０およびオンプレミスエンタープライズコンピュータシステム１５０などのようなエンタープライズコンピュータシステムについて、以下にさらに詳細に記載する。
【００２４】
コンピュータ環境１００は、コンピューティングデバイス１０２と１つ以上のエンタープライズコンピュータシステムとの間における通信を容易にし得るセキュアな仲介コンピューティング環境として動作するよう実現されるモバイルクラウドサービス（mobile cloud service：「ＭＣＳ」）１１２を含んでもよい。なぜならば、コンピューティングデバイス１０２は、そのようなエンタープライズコンピュータシステムと通信するようには構成されないかもしれないからである。たとえば、いくつかのエンタープライズコンピュータシステムは、レガシーまたはバックエンドコンピュータシステムによってサポートされてもよい。そのようなシステムは、異なる通信および／またはセキュリティプロトコルを用いて動作するよう構成されてもよい。そのようなエンタープライズコンピュータシステムによってサポートされるプロトコルは、モバイルコンピューティングデバイスによってサポートされるものとは異なってもよい。ＭＣＳ１１２は、異なるタイプのモバイルコンピューティングデバイスとの通信をサポートしてもよい。したがって、ＭＣＳ１１２は、エンタープライズコンピュータシステムとモバイルコンピューティングデバイスとの間における通信を容易にするよう、技術を実現して、それらが、フォーマットまたは通信プロトコル間における違いなどのような、それらの通信における非互換性にも係わらず、互いと通信できるようにしてもよい。たとえば、ＭＣＳ１１２は、モバイルコンピューティングデバイスとエンタープライズコンピュータシステムとの間で通信プロトコルを翻訳し得る。
【００２５】
クラウドコンピュータシステム１１０はＭＣＳ１１２をサポートし得る。クラウドコンピュータシステム１１０は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せを用いて実現されてもよい。たとえば、クラウドコンピュータシステム１１０は、サーバコンピュータなどのような１つ以上のコンピューティングデバイスを含んでもよい。クラウドコンピュータシステム１１０は１つ以上のメモリ記憶装置および１つ以上のプロセッサを含んでもよい。メモリ記憶装置は、プロセッサにとってアクセス可能であり得、そこに記憶される命令を含むことができ、それらは、プロセッサによって実行されると、プロセッサに本明細書に開示される１つ以上の動作を実行させる。いくつかの例では、メモリ記憶装置はローカルストレージ（たとえばキャッシュ）として動作してもよい。クラウドコンピュータシステム１１０は異なる種類のオペレーティングシステムを含んでもよい。メモリ記憶装置はプロセッサにとってアクセス可能であってもよく、そこに記憶される命令を含んでもよく、それらは、プロセッサによって実行されると、プロセッサに本明細書に開示される１つ以上の動作、方法またはプロセスを実行させる。メモリ記憶装置はローカルストレージとして動作してもよい。ローカルストレージは、メモリ記憶装置または他のコンピュータ読取可能記憶媒体などのような任意のタイプの永続的な記憶装置を用いて実現されてもよい。いくつかの例では、ローカルストレージは、１つ以上のデータベース（たとえばドキュメントデータベース、リレーショナルデータベースまたは他のタイプのデータベース）、１つ以上のファイルストア、１つ以上のファイルシステム、またはそれらの組合せを含むかまたは実現してもよい。ローカルストレージはエンタープライズデータを記憶してもよい。
【００２６】
特定の例では、クラウドコンピュータシステム１１０は、メタデータリポジトリ１２４、診断ストア１２６および解析ストア１２８などの１つ以上のデータストアを含んでもよい。データストア１２４，１２６，１２８は、クラウドコンピュータシステム１１０におけるいずれのコンポーネントによってアクセス可能であってもよい。
【００２７】
メタデータリポジトリ１２４は、ＭＣＳ１１２に関連付けられるすべてのメタデータを記憶してもよい。この情報は、実行時データおよび設計時データの両方からで構成されてもよく、それらの各々は利用可能性および性能の両方においてそれら自身の要件を有する。ＭＣＳ１１２のテナントまたはサブスクライバは任意の数のアプリケーション（本明細書ではサーバ側アプリケーションと言う場合がある）を有してもよい。各アプリケーションはバージョン化されてもよく、それらのリソースアプリケーションプログラミングインターフェイス（ＡＰＩ）が契約する、関連付けられる０以上のバージョン化されたリソースＡＰＩおよび０以上のバージョン化されたサービスインプリメンテーションを有してもよい。これらのエンティティは、実行時が使用して仮想要求（ｍＡＰＩ）を具体的なサービスインプリメンテーション（サービス）にマッピングするものである。このマッピングは、モバイル開発者が自身のアプリケーションを設計および構築する際に実際のインプリメンテーションサービスを知る必要がないため、モバイル開発者にとって贅沢なものである。さらに、すべてのサービスバグ修正において新たなアプリケーションを再発行する必要もない。メタデータリポジトリ１２４は１つ以上の呼出し可能インターフェイスを記憶してもよく、それらはコンピューティングデバイス（たとえばコンピューティングデバイス１０２）によって呼出されてもよい。呼出し可能インターフェイスは、ＭＣＳ１１２との通信を容易にするよう、アプリケーションのユーザ（たとえば開発者）によってカスタマイズ可能であってもよい。メタデータリポジトリ１２４は、呼出し可能インターフェイスの１つ以上の構成に対応するメタデータを記憶してもよい。メタデータリポジトリ１２４は、呼出し可能インターフェイスを実現するためのメタデータを記憶するように構成されてもよい。呼出し可能インターフェイスは、通信のための１つのフォーマット、プロトコルまたはアーキテクチャのスタイルと通信のための他のフォーマット、プロトコルまたはアーキテクチャのスタイルとの間において翻訳するよう実現されてもよい。メタデータリポジトリ１２４は、認証されたユーザによって、外部のネットワークを介して修正可能であってもよい。
【００２８】
サーバ側アプリケーションを用いて、モバイルアプリケーションに関連付けられた動作を遠隔で実行することができる。たとえば、サーバ側アプリケーションは、モバイルアプリケーションによるデータ要求に応答し、モバイルアプリケーションに関連付けられた情報を格納し、コンテンツをモバイルアプリケーションに送信することができる。いくつかの例において、サーバ側アプリケーションはモバイルアプリケーションとして機能することができる。
【００２９】
いくつかの例において、ＭＣＳ１１２はバックエンドシステムをさらに含み得る。バックエンドシステムは、サーバ側アプリケーションによる動作の実行を支援することができる。たとえば、バックエンドシステムは、情報が格納される、計算が実行される、またはその他何らかのアクションが実行されることでサーバ側アプリケーションを補足する場所であってもよい。このような例において、サーバ側アプリケーションは、ネットワーク（たとえばインターネット）を用いてバックエンドシステムと通信することができる。
【００３０】
診断ストア１２６は、ＭＣＳ１１２において生じる処理についての診断情報を記憶してもよい。診断ストア１２６は、ＭＣＳ１１２を介して通信されるメッセージおよびログ情報を記憶してもよい。解析ストア１２８は、システムにおける処理中に捕捉されたロギングおよび解析データを記憶してもよい。
【００３１】
ＭＣＳ１１２の代わりに、クラウドコンピュータシステム１１０はその計算リソースを利用してカスタムコード１１６（たとえば動作、アプリケーション、方法、ファンクション、ルーチンなど）の実行を可能にし得る。いくつかの例において、カスタムコードはユーザサンドボックスエリアで実行することができる。ユーザサンドボックスエリアは、ユーザサンドボックスエリア内で実行されるコードを隔離する環境であってもよい。いくつかの例において、ユーザサンドボックスエリアは、コードの実行をパラメータ化しそれ自身の中に封じ込める環境であってもよい。計算リソースは、使用のために、ＭＣＳ１１２のサブスクライバまたはテナントとして関連付けられる特定のユーザに関して、割当てられてもよい。リソースは、ユーザ、デバイス、アプリケーション、またはサブスクライバに関係付けられる他の基準に関して割当てられてもよい。ＭＣＳ１１２は、エンタープライズコンピュータシステムと通信することを求めるモバイルコンピューティングデバイスの要望に応じて、スケールインまたはスケールアウトされてもよい。ＭＣＳ１１２は、モバイルコンピューティングデバイスとエンタープライズコンピュータシステムとの間における通常のトラフィックよりも高いサージおよび一時的な期間を処理するよう柔軟性をもつように構成され得る。いくつかの例では、ＭＣＳ１１２は、通信における要望を満足させるようコンポーネントが追加または置換され得るようにスケーラビリティをサポートする要素を含んでもよい。
【００３２】
コンピューティングデバイス１０２は、エンタープライズコンピュータシステムによって提供されるサービスを要求するようにＭＣＳ１１２と通信してもよい（たとえば要求メッセージを送信してもよい）。コンピューティングデバイス１０２（たとえばモバイルコンピューティングデバイス）は、ハードウェア、ファームウェア、ソフトウェアまたはそれらの組合せを用いて実現されてもよい。コンピューティングデバイス１０２は、ＭＣＳ１１２を介してエンタープライズコンピュータシステム１４０，１５０と通信してもよい。コンピューティングデバイス１０２は、エンドポイントデバイス、パーソナルデジタルアシスタント（personal digital assistant：ＰＤＡ）、タブレットコンピュータ、ラップトップコンピュータ、モバイルコンピューティングデバイス、デスクトップコンピュータ、ウェアラブルコンピュータ、ページャなどを含んでもよく、またはそれらとして実現されてもよい。コンピューティングデバイス１０２は、１つ以上のメモリ記憶装置および１つ以上のプロセッサを含んでもよい。コンピューティングデバイス１０２は、異なる種類のオペレーティングシステムを含んでもよい。メモリ記憶装置はプロセッサにとってアクセス可能であってもよく、そこに記憶される命令を含んでもよく、それらは、プロセッサによって実行されると、プロセッサに本明細書に開示される１つ以上の動作、方法またはプロセスを実行させる。メモリ記憶装置はローカルストレージとして動作してもよい。ローカルストレージは、メモリ記憶装置または他のコンピュータ読取り可能記憶媒体などの任意のタイプの永続的な記憶装置を用いて実現されてもよい。いくつかの例では、ローカルストレージは、１つ以上のデータベース（たとえばドキュメントデータベース、リレーショナルデータベースまたは他のタイプのデータベース）、１つ以上のファイルストア、１つ以上のファイルシステム、またはそれらの組合せを含むかまたは実現してもよい。ローカルストレージはエンタープライズデータを記憶してもよい。
【００３３】
さまざまな例では、コンピューティングデバイス１０２は、ウェブブラウザ、クライアントアプリケーション、所有権付きクライアントアプリケーションなど（たとえばサーバ側アプリケーション）の１つ以上のアプリケーションを実行および動作させるよう構成されてもよい。アプリケーションは、エンタープライズコンピュータシステムによって提供されるエンタープライズデータおよび／またはサービスのために構成される特定のアプリケーションを含み得る。クライアントアプリケーションは１つ以上のネットワークを介してアクセス可能であるかまたは動作されてもよい。アプリケーションは、アプリケーションを動作させるためのグラフィカルユーザインターフェイス（ＧＵＩ）を含んでもよい。
【００３４】
コンピューティングデバイス１０２は、ＭＣＳ１１２と、１つ以上の通信ネットワークを介して、無線通信を用いて通信してもよい。通信ネットワークの例は、モバイルネットワーク、無線ネットワーク、セルラーネットワーク、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、他の無線通信ネットワーク、またはそれらの組合せを含んでもよい。特定の例では、コンピューティングデバイス１０２は、ＭＣＳ１１２との通信接続１１４を、カスタム通信プロトコル（たとえばカスタムプロトコル）を用いて確立してもよい。接続１１４が、クラウドコンピュータシステム１１０を介してＭＣＳ１１２と確立されてもよい。カスタムプロトコルはＨＴＴＰベースのプロトコルであってもよい。カスタム通信プロトコルを利用することによって、コンピューティングデバイス１０２は任意のコンピューティングデバイスプラットフォーム上で動作してクラウドコンピュータシステム１１０と通信してもよい。
【００３５】
コンピューティングデバイス１０２は、たとえばアプリケーションプログラミングインターフェイス（ＡＰＩ）である、１つ以上の呼出し可能インターフェイスを介して、クラウドコンピュータシステム１１０と通信してもよい。呼出し可能インターフェイスはコンピューティングデバイス１０２上において実現されてもよい。呼出し可能インターフェイスは、ＭＣＳ１１２と通信することができるカスタムアプリケーションに対して実現されてもよい。いくつかの例では、呼出し可能インターフェイスはＭＣＳ１１２のために開発されてもよい。呼出し可能インターフェイスは、アプリケーションが、プロトコル（たとえば通信プロトコルもしくは開発プロトコル）および／またはアーキテクチャのスタイルもしくはフォーマットにおける違いに適合する必要なしに、ＭＣＳ１１２と通信することを可能にしてもよい。
【００３６】
ＭＣＳ１１２は、要求を処理しカスタムコード１１６を実行するようセキュリティ上安全な環境を与えるように１つ以上のファイアウォール１０４，１３０によって保護されてもよい。コンピューティングデバイス１０２とＭＣＳ１１２との間における通信は、外部通信ファイアウォール１０４によって分離されてもよい。ファイアウォール１０４は、ＭＣＳ１１２へのセキュリティ上安全なアクセスを容易にするようにクラウドコンピュータシステム１１０と接続されてもよい。ファイアウォール１０４は、クラウドコンピュータシステム１１０とコンピューティングデバイス（たとえばコンピューティングデバイス１０２）との間におけるメッセージの通信を許可してもよい。そのようなメッセージ（たとえばＨＴＴＰメッセージまたはＲＥＳＴメッセージ）は、呼出し可能インターフェイスによってサポートされ得る通信プロトコル（たとえば、ＨＴＴＰまたはＲＥＳＴ）に準拠し得る。別の例では、クラウドコンピュータシステム１１０とコンピューティングデバイス１０２との間におけるメッセージは、ＳＰＤＹなどの通信プロトコルに準拠してもよい。ＭＣＳ１１２は、クラウドコンピュータシステム１１０とエンタープライズコンピュータシステム１４０，１５０との間における通信をセキュリティ上安全にするようにファイアウォール１３０を管理してもよい。ファイアウォール１３０は、クラウドコンピュータシステム１１０とコンピューティングデバイス（たとえばコンピューティングデバイス１０２）との間におけるメッセージの通信を許可してもよい。そのようなメッセージ（たとえばＳＰＤＹメッセージ、ＨＴＴＰメッセージまたはＲＥＳＴメッセージ）は、通信プロトコル（たとえばＳＰＤＹ、ＨＴＴＰまたはＲＥＳＴ）に準拠してもよい。コンピューティングデバイス１０２とエンタープライズコンピュータシステム１４０，１５０との間における通信はＭＣＳ１１２を介する二方向であってもよい。
【００３７】
コンピューティングデバイス１０２およびエンタープライズコンピュータシステム１４０，１５０との通信がセキュリティ上安全ではないパブリックなネットワークを介して行われる可能性があるので、ファイアウォール１０４，１３０は、ＭＣＳ１１２へのおよびＭＣＳ１１２からの通信に対して追加の保護層を与える。ファイアウォール１０４，１３０は、ＭＣＳ１１２が、その内部ネットワークと、コンピューティングデバイス１０２およびエンタープライズコンピュータシステム１４０，１５０を接続する外部ネットワークとを区別することを可能にし得る。いくつかの例では、ファイアウォール１０４，１３０は、２つの別個のファイアウォールとして示されるが、ＭＣＳ１１２を封入する単一のファイアウォールとして実現されてもよい。
【００３８】
クラウドコンピュータシステム１１０はさらに、一部が異なる通信プロトコルを有し得るエンタープライズコンピュータシステムと通信することによって仲介コンピューティング環境として動作してもよい。そのような通信プロトコルは、クラウドコンピュータシステム１１０との通信において、あるアプリケーションまたはサービスに対してカスタムであるかまたは特定であってもよい。さらにクラウドコンピュータシステム１１０は、エンタープライズコンピュータシステムと通信して、エンタープライズサービスを提供し、および／または、エンタープライズコンピュータシステムによってサポートされるフォーマットに従ってエンタープライズデータを交換してもよい。クラウドコンピュータシステム１１０は、エンタープライズデータのローカルストレージ（たとえば、ローカルキャッシュ）を維持してもよく、そのローカルストレージを用いてモバイルコンピューティングデバイスとエンタープライズコンピュータシステム１４０，１５０との間におけるエンタープライズデータの同期を管理してもよい。
【００３９】
コンピューティングデバイス１０２は、ＭＣＳ１１２と通信（たとえば、要求メッセージを送信）して、エンタープライズコンピュータシステムによって提供されるサービスを要求してもよい。ファイアウォール１０４を介して受信された要求は、最初にセキュリティサービス２３２によって処理されてもよい。セキュリティサービス２３２は、要求に関連付けられるユーザに関してセキュリティ認証を管理してもよい。したがって、クラウドコンピュータシステムは、顧客通信およびエンタープライズデータの保全性を保護し得る、本明細書に記載されるセキュリティ機構を提供することを含む技術的利点を提供し得る。クラウドコンピュータシステムの技術的利点は、損なわれた通信および／またはデータが損なわれることを防止または低減することを含んでもよく、認証が最初に生じて、アクセスを、必要とされる資格情報を有するもののみに対して制限してもよい。クラウドコンピュータシステムの技術的利点は、サービスおよびサービス呼出しフローが、要求が入来するとそれらはそれらが承認されるサービスにアクセスすることのみが許可され得るように構造化されることを含んでもよい。システム処理の他の部分から承認を切り離すことによって、処理は、「何が誰によってなされ得るか」を承認するタスクが、特定の法人顧客によって必要とされるさらなるカスタムセキュリティ手段が何であれ、それをサポートするよう拡張され得る専用のプロビジョニングされたセキュリティサブシステム（たとえばアイデンティティ管理システム）に委任されることを含んでもよい。いくつかの例では、セキュリティ認証は、要求、セッション、ユーザ、デバイス、ユーザに関係付けられる他の基準、またはそれらの組合せに関して判断されてもよい。セキュリティ認証は、受信される要求ごとに実行されてもよい。いくつかの例では、セキュリティサービス２３２は、以前の要求の検証に基づいて認証を判断してもよい。セキュリティ認証は、ユーザまたは装置に関して、異なるエンタープライズコンピュータシステム１４０，１５０に対する要求が単一のセキュリティ検証に基づいて認証され得るように、判断されてもよい。
【００４０】
いくつかの例では、セキュリティサービス１３２は、要求されたエンタープライズコンピュータシステムについてのセキュリティプロトコルを判断して、それに応じて、そのようなセキュリティプロトコルに従ってセキュリティトークンを生成してもよい。セキュリティトークンは、生成されたセキュリティトークンに基づいてエンタープライズコンピュータシステムが認証を検証することを可能にするために、要求とともに当該エンタープライズコンピュータシステムに渡されてもよい。エンタープライズコンピュータシステムは、異なるセキュリティプロトコルをサポートしてもよい。セキュリティプロトコルは、セキュリティが判断される規格であってもよい。セキュリティは、セキュリティサービス１３２によって生成されるセキュリティトークンに基づいて検証されてもよい。セキュリティサービス１３２は、要求に対して識別されるエンタープライズコンピュータシステムのためのセキュリティプロトコルを判断してもよい。いくつかの例では、エンタープライズコンピュータシステム１５０は、ＭＣＳ１１２によってサポートされるカスタムまたは特定のセキュリティプロトコルに従って構成または実現され得るエージェントシステム１５２を有してもよい。したがって、ＭＣＳ１１２は、そのようなカスタムセキュリティプロトコルに従ってセキュリティトークンを生成してもよい。
【００４１】
クラウドコンピュータシステム１１０は、１つ以上の負荷分散システム１０６，１０８を含み、実現し、および／またはそれ（ら）と通信してもよい。セキュリティ認証を判断すると、クラウドコンピュータシステム１１０は負荷分散システム１０６，１０８のうちのいずれか１つに対して、それが受信する要求を調べ、要求がどのサービスに向けられているかを検出するよう要求してもよい。ＭＣＳ１１２は、負荷分散部１０６，１０８とともに構成されてもよく、起動されるリソースで更新されてもよく、したがって、要求が入来すると、負荷分散部１０６，１０８は要求される負荷を異なるリソースにわたって分散させることができる。
【００４２】
クラウドコンピュータシステム１１０は、要求を処理し、それらを適切なサービスに発送し得るディスパッチャ１１８を含んでもよい。要求は、発送されると適切なサービスにルーティングされ得る。いくつかの例では、サービスそれ自体が、内部の要求を、ＭＣＳ１１２またはエンタープライズコンピュータシステムにおける別の内部のサービスにルーティングしてもよい。いくつかの例では、ディスパッチャ１１８は要求を解決して、その宛先を、要求の統一資源識別子（uniform resource identifier：ＵＲＩ）および／または統一資源ロケータ（uniform resource locator：ＵＲＬ）において識別される宛先の位置（たとえばアドレス）に基づいて判断してもよい。ディスパッチャ１１８は要求およびそのヘッダを構文解析して、以下の情報：テナント識別子、サービス識別子、アプリケーション名、アプリケーションバージョン、要求リソース、動作およびパラメータなどの１つ以上を抽出してもよい。ディスパッチャ１１８は、構文解析された情報を用いて、メタデータリポジトリ１２４における参照を実行することができる。ディスパッチャ１１８は対応するアプリケーションメタデータを検索してもよい。ディスパッチャ１１８は、目標のサービスを、要求されたリソースおよびメタデータにおけるマッピングに基づいて判断してもよい。最初は非常に基本的なマッピングであるが、メタデータを向上させて、より洗練された、ルールに基づく発送を行うことができる。ディスパッチャ１１８は、任意のディスパッチャ特有のロギング、メトリック収集などを実行してもよい。ディスパッチャ１１８は、次いで、初期承認をアプリケーションメタデータに従って実行してもよい。ディスパッチャ１１８は、インバウンドの要求および任意の他の必要な情報をフォーマットし、メッセージをさらなる処理のためにルーティングバス１２０上に配置してもよい。ディスパッチャ１１８は、要求をキュー上に配置して、対応の応答を待ってもよい。ディスパッチャ１１８は、ルーティングバス１２０から受信される応答を処理し、応答をコンピューティングデバイス１０２に返してもよい。
【００４３】
外部の要求に対する発送を処理することに加えて、ディスパッチャ１１８は、さらに、内部の要求を発送する役割を果たしてもよい。そのような内部の要求は、サービスに対する合成サービスまたはカスタムコード呼出しの形式で受信することができる。両方の場合において、呼出し元は、アプリケーション内において定義される論理上のサービス名を用い得る。ディスパッチャ１１８は、現在の実行コンテキストを用いてアプリケーションを判断し、その論理名を用いて、呼出すべき適切なサービスを判断してもよい。
【００４４】
クラウドコンピュータシステム１１０は、ルーティングバス１２０に登録された宛先に対するメッセージの配送を管理するようルーティングバス１２０を含んでもよい。ルーティングバス１２０は、クラウドサービス１１２において通信を管理するための中央システムとして動作してもよい。ルーティングバス１２０を介して通信されるデータは、そのデータを捕捉および記憶するよう処理されてもよい。ルーティングバス１２０は、さらなる中央集中化されたサービス（さらなる承認、デバッグなど）が必要に応じて容易にプラグインされ得るように、フレームワークを与えてもよい。ルーティングバス１２０によって捕捉されたデータは診断ストア１２６および／または解析ストア１２８に記憶されてもよい。
【００４５】
ルーティングバス１２０はメッセージを１つ以上の宛先にルーティングしてもよい。いくつかの例では、メッセージは、カスタムコード１１６を実行するようにとの要求を含み得る。そのような例では、ルーティングバス１２０は、カスタムコード１１６を呼出すよう要求してもよい１３４。いくつかの例では、ルーティングバス１２０は、要求における情報によって識別される宛先エンタープライズコンピュータシステムに要求を渡してもよい。ルーティングバス１２０は、必要であればアダプタインターフェイス１２２に対して翻訳を実行するよう要求して（２３６）、要求をエンタープライズコンピュータシステム、たとえばエンタープライズコンピュータシステム１４０またはエンタープライズコンピュータシステム１５０に渡してもよい。
【００４６】
特定の例では、クラウドコンピュータシステム１１０は、アダプタインターフェイス１２２を含むかまたはそれを実現して、メッセージを、受信側エンタープライズコンピュータシステムによってサポートされるプロトコルに翻訳または変換してもよい。アダプタインターフェイス１２２は、エンタープライズコンピュータシステム１４０，１５０の各々と、別々の通信接続を確立してもよい。クラウドコンピュータシステム１１０は、エンタープライズコンピュータシステム１４０，１５０と、１つ以上のネットワーク（図示せず）を介して通信するよう構成されてもよい。通信ネットワークの例は、インターネット（登録商標）、モバイルネットワーク、パブリックネットワーク、無線ネットワーク、セルラーネットワーク、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、他の通信ネットワーク、またはそれらの組合せを含んでもよい。特定の例では、通信接続は、高速通信トランクを用いて促進される高速通信接続であってもよい。エンタープライズコンピュータシステム１４０，１５０との通信はファイアウォール１３０を通過してもよく、それによって、外部ネットワークとの通信はそのような通信を介するＭＣＳ１１２に対する未承認アクセスを妨げるようセキュリティ上安全であることが確実とされる。
【００４７】
いくつかの例では、クラウドコンピュータシステム１１０はコンピューティングデバイス１０２のユーザに対する通知を容易にし得る。クラウドコンピュータシステム１１０は、ユーザとのステートフルな対話をサポートする警報管理サービスを含んで、たとえば、ユーザの好みに基づく警報を１つ以上のチャネルを介して送り、応答を待ち、その応答に基づくアクションを取ってもよい。１つのチャネルで送られた警報に対する応答は、サービスが取扱うことができる必要のある別のチャネルを介して受信されてもよい。プラットフォームは、ポピュラーな対話パターンのための内蔵型の状態モデルとともに搭載され、新たな状態モデルで拡張可能であり得る。いくつかの警報チャネルは、一方向であれ二方向であれ、公知の通信リソースを含んでもよい。例は、ＳＭＳ、ツイッター（登録商標）、プッシュ通知、およびＧｏｏｇｌｅ（登録商標）  Ｃｌｏｕｄ  Ｍｅｓｓａｇｉｎｇを含む。
【００４８】
いくつかの例では、クラウドコンピュータシステム１１０は、コンピューティングデバイスが、オブジェクトストアサービス、データベースサービス、アクセスウェブサービス、ソーシャルサービス、リソースサービス、またはそれらの組合せなどの１つ以上のサービスにアクセスするおよび／またはそれらを要求することを可能にし得る。
【００４９】
クラウドコンピュータシステム１１０は、ＢＬＯＢのためのストレージファシリティを提供し得るオブジェクトストアサービスを提供してもよい。基本的な記憶の単位はテキストであり得、読取動作および書込動作を伴う。ＪＳＯＮオブジェクトに対する基本的なクエリーファシリティも提供され得る。
【００５０】
クラウドコンピュータシステム１１０は、データベースサービスを提供して、クエリまたは書込を実行するために、ホストされるデータベースへの接続性を可能にし得る。必要とされるパラメータ化は、データベースに対する十分な接続ストリング、実行すべきＳＱＬストリングまたは記憶される手順、任意のパラメータ、および場合によっては資格情報を必要とする可能性もある。必要な情報は、実行時に与えられ得るか、またはアプリケーションメタデータにおいて予め構成され得る。
【００５１】
クラウドコンピュータシステム１１０は、シンプルアクセスオブジェクトプロトコル（Simple Access Object Protocol：ＳＯＡＰ）ウェブサービスなどのウェブサービスへのアクセスを提供し得る。クラウドコンピュータシステム１１０は、任意のＲＥＳＴリソースへの接続性などのＲＥＳＴサービスへのアクセスを提供し得る。
【００５２】
クラウドコンピュータシステム１１０は、ソーシャルサービスへのアクセスを提供してもよく、それは、フェースブック（登録商標）、ツイッター（登録商標）などのような人気のあるソーシャルサイトの多くとの基本的な統合をもたらし得る。これらのサービスは、それらのサイトからのユーザの資格情報を用いる第三者認証およびそれらのサービスに対するアクセスを可能にしてもよい。例は、ツィートを送信するかまたは貴方のステータスを更新することを含む。
【００５３】
クラウドコンピュータシステム１１０は、パブリッククラウドサービスを提供して、ユーザが通信を簡単にして最適化することを可能にし得る。たとえば、サービス開発者は、ＭＣＳ１１２の包括的なウェブサービスを用いて、クラウドコンピュータシステム１１０のクラウドサービスを用いてホストされるリソースに話し掛けてもよい。
【００５４】
いくつかの例において、コンピューティングデバイス１０２はモバイルアプリケーションを含み得る。モバイルアプリケーションは、モバイルアプリケーションに含まれるコードを用いて１つ以上の動作を実行することができる。いくつかの例において、モバイルアプリケーションの動作は、コンピューティングデバイス１０２のユーザに対してコンテンツを表示すること、ユーザからの入力を受けること、ユーザからの入力に応答すること、および遠隔システムからのコンテンツを受けること、のうちの少なくとも１つ以上を含み得る。
【００５５】
図２はサーバ側アプリケーション２１０の一例を示す図である。サーバ側アプリケーションは、ＭＣＳ（たとえばＭＣＳ１１２）に含まれていてもよい。サーバ側アプリケーション２１０は、プログラミングインターフェイス（たとえばアプリケーションプログラミングインターフェイス（ＡＰＩ）２１２）、カスタムコード２１４、およびコネクタ２１６のうちの少なくとも１つ以上を含み得る。ＡＰＩ２１２を用いることにより、モバイルアプリケーションに対するインターフェイスをサーバ側アプリケーション２１０に提供することができる。いくつかの例において、サーバ側アプリケーションは複数のＡＰＩを含み得る。
【００５６】
カスタムコード２１４（ソフトウェアコードまたはユーザコードと呼ばれることがある）は、コンピュータシステムによって実行可能な、サーバ側アプリケーション２１０に関連する動作の実行を求める１つ以上の命令であってもよい。カスタムコード２１４は仮想マシン上で実行（たとえば仮想マシン上にインストール）されてもよい。いくつかの例において、仮想マシンはコンピュータシステムのエミュレーションであってもよい。このような例において、仮想マシンは、仮想オペレーティングシステム、または、仮想化を含むその他のコンピューティングアーキテクチャを実行していてもよい。論理記憶装置の１つ以上のフレキシブプールが仮想化されて仮想マシンのための仮想記憶装置を維持してもよい。仮想ネットワークは、サーバが、ソフトウェア定義ネットワーキングを用いて制御してもよい。いくつかの例において、カスタムコード２１４は、モバイルアプリケーションに関連付けられたロジックの第１の部分を含み得る。このような例において、モバイルアプリケーション上のコードは、モバイルアプリケーションに関連付けられたロジックの第２の部分を含み得る。バックエンドシステム上のコードは、モバイルアプリケーションに関連付けられたロジックの第３の部分を含み得る。より多くのまたはより少ないシステム上のロジックに、より多くのまたはより少ない部分があってもよいことを、当業者は理解するであろう。
【００５７】
コネクタ２１６はサーバ側アプリケーション２１０をバックエンドシステムに接続することができる。いくつかの例において、コネクタ２１６は、サーバ側アプリケーション２１０からバックエンドシステムへのインターフェイスを提供することができる。いくつかの例において、コネクタ２１６は、バックエンドシステムから受けた情報をフォーマットすることもできる。いくつかの例において、サーバ側アプリケーション２１０は複数のコネクタを含み得る。
【００５８】
メタデータ２１８は、サーバ側アプリケーション２１０またはモバイルクラウドサービス環境によって設計時または実行時に利用されるデータを含み得る。たとえば、メタデータ２１８は、（ａ）サーバ側またはモバイルアプリケーションの実行を管理するポリシー、（ｂ）ＡＰＩインプリメンテーションとコネクタとの間の実行時依存性、（ｃ）アクセスコントロール情報、（ｄ）ＡＰＩからカスタムコードへのインプリメンテーションバインディング、（ｅ）コネクタバインディング、（ｆ）その他、を含み得る。ポリシーの例は、ロギングレベルポリシーおよびプロダクションデータベースＵＲＩポリシーを含み得る。いくつかの例において、ロギングレベルポリシーは、モバイルバックエンド、ＡＰＩ、または環境の範囲における必要なログレベルを規定することができる。いくつかの例において、プロダクションデータベースＵＲＩポリシーは、サーバ側アプリケーションによって使用される１つ以上のデータベースを指し示すことができる。いくつかの例において、実行時依存性情報は、ＡＰＩインプリメンテーションが１つ以上のコネクタを消費する（たとえば１つ以上のコネクタに対する依存性を有する）ことを示すことができる。このような例において、実行時依存性情報は、デプロイ、インポート、および／またはエクスポート中のサーバ側アプリケーションのインテグリティを保証するために使用できる。いくつかの例において、アクセスコントロール情報は、ＡＰＩを呼出すことが許可されている１つ以上のユーザロールのリストを示すことができる。いくつかの例において、このリストは、メタデータの中に保存することができ、設計時および／または実行時動作において使用することができる。いくつかの例において、ＡＰＩバインディングは、ＡＰＩがどのようにしてカスタムコードとのやり取りを行うか（たとえばカスタムコードのどの部分が特定のＡＰＩによってコールされるか）を記述することができる。いくつかの例において、コネクタバインディングは、コネクタの実行中にコネクタのどの特定のインプリメンテーションが使用されるかを記述することができる。
【００５９】
いくつかの例において、ＡＰＩ２１２とカスタムコード２１４とを組み合わせて１つのエンティティにしてもよい。他の例において、コネクタ２１６は、サーバ側アプリケーションの上記３つのコンポーネントを一緒にパッケージ化できるように、１つのエンティティに組み込んでもよい。
【００６０】
図３は、サーバ側アプリケーションのためのパッケージを作成するプロセス３００の一例を示すフローチャートである。いくつかの局面において、プロセス３００はモバイルクラウドサービスによって実行されてもよい。プロセス３００は論理フロー図として示されており、その動作は、ハードウェア、コンピュータ命令、またはその組合せにおいて実現し得る一連の動作を表す。コンピュータ命令という文脈において、上記動作はコンピュータによる実行が可能な命令を表し、この命令は、１つ以上のコンピュータ読取可能な記憶媒体に格納され、１つ以上のプロセッサによって実行されると、記載されている動作が実行される。一般的に、コンピュータによる実行が可能な命令は、特定の機能を果たすまたは特定のデータタイプを実現する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、その他を含む。これらの動作を説明する順序は、限定解釈されることを意図している訳ではなく、説明する動作のうち任意の数の動作を任意の順序でおよび／または並列に組み合わせて上記プロセスを実現してもよい。
【００６１】
加えて、プロセス３００は、実行可能な命令で構成された１つ以上のコンピュータシステムの制御下で実行されてもよく、コード（たとえば実行可能な命令、１つ以上のコンピュータプログラム、または１つ以上のアプリケーション）として実現されてもよい。上記コードは、１つ以上のプロセッサ上で、ハードウェアによって、またはこれらの組合せによって、集合的に実行される。先に述べたように、コードは、マシン読取可能な記憶媒体上に、たとえば１つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態で、格納されてもよい。マシン読取可能な記憶媒体は非一時的なものであってもよい。
【００６２】
ステップ３１０において、プロセス３００は、１つ以上のエンティティを選択することを含む。この１つ以上のエンティティはユーザによって選択されてもよい。エンティティはモバイルバックエンドであってもよい。モバイルバックエンドは、コネクタ、ＡＰＩ、ＡＰＩインプリメンテーション、およびストレージコレクションをグループ化するために使用されるオブジェクトであってもよい。モバイルバックエンドはまた、モバイルバックエンドのためのセキュリティおよびアクセスクレデンシャルを含み得る。また、エンティティは、ＡＰＩ、ＡＰＩインプリメンテーション、ストレージコレクション、またはコネクタのうちの１つ以上であってもよい。いくつかの例において、１つ以上のエンティティは、組み合わされたときに、モバイルクラウドサービス環境において１つ以上の動作を実行するために使用されるサーバ側アプリケーションであってもよい。
【００６３】
ステップ３２０において、プロセス３００は、１つ以上のエンティティの依存性を解析することを含む。たとえば、あるエンティティは別のエンティティに対する依存性を有する場合がある。加えて、選択された１つ以上のエンティティを実行するのに必要なアイテムが特定される。
【００６４】
ステップ３３０において、プロセス３００は、上記１つ以上のエンティティの論理グルーピングと上記依存性とをパッケージ化することを含む。論理グルーピングは、すべての呼出しに対してコンテキストを提供できる。このパッケージは、ユーザに対して送信、格納、または共有されてもよい。いくつかの例において、このパッケージは、遠隔サーバ内にインポートされて、上記１つ以上のエンティティおよび依存性が遠隔サーバ内で生成されサーバ側アプリケーションが遠隔サーバ上で実行されるようにしてもよい。いくつかの例において、パッケージは組み合わされてもよい。
【００６５】
いくつかの例において、パッケージは、識別のために上記１つ以上のエンティティの説明を含み得る。この説明は、パッケージ名、パッケージバージョン、１つ以上のエンティティのリスト、およびパッケージの目的を含み得る。パッケージの目的は、パッケージが何のためのものかを説明する。いくつかの例において、パッケージはまた、ユーザ定義コードに対するエントリポイントを示すバインディングを含み得る。エントリポイントは１つ以上のＡＰＩに対するものである。先に述べたように、バインディングはメタデータであってもよい。
【００６６】
図４は、サーバ側アプリケーションのパッケージをインストールするプロセス４００の一例を示すフローチャートである。いくつかの局面において、プロセス４００はモバイルクラウドサービスによって実行されてもよい。プロセス４００は論理フロー図として示されており、その動作は、ハードウェア、コンピュータ命令、またはその組合せにおいて実現し得る一連の動作を表す。コンピュータ命令という文脈において、上記動作はコンピュータによる実行が可能な命令を表し、この命令は、１つ以上のコンピュータ読取可能な記憶媒体に格納され、１つ以上のプロセッサによって実行されると、記載されている動作が実行される。一般的に、コンピュータによる実行が可能な命令は、特定の機能を果たすまたは特定のデータタイプを実現する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、その他を含む。これらの動作を説明する順序は、限定解釈されることを意図している訳ではなく、説明する動作のうち任意の数の動作を任意の順序でおよび／または並列に組み合わせて上記プロセスを実現してもよい。
【００６７】
加えて、プロセス４００は、実行可能な命令で構成された１つ以上のコンピュータシステムの制御下で実行されてもよく、コード（たとえば実行可能な命令、１つ以上のコンピュータプログラム、または１つ以上のアプリケーション）として実現されてもよい。上記コードは、１つ以上のプロセッサ上で、ハードウェアによって、またはこれらの組合せによって、集合的に実行される。先に述べたように、コードは、マシン読取可能な記憶媒体上に、たとえば１つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態で、格納されてもよい。マシン読取可能な記憶媒体は非一時的なものであってもよい。
【００６８】
ステップ４１０において、プロセス４００は、パッケージを受けることを含む。このパッケージは、１つ以上のエンティティの論理グルーピングを含み得る。エンティティは、モバイルバックエンド、ＡＰＩ、ＡＰＩインプリメンテーション、ストレージコレクション、および／またはコネクタであってもよい。いくつかの例において、パッケージは、ファイルの第１のセットとファイルの第２のセットとを含み得る。ファイルの第１のセットは、ＡＰＩ（たとえばＡＰＩ定義）を作成するためかつこのＡＰＩをバックエンドサービス（たとえばコネクタ）に接続するためのロジックを有し得る。ファイルの第２のセットはソフトウェアコードを有し得る。ソフトウェアコードは、ユーザ定義コード（高級プログラミング言語で記述されたもの）であってもよい。ＡＰＩは、ユーザ定義コードに対するエントリポイントを規定し得る。いくつかの例において、パッケージはまた、ＡＰＩがどのようにソフトウェアコードに対応しているかを示すバインディングを含み得る。たとえば、バインディングは、ＡＰＩからのコールによって、ソフトウェアコードの特定の部分が実行されることを示すことができる。バインディングはメタデータであってもよい。
【００６９】
ステップ４２０において、プロセス４００は、パッケージから、ファイルの第１のセットとファイルの第２のセットとを抽出することを含む。いくつかの例において、パッケージは少なくとも２つのアーカイブファイルパッケージを含み得る。そのコンテンツは相互参照される。各アーカイブファイルパッケージは、異なるエンティティセットに対応付けることができる。いくつかの例において、上記異なるエンティティセットはタイプが異なるものであってもよい。
【００７０】
ステップ４３０において、プロセス４００は、ファイルの第１のセットのロジックを用いてＡＰＩを作成することを含む。このＡＰＩは、モバイルクラウドサービス環境において作成してもよい。ステップ４４０において、プロセス４００は、ＡＰＩをバックエンドシステムに接続するためのロジックを用いて、ＡＰＩをクラウドサービス内のバックエンドサービスに接続することを含む。
【００７１】
ステップ４５０において、プロセス４００は、ファイルの第２のセットのソフトウェアコードをクラウドサービスのユーザ空間で実行することを含む。クラウドサービスのユーザ空間は、ターゲットモバイルクラウドサービス環境であってもよい。
【００７２】
図５は、モバイルデバイス上のクライアント側アプリケーションからサーバ側アプリケーションへの要求に応答するプロセス５００の一例を示すフローチャートである。いくつかの局面において、プロセス５００はモバイルクラウドサービスによって実行されてもよい。プロセス５００は論理フロー図として示されており、その動作は、ハードウェア、コンピュータ命令、またはその組合せにおいて実現し得る一連の動作を表す。コンピュータ命令という文脈において、上記動作はコンピュータによる実行が可能な命令を表し、この命令は、１つ以上のコンピュータ読取可能な記憶媒体に格納され、１つ以上のプロセッサによって実行されると、記載されている動作が実行される。一般的に、コンピュータによる実行が可能な命令は、特定の機能を果たすまたは特定のデータタイプを実現する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、その他を含む。これらの動作を説明する順序は、限定解釈されることを意図している訳ではなく、説明する動作のうち任意の数の動作を任意の順序でおよび／または並列に組み合わせて上記プロセスを実現してもよい。
【００７３】
加えて、プロセス５００は、実行可能な命令で構成された１つ以上のコンピュータシステムの制御下で実行されてもよく、コード（たとえば実行可能な命令、１つ以上のコンピュータプログラム、または１つ以上のアプリケーション）として実現されてもよい。上記コードは、１つ以上のプロセッサ上で、ハードウェアによって、またはこれらの組合せによって、集合的に実行される。先に述べたように、コードは、マシン読取可能な記憶媒体上に、たとえば１つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態で、格納されてもよい。マシン読取可能な記憶媒体は非一時的なものであってもよい。
【００７４】
ステップ５１０において、プロセス５００は、ファイアウォール通してモバイルデバイスからの要求を受けることを含む。ファイアウォールはモバイルクラウドサービスに関連付けられていてもよい。いくつかの例において、この要求は、モバイルデバイス上のクライアント側アプリケーションから送信されてもよい。この要求は、要求を処理すべきバックエンドシステム（またはサーバ側アプリケーション）の識別子を含み得る。この要求は、モバイルデバイスから遠隔サーバにオフロードすることができる、コンテンツ、処理、またはその他何らかの動作を対象とする要求であってもよい。
【００７５】
ステップ５２０において、プロセス５００は、第１の仮想マシンにおけるロジックに従い上記ＡＰＩを用いて上記要求を上記ソフトウェアコードにディスパッチすることを含む。いくつかの例において、ＡＰＩは、ファイアウォールの外側でバックエンドサービスに接続し得る。いくつかの例において、第１の仮想マシンにおけるロジックは、要求の最初の解決を処理することにより、この要求をどこにディスパッチするかを突き止めることができる。たとえば、第１の仮想マシンにおけるロジックは、この要求に関連付けられたモバイルバックエンドを特定することができる。第１の仮想マシンにおけるロジックは、ＡＰＩを特定することもできる。いくつかの例において、上記要求は、第２の仮想マシンにディスパッチされてもよい。第２の仮想マシンは、ソフトウェアコードが実行される場所であってもよい。いくつかの例において、ソフトウェアコードは、モバイルクラウドサービスの他の部分から隔離されたユーザサンドボックスエリアで実行されてもよい。
【００７６】
ステップ５３０において、プロセス５００は、上記ソフトウェアコードを用いて要求に対するレスポンスを生成することを含む。このレスポンスは、ソフトウェアコード内のロジックに基づいていてもよい。いくつかの例において、ソフトウェアコードは、バックエンドシステムを用いることによりレスポンスを生成してもよい。たとえば、ソフトウェアコードは、データベースを用いることにより、要求に応答するために使用する情報を受けてもよい。
【００７７】
ステップ５４０において、プロセス５００は、上記応答をバックエンドサービスからモバイルデバイスまでルーティングすることを含む。いくつかの例において、この応答は、第２の仮想マシンから第１の仮想マシンまでルーティングされる。次に、第１の仮想マシンが、この応答をモバイルデバイス上のクライアント側アプリケーションにルーティングしてもよい。
【００７８】
図６は、エンティティ間の関係の一例を示す図である。いくつかの例において、（上記）パッケージは、モバイルクラウドサービス環境内のエンティティ間の関係を再度形成して、１つ以上のエンティティがエクスポートされて異なるモバイルクラウドサービス環境にインポートされるようにすることができる。
【００７９】
図６の例はポリシー６２０を含む。ポリシー６２０は環境固有の構成であってもよい。ポリシー６２０は１つ以上の属性（たとえば名前（name）と値（value））を含み得る。名前は、メタデータにおいて所定のアーティファクトにより参照されて、環境固有の構成を追加することができる。ポリシーの例は、セッションプロパティおよび環境プロパティを含む。いくつかの例において、ポリシー６２０は、１つ以上の選択されたエンティティに対応するように自動的に選択されてもよい。
【００８０】
ポリシー６２０は、環境６２０内で保持（kept in）されてもよい。環境６２０は、顧客が有し得る異なるタイプの環境に関連付けられてもよい。たとえば、環境６２０は、テスト、開発、生産、またはその他の種類の環境であってもよい。いくつかの例において、環境は、他の環境から隔離されてもよい。いくつかの例において、環境は自立型（self-contained）であってもよい（たとえば、環境は、この環境のデータベースに、そのすべてのデータ含んでいてもよい）。いくつかの例において、環境６２０は、エンティティではなく、選択することもパッケージに含めることもできない。このような例において、パッケージは環境にインストールされ、これによって環境６２０が規定される。
【００８１】
ポリシー６２０はモバイルバックエンド６３０に関連付けられてもよい。モバイルバックエンド６３０は、ユーザによって選択されたエンティティであってもよく、または上記依存性解析によって決定されてもよい。モバイルバックエンド６３０は１つ以上の属性（たとえば名前およびモバイルバックエンド（ＭＢＥ）トークン（MBE token）を含み得る。
【００８２】
モバイルバックエンド６２０は、１つ以上のストレージコレクション（たとえばモバイルオブジェクトストア（ＭＯＳ）コレクション６３２およびユーザコレクション６３４）に関連付けられてもよい。いくつかの例において、モバイルバックエンド６２０はＭＯＳコレクション６３２を使用（use）してもよい。ＭＯＳコレクション６３２は、モバイルバックエンド６２０のためのストレージコンテナを提供し得る。ＭＯＳコレクション６３２は、モバイルクラウドサービスパッチ全体にわたる互換性を確実にするためにフレームワークバージョンナンバーを含んでいてもよい。ＭＯＳコレクション６３２は、ＭＯＳ  ＡＰＩを介してアクセス可能な、ユーザ定義名およびバージョンのコレクションのセットを提供することができる。
【００８３】
上記１つ以上のストレージコレクションはインスタンスデータの例であってもよい。インスタンスデータは、環境固有の実行時データであってもよい。インスタンスデータは、一般的に、顧客またはフレームワークコードによって実行時に作成される。いくつかの例において、インスタンスデータは、スクリプトまたは特別にサポートされるオペレーションの使用を通して構成時に作成されてもよい。上記１つ以上のストレージコレクション内のデータは、パッケージにエクスポートされてもされなくてもよい。上記１つ以上のストレージコレクションは、ユーザによって選択されてもよく、または上記依存性解析によって決定されてもよい。
【００８４】
いくつかの例において、ＭＯＳコレクション６２３内のユーザデータは、ロールによって、ユーザコレクション６３４内のユーザデータに関連付けられてもよい。このようなユーザデータは一般的に、ＭＯＳコレクション６２３のエクスポート時に転送されない。
【００８５】
モバイルバックエンド６２０はＡＰＩ６３８を含み得る。いくつかの例において、ＡＰＩ６３８は、メタデータリポジトリ内にあるＲＥＳＴｆｕｌ  ＡＰＩモデリング言語（RESTful API Modeling Language：ＲＡＭＬ）文書によって規定されてもよい。ＡＰＩ６３８はＲＡＭＬ文書をアーティファクト６４４に格納することができる。アーティファクト６４４は内部にデータを格納するシステムであってもよい。ソフトウェアコードは、先に述べたように、アーティファクト６４４に格納することもできる。ＡＰＩ６３８は、ユーザによって選択されてもよく、または上記依存性解析によって決定されてもよい。
【００８６】
ＡＰＩは、ＡＰＩインプリメンテーション６４０へのバインディング６４２を含み得る。バインディング６４２は、ユーザ定義コードに対するエントリポイントを示すことができる。このエントリポイントは、１つ以上のＡＰＩのためのものであってもよい。上記バインディングはメタデータであってもよい。バインディング６４２はパッケージ内のメタデータに含まれていてもよい。
【００８７】
ＡＰＩインプリメンテーション６４０はＡＰＩ６３８を実現する（implement）ことができる。たとえば、ＡＰＩインプリメンテーション６４２は、ＡＰＩ６３８のバージョンに対して実際のインプリメンテーションを提供することができる。いくつかの例において、ＡＰＩインプリメンテーション６４２を、ポリシー６１０を介してＡＰＩ６３８に関連付けて、環境レベルの結合を得てもよい。環境は複数のモバイルバックエンドをデプロイしている可能性があるので、同じＡＰＩの複数のバージョンを環境にデプロイすることにより、（ポリシーを介して）いつでもデプロイおよびマッピングされる複数のインプリメンテーションバージョンを得てもよい。ＡＰＩインプリメンテーションは、ユーザによって選択されてもよく、または上記依存性解析によって決定されてもよい。
【００８８】
コネクタ６４６は、ＡＰＩ６３８および／またはＡＰＩインプリメンテーション６４０を生成する（produce）ことができる。コネクタ６４６は、ＡＰＩと、構成と、関連するサービス／カスタムコードインプリメンテーションとのブレンドであってもよい。コネクタ６４６は、ユーザによって選択されてもよく、または上記依存性解析によって決定されてもよい。
【００８９】
図７は、分散システム７００の簡略図を示す。分散システム７００は、１つ以上のクライアントコンピューティングデバイス７０２、７０４、７０６、および７０８を含む。これらのクライアントコンピューティングデバイスは、ウェブブラウザ、プロプライエタリクライアント（たとえばOracle Forms）などを、１つ以上のネットワーク７１０上で実行し操作するように構成されている。サーバ７１２は、ネットワーク７１０を介して、遠隔のクライアントコンピューティングデバイス７０２、７０４、７０６、および７０８と通信可能に結合されていてもよい。
【００９０】
さまざまな例において、サーバ７１２は、システムの１つ以上のコンポーネントによって提供される１つ以上のサービスまたはソフトウェアアプリケーションを実行するように構成されてもよい。サービスまたはソフトウェアアプリケーションは非仮想および仮想環境を含むことができる。仮想環境は、二次元表現であれ三次元（３Ｄ）表現であれ、ページに基づく論理環境、またはその他であれ、仮想イベント、トレードショー、シミュレータ、クラスルーム、ショッピング交換、およびエンタープライズに対して用いられるものを含むことができる。いくつかの例において、これらのサービスは、ウェブに基づくサービスもしくはクラウドサービスとして、またはＳｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＳａａＳ）モデルの下で、クライアントコンピューティングデバイス７０２，７０４，７０６および／または７０８のユーザに対して提供されてもよい。クライアントコンピューティングデバイス７０２，７０４，７０６および／または７０８を動作させるユーザは、次いで、１つ以上のクライアントアプリケーションを利用してサーバ７１２と対話することにより、これらのコンポーネントによって提供されるサービスを利用してもよい。
【００９１】
図示される構成において、システム７００のソフトウェアコンポーネント７１８，７２０および７２２は、サーバ７１２上で実現されるものとして示される。他の例において、システム７００のコンポーネントの１つ以上および／またはこれらのコンポーネントによって提供されるサービスは、クライアントコンピューティングデバイス７０２，７０４，７０６および／または７０８のうちの１つ以上によって実現されてもよい。クライアントコンピューティングデバイスを動作させるユーザは、次いで、１つ以上のクライアントアプリケーションを利用して、これらのコンポーネントによって提供されるサービスを用いてもよい。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せにおいて実現されてもよい。分散型システム７００とは異なってもよいさまざまな異なるシステム構成が可能であることが理解されるはずである。図に示される例は、したがって、例示されるシステムを実現するための分散型システムの一例であり、限定を意図しているのではない。
【００９２】
クライアントコンピューティングデバイス７０２，７０４，７０６および／または７０８は、携帯可能な手持ち式の装置（たとえばｉＰｈｏｎｅ（登録商標）、セルラー電話、ｉＰａｄ（登録商標）、計算タブレット、携帯情報端末（ＰＤＡ））またはウェアラブルデバイス（たとえばＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）頭部装着型ディスプレイ）であってもよく、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  Ｍｏｂｉｌｅ（登録商標）などのようなソフトウェア、および／もしくは、ｉＯＳ、Ｗｉｎｄｏｗｓ  Ｐｈｏｎｅ(登録商標）、Ａｎｄｒｏｉｄ（登録商標）、ＢｌａｃｋＢｅｒｒｙ（登録商標）  １０、Ｐａｌｍ  ＯＳ（登録商標）などのようなさまざまなモバイルオペレーティングシステムを動作させ、インターネット、電子メール、ショートメッセージサービス（ＳＭＳ）、Ｂｌａｃｋｂｅｒｒｙ（登録商標）または他の通信プロトコルで可能化される。クライアントコンピューティングデバイスは汎用パーソナルコンピュータであることができ、たとえば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）および／またはＬｉｎｕｘ（登録商標）オペレーティングシステムのさまざまなバージョンを動作させるパーソナルコンピュータおよび／またはラップトップコンピュータを含む。クライアントコンピューティングデバイスは、たとえばＧｏｏｇｌｅ  Ｃｈｒｏｍｅ（登録商標）  ＯＳなどのようなさまざまなＧＮＵ／Ｌｉｎｕｘオペレーティングシステムを限定なく含む、さまざまな市場で入手可能なＵＮＩＸ（登録商標）またはＵＮＩＸのようなオペレーティングシステムの任意のものを動作させるワークステーションコンピュータであり得る。代替的に、または加えて、クライアントコンピューティングデバイス７０２，７０４，７０６および７０８は、ネットワーク７１０を介して通信することができる、シンクライントコンピュータ、インターネットにより可能化されるゲームシステム（たとえばＫｉｎｅｃｔ（登録商標）ジェスチャ入力装置を伴うかまたは伴わないＭｉｃｒｏｓｏｆｔ  Ｘｂｏｘゲームコンソール）および／または個人メッセージ伝達装置などのような任意の他の電子装置であってもよい。
【００９３】
例示的な分散型システム７００は４つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサを伴うデバイスなど、他のデバイスがサーバ７１２と対話してもよい。
【００９４】
分散型システム７００におけるネットワーク７１０は、ＴＣＰ／ＩＰ（伝送制御プロトコル／インターネットプロトコル）、ＳＮＡ（システムネットワーク体系）、ＩＰＸ（インターネットパケット交換）、ＡｐｐｌｅＴａｌｋなどを限定なしに含む、さまざまな市場で入手可能なプロトコルのうちの任意のものを用いてデータ通信をサポートすることができる、当業者が精通している任意のタイプのネットワークであってもよい。単なる例示として、ネットワーク７１０は、イーサネット（登録商標）、トークンリングなどに基づくものなどのような、ローカルエリアネットワーク（ＬＡＮ）であり得る。ネットワーク７１０はワイドエリアネットワークおよびインターネットであり得る。それは、仮想プライベートネットワーク（ＶＰＮ）、イントラネット、エクストラネット、公衆交換電話網（ＰＳＴＮ）、赤外線ネットワーク、無線ネットワーク（たとえば米国電気電子学会（ＩＥＥＥ）８０２．１１のプロトコル一式、Ｂｌｕｅｔｏｏｔｈ（登録商標）、および／もしくは任意の他の無線プロトコルのいずれかの下で動作するネットワーク）を限定なしに含む仮想ネットワーク；ならびに／またはこれらの任意の組合せおよび／もしくは他のネットワークを含み得る。
【００９５】
サーバ７１２は、１つ以上の汎用コンピュータ、特別化されたサーバコンピュータ（たとえばＰＣ（パーソナルコンピュータ）サーバ、ＵＮＩＸ（登録商標）サーバ、平均的なサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む）、サーバファーム、サーバクラスタ、または任意の他の適切な構成および／もしくは組合せからなってもよい。サーバ７１２は、仮想オペレーティングシステムを動作させる１つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含むことができる。１つ以上の論理記憶装置からなる柔軟なプールを仮想化してサーバのために仮想記憶装置を維持することができる。仮想ネットワークを、サーバ７１２によって、ソフトウェア定義のネットワーク接続を用いて制御することができる。さまざまな例において、サーバ７１２は、前述の開示に記載される１つ以上のサービスまたはソフトウェアアプリケーションを実行するように構成されてもよい。たとえば、サーバ７１２は、本開示の例に従って上記の処理を実行するためのサーバに対応してもよい。
【００９６】
サーバ７１２は、先に述べたもののうちのいずれかを含むオペレーティングシステム、および市場で入手可能な任意のサーバオペレーティングシステムを実行してもよい。サーバ７１２は、さらに、ＨＴＴＰ（ハイパーテキスト・トランスポート・プロトコル）サーバ、ＦＴＰ（ファイル転送プロトコル）サーバ、ＣＧＩ（コモンゲートウェイインターフェイス）サーバ、ＪＡＶＡ（登録商標）サーバ、データベースサーバなどを含むさまざまなさらなるサーバアプリケーションおよび／または中間層アプリケーションのうちの任意のものを実行してもよい。例示的なデータベースサーバは、限定なしに、Ｏｒａｃｌｅ、Ｍｉｃｒｏｓｏｆｔ、Ｓｙｂａｓｅ、ＩＢＭ（インターナショナルビジネスマシンズ）などから市販されているものを含む。
【００９７】
いくつかの実現例では、サーバ７１２は、１つ以上のアプリケーションを含んで、クライアントコンピューティングデバイス７０２，７０４，７０６および７０８のユーザから受信されるデータフィードおよび／またはイベント更新を解析および整理統合してもよい。一例として、データフィードおよび／またはイベント更新は、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能計量ツール（たとえばネットワーク監視およびトラフィック管理アプリケーション）、クリックストリーム解析ツール、自動車交通監視などに関係する実時間イベントを含んでもよい、１つ以上の第三者情報源および連続的なデータストリームから受信される、Ｔｗｉｔｔｅｒ（登録商標）フィード、Ｆａｃｅｂｏｏｋ（登録商標）更新または実時間更新を含んでもよいが、それらに限定はされない。サーバ７１２は、さらに、１つ以上のアプリケーションを含んで、データフィードおよび／または実時間イベントをクライアントコンピューティングデバイス７０２，７０４，７０６および７０８の１つ以上の表示装置を介して表示してもよい。
【００９８】
分散型システム７００は、さらに、１つ以上のデータベース７１４および７１６を含んでもよい。データベース７１４および７１６はさまざまな位置にあってもよい。例として、データベース７１４および７１６の１つ以上はサーバ７１２に局在する（および／またはサーバ７１２に常駐する）非一時的な記憶媒体にあってもよい。代替的に、データベース７１４および７１６は、サーバ７１２から遠隔にあり、ネットワークに基づくかまたは専用の接続を介してサーバ７１２と通信状態にあってもよい。１組の例において、データベース７１４および７１６は記憶域ネットワーク（ＳＡＮ）にあってもよい。同様に、サーバ７１２に帰する機能を実行するための任意の必要なファイルが、適切に、サーバ７１２上においてローカルに、および／または遠隔で記憶されてもよい。１組の例において、データベース７１４および７１６はＯｒａｃｌｅによって提供されるデータベースのような、ＳＱＬフォーマットされたコマンドに応答してデータを格納、更新および取り出すように構成されたリレーショナルデータベースを含んでもよい。
【００９９】
図８は、１つ以上のコンポーネントによって提供されるサービスがクラウドサービスとして提供されてもよいシステム環境８００の１つ以上のコンポーネントの簡略ブロック図である。示される例において、システム環境８００は、クラウドサービスを提供するクラウドインフラストラクチャシステム８０２と対話するようユーザによって用いられてもよい１つ以上のクライアントコンピューティングデバイス８０４，８０６および８０８を含む。クライアントコンピューティングデバイスは、クラウドインフラストラクチャシステム８０２と対話して、クラウドインフラストラクチャシステム８０２によって提供されるサービスを用いるよう、クライアントコンピューティングデバイスのユーザによって用いられてもよい、ウェブブラウザ、所有権付きクライアントアプリケーション（たとえばOracle Forms）または何らかの他のアプリケーションなどのようなクライアントアプリケーションを動作させるよう構成されてもよい。
【０１００】
図に示されるクラウドインフラストラクチャシステム８０２は図示されるもの以外のコンポーネントを有してもよいことが理解されるべきである。さらに、図に示される例は、本開示の一例を組み込んでもよいクラウドインフラストラクチャシステムの一例に過ぎない。いくつかの他の例において、クラウドインフラストラクチャシステム８０２は、図に示されるよりも多いかもしくは少ないコンポーネントを有してもよく、２つ以上のコンポーネントを組み合わせてもよく、またはコンポーネントの異なる構成もしくは配置を有してもよい。
【０１０１】
クライアントコンピューティングデバイス８０４，８０６および８０８は、７０２，７０４，７０６および７０８に対して上記されたものと同様のデバイスであってもよい。例示的なシステム環境８００は３つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサを伴うデバイスなどのような他のデバイスがクラウドインフラストラクチャシステム８０２と対話してもよい。
【０１０２】
ネットワーク８１０はクライアント８０４，８０６および８０８とクラウドインフラストラクチャシステム８０２との間におけるデータの通信および交換を容易にし得る。各ネットワークは、ネットワーク７１０に対して上記されたものを含む、さまざまな市場で入手可能なプロトコルの任意のものを用いてデータ通信をサポートすることができる、当業者が精通している任意のタイプのネットワークであってもよい。
【０１０３】
クラウドインフラストラクチャシステム８０２は、サーバ７１２に対して上記されたものを含んでもよい１つ以上のコンピュータおよび／またはサーバを備えてもよい。
【０１０４】
特定の例において、クラウドインフラストラクチャシステムによって提供されるサービスは、オンラインデータストレージおよびバックアップソリューション、ウェブに基づくｅメールサービス、運営管理されるオフィススイートおよびドキュメントコラボレーションサービス、データベース処理、管理される技術サポートサービスなどのような、オンデマンドでクラウドインフラストラクチャシステムのユーザに利用可能にされるサービスのホストを含んでもよい。クラウドインフラストラクチャシステムによって提供されるサービスは動的にスケーリングしてそのユーザのニーズを満たすことができる。クラウドインフラストラクチャシステムによって提供されるあるサービスのある具体的なインスタンス化は本明細書では「サービスインスタンス」と呼ばれる。一般的に、クラウドサービスプロバイダのシステムからインターネットなどのような通信ネットワークを介してユーザに利用可能にされる任意のサービスは「クラウドサービス」と呼ばれる。典型的には、パブリックなクラウド環境においては、クラウドサービスプロバイダのシステムを形成するサーバおよびシステムは顧客自身のオンプレミスのサーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムはアプリケーションを運営管理してもよく、ユーザは、インターネットなどのような通信ネットワークを介して、オンデマンドで、アプリケーションをオーダーし使用してもよい。
【０１０５】
いくつかの例では、コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、ストレージ、運営管理されるデータベース、運営管理されるウェブサーバ、ソフトウェアアプリケーション、またはクラウドベンダーによってユーザに提供されるかもしくは他の態様で当該技術分野において公知であるような他のサービスに対する保護されたコンピュータネットワークアクセスを含んでもよい。たとえば、サービスは、クラウド上の遠隔ストレージに対するインターネットを介してのパスワード保護されたアクセスを含むことができる。別の例として、サービスは、ネットワーク接続された開発者による個人的な使用のために、ウェブサービスに基づく運営管理されたリレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含むことができる。別の例として、サービスは、クラウドベンダーのウェブサイトにおいて運営管理されるｅメールソフトウェアアプリケーションに対するアクセスを含むことができる。
【０１０６】
特定の例において、クラウドインフラストラクチャシステム８０２は、セルフサービスの、サブスクリプションに基づく、順応性を持ってスケーラブルで、信頼性があり、非常に利用可能性があり、およびセキュリティ上安全な態様で顧客に対して配送されるアプリケーションの組、ミドルウェア、データベースサービス提供を含んでもよい。そのようなクラウドインフラストラクチャシステムの一例は本譲受人によって提供されるＯｒａｃｌｅ  Ｐｕｂｌｉｃ  Ｃｌｏｕｄである。
【０１０７】
時としてビッグデータとも称される大量のデータは、インフラストラクチャシステムによって、多数のレベルにおいて、および異なるスケールで運営管理および／または操作され得る。そのようなデータは、非常に大きくかつ複雑であるため典型的なデータベース管理ツールまたは従来のデータ処理アプリケーションを用いて処理することが困難であり得るデータセットを含み得る。たとえば、テラバイトのデータはパーソナルコンピュータまたはそれらのラックベースの対応物を用いて記憶、検索取得および処理することは難しいかもしれない。そのようなサイズのデータは、最も流通しているリレーショナルデータベース管理システムおよびデスクトップ統計および視覚化パッケージを用いて扱うことは困難であり得る。それらは、データを許容可能な経過時間内に捕捉しキュレーションし管理し処理するよう、一般的に用いられるソフトウェアツールの構造を超えて、何千ものサーバコンピュータを動作させる巨大に並列な処理ソフトウェアを必要とし得る。
【０１０８】
極端に大きなデータセットは、解析および研究者によって記憶および操作されることにより、大量のデータを視覚化し、傾向を検出し、および／または他の態様でデータと対話することができる。並列にリンクされた何十、何百または何千ものプロセッサが、そのようなデータに作用して、それを呈示するか、またはそのデータもしくはそれが表現するものに対する外部の力をシミュレーションすることができる。これらのデータセットは、データベースにおけるかまたは他の態様で構造化されたモデルに従って編成されたもののような構造化されたデータ、および／または構造化されないデータ（たとえばｅメール、画像、データブロブ（バイナリラージオブジェクト）、ウェブページ、複雑なイベント処理）を伴い得る。より多い（またはより少ない）計算資源を目標に相対的に迅速に集中させる一例の能力をてこ入れすることによって、クラウドインフラストラクチャシステムは、ビジネス、行政機関、研究組織、私人、同じ意見の個人もしくは組織のグループ、または他のエンティティからの要望に基づいて大きなデータセットに対してタスクを実行するよう、よりよく利用可能であってもよい。
【０１０９】
さまざまな例において、クラウドインフラストラクチャシステム８０２は、クラウドインフラストラクチャシステム８０２によって提供されるサービスに対する顧客のサブスクリプションを自動的にプロビジョニング、管理、およびトラッキングするように構成されてもよい。クラウドインフラストラクチャシステム８０２はクラウドサービスを異なる開発モデルを介して提供してもよい。たとえば、サービスは、クラウドインフラストラクチャシステム８０２が（たとえばＯｒａｃｌｅによって所有される）クラウドサービスを販売する組織によって所有され、サービスが一般大衆または異なる業界エンタープライズに対して利用可能にされるパブリッククラウドモデルの下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム８０２が単一の組織に対してのみ動作され、その組織内における１つ以上のエンティティに対してサービスを提供してもよい、プライベートクラウドモデルの下で提供されてもよい。クラウドサービスは、さらに、クラウドインフラストラクチャシステム８０２およびクラウドインフラストラクチャシステム８０２によって提供されるサービスが関係付けられるコミュニティにおけるいくつかの組織によって共有されるコミュニティクラウドモデルの下で提供されてもよい。クラウドサービスは、さらに、２つ以上の異なるモデルの組合せであるハイブリッドクラウドモデルの下で提供されてもよい。
【０１１０】
いくつかの例において、クラウドインフラストラクチャシステム８０２によって提供されるサービスは、Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＳａａＳ）カテゴリ、Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＰａａＳ）カテゴリ、Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＩａａＳ）カテゴリ、またはハイブリッドサービスを含む他のサービスのカテゴリの下で提供される、１つ以上のサービスを含んでもよい。顧客は、サブスクリプションオーダーを介して、クラウドインフラストラクチャシステム８０２によって提供される１つ以上のサービスをオーダーしてもよい。クラウドインフラストラクチャシステム８０２は、次いで、処理を実行して、顧客のサブスクリプションオーダーにおけるサービスを提供する。
【０１１１】
いくつかの例において、クラウドインフラストラクチャシステム８０２によって提供されるサービスは、限定を伴わずに、アプリケーションサービス、プラットフォームサービスおよびインフラストラクチャサービスを含んでもよい。いくつかの例では、アプリケーションサービスはクラウドインフラストラクチャシステムによってＳａａＳプラットフォームを介して提供されてもよい。ＳａａＳプラットフォームは、ＳａａＳカテゴリに入るクラウドサービスを提供するよう構成されてもよい。たとえば、ＳａａＳプラットフォームは、一式のオンデマンドアプリケーションを統合された開発およびデプロイプラットフォーム上で構築し配送する能力を提供してもよい。ＳａａＳプラットフォームは、ＳａａＳサービスを提供するための基底のソフトウェアおよびインフラストラクチャを管理および制御してもよい。ＳａａＳプラットフォームによって提供されるサービスを利用することによって、顧客はクラウドインフラストラクチャシステムにおいて実行されるアプリケーションを利用することができる。顧客は、別のライセンスおよびサポートを購入する必要なくアプリケーションサービスを獲得することができる。さまざまな異なるＳａａＳサービスが提供されてもよい。その例は、限定を伴うことなく、大きな組織に対する売上実績管理、エンタープライズ統合、および事業柔軟性に対するソリューションを提供するサービスを含む。
【０１１２】
いくつかの例において、プラットフォームサービスはクラウドインフラストラクチャシステムによってＰａａＳプラットフォームを介して提供されてもよい。ＰａａＳプラットフォームはＰａａＳカテゴリの下におけるクラウドサービスを提供するよう構成されてもよい。プラットフォームサービスの例は、限定を伴わずに、（Ｏｒａｃｌｅなどのような）組織が既存のアプリケーションを共有される共通のアーキテクチャにおいて整理統合することができるサービス、およびプラットフォームによって提供される共有されるサービスをてこ入れする新たなアプリケーションを構築する能力を含んでもよい。ＰａａＳプラットフォームはＰａａＳサービスを提供するための基底のソフトウェアおよびインフラストラクチャを管理および制御してもよい。顧客は、クラウドインフラストラクチャシステムによって提供されるＰａａＳサービスを、別のライセンスおよびサポートを購入する必要なく獲得することができる。プラットフォームサービスの例は、限定を伴わずに、Ｏｒａｃｌｅ  Ｊａｖａ  Ｃｌｏｕｄ  Ｓｅｒｖｉｃｅ（ＪＣＳ）、Ｏｒａｃｌｅ  Ｄａｔａｂａｓｅ  Ｃｌｏｕｄ  Ｓｅｒｖｉｃｅ（ＤＢＣＳ）などを含む。
【０１１３】
ＰａａＳプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムによってサポートされるプログラミング言語およびツールを使用することができ、デプロイされたサービスを制御することもできる。いくつかの例において、クラウドインフラストラクチャシステムによって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス（たとえばＯｒａｃｌｅ  Ｆｕｓｉｏｎ（登録商標）  Ｍｉｄｄｌｅｗａｒｅサービス）、およびＪａｖａクラウドサービスを含んでもよい。一例において、データベースクラウドサービスは、組織がデータベース資源をプールし、顧客にＤａｔａｂａｓｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅをデータベースクラウドの形式で提供することを可能にする、共有されるサービスデプロイモデルをサポートしてもよい。ミドルウェアクラウドサービスは、顧客のためのプラットフォームを提供してさまざまなビジネスアプリケーションを開発およびデプロイしてもよく、Ｊａｖａクラウドサービスは顧客のためのプラットフォームを提供してＪａｖａアプリケーションをクラウドインフラストラクチャシステムにおいてデプロイしてもよい。
【０１１４】
さまざまな異なるインフラストラクチャサービスがＩａａＳプラットフォームによってクラウドインフラストラクチャシステムにおいて提供されてもよい。インフラストラクチャサービスは、ＳａａＳプラットフォームおよびＰａａＳプラットフォームによって提供されるサービスを利用する顧客に対するストレージ、ネットワーク、他の基礎的計算資源などのような基底の計算資源の管理および制御を容易にする。
【０１１５】
特定の例において、クラウドインフラストラクチャシステム８０２は、さらに、クラウドインフラストラクチャシステムの顧客に対してさまざまなサービスを提供するよう用いられる資源を提供するためのインフラストラクチャ資源８３０を含んでもよい。一例において、インフラストラクチャ資源８３０は、ＰａａＳプラットフォームおよびＳａａＳプラットフォームによって提供されるサービスを実行するよう、サーバ、ストレージおよびネットワーク接続資源などのような、ハードウェアの予め統合され最適化された組合せを含んでもよい。
【０１１６】
いくつかの例において、クラウドインフラストラクチャシステム８０２における資源は、複数のユーザによって共有され、要望に付き動的に再割当てされてもよい。加えて、資源はユーザに対して異なる時間ゾーンで割当てられてもよい。たとえば、クラウドインフラストラクチャシステム８３０は、第１の時間ゾーンにおける第１の組のユーザがクラウドインフラストラクチャシステムの資源をある特定化された時間数の間利用することを可能にし、次いで、異なる時間ゾーンに位置する別の組のユーザに対する同じ資源の再割当てを可能にし、それによって、資源の利用を最大限にしてもよい。
【０１１７】
特定の例において、クラウドインフラストラクチャシステム８０２の異なるコンポーネントまたはモジュール、およびクラウドインフラストラクチャシステム８０２によって提供されるサービスによって共有される、ある数の内部の共有されるサービス８３２が提供されてもよい。これらの内部の共有されるサービスは、限定を伴うことなく、セキュリティおよびアイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性、バックアップおよびリカバリサービス、クラウドサポートを可能にするためのサービス、ｅメールサービス、通知サービス、ファイル転送サービスなどを含んでもよい。
【０１１８】
特定の例において、クラウドインフラストラクチャシステム８０２は、クラウドインフラストラクチャシステムにおいてクラウドサービス（たとえばＳａａＳ、ＰａａＳ、およびＩａａＳサービス）の包括的な管理を提供してもよい。一例において、クラウド管理機能は、クラウドインフラストラクチャシステム８０２によって受信される顧客のサブスクリプションをプロビジョニングし、管理し、およびトラッキングする能力などを含んでもよい。
【０１１９】
一例において、図に示されるように、クラウド管理機能は、オーダー管理モジュール８２０、オーダーオーケストレーションモジュール８２２、オーダープロビジョニングモジュール８２４、オーダー管理および監視モジュール８２６、ならびにアイデンティティ管理モジュール８２８などのような１つ以上のモジュールによって提供されてもよい。これらのモジュールは、１つ以上のコンピュータおよび／またはサーバを含むかもしくはそれらを用いて提供されてもよく、それらは汎用コンピュータ、特殊化されたサーバコンピュータ、サーバファーム、サーバクラスタ、または任意の他の適切な構成および／もしくは組合せであってもよい。
【０１２０】
例示的な動作８３４においては、クライアントデバイス８０４、８０６または８０８などのようなクライアントデバイスを用いる顧客は、クラウドインフラストラクチャシステム８０２によって提供される１つ以上のサービスを要求すること、およびクラウドインフラストラクチャシステム８０２によって提供される１つ以上のサービスに対するサブスクリプションに対するオーダーを行うことによって、クラウドインフラストラクチャシステム８０２と対話してもよい。特定の例において、顧客は、クラウドユーザインターフェイス（ＵＩ）、クラウドＵＩ８１２、クラウドＵＩ８１４および／またはクラウドＵＩ８１６にアクセスし、サブスクリプションオーダーをこれらのＵＩを介して行ってもよい。顧客がオーダーを行うことに応答してクラウドインフラストラクチャシステム８０２によって受取られるオーダー情報は、顧客を識別する情報、およびクラウドインフラストラクチャシステム８０２によって提供される、その顧客が利用することを意図する１つ以上のサービスを含んでもよい。
【０１２１】
オーダーが顧客によってなされた後、オーダー情報はクラウドＵＩ８１２、８１４および／または８１６を介して受取られてもよい。
【０１２２】
動作８３６において、オーダーはオーダーデータベース８１８に格納される。オーダーデータベース８１８は、クラウドインフラストラクチャシステム８１８によって動作されるいくつかのデータベースの１つであり得、他のシステム要素との関連において動作され得る。
【０１２３】
動作８３８で、オーダー情報はオーダー管理モジュール８２０に転送される。いくつかの例では、オーダー管理モジュール８２０は、オーダーを検証すること、および検証でそのオーダーを予約することなど、オーダーに関係付けられる請求および課金機能を実行するよう構成されてもよい。
【０１２４】
動作８４０で、オーダーに関する情報がオーダーオーケストレーションモジュール８２２に通信される。オーダーオーケストレーションモジュール８２２は、オーダー情報を利用して、顧客によってなされたオーダーに対してサービスおよび資源のプロビジョニングをオーケストレーションしてもよい。いくつかの例では、オーダーオーケストレーションモジュール８２２は、資源のプロビジョニングをオーケストレーションして、利用されるサービスを、オーダープロビジョニングモジュール８２４のサービスを用いてサポートしてもよい。
【０１２５】
特定の例において、オーダーオーケストレーションモジュール８２２は、各オーダーに関連付けられるビジネスプロセスの管理を可能にし、ビジネスロジックを適用して、オーダーがプロビジョニングに進むべきかどうかを判断する。動作８４２で、新たなサブスクリプションに対するオーダーが受取られると、オーダーオーケストレーションモジュール８２２は、オーダープロビジョニングモジュール８２４に対して、資源を割当て、サブスクリプションオーダーを満たすよう必要とされる資源を構成するよう、要求を送る。オーダープロビジョニングモジュール８２４は、顧客によってオーダーされたサービスに対する資源の割当てを可能にする。オーダープロビジョニングモジュール８２４は、クラウドインフラストラクチャシステム８００によって提供されるクラウドサービスと、要求されたサービスを提供するための資源をプロビジョニングするよう用いられる物理的インプリメンテーション層との間におけるある抽象レベルを与える。オーダーオーケストレーションモジュール８２２は、したがって、サービスおよび資源がオンザフライで実際にプロビジョニングされるか、または予めプロビジョニングされ、要求でのみ割当て／分配されるかどうかなど、インプリメンテーション詳細から隔離されてもよい。
【０１２６】
動作８４４で、サービスおよび資源がプロビジョニングされると、提供されるサービスの通知が、クラウドインフラストラクチャシステム８０２のオーダープロビジョニングモジュール８２４によってクライアントデバイス８０４、８０６および／または８０８における顧客に送信されてもよい。
【０１２７】
動作８４６で、顧客のサブスクリプションオーダーはオーダー管理および監視モジュール８２６によって管理およびトラッキングされてもよい。いくつかの例では、オーダー管理および監視モジュール８２６は、用いられるストレージの量、転送されるデータ量、ユーザの数、システムアップ時間およびシステムダウン時間の量などのような、サブスクリプションオーダーにおけるサービスに対する使用統計を収集するよう構成されてもよい。
【０１２８】
特定の例において、クラウドインフラストラクチャシステム８００はアイデンティティ管理モジュール８２８を含んでもよい。アイデンティティ管理モジュール８２８は、クラウドインフラストラクチャシステム８００におけるアクセス管理および承認サービスなどのようなアイデンティティサービスを提供するよう構成されてもよい。いくつかの例において、アイデンティティ管理モジュール８２８は、クラウドインフラストラクチャシステム８０２によって提供されるサービスを利用することを望む顧客についての情報を制御してもよい。そのような情報は、そのような顧客のアイデンティティを認証する情報、およびそれらの顧客がさまざまなシステム資源（たとえばファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど）に対してどのアクションを実行するよう承認されるかを記述する情報を含むことができる。アイデンティティ管理モジュール８２８は、さらに、各顧客についての記述的情報およびどのように誰によってその記述的情報がアクセスおよび修正され得るかの管理を含んでもよい。
【０１２９】
図９は、本発明のさまざまな例が実現され得る例示的なコンピュータシステム９００を示す。システム９００は、上記コンピュータシステムのうちのいずれかを実現するよう用いられてもよい。図に示されるように、コンピュータシステム９００は、バスサブシステム９０２を介して複数の周辺サブシステムと通信する処理ユニット９０４を含む。これらの周辺サブシステムは、処理加速ユニット９０６、Ｉ／Ｏサブシステム９０８、ストレージサブシステム９１８および通信サブシステム９２４を含んでもよい。ストレージサブシステム９１８は有形のコンピュータ読取可能記憶媒体９２２およびシステムメモリ９１０を含む。
【０１３０】
バスサブシステム９０２は、コンピュータシステム９００のさまざまなコンポーネントおよびサブシステムに意図されるように互いと通信させるための機構を提供する。バスサブシステム９０２は概略的に単一のバスとして図示されているが、バスサブシステムの代替例は複数のバスを利用してもよい。バスサブシステム９０２は、さまざまなバスアーキテクチャのうちの任意のものを用いるメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスを含むいくつかのタイプのバス構造のうちの任意のものであってもよい。たとえば、そのようなアーキテクチャは、産業標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、エンハンストＩＳＡ（ＥＩＳＡ）バス、ビデオエレクトロニクス標準組織（ＶＥＳＡ）ローカルバス、および周辺コンポーネントインターコネクト（ＰＣＩ）バス、を含んでもよく、ＩＥＥＥ  Ｐ１３８６．１規格に従って製造される中二階バスとして実現され得る。
【０１３１】
処理ユニット９０４は、１つ以上の統合された回路（たとえば従来のマイクロプロセッサまたはマイクロコントローラ）として実現されることができ、コンピュータシステム９００の動作を制御する。１つ以上のプロセッサが処理ユニット９０４に含まれてもよい。これらのプロセッサは単一コアまたはマルチコアプロセッサを含んでもよい。特定の例において、処理ユニット９０４は、１つ以上の独立した処理ユニット９３２および／または９３４として、単一または複数コアのプロセッサが各処理ユニットに含まれる状態で実現されてもよい。他の例において、処理ユニット９０４は、さらに、２つのデュアルコアプロセッサを単一のチップに統合することによって形成されるクワッドコア処理ユニットとして実現されてもよい。
【０１３２】
さまざまな例において、処理ユニット９０４はさまざまなプログラムをプログラムコードに応答して実行することができ、複数の同時に実行されるプログラムまたはプロセスを維持することができる。任意の所与の時間において、実行されるべきプログラムコードの一部またはすべてがプロセッサ９０４および／またはストレージサブシステム９１８に常駐することができる。好適なプログラミングを介して、プロセッサ９０４は上記のさまざまな機能を提供することができる。コンピュータシステム９００はさらに処理加速ユニット９０６を含んでもよく、それはデジタル信号プロセッサ（ＤＳＰ）、特殊目的プロセッサなどを含むことができる。
【０１３３】
Ｉ／Ｏサブシステム９０８はユーザインターフェイス入力装置およびユーザインターフェイス出力装置を含んでもよい。ユーザインターフェイス入力装置は、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれるタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力装置、マイクロフォン、および他のタイプの入力装置を含んでもよい。ユーザインターフェイス入力装置は、たとえば、ユーザがジェスチャおよび話し言葉コマンドを用いて自然なユーザインターフェイスを介してＭｉｃｒｏｓｏｆｔ  Ｘｂｏｘ（登録商標）３６０ゲームコントローラなどのような入力装置を制御しそれと対話することを可能にするＭｉｃｒｏｓｏｆｔ  Ｋｉｎｅｃｔ（登録商標）モーションセンサなどのようなモーション感知および／またはジェスチャ認識装置を含んでもよい。ユーザインターフェイス入力装置は、さらに、ユーザから目の活動（たとえば写真を撮る、および／またはメニュー選択を行っている間の「瞬き」）を検出し、目の動きを入力装置（たとえばＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標））への入力として変換するＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）瞬き検出器などのような目のジェスチャ認識装置を含んでもよい。さらに、ユーザインターフェイス入力装置は、ユーザが音声コマンドを介して音声認識システム（たとえばＳｉｒｉ（登録商標）ナビゲータ）と対話することを可能にする音声認識感知装置を含んでもよい。
【０１３４】
ユーザインターフェイス入力装置は、さらに、限定を伴わずに、三次元（３Ｄ）マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ３Ｄスキャナ、３Ｄプリンタ、レーザレンジファインダ、および視線追跡装置などのような聴覚／視覚装置を含んでもよい。加えて、ユーザインターフェイス入力装置は、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、医療超音波検査装置などのような医療画像化入力装置を含んでもよい。ユーザインターフェイス入力装置は、さらに、たとえば、ＭＩＤＩキーボード、デジタル音楽機器などのような音声入力装置を含んでもよい。
【０１３５】
ユーザインターフェイス出力装置は、ディスプレイサブシステム、インジケータライト、または音声出力装置のような非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）またはプラズマディスプレイを使うもののようなフラットパネルデバイス、投影装置、タッチスクリーンなどであってもよい。一般に、「出力装置」という語の使用は、コンピュータシステム７００からユーザまたは他のコンピュータに情報を出力するためのすべての考えられ得るタイプの装置および機構を含むよう意図される。たとえばユーザインターフェイス出力装置は、限定を伴うことなく、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力装置およびモデムなどのような、テキスト、グラフィックスおよび音声／映像情報を視覚的に伝えるさまざまな表示装置を含んでもよい。
【０１３６】
コンピュータシステム９００は、システムメモリ９１０内に現在位置するとして示される、ソフトウェア要素を含むストレージサブシステム９１８を含んでもよい。システムメモリ９１０は、処理ユニット９０４においてロード可能および実行可能であるプログラム命令、ならびにこれらのプログラムの実行中に生成されるデータを記憶してもよい。
【０１３７】
コンピュータシステム９００の構成およびタイプによっては、システムメモリ９１０は（ランダムアクセスメモリ（ＲＡＭ））など揮発性であってもよく、および／または（リードオンリメモリ（ＲＯＭ）、フラッシュメモリなど）不揮発性であってもよい。ＲＡＭは典型的には、処理ユニット９０４に即座にアクセス可能であり、および／もしくは処理ユニット９０４によって現在動作および実行されている、データならびに／またはプログラムモジュールを含む。いくつかの実現例では、システムメモリ９１０は、スタティックランダムアクセスメモリ（ＳＲＡＭ）またはダイナミックランダムアクセスメモリ（ＤＲＡＭ）などのような複数の異なるタイプのメモリを含んでもよい。いくつかの実現例では、起動中などのように、コンピュータシステム９００内における要素間において情報の転送を助ける基本的なルーチンを含む基本的な入力／出力システム（ＢＩＯＳ）が、典型的にはＲＯＭに記憶されてもよい。例として、限定ではなく、システムメモリ９１０は、さらに、アプリケーションプログラム９１２を示し、それは、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム（ＲＤＢＭＳ）など、プログラムデータ９１４およびオペレーティングシステム９１６を含んでもよい。例として、オペレーティングシステム９１６は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）および／もしくはＬｉｎｕｘ（登録商標）オペレーティングシステムのさまざまなバージョン、さまざまな市場で入手可能なＵＮＩＸ（登録商標）またはＵＮＩＸのようなオペレーティングシステム（さまざまなＧＮＵ／Ｌｉｎｕｘオペレーティングシステム、Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ（登録商標）ＯＳなどを含むが限定されない）、ならびに／またはｉＯＳ、Ｗｉｎｄｏｗｓ  Ｐｈｏｎｅ（登録商標）、Ａｎｄｒｏｉｄ（登録商標）  ＯＳ、ＢｌａｃｋＢｅｒｒｙ（登録商標）  １０  ＯＳ、およびＰａｌｍ（登録商標）  ＯＳなどのようなモバイルオペレーティングシステムを含んでもよい。
【０１３８】
ストレージサブシステム９１８は、いくつかの例の機能を提供する基本的なプログラミングおよびデータ構造を記憶するための有形のコンピュータ読取可能記憶媒体を提供してもよい。プロセッサによって実行されると上記の機能を提供するソフトウェア（プログラム、コードモジュール、命令）がストレージサブシステム９１８に記憶されてもよい。これらのソフトウェアモジュールまたは命令は処理ユニット９０４によって実行されてもよい。ストレージサブシステム９１８は、さらに、本発明に従って用いられるデータを記憶するためのリポジトリを提供してもよい。
【０１３９】
ストレージサブシステム９００は、さらに、コンピュータ読取可能記憶媒体９２２にさらに接続され得るコンピュータ読取可能記憶媒体リーダ９２０を含んでもよい。システムメモリ９１０とともに、およびオプションとしてシステムメモリ９１０との組合せで、コンピュータ読取可能記憶媒体９２２は、コンピュータ読取可能情報を一時的および／またはより永続的に含み、記憶し、送信し、および検索取得するための、遠隔の、ローカルな、固定された、および／またはリムーバブルな記憶装置に記憶媒体を加えたものを包括的に表現してもよい。
【０１４０】
コードまたはコードの一部を含むコンピュータ読取可能記憶媒体９２２は、さらに、情報の記憶および／または送信のための任意の方法または技術において実現される揮発性および不揮発性の、リムーバブルおよび非リムーバブルな媒体などであるがそれらに限定はされない、記憶媒体および通信媒体を含む、当該技術分野において公知であるかまたは用いられる任意の適切な媒体を含むことができる。これは、ＲＡＭ、ＲＯＭ、電子的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、または他の有形のコンピュータ読取可能媒体などのような、有形の、非一時的なコンピュータ読取可能記憶媒体を含むことができる。指定される場合には、これは、さらに、所望の情報を送信するよう用いられることができ、コンピューティングシステム９００によってアクセスされることができる、データ信号、データ伝送または任意の他の媒体のような、非有形の一時的なコンピュータ読取可能媒体を含むことができる。
【０１４１】
例として、コンピュータ読取可能記憶媒体９２２は、非リムーバブルの、不揮発性磁気媒体において読出または書込を行うハードディスクドライブ、リムーバブルの不揮発性磁気ディスクにおいて読出または書込を行う磁気ディスクドライブ、およびＣＤ  ＲＯＭ、ＤＶＤ、およびブルーレイ（登録商標）ディスク、もしくは他の光媒体などのようなリムーバブルの不揮発性光ディスクにおいて読出または書込を行う光ディスクドライブを含んでもよい。コンピュータ読取可能記憶媒体１０２２は、Zip（登録商標）ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブ、セキュアデジタル（ＳＤ）カード、ＤＶＤディスク、デジタルビデオテープなどを含んでもよいがそれらに限定はされない。コンピュータ読取可能記憶媒体９２２は、さらに、フラッシュメモリに基づくＳＳＤなどのような不揮発性メモリ、エンタープライズフラッシュドライブ、ソリッドステートＲＯＭなどに基づくソリッドステートドライブ（ＳＳＤ）、ソリッドステートＲＡＭ、ダイナミックＲＡＭ、スタティックＲＡＭ、ＤＲＡＭに基づくＳＳＤ、磁気抵抗ＲＡＭ（ＭＲＡＭ）ＳＳＤなどのような揮発性メモリに基づくＳＳＤ、ならびにＤＲＡＭおよびフラッシュメモリに基づくＳＳＤの組合せを用いるハイブリッドＳＳＤを含んでもよい。ディスクドライブおよびそれらの関連のコンピュータ読取可能媒体は、コンピュータシステム９００のためのコンピュータ読取可能命令、データ構造、プログラムモジュールおよび他のデータの不揮発性記憶を提供してもよい。
【０１４２】
通信サブシステム９２４は、他のコンピュータシステムおよびネットワークへのインターフェイスを与える。通信サブシステム９２４は、他のシステムとコンピュータシステム９００との間のデータの送受のためのインターフェイスとして働く。たとえば、通信サブシステム９２４は、コンピュータシステム９００がインターネットを介して１つ以上の装置に接続することを可能にしてもよい。いくつかの例において、通信サブシステム９２４は、（たとえばセルラー電話技術、３Ｇ、４ＧもしくはＥＤＧＥ（グローバル進化のための高速データレート）などのような先進データネットワーク技術、ＷｉＦｉ（ＩＥＥＥ８０２．１１ファミリー規格、もしくは他のモバイル通信技術、またはそれらの任意の組合せを用いて）無線音声および／またはデータネットワークにアクセスするための無線周波数（ＲＦ）送受信機コンポーネント、グローバルポジショニングシステム（ＧＰＳ）受信機コンポーネント、ならびに／または他のコンポーネントを含むことができる。いくつかの例において、通信サブシステム９２４は無線インターフェイスに加えて、またはそれに代わって、有線ネットワーク接続（たとえばイーサネット）を提供することができる。
【０１４３】
いくつかの例において、通信サブシステム９２４は、さらに、コンピュータシステム９００を用い得る１人以上のユーザのために、入力通信を、構造化されたデータフィードおよび／または構造化されないデータフィード９２６、イベントストリーム９２８、イベント更新９３０などの形式で受信してもよい。
【０１４４】
例として、通信サブシステム９２４は、データフィード９２６を、実時間で、Ｔｗｉｔｔｅｒ（登録商標）フィード、Ｆａｃｅｂｏｏｋ（登録商標）更新、Ｒｉｃｈ  Ｓｉｔｅ  Ｓｕｍｍａｒｙ（ＲＳＳ）フィードなどのようなウェブフィード、および／もしくは１つ以上の第三者情報源からの実時間更新などのようなソーシャルメディアネットワークおよび／または他の通信サービスのユーザから受信するよう構成されてもよい。
【０１４５】
加えて、通信サブシステム９２４は、さらに、データを、明示的な端部を有さない本質的に連続的または無限であってもよい、実時間イベントのイベントストリーム９２８および／またはイベント更新９３０を含んでもよい、連続データストリームの形式で受信するよう構成されてもよい。連続データを生成するアプリケーションの例は、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール（たとえばネットワーク監視およびトラフィック管理アプリケーション）、クリックストリーム解析ツール、自動車交通監視などを含んでもよい。
【０１４６】
通信サブシステム９２４は、さらに、構造化されたデータフィードおよび／または構造化されないデータフィード９２６、イベントストリーム９２８、イベント更新９３０などを、コンピュータシステム９００に結合される１つ以上のストリーミングデータソースコンピュータとの通信状態にあってもよい１つ以上のデータベースに出力するよう構成されてもよい。
【０１４７】
コンピュータシステム９００は、手持ち式の携帯装置（たとえばｉＰｈｏｎｅ（登録商標）セルラーフォン、ｉＰａｄ（登録商標）コンピューティングタブレット、ＰＤＡ）、ウェアラブルデバイス（Ｇｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）頭部装着型ディスプレイ）、ＰＣ、ワークステーション、メインフレーム、キオスク、サーバラック、または任意の他のデータ処理システムを含む、さまざまなタイプのもののうちの１つであり得る。
【０１４８】
常に変化するコンピュータおよびネットワークの性質のため、図に示されるコンピュータシステム９００の記載は具体的な例としてのみ意図される。図に示されるシステムより多いかまたは少ないコンポーネントを有する数多くの他の構成が可能である。たとえば、カスタマイズされたハードウェアも用いられるかもしれず、および／または特定の要素がハードウェア、ファームウェア、ソフトウェア（アプレットを含む）、またはある組合せにおいて実現されるかもしれない。さらに、ネットワーク入力／出力装置などのような他のコンピューティングデバイスへの接続も用いられてもよい。ここに与えられる開示および教示に基づいて、当業者はさまざまな例を実現する他の態様および／または方法を理解する。
【０１４９】
上記明細書において、局面がその特定の例を参照して記載されているが、当業者はこの記載がそれに限定されないことを認識する。上記さまざまな特徴および局面は、個別にまたは一緒に用いられてもよい。さらに、例は、明細書のより広い精神および範囲から逸脱することなく、本明細書に記載されるものを超えて、任意の数の環境およびアプリケーションにおいて利用することができる。明細書および図面はしたがって、限定ではなく例示と見なされねばならない。
【図１】
2019511785.tif 000003
【図２】
2019511785.tif 000004
【図３】
2019511785.tif 000005
【図４】
2019511785.tif 000006
【図５】
2019511785.tif 000007
【図６】
2019511785.tif 000008
【図７】
2019511785.tif 000009
【図８】
2019511785.tif 000010
【図９】
2019511785.tif 000011
【国際調査報告】
2019511785.tif 000012
2019511785.tif 000013
2019511785.tif 000014
2019511785.tif 000015