特許第6871943号(P6871943)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ オラクル・インターナショナル・コーポレイションの特許一覧

特許6871943モバイルクラウドサービスのための予め形成された命令
<>
  • 特許6871943-モバイルクラウドサービスのための予め形成された命令 図000002
  • 特許6871943-モバイルクラウドサービスのための予め形成された命令 図000003
  • 特許6871943-モバイルクラウドサービスのための予め形成された命令 図000004
  • 特許6871943-モバイルクラウドサービスのための予め形成された命令 図000005
  • 特許6871943-モバイルクラウドサービスのための予め形成された命令 図000006
  • 特許6871943-モバイルクラウドサービスのための予め形成された命令 図000007
  • 特許6871943-モバイルクラウドサービスのための予め形成された命令 図000008
  • 特許6871943-モバイルクラウドサービスのための予め形成された命令 図000009
  • 特許6871943-モバイルクラウドサービスのための予め形成された命令 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6871943
(24)【登録日】2021年4月20日
(45)【発行日】2021年5月19日
(54)【発明の名称】モバイルクラウドサービスのための予め形成された命令
(51)【国際特許分類】
   G06F 8/60 20180101AFI20210510BHJP
   G06F 8/61 20180101ALI20210510BHJP
   G06F 9/445 20180101ALI20210510BHJP
【FI】
   G06F8/60
   G06F8/61
   G06F9/445
【請求項の数】13
【全頁数】37
(21)【出願番号】特願2018-550735(P2018-550735)
(86)(22)【出願日】2016年10月26日
(65)【公表番号】特表2019-511785(P2019-511785A)
(43)【公表日】2019年4月25日
(86)【国際出願番号】US2016058912
(87)【国際公開番号】WO2017171932
(87)【国際公開日】20171005
【審査請求日】2019年9月19日
(31)【優先権主張番号】62/314,149
(32)【優先日】2016年3月28日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】モキーブ,アレクセイ・バシリエビッチ
(72)【発明者】
【氏名】バン・デ・ルー,カイ
【審査官】 坂庭 剛史
(56)【参考文献】
【文献】 特開2013−037696(JP,A)
【文献】 特表2013−502013(JP,A)
【文献】 特表2015−534167(JP,A)
【文献】 米国特許出願公開第2016/0072789(US,A1)
【文献】 登尾徳誠,スマートフォン開発最新トレンド[最終回]Parseでらくらくアプリ開発;BaaSを使ってサーバ側の処理をクラウド化,WEB+DB PRESS Vol.79,日本,株式会社技術評論社,2014年 3月25日,初版,pp.122−129,ISBN978-4-7741-6287-4
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/60
G06F 8/61
G06F 9/445
(57)【特許請求の範囲】
【請求項1】
予め形成された命令セットをモバイルクラウドサービスに導入する方法であって、
アーカイブファイルパッケージから、ファイルの第1のセットとファイルの第2のセットとを抽出するステップを含み、前記ファイルの第1のセットは、アプリケーションプログラミングインターフェイス(API)を作成するため、および、前記APIをバックエンドサービスに接続するためのロジックを有し、前記ファイルの第2のセットは、ソフトウェアコードを有し、
前記ファイルの第1のセットの前記ロジックを用いてAPIを作成するステップと、
前記APIをバックエンドサービスに接続するためのロジックを用いて、前記APIをクラウドサービス内のバックエンドサービスに接続するステップと、
前記ファイルの第2のセットの前記ソフトウェアコードを前記クラウドサービスのユーザ空間で実行するステップとを含む、方法。
【請求項2】
ファイアウォールを通してモバイルデバイスから要求を受けるステップと、
第1の仮想マシンにおけるロジックに従い前記APIを用いて前記要求を前記ソフトウェアコードにディスパッチするステップとをさらに含み、前記APIは、前記ファイアウォールの外側で前記バックエンドサービスに接続し、
前記ソフトウェアコードを用いて前記要求に対するレスポンスを生成するステップをさらに含み、前記ソフトウェアコードは第2の仮想マシンにあり、前記ソフトウェアコードはユーザサンドボックスエリアにあり、
前記レスポンスを前記バックエンドサービスから前記モバイルデバイスまでルーティングするステップをさらに含む、請求項1に記載の方法。
【請求項3】
前記要求は、前記モバイルデバイス上のクライアント側アプリケーションによって送信される、請求項2に記載の方法。
【請求項4】
前記アーカイブファイルパッケージを遠隔デバイスから受信するステップをさらに含む、請求項1からのいずれか1項に記載の方法。
【請求項5】
前記ソフトウェアコードはユーザによって定義される、請求項1からのいずれか1項に記載の方法。
【請求項6】
前記ユーザ空間は、前記ソフトウェアコードを、前記クラウドサービスのその他の部分から隔離する、請求項1からのいずれか1項に記載の方法。
【請求項7】
予め形成された命令セットをモバイルクラウドサービスに導入するためのシステムであって、前記システムは、
1つ以上のプロセッサと、
前記1つ以上のプロセッサによって実行されると前記1つ以上のプロセッサに以下の動作を実行させる命令を含む非一時的なコンピュータ読取可能な媒体とを備え、前記動作は、
アーカイブファイルパッケージから、ファイルの第1のセットとファイルの第2のセッ
トとを抽出することを含み、前記ファイルの第1のセットは、アプリケーションプログラミングインターフェイス(API)を作成するため、および、前記APIをバックエンドサービスに接続するためのロジックを有し、前記ファイルの第2のセットは、ソフトウェアコードを有し、
前記ファイルの第1のセットの前記ロジックを用いてAPIを作成することと、
前記APIをバックエンドサービスに接続するためのロジックを用いて、前記APIをクラウドサービス内のバックエンドサービスに接続することと、
前記ファイルの第2のセットの前記ソフトウェアコードを前記クラウドサービスのユーザ空間で実行することとを含む、システム。
【請求項8】
前記1つ以上のプロセッサによって実行されると前記1つ以上のプロセッサに以下の動作を実行させる命令をさらに含み、前記動作は、
ファイアウォールを通してモバイルデバイスから要求を受けることと、
第1の仮想マシンにおけるロジックに従い前記APIを用いて前記要求を前記ソフトウェアコードにディスパッチすることとを含み、前記APIは、前記ファイアウォールの外側で前記バックエンドサービスに接続し、
前記ソフトウェアコードを用いて前記要求に対するレスポンスを生成することを含み、前記ソフトウェアコードは第2の仮想マシンにあり、前記ソフトウェアコードはユーザサンドボックスエリアにあり、
前記レスポンスを前記バックエンドサービスから前記モバイルデバイスまでルーティングすることを含む、請求項に記載のシステム。
【請求項9】
前記要求は、前記モバイルデバイス上のクライアント側アプリケーションによって送信される、請求項に記載のシステム。
【請求項10】
前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに、
前記アーカイブファイルパッケージを遠隔デバイスから受信する動作を実行させる命令をさらに含む、請求項7から9のいずれか1項に記載のシステム。
【請求項11】
前記ソフトウェアコードはユーザによって定義される、請求項から10のいずれか1項に記載のシステム。
【請求項12】
前記ユーザ空間は、前記ソフトウェアコードを、前記クラウドサービスのその他の部分から隔離する、請求項から11のいずれか1項に記載のシステム。
【請求項13】
コンピュータによって実行されると、前記コンピュータに請求項1からのいずれか1項に記載の方法を実行させる1つ以上の命令を備えるコンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【0001】
関連出願の相互参照
本願は、2016年3月28日に出願され「Mobile Cloud Service (MCS) Templates」と題された米国仮特許出願第62/314,149号の利益およびそれに基づく優先権を主張し、その開示全体をあらゆる目的のために本明細書に引用により援用する。
【0002】
著作権
本特許文献の開示の一部には、著作権保護の対象となるものが含まれている。著作権者は、この特許文献または特許開示の何者かによる複製が、特許商標庁の特許ファイルまたは記録にある限り、それに対して異議を唱えないが、そうでなければ、いかなる場合もすべての著作権を留保する。
【0003】
背景
モバイルアプリケーションは通常、サーバと通信しコンテンツを決定して携帯電話に表示することによって動作する。携帯電話およびサーバはいずれもモバイルアプリケーションの一部を含み得る。サーバ上のこの部分(サーバ側アプリケーションと呼ばれることもある)は、携帯電話上のこの部分(クライアント側アプリケーションと呼ばれることもある)からの要求に対して応答することができる。いくつかの例において、この要求はハイパーテキスト・トランスファー・プロトコル(HTTP)を使用することができる。サーバ側アプリケーションは一般的に、パーシステントデータを格納することができ、携帯電話のユーザからは見ることができない。クライアント側アプリケーションは、携帯電話に含まれていてもよく、ユーザ入力を含む1つ以上の入力に対して応答することができる。クライアント側アプリケーションは、ハイパーテキスト・マークアップ言語(HTML)、カスケーディングスタイルシート(cascading style sheets:CSS)、またはJavaScript(登録商標)を用いることができる。
【0004】
いくつかの例において、サーバ側アプリケーションは、クライアント側アプリケーションがサーバ側アプリケーションと通信できるようにするプログラミングインターフェイス(たとえばアプリケーションプログラミングインターフェイス)を含み得る。サーバ側アプリケーションはさらに、クライアント側アプリケーションからの通信に対する応答に関連付けられたソフトウェアコードのうちの少なくとも1つ以上と、サーバ側アプリケーションを1つ以上のバックエンドシステム(たとえばデータベース)に接続する1つ以上のコネクタとを含み得る。1つ以上のコネクタは、バックエンドシステムからデータを受けたときにクライアント側アプリケーションによって携帯電話上で見るためにデータをフォーマットし成形することもできる。
【発明の概要】
【0005】
簡単な概要
本開示は、概してモバイルアプリケーションのサーバ側部分を提供するための、システム、方法、およびコンピュータ読取可能な媒体に関する。特に、モバイルアプリケーションに簡単に接続できるサーバ側アプリケーションをインポートおよびエクスポートするためのプロセスを提供する。サーバ側アプリケーションは、モバイルアプリケーションに関連付けられたカスタムコードのうちの少なくとも1つ以上と、サーバ側アプリケーションとクライアント側アプリケーションとの間でのやり取りのためのプログラミングインターフェイスとを含み得る。サーバ側アプリケーションはさらに、サーバ側アプリケーションとバックエンドシステムとの間のインターフェイスのための1つ以上のコネクタを含み得る。
【0006】
予め形成された命令セットをモバイルクラウドサービスに導入するための、デバイス、コンピュータプログラムプロダクト、および方法を提供する。たとえば、方法は、ファイルの第1のセットとファイルの第2のセットとを抽出するステップを含み得る。いくつかの例において、ファイルの第1のセットおよびファイルの第2のセットは、アーカイブファイルパッケージから抽出することができる。いくつかの例において、ファイルの第1のセットは、アプリケーションプログラミングインターフェイス(application programming interface:API)を作成するためのロジックを含み得る。このような例において、ファイルの第1のセットはまた、APIをバックエンドサービスに接続するためのロジックを含み得る。いくつかの例において、ファイルの第2のセットはソフトウェアコードを含み得る。いくつかの例において、アーカイブファイルパッケージは遠隔デバイスから受けることができる。
【0007】
この方法はさらに、ファイルの第1のセットのロジックを用いてAPIを作成するステップと、APIをクラウドサービス内のバックエンドサービスに接続するステップとを含み得る。いくつかの例において、APIは、APIをバックエンドサービスに接続するためのロジックを用いて接続することができる。この方法はさらに、ファイルの第2のセットのソフトウェアコードをクラウドサービスのユーザ空間で実行するステップを含み得る。
【0008】
いくつかの実装例において、この方法は、モバイルデバイスから要求を受けるステップをさらに含み得る。いくつかの例において、この要求はファイアウォールを通して受けることができる。このような例において、この要求は、サーバ側アプリケーションからの情報またはデータをクエリすることができる。このような例において、この方法は、上記要求を、第1の仮想マシンにおけるロジックに従いAPIを用いてソフトウェアコードにディスパッチするステップをさらに含み得る。このような例において、APIは、ファイアウォールの外側でバックエンドサービスに接続し得る。いくつかの例において、この方法は、ソフトウェアコードを用いて上記要求に対するレスポンスを生成するステップをさらに含み得る。このような例において、ソフトウェアコードはさらに含、第2の仮想マシンのユーザサンドボックスエリア内で実行することができる。この方法はさらに、上記応答をバックエンドサービスからモバイルデバイスにルーティングするステップを含み得る。
【0009】
これまでに使用されている用語および表現は、限定のためではなく説明のために使用されている。このような用語および表現を使用する意図は、示され説明されている特徴またはその一部の何らかの均等物を除外することではない。しかしながら、クレームされているシステムおよび方法の範囲の中でさまざまな修正が可能であることがわかる。よって、本システムおよび方法は例と任意の特徴とによって具体的に開示されているが本明細書に開示される概念の修正および変形は当業者が想到し得るものであること、ならびに、このような修正および変形は添付の請求項によって定められるシステムおよび方法の範囲に含まれると考えられることが、理解されるはずである。
【0010】
この概要は、クレームしている主題の重要または本質的な特徴を特定することを意図しているのではなく、クレームしている主題の範囲を決めるために単独で使用されることを意図しているのでもない。当該主題は、この特許の明細書全体のうちの適切な部分、いずれかまたはすべての図面、および各請求項の参照によって理解されねばならない。
【0011】
これまでに述べたことを、他の特徴および例とともに、以下の明細書、請求項、および添付の図面において、より詳しく説明する。
【図面の簡単な説明】
【0012】
図1】コンピューティング環境のブロック図の一例を示す図である。
図2】サーバ側アプリケーションの一例を示す図である。
図3】サーバ側アプリケーションのためのパッケージを作成するプロセスの一例を示すフローチャートである。
図4】サーバ側アプリケーションのパッケージをインストールするプロセスの一例を示すフローチャートである。
図5】モバイルデバイス上のクライアント側アプリケーションからサーバ側アプリケーションへの要求に応答するプロセスの一例を示すフローチャートである。
図6】エンティティ間の関係の一例を示す図である。
図7】分散型システムの簡略図を示す。
図8】システム環境のコンポーネントの簡略ブロック図であり、この環境により、当該コンポーネントから提供されるサービスはクラウドサービスとして提供され得る。
図9】典型的なコンピュータシステムを示す図であり、このシステムにより、1つ以上のコンポーネントから提供されるサービスはクラウドサービスとして提供され得る。
【発明を実施するための形態】
【0013】
詳細な説明
以下、説明のために、この開示の例が十分に理解されるよう、具体的な詳細事項を述べる。しかしながら、さまざまな例はこれらの具体的な詳細事項がなくても実施し得ることは明白であろう。図面および説明は限定を意図したものではない。
【0014】
下記説明は、例のみを提供し、この開示の範囲、可用性、または構成を制限することを意図しているのではない。むしろ、下記の例の説明は、実施を可能にする説明を当業者に提供するであろう。要素の機能および構成は、添付の請求項に記載されている本明細書の精神および範囲から逸脱することなく、さまざまに変更し得ることが、理解されるはずである。
【0015】
実施例が十分に理解されるよう、以下の説明は具体的な詳細事項を示す。しかしながら、これらの実施例は上記具体的な詳細事項がなくても実施し得ることを当業者は理解するであろう。たとえば、回路、システム、ネットワーク、プロセス、およびその他のコンポーネントは、実施例が不必要な詳細によって曖昧にならないよう、ブロック図形態のコンポーネントとして示す場合がある。それ以外の場合、周知の回路、プロセス、アルゴリズム、構造、および技術は、実施例が曖昧にならないよう、不必要な詳細なしで示す場合がある。
【0016】
また、個々の実施例は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスとして説明される場合があることに注意されたい。フローチャートは動作を連続プロセスとして説明し得るが、動作の多くは並列または同時に実行することができる。加えて、これらの動作の順序は並べ替えられる場合がある。プロセスは、その動作が完了したときに終了するが、図面には含まれていない追加のステップを有し得る。プロセスは、方法、関数、手順、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応する場合、このプロセスの終了は、関数がコール関数またはメイン関数に戻ることに対応し得る。
【0017】
「マシン読取可能な記憶媒体」または「コンピュータ読取可能な記憶媒体」という用語は、ポータブルまたは非ポータブル記憶装置、光学記憶装置、ならびに、命令および/またはデータを格納する、含む、または持つことができる、その他さまざまな媒体を含むが、これらに限定されない。マシン読取可能な記憶媒体またはコンピュータ読取可能な記憶媒体は、非一時的な媒体を含み得る。非一時的な媒体は、データを格納することができる媒体であり、無線でまたは無線接続を通して伝搬する搬送波および/または一時的な電子信号を含まない。非一時的な媒体の例は、磁気ディスクまたはテープ、コンパクトディスク(CD)もしくはデジタル多目的ディスク(DVD)等の光学記憶媒体、フラッシュメモリ、メモリまたはメモリデバイスを含み得るが、これらに限定されない。コンピュータプログラムプロダクトは、コードおよび/またはマシンが実行可能な命令を含み得る。これは、手順、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または、命令、データ構造、もしくはプログラムステートメントを組み合わせたものを表し得る。コードセグメントは、別のコードセグメントまたはハードウェア回路に、情報、データ、引数、パラメータ、またはメモリコンテンツを送るおよび/または受けることによって結合し得る。情報、引数、パラメータ、データなどは、メモリシェアリング、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む何らかの適切な手段を介して、送る、転送する、または送信することができる。
【0018】
さらに、実施例は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはこれらの何らかの組合せによって実現し得る。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実現された場合、必要なタスク(たとえばコンピュータプログラムプロダクト)を実行するためのプログラムコードまたはコードセグメントは、マシン読取可能な媒体に格納されてもよい。プロセッサは必要なタスクを実行し得る。
【0019】
図面のうちのいくつかに示すシステムは、さまざまな構成で提供し得る。いくつかの例において、これらのシステムは、分散型システムとして構成し得る。その場合、システムの1つ以上のコンポーネントを、クラウドコンピューティングシステムにおいて、1つ以上のネットワークにわたって分散させる。
【0020】
コンポーネントが特定の動作を実行するように「構成」されていると説明する場合、そのような構成は、たとえば、電子回路またはその他のハードウェアを、この動作を実行するように設計することによって、または、プログラマブル電子回路(たとえばマイクロプロセッサもしくはその他適切な電子回路)をプログラミングすることによって、または、その組合せによって、実現することができる。
【0021】
本開示は、概して、モバイルアプリケーションのサーバ側部分を提供するための、システム、方法、およびコンピュータ読取可能な媒体に関する。特に、モバイルアプリケーションに簡単に接続できるサーバ側アプリケーションをインポートおよびエクスポートするためのプロセスを提供する。サーバ側アプリケーションは、モバイルアプリケーションに関連付けられたカスタムコード、および、サーバ側アプリケーションとクライアント側アプリケーションとの間のやり取りのためのプログラミングインターフェイス、のうちの、少なくとも1つ以上を含み得る。サーバ側アプリケーションはさらに、サーバ側アプリケーションとバックエンドシステムとの間のインターフェイスへの1つ以上のコネクタを含み得る。
【0022】
図1は、モバイルコンピューティングデバイス102と、クラウドコンピューティングシステム140およびオンプレミスエンタープライズコンピュータシステム150等の1つ以上のエンタープライズコンピュータシステムとの間の通信を容易にするためのコンピューティング環境100のブロック図の一例を示す。そのような通信は、エンタープライズデータをやり取りまたは転送すること、エンタープライズコンピュータシステムから提供されるサービスを要求すること、メッセージを伝達すること、またはこれらの組合せであってもよい。
【0023】
エンタープライズコンピュータシステムは、エンティティまたはエンタープライズのために動作するように構成されるさまざまなコンピューティングシステムを含んでもよい。たとえば、エンタープライズコンピュータシステムは、サービスに対する要求を処理するよう、エンタープライズサーバコンピュータ(たとえば、バックエンドサーバコンピュータ)などの、1つ以上のコンピュータシステムを含んでもよい。エンタープライズコンピュータシステムは、エンタープライズデータを用いて処理および/または動作が可能なアプリケーションおよび/またはサービスを含んでもよい。たとえば、エンタープライズコンピュータシステム150は、エンタープライズを管理または動作させるための1つ以上のサービスおよび/またはアプリケーションを提供してもよい。サービスは、顧客関係性管理(customer relationship management:CRM)、人的資本管理(human capital management:HCM)、人的リソース(human resource:HR)管理、サプライチェーン管理、エンタープライズ通信、電子メール通信、業務サービス、他のエンタープライズ管理サービスもしくはアプリケーション、またはそれらの組合せを含んでもよい。エンタープライズコンピュータシステム150は、1つ以上のサービスを提供するための専用の1つ以上のコンピュータシステムを含み得るが、これらに限定されない。いくつかの例では、あるサービスを提供する異なるコンピュータシステムは各々、エンタープライズのオンプレミスにあってもよく、またはエンタープライズから遠隔地にあってもよい。いくつかの例では、異なるサービスをサポートする複数の異なるコンピュータシステムは、エンタープライズのオンプレミスなどのような、単一の地理的な位置にあってもよい。図1に示される例では、オンプレミスのエンタープライズコンピュータシステム150は、HRシステム154およびCRMシステム156を含んでもよく、それらの両方がエンタープライズのオンプレミスに位置してもよい。いくつかの例では、エンタープライズコンピュータシステム150は、エージェントシステム152を含むかまたは実現することによって、クラウドコンピュータシステム110と1つ以上のエンタープライズシステム154,156との間における通信を容易にするかまたは処理してもよい。クラウドエンタープライズコンピュータシステム140およびオンプレミスエンタープライズコンピュータシステム150などのようなエンタープライズコンピュータシステムについて、以下にさらに詳細に記載する。
【0024】
コンピュータ環境100は、コンピューティングデバイス102と1つ以上のエンタープライズコンピュータシステムとの間における通信を容易にし得るセキュアな仲介コンピューティング環境として動作するよう実現されるモバイルクラウドサービス(mobile cloud service:「MCS」)112を含んでもよい。なぜならば、コンピューティングデバイス102は、そのようなエンタープライズコンピュータシステムと通信するようには構成されないかもしれないからである。たとえば、いくつかのエンタープライズコンピュータシステムは、レガシーまたはバックエンドコンピュータシステムによってサポートされてもよい。そのようなシステムは、異なる通信および/またはセキュリティプロトコルを用いて動作するよう構成されてもよい。そのようなエンタープライズコンピュータシステムによってサポートされるプロトコルは、モバイルコンピューティングデバイスによってサポートされるものとは異なってもよい。MCS112は、異なるタイプのモバイルコンピューティングデバイスとの通信をサポートしてもよい。したがって、MCS112は、エンタープライズコンピュータシステムとモバイルコンピューティングデバイスとの間における通信を容易にするよう、技術を実現して、それらが、フォーマットまたは通信プロトコル間における違いなどのような、それらの通信における非互換性にも係わらず、互いと通信できるようにしてもよい。たとえば、MCS112は、モバイルコンピューティングデバイスとエンタープライズコンピュータシステムとの間で通信プロトコルを翻訳し得る。
【0025】
クラウドコンピュータシステム110はMCS112をサポートし得る。クラウドコンピュータシステム110は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せを用いて実現されてもよい。たとえば、クラウドコンピュータシステム110は、サーバコンピュータなどのような1つ以上のコンピューティングデバイスを含んでもよい。クラウドコンピュータシステム110は1つ以上のメモリ記憶装置および1つ以上のプロセッサを含んでもよい。メモリ記憶装置は、プロセッサにとってアクセス可能であり得、そこに記憶される命令を含むことができ、それらは、プロセッサによって実行されると、プロセッサに本明細書に開示される1つ以上の動作を実行させる。いくつかの例では、メモリ記憶装置はローカルストレージ(たとえばキャッシュ)として動作してもよい。クラウドコンピュータシステム110は異なる種類のオペレーティングシステムを含んでもよい。メモリ記憶装置はプロセッサにとってアクセス可能であってもよく、そこに記憶される命令を含んでもよく、それらは、プロセッサによって実行されると、プロセッサに本明細書に開示される1つ以上の動作、方法またはプロセスを実行させる。メモリ記憶装置はローカルストレージとして動作してもよい。ローカルストレージは、メモリ記憶装置または他のコンピュータ読取可能記憶媒体などのような任意のタイプの永続的な記憶装置を用いて実現されてもよい。いくつかの例では、ローカルストレージは、1つ以上のデータベース(たとえばドキュメントデータベース、リレーショナルデータベースまたは他のタイプのデータベース)、1つ以上のファイルストア、1つ以上のファイルシステム、またはそれらの組合せを含むかまたは実現してもよい。ローカルストレージはエンタープライズデータを記憶してもよい。
【0026】
特定の例では、クラウドコンピュータシステム110は、メタデータリポジトリ124、診断ストア126および解析ストア128などの1つ以上のデータストアを含んでもよい。データストア124,126,128は、クラウドコンピュータシステム110におけるいずれのコンポーネントによってアクセス可能であってもよい。
【0027】
メタデータリポジトリ124は、MCS112に関連付けられるすべてのメタデータを記憶してもよい。この情報は、実行時データおよび設計時データの両方からで構成されてもよく、それらの各々は利用可能性および性能の両方においてそれら自身の要件を有する。MCS112のテナントまたはサブスクライバは任意の数のアプリケーション(本明細書ではサーバ側アプリケーションと言う場合がある)を有してもよい。各アプリケーションはバージョン化されてもよく、それらのリソースアプリケーションプログラミングインターフェイス(API)が契約する、関連付けられる0以上のバージョン化されたリソースAPIおよび0以上のバージョン化されたサービスインプリメンテーションを有してもよい。これらのエンティティは、実行時が使用して仮想要求(mAPI)を具体的なサービスインプリメンテーション(サービス)にマッピングするものである。このマッピングは、モバイル開発者が自身のアプリケーションを設計および構築する際に実際のインプリメンテーションサービスを知る必要がないため、モバイル開発者にとって贅沢なものである。さらに、すべてのサービスバグ修正において新たなアプリケーションを再発行する必要もない。メタデータリポジトリ124は1つ以上の呼出し可能インターフェイスを記憶してもよく、それらはコンピューティングデバイス(たとえばコンピューティングデバイス102)によって呼出されてもよい。呼出し可能インターフェイスは、MCS112との通信を容易にするよう、アプリケーションのユーザ(たとえば開発者)によってカスタマイズ可能であってもよい。メタデータリポジトリ124は、呼出し可能インターフェイスの1つ以上の構成に対応するメタデータを記憶してもよい。メタデータリポジトリ124は、呼出し可能インターフェイスを実現するためのメタデータを記憶するように構成されてもよい。呼出し可能インターフェイスは、通信のための1つのフォーマット、プロトコルまたはアーキテクチャのスタイルと通信のための他のフォーマット、プロトコルまたはアーキテクチャのスタイルとの間において翻訳するよう実現されてもよい。メタデータリポジトリ124は、認証されたユーザによって、外部のネットワークを介して修正可能であってもよい。
【0028】
サーバ側アプリケーションを用いて、モバイルアプリケーションに関連付けられた動作を遠隔で実行することができる。たとえば、サーバ側アプリケーションは、モバイルアプリケーションによるデータ要求に応答し、モバイルアプリケーションに関連付けられた情報を格納し、コンテンツをモバイルアプリケーションに送信することができる。いくつかの例において、サーバ側アプリケーションはモバイルアプリケーションとして機能することができる。
【0029】
いくつかの例において、MCS112はバックエンドシステムをさらに含み得る。バックエンドシステムは、サーバ側アプリケーションによる動作の実行を支援することができる。たとえば、バックエンドシステムは、情報が格納される、計算が実行される、またはその他何らかのアクションが実行されることでサーバ側アプリケーションを補足する場所であってもよい。このような例において、サーバ側アプリケーションは、ネットワーク(たとえばインターネット)を用いてバックエンドシステムと通信することができる。
【0030】
診断ストア126は、MCS112において生じる処理についての診断情報を記憶してもよい。診断ストア126は、MCS112を介して通信されるメッセージおよびログ情報を記憶してもよい。解析ストア128は、システムにおける処理中に捕捉されたロギングおよび解析データを記憶してもよい。
【0031】
MCS112の代わりに、クラウドコンピュータシステム110はその計算リソースを利用してカスタムコード116(たとえば動作、アプリケーション、方法、ファンクション、ルーチンなど)の実行を可能にし得る。いくつかの例において、カスタムコードはユーザサンドボックスエリアで実行することができる。ユーザサンドボックスエリアは、ユーザサンドボックスエリア内で実行されるコードを隔離する環境であってもよい。いくつかの例において、ユーザサンドボックスエリアは、コードの実行をパラメータ化しそれ自身の中に封じ込める環境であってもよい。計算リソースは、使用のために、MCS112のサブスクライバまたはテナントとして関連付けられる特定のユーザに関して、割当てられてもよい。リソースは、ユーザ、デバイス、アプリケーション、またはサブスクライバに関係付けられる他の基準に関して割当てられてもよい。MCS112は、エンタープライズコンピュータシステムと通信することを求めるモバイルコンピューティングデバイスの要望に応じて、スケールインまたはスケールアウトされてもよい。MCS112は、モバイルコンピューティングデバイスとエンタープライズコンピュータシステムとの間における通常のトラフィックよりも高いサージおよび一時的な期間を処理するよう柔軟性をもつように構成され得る。いくつかの例では、MCS112は、通信における要望を満足させるようコンポーネントが追加または置換され得るようにスケーラビリティをサポートする要素を含んでもよい。
【0032】
コンピューティングデバイス102は、エンタープライズコンピュータシステムによって提供されるサービスを要求するようにMCS112と通信してもよい(たとえば要求メッセージを送信してもよい)。コンピューティングデバイス102(たとえばモバイルコンピューティングデバイス)は、ハードウェア、ファームウェア、ソフトウェアまたはそれらの組合せを用いて実現されてもよい。コンピューティングデバイス102は、MCS112を介してエンタープライズコンピュータシステム140,150と通信してもよい。コンピューティングデバイス102は、エンドポイントデバイス、パーソナルデジタルアシスタント(personal digital assistant:PDA)、タブレットコンピュータ、ラップトップコンピュータ、モバイルコンピューティングデバイス、デスクトップコンピュータ、ウェアラブルコンピュータ、ページャなどを含んでもよく、またはそれらとして実現されてもよい。コンピューティングデバイス102は、1つ以上のメモリ記憶装置および1つ以上のプロセッサを含んでもよい。コンピューティングデバイス102は、異なる種類のオペレーティングシステムを含んでもよい。メモリ記憶装置はプロセッサにとってアクセス可能であってもよく、そこに記憶される命令を含んでもよく、それらは、プロセッサによって実行されると、プロセッサに本明細書に開示される1つ以上の動作、方法またはプロセスを実行させる。メモリ記憶装置はローカルストレージとして動作してもよい。ローカルストレージは、メモリ記憶装置または他のコンピュータ読取り可能記憶媒体などの任意のタイプの永続的な記憶装置を用いて実現されてもよい。いくつかの例では、ローカルストレージは、1つ以上のデータベース(たとえばドキュメントデータベース、リレーショナルデータベースまたは他のタイプのデータベース)、1つ以上のファイルストア、1つ以上のファイルシステム、またはそれらの組合せを含むかまたは実現してもよい。ローカルストレージはエンタープライズデータを記憶してもよい。
【0033】
さまざまな例では、コンピューティングデバイス102は、ウェブブラウザ、クライアントアプリケーション、所有権付きクライアントアプリケーションなど(たとえばサーバ側アプリケーション)の1つ以上のアプリケーションを実行および動作させるよう構成されてもよい。アプリケーションは、エンタープライズコンピュータシステムによって提供されるエンタープライズデータおよび/またはサービスのために構成される特定のアプリケーションを含み得る。クライアントアプリケーションは1つ以上のネットワークを介してアクセス可能であるかまたは動作されてもよい。アプリケーションは、アプリケーションを動作させるためのグラフィカルユーザインターフェイス(GUI)を含んでもよい。
【0034】
コンピューティングデバイス102は、MCS112と、1つ以上の通信ネットワークを介して、無線通信を用いて通信してもよい。通信ネットワークの例は、モバイルネットワーク、無線ネットワーク、セルラーネットワーク、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、他の無線通信ネットワーク、またはそれらの組合せを含んでもよい。特定の例では、コンピューティングデバイス102は、MCS112との通信接続114を、カスタム通信プロトコル(たとえばカスタムプロトコル)を用いて確立してもよい。接続114が、クラウドコンピュータシステム110を介してMCS112と確立されてもよい。カスタムプロトコルはHTTPベースのプロトコルであってもよい。カスタム通信プロトコルを利用することによって、コンピューティングデバイス102は任意のコンピューティングデバイスプラットフォーム上で動作してクラウドコンピュータシステム110と通信してもよい。
【0035】
コンピューティングデバイス102は、たとえばアプリケーションプログラミングインターフェイス(API)である、1つ以上の呼出し可能インターフェイスを介して、クラウドコンピュータシステム110と通信してもよい。呼出し可能インターフェイスはコンピューティングデバイス102上において実現されてもよい。呼出し可能インターフェイスは、MCS112と通信することができるカスタムアプリケーションに対して実現されてもよい。いくつかの例では、呼出し可能インターフェイスはMCS112のために開発されてもよい。呼出し可能インターフェイスは、アプリケーションが、プロトコル(たとえば通信プロトコルもしくは開発プロトコル)および/またはアーキテクチャのスタイルもしくはフォーマットにおける違いに適合する必要なしに、MCS112と通信することを可能にしてもよい。
【0036】
MCS112は、要求を処理しカスタムコード116を実行するようセキュリティ上安全な環境を与えるように1つ以上のファイアウォール104,130によって保護されてもよい。コンピューティングデバイス102とMCS112との間における通信は、外部通信ファイアウォール104によって分離されてもよい。ファイアウォール104は、MCS112へのセキュリティ上安全なアクセスを容易にするようにクラウドコンピュータシステム110と接続されてもよい。ファイアウォール104は、クラウドコンピュータシステム110とコンピューティングデバイス(たとえばコンピューティングデバイス102)との間におけるメッセージの通信を許可してもよい。そのようなメッセージ(たとえばHTTPメッセージまたはRESTメッセージ)は、呼出し可能インターフェイスによってサポートされ得る通信プロトコル(たとえば、HTTPまたはREST)に準拠し得る。別の例では、クラウドコンピュータシステム110とコンピューティングデバイス102との間におけるメッセージは、SPDYなどの通信プロトコルに準拠してもよい。MCS112は、クラウドコンピュータシステム110とエンタープライズコンピュータシステム140,150との間における通信をセキュリティ上安全にするようにファイアウォール130を管理してもよい。ファイアウォール130は、クラウドコンピュータシステム110とコンピューティングデバイス(たとえばコンピューティングデバイス102)との間におけるメッセージの通信を許可してもよい。そのようなメッセージ(たとえばSPDYメッセージ、HTTPメッセージまたはRESTメッセージ)は、通信プロトコル(たとえばSPDY、HTTPまたはREST)に準拠してもよい。コンピューティングデバイス102とエンタープライズコンピュータシステム140,150との間における通信はMCS112を介する二方向であってもよい。
【0037】
コンピューティングデバイス102およびエンタープライズコンピュータシステム140,150との通信がセキュリティ上安全ではないパブリックなネットワークを介して行われる可能性があるので、ファイアウォール104,130は、MCS112へのおよびMCS112からの通信に対して追加の保護層を与える。ファイアウォール104,130は、MCS112が、その内部ネットワークと、コンピューティングデバイス102およびエンタープライズコンピュータシステム140,150を接続する外部ネットワークとを区別することを可能にし得る。いくつかの例では、ファイアウォール104,130は、2つの別個のファイアウォールとして示されるが、MCS112を封入する単一のファイアウォールとして実現されてもよい。
【0038】
クラウドコンピュータシステム110はさらに、一部が異なる通信プロトコルを有し得るエンタープライズコンピュータシステムと通信することによって仲介コンピューティング環境として動作してもよい。そのような通信プロトコルは、クラウドコンピュータシステム110との通信において、あるアプリケーションまたはサービスに対してカスタムであるかまたは特定であってもよい。さらにクラウドコンピュータシステム110は、エンタープライズコンピュータシステムと通信して、エンタープライズサービスを提供し、および/または、エンタープライズコンピュータシステムによってサポートされるフォーマットに従ってエンタープライズデータを交換してもよい。クラウドコンピュータシステム110は、エンタープライズデータのローカルストレージ(たとえば、ローカルキャッシュ)を維持してもよく、そのローカルストレージを用いてモバイルコンピューティングデバイスとエンタープライズコンピュータシステム140,150との間におけるエンタープライズデータの同期を管理してもよい。
【0039】
コンピューティングデバイス102は、MCS112と通信(たとえば、要求メッセージを送信)して、エンタープライズコンピュータシステムによって提供されるサービスを要求してもよい。ファイアウォール104を介して受信された要求は、最初にセキュリティサービス232によって処理されてもよい。セキュリティサービス232は、要求に関連付けられるユーザに関してセキュリティ認証を管理してもよい。したがって、クラウドコンピュータシステムは、顧客通信およびエンタープライズデータの保全性を保護し得る、本明細書に記載されるセキュリティ機構を提供することを含む技術的利点を提供し得る。クラウドコンピュータシステムの技術的利点は、損なわれた通信および/またはデータが損なわれることを防止または低減することを含んでもよく、認証が最初に生じて、アクセスを、必要とされる資格情報を有するもののみに対して制限してもよい。クラウドコンピュータシステムの技術的利点は、サービスおよびサービス呼出しフローが、要求が入来するとそれらはそれらが承認されるサービスにアクセスすることのみが許可され得るように構造化されることを含んでもよい。システム処理の他の部分から承認を切り離すことによって、処理は、「何が誰によってなされ得るか」を承認するタスクが、特定の法人顧客によって必要とされるさらなるカスタムセキュリティ手段が何であれ、それをサポートするよう拡張され得る専用のプロビジョニングされたセキュリティサブシステム(たとえばアイデンティティ管理システム)に委任されることを含んでもよい。いくつかの例では、セキュリティ認証は、要求、セッション、ユーザ、デバイス、ユーザに関係付けられる他の基準、またはそれらの組合せに関して判断されてもよい。セキュリティ認証は、受信される要求ごとに実行されてもよい。いくつかの例では、セキュリティサービス232は、以前の要求の検証に基づいて認証を判断してもよい。セキュリティ認証は、ユーザまたは装置に関して、異なるエンタープライズコンピュータシステム140,150に対する要求が単一のセキュリティ検証に基づいて認証され得るように、判断されてもよい。
【0040】
いくつかの例では、セキュリティサービス132は、要求されたエンタープライズコンピュータシステムについてのセキュリティプロトコルを判断して、それに応じて、そのようなセキュリティプロトコルに従ってセキュリティトークンを生成してもよい。セキュリティトークンは、生成されたセキュリティトークンに基づいてエンタープライズコンピュータシステムが認証を検証することを可能にするために、要求とともに当該エンタープライズコンピュータシステムに渡されてもよい。エンタープライズコンピュータシステムは、異なるセキュリティプロトコルをサポートしてもよい。セキュリティプロトコルは、セキュリティが判断される規格であってもよい。セキュリティは、セキュリティサービス132によって生成されるセキュリティトークンに基づいて検証されてもよい。セキュリティサービス132は、要求に対して識別されるエンタープライズコンピュータシステムのためのセキュリティプロトコルを判断してもよい。いくつかの例では、エンタープライズコンピュータシステム150は、MCS112によってサポートされるカスタムまたは特定のセキュリティプロトコルに従って構成または実現され得るエージェントシステム152を有してもよい。したがって、MCS112は、そのようなカスタムセキュリティプロトコルに従ってセキュリティトークンを生成してもよい。
【0041】
クラウドコンピュータシステム110は、1つ以上の負荷分散システム106,108を含み、実現し、および/またはそれ(ら)と通信してもよい。セキュリティ認証を判断すると、クラウドコンピュータシステム110は負荷分散システム106,108のうちのいずれか1つに対して、それが受信する要求を調べ、要求がどのサービスに向けられているかを検出するよう要求してもよい。MCS112は、負荷分散部106,108とともに構成されてもよく、起動されるリソースで更新されてもよく、したがって、要求が入来すると、負荷分散部106,108は要求される負荷を異なるリソースにわたって分散させることができる。
【0042】
クラウドコンピュータシステム110は、要求を処理し、それらを適切なサービスに発送し得るディスパッチャ118を含んでもよい。要求は、発送されると適切なサービスにルーティングされ得る。いくつかの例では、サービスそれ自体が、内部の要求を、MCS112またはエンタープライズコンピュータシステムにおける別の内部のサービスにルーティングしてもよい。いくつかの例では、ディスパッチャ118は要求を解決して、その宛先を、要求の統一資源識別子(uniform resource identifier:URI)および/または統一資源ロケータ(uniform resource locator:URL)において識別される宛先の位置(たとえばアドレス)に基づいて判断してもよい。ディスパッチャ118は要求およびそのヘッダを構文解析して、以下の情報:テナント識別子、サービス識別子、アプリケーション名、アプリケーションバージョン、要求リソース、動作およびパラメータなどの1つ以上を抽出してもよい。ディスパッチャ118は、構文解析された情報を用いて、メタデータリポジトリ124における参照を実行することができる。ディスパッチャ118は対応するアプリケーションメタデータを検索してもよい。ディスパッチャ118は、目標のサービスを、要求されたリソースおよびメタデータにおけるマッピングに基づいて判断してもよい。最初は非常に基本的なマッピングであるが、メタデータを向上させて、より洗練された、ルールに基づく発送を行うことができる。ディスパッチャ118は、任意のディスパッチャ特有のロギング、メトリック収集などを実行してもよい。ディスパッチャ118は、次いで、初期承認をアプリケーションメタデータに従って実行してもよい。ディスパッチャ118は、インバウンドの要求および任意の他の必要な情報をフォーマットし、メッセージをさらなる処理のためにルーティングバス120上に配置してもよい。ディスパッチャ118は、要求をキュー上に配置して、対応の応答を待ってもよい。ディスパッチャ118は、ルーティングバス120から受信される応答を処理し、応答をコンピューティングデバイス102に返してもよい。
【0043】
外部の要求に対する発送を処理することに加えて、ディスパッチャ118は、さらに、内部の要求を発送する役割を果たしてもよい。そのような内部の要求は、サービスに対する合成サービスまたはカスタムコード呼出しの形式で受信することができる。両方の場合において、呼出し元は、アプリケーション内において定義される論理上のサービス名を用い得る。ディスパッチャ118は、現在の実行コンテキストを用いてアプリケーションを判断し、その論理名を用いて、呼出すべき適切なサービスを判断してもよい。
【0044】
クラウドコンピュータシステム110は、ルーティングバス120に登録された宛先に対するメッセージの配送を管理するようルーティングバス120を含んでもよい。ルーティングバス120は、クラウドサービス112において通信を管理するための中央システムとして動作してもよい。ルーティングバス120を介して通信されるデータは、そのデータを捕捉および記憶するよう処理されてもよい。ルーティングバス120は、さらなる中央集中化されたサービス(さらなる承認、デバッグなど)が必要に応じて容易にプラグインされ得るように、フレームワークを与えてもよい。ルーティングバス120によって捕捉されたデータは診断ストア126および/または解析ストア128に記憶されてもよい。
【0045】
ルーティングバス120はメッセージを1つ以上の宛先にルーティングしてもよい。いくつかの例では、メッセージは、カスタムコード116を実行するようにとの要求を含み得る。そのような例では、ルーティングバス120は、カスタムコード116を呼出すよう要求してもよい134。いくつかの例では、ルーティングバス120は、要求における情報によって識別される宛先エンタープライズコンピュータシステムに要求を渡してもよい。ルーティングバス120は、必要であればアダプタインターフェイス122に対して翻訳を実行するよう要求して(236)、要求をエンタープライズコンピュータシステム、たとえばエンタープライズコンピュータシステム140またはエンタープライズコンピュータシステム150に渡してもよい。
【0046】
特定の例では、クラウドコンピュータシステム110は、アダプタインターフェイス122を含むかまたはそれを実現して、メッセージを、受信側エンタープライズコンピュータシステムによってサポートされるプロトコルに翻訳または変換してもよい。アダプタインターフェイス122は、エンタープライズコンピュータシステム140,150の各々と、別々の通信接続を確立してもよい。クラウドコンピュータシステム110は、エンタープライズコンピュータシステム140,150と、1つ以上のネットワーク(図示せず)を介して通信するよう構成されてもよい。通信ネットワークの例は、インターネット(登録商標)、モバイルネットワーク、パブリックネットワーク、無線ネットワーク、セルラーネットワーク、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、他の通信ネットワーク、またはそれらの組合せを含んでもよい。特定の例では、通信接続は、高速通信トランクを用いて促進される高速通信接続であってもよい。エンタープライズコンピュータシステム140,150との通信はファイアウォール130を通過してもよく、それによって、外部ネットワークとの通信はそのような通信を介するMCS112に対する未承認アクセスを妨げるようセキュリティ上安全であることが確実とされる。
【0047】
いくつかの例では、クラウドコンピュータシステム110はコンピューティングデバイス102のユーザに対する通知を容易にし得る。クラウドコンピュータシステム110は、ユーザとのステートフルな対話をサポートする警報管理サービスを含んで、たとえば、ユーザの好みに基づく警報を1つ以上のチャネルを介して送り、応答を待ち、その応答に基づくアクションを取ってもよい。1つのチャネルで送られた警報に対する応答は、サービスが取扱うことができる必要のある別のチャネルを介して受信されてもよい。プラットフォームは、ポピュラーな対話パターンのための内蔵型の状態モデルとともに搭載され、新たな状態モデルで拡張可能であり得る。いくつかの警報チャネルは、一方向であれ二方向であれ、公知の通信リソースを含んでもよい。例は、SMS、ツイッター(登録商標)、プッシュ通知、およびGoogle(登録商標) Cloud Messagingを含む。
【0048】
いくつかの例では、クラウドコンピュータシステム110は、コンピューティングデバイスが、オブジェクトストアサービス、データベースサービス、アクセスウェブサービス、ソーシャルサービス、リソースサービス、またはそれらの組合せなどの1つ以上のサービスにアクセスするおよび/またはそれらを要求することを可能にし得る。
【0049】
クラウドコンピュータシステム110は、BLOBのためのストレージファシリティを提供し得るオブジェクトストアサービスを提供してもよい。基本的な記憶の単位はテキストであり得、読取動作および書込動作を伴う。JSONオブジェクトに対する基本的なクエリーファシリティも提供され得る。
【0050】
クラウドコンピュータシステム110は、データベースサービスを提供して、クエリまたは書込を実行するために、ホストされるデータベースへの接続性を可能にし得る。必要とされるパラメータ化は、データベースに対する十分な接続ストリング、実行すべきSQLストリングまたは記憶される手順、任意のパラメータ、および場合によっては資格情報を必要とする可能性もある。必要な情報は、実行時に与えられ得るか、またはアプリケーションメタデータにおいて予め構成され得る。
【0051】
クラウドコンピュータシステム110は、シンプルアクセスオブジェクトプロトコル(Simple Access Object Protocol:SOAP)ウェブサービスなどのウェブサービスへのアクセスを提供し得る。クラウドコンピュータシステム110は、任意のRESTリソースへの接続性などのRESTサービスへのアクセスを提供し得る。
【0052】
クラウドコンピュータシステム110は、ソーシャルサービスへのアクセスを提供してもよく、それは、フェースブック(登録商標)、ツイッター(登録商標)などのような人気のあるソーシャルサイトの多くとの基本的な統合をもたらし得る。これらのサービスは、それらのサイトからのユーザの資格情報を用いる第三者認証およびそれらのサービスに対するアクセスを可能にしてもよい。例は、ツィートを送信するかまたは貴方のステータスを更新することを含む。
【0053】
クラウドコンピュータシステム110は、パブリッククラウドサービスを提供して、ユーザが通信を簡単にして最適化することを可能にし得る。たとえば、サービス開発者は、MCS112の包括的なウェブサービスを用いて、クラウドコンピュータシステム110のクラウドサービスを用いてホストされるリソースに話し掛けてもよい。
【0054】
いくつかの例において、コンピューティングデバイス102はモバイルアプリケーションを含み得る。モバイルアプリケーションは、モバイルアプリケーションに含まれるコードを用いて1つ以上の動作を実行することができる。いくつかの例において、モバイルアプリケーションの動作は、コンピューティングデバイス102のユーザに対してコンテンツを表示すること、ユーザからの入力を受けること、ユーザからの入力に応答すること、および遠隔システムからのコンテンツを受けること、のうちの少なくとも1つ以上を含み得る。
【0055】
図2はサーバ側アプリケーション210の一例を示す図である。サーバ側アプリケーションは、MCS(たとえばMCS112)に含まれていてもよい。サーバ側アプリケーション210は、プログラミングインターフェイス(たとえばアプリケーションプログラミングインターフェイス(API)212)、カスタムコード214、およびコネクタ216のうちの少なくとも1つ以上を含み得る。API212を用いることにより、モバイルアプリケーションに対するインターフェイスをサーバ側アプリケーション210に提供することができる。いくつかの例において、サーバ側アプリケーションは複数のAPIを含み得る。
【0056】
カスタムコード214(ソフトウェアコードまたはユーザコードと呼ばれることがある)は、コンピュータシステムによって実行可能な、サーバ側アプリケーション210に関連する動作の実行を求める1つ以上の命令であってもよい。カスタムコード214は仮想マシン上で実行(たとえば仮想マシン上にインストール)されてもよい。いくつかの例において、仮想マシンはコンピュータシステムのエミュレーションであってもよい。このような例において、仮想マシンは、仮想オペレーティングシステム、または、仮想化を含むその他のコンピューティングアーキテクチャを実行していてもよい。論理記憶装置の1つ以上のフレキシブプールが仮想化されて仮想マシンのための仮想記憶装置を維持してもよい。仮想ネットワークは、サーバが、ソフトウェア定義ネットワーキングを用いて制御してもよい。いくつかの例において、カスタムコード214は、モバイルアプリケーションに関連付けられたロジックの第1の部分を含み得る。このような例において、モバイルアプリケーション上のコードは、モバイルアプリケーションに関連付けられたロジックの第2の部分を含み得る。バックエンドシステム上のコードは、モバイルアプリケーションに関連付けられたロジックの第3の部分を含み得る。より多くのまたはより少ないシステム上のロジックに、より多くのまたはより少ない部分があってもよいことを、当業者は理解するであろう。
【0057】
コネクタ216はサーバ側アプリケーション210をバックエンドシステムに接続することができる。いくつかの例において、コネクタ216は、サーバ側アプリケーション210からバックエンドシステムへのインターフェイスを提供することができる。いくつかの例において、コネクタ216は、バックエンドシステムから受けた情報をフォーマットすることもできる。いくつかの例において、サーバ側アプリケーション210は複数のコネクタを含み得る。
【0058】
メタデータ218は、サーバ側アプリケーション210またはモバイルクラウドサービス環境によって設計時または実行時に利用されるデータを含み得る。たとえば、メタデータ218は、(a)サーバ側またはモバイルアプリケーションの実行を管理するポリシー、(b)APIインプリメンテーションとコネクタとの間の実行時依存性、(c)アクセスコントロール情報、(d)APIからカスタムコードへのインプリメンテーションバインディング、(e)コネクタバインディング、(f)その他、を含み得る。ポリシーの例は、ロギングレベルポリシーおよびプロダクションデータベースURIポリシーを含み得る。いくつかの例において、ロギングレベルポリシーは、モバイルバックエンド、API、または環境の範囲における必要なログレベルを規定することができる。いくつかの例において、プロダクションデータベースURIポリシーは、サーバ側アプリケーションによって使用される1つ以上のデータベースを指し示すことができる。いくつかの例において、実行時依存性情報は、APIインプリメンテーションが1つ以上のコネクタを消費する(たとえば1つ以上のコネクタに対する依存性を有する)ことを示すことができる。このような例において、実行時依存性情報は、デプロイ、インポート、および/またはエクスポート中のサーバ側アプリケーションのインテグリティを保証するために使用できる。いくつかの例において、アクセスコントロール情報は、APIを呼出すことが許可されている1つ以上のユーザロールのリストを示すことができる。いくつかの例において、このリストは、メタデータの中に保存することができ、設計時および/または実行時動作において使用することができる。いくつかの例において、APIバインディングは、APIがどのようにしてカスタムコードとのやり取りを行うか(たとえばカスタムコードのどの部分が特定のAPIによってコールされるか)を記述することができる。いくつかの例において、コネクタバインディングは、コネクタの実行中にコネクタのどの特定のインプリメンテーションが使用されるかを記述することができる。
【0059】
いくつかの例において、API212とカスタムコード214とを組み合わせて1つのエンティティにしてもよい。他の例において、コネクタ216は、サーバ側アプリケーションの上記3つのコンポーネントを一緒にパッケージ化できるように、1つのエンティティに組み込んでもよい。
【0060】
図3は、サーバ側アプリケーションのためのパッケージを作成するプロセス300の一例を示すフローチャートである。いくつかの局面において、プロセス300はモバイルクラウドサービスによって実行されてもよい。プロセス300は論理フロー図として示されており、その動作は、ハードウェア、コンピュータ命令、またはその組合せにおいて実現し得る一連の動作を表す。コンピュータ命令という文脈において、上記動作はコンピュータによる実行が可能な命令を表し、この命令は、1つ以上のコンピュータ読取可能な記憶媒体に格納され、1つ以上のプロセッサによって実行されると、記載されている動作が実行される。一般的に、コンピュータによる実行が可能な命令は、特定の機能を果たすまたは特定のデータタイプを実現する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、その他を含む。これらの動作を説明する順序は、限定解釈されることを意図している訳ではなく、説明する動作のうち任意の数の動作を任意の順序でおよび/または並列に組み合わせて上記プロセスを実現してもよい。
【0061】
加えて、プロセス300は、実行可能な命令で構成された1つ以上のコンピュータシステムの制御下で実行されてもよく、コード(たとえば実行可能な命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実現されてもよい。上記コードは、1つ以上のプロセッサ上で、ハードウェアによって、またはこれらの組合せによって、集合的に実行される。先に述べたように、コードは、マシン読取可能な記憶媒体上に、たとえば1つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態で、格納されてもよい。マシン読取可能な記憶媒体は非一時的なものであってもよい。
【0062】
ステップ310において、プロセス300は、1つ以上のエンティティを選択することを含む。この1つ以上のエンティティはユーザによって選択されてもよい。エンティティはモバイルバックエンドであってもよい。モバイルバックエンドは、コネクタ、API、APIインプリメンテーション、およびストレージコレクションをグループ化するために使用されるオブジェクトであってもよい。モバイルバックエンドはまた、モバイルバックエンドのためのセキュリティおよびアクセスクレデンシャルを含み得る。また、エンティティは、API、APIインプリメンテーション、ストレージコレクション、またはコネクタのうちの1つ以上であってもよい。いくつかの例において、1つ以上のエンティティは、組み合わされたときに、モバイルクラウドサービス環境において1つ以上の動作を実行するために使用されるサーバ側アプリケーションであってもよい。
【0063】
ステップ320において、プロセス300は、1つ以上のエンティティの依存性を解析することを含む。たとえば、あるエンティティは別のエンティティに対する依存性を有する場合がある。加えて、選択された1つ以上のエンティティを実行するのに必要なアイテムが特定される。
【0064】
ステップ330において、プロセス300は、上記1つ以上のエンティティの論理グルーピングと上記依存性とをパッケージ化することを含む。論理グルーピングは、すべての呼出しに対してコンテキストを提供できる。このパッケージは、ユーザに対して送信、格納、または共有されてもよい。いくつかの例において、このパッケージは、遠隔サーバ内にインポートされて、上記1つ以上のエンティティおよび依存性が遠隔サーバ内で生成されサーバ側アプリケーションが遠隔サーバ上で実行されるようにしてもよい。いくつかの例において、パッケージは組み合わされてもよい。
【0065】
いくつかの例において、パッケージは、識別のために上記1つ以上のエンティティの説明を含み得る。この説明は、パッケージ名、パッケージバージョン、1つ以上のエンティティのリスト、およびパッケージの目的を含み得る。パッケージの目的は、パッケージが何のためのものかを説明する。いくつかの例において、パッケージはまた、ユーザ定義コードに対するエントリポイントを示すバインディングを含み得る。エントリポイントは1つ以上のAPIに対するものである。先に述べたように、バインディングはメタデータであってもよい。
【0066】
図4は、サーバ側アプリケーションのパッケージをインストールするプロセス400の一例を示すフローチャートである。いくつかの局面において、プロセス400はモバイルクラウドサービスによって実行されてもよい。プロセス400は論理フロー図として示されており、その動作は、ハードウェア、コンピュータ命令、またはその組合せにおいて実現し得る一連の動作を表す。コンピュータ命令という文脈において、上記動作はコンピュータによる実行が可能な命令を表し、この命令は、1つ以上のコンピュータ読取可能な記憶媒体に格納され、1つ以上のプロセッサによって実行されると、記載されている動作が実行される。一般的に、コンピュータによる実行が可能な命令は、特定の機能を果たすまたは特定のデータタイプを実現する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、その他を含む。これらの動作を説明する順序は、限定解釈されることを意図している訳ではなく、説明する動作のうち任意の数の動作を任意の順序でおよび/または並列に組み合わせて上記プロセスを実現してもよい。
【0067】
加えて、プロセス400は、実行可能な命令で構成された1つ以上のコンピュータシステムの制御下で実行されてもよく、コード(たとえば実行可能な命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実現されてもよい。上記コードは、1つ以上のプロセッサ上で、ハードウェアによって、またはこれらの組合せによって、集合的に実行される。先に述べたように、コードは、マシン読取可能な記憶媒体上に、たとえば1つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態で、格納されてもよい。マシン読取可能な記憶媒体は非一時的なものであってもよい。
【0068】
ステップ410において、プロセス400は、パッケージを受けることを含む。このパッケージは、1つ以上のエンティティの論理グルーピングを含み得る。エンティティは、モバイルバックエンド、API、APIインプリメンテーション、ストレージコレクション、および/またはコネクタであってもよい。いくつかの例において、パッケージは、ファイルの第1のセットとファイルの第2のセットとを含み得る。ファイルの第1のセットは、API(たとえばAPI定義)を作成するためかつこのAPIをバックエンドサービス(たとえばコネクタ)に接続するためのロジックを有し得る。ファイルの第2のセットはソフトウェアコードを有し得る。ソフトウェアコードは、ユーザ定義コード(高級プログラミング言語で記述されたもの)であってもよい。APIは、ユーザ定義コードに対するエントリポイントを規定し得る。いくつかの例において、パッケージはまた、APIがどのようにソフトウェアコードに対応しているかを示すバインディングを含み得る。たとえば、バインディングは、APIからのコールによって、ソフトウェアコードの特定の部分が実行されることを示すことができる。バインディングはメタデータであってもよい。
【0069】
ステップ420において、プロセス400は、パッケージから、ファイルの第1のセットとファイルの第2のセットとを抽出することを含む。いくつかの例において、パッケージは少なくとも2つのアーカイブファイルパッケージを含み得る。そのコンテンツは相互参照される。各アーカイブファイルパッケージは、異なるエンティティセットに対応付けることができる。いくつかの例において、上記異なるエンティティセットはタイプが異なるものであってもよい。
【0070】
ステップ430において、プロセス400は、ファイルの第1のセットのロジックを用いてAPIを作成することを含む。このAPIは、モバイルクラウドサービス環境において作成してもよい。ステップ440において、プロセス400は、APIをバックエンドシステムに接続するためのロジックを用いて、APIをクラウドサービス内のバックエンドサービスに接続することを含む。
【0071】
ステップ450において、プロセス400は、ファイルの第2のセットのソフトウェアコードをクラウドサービスのユーザ空間で実行することを含む。クラウドサービスのユーザ空間は、ターゲットモバイルクラウドサービス環境であってもよい。
【0072】
図5は、モバイルデバイス上のクライアント側アプリケーションからサーバ側アプリケーションへの要求に応答するプロセス500の一例を示すフローチャートである。いくつかの局面において、プロセス500はモバイルクラウドサービスによって実行されてもよい。プロセス500は論理フロー図として示されており、その動作は、ハードウェア、コンピュータ命令、またはその組合せにおいて実現し得る一連の動作を表す。コンピュータ命令という文脈において、上記動作はコンピュータによる実行が可能な命令を表し、この命令は、1つ以上のコンピュータ読取可能な記憶媒体に格納され、1つ以上のプロセッサによって実行されると、記載されている動作が実行される。一般的に、コンピュータによる実行が可能な命令は、特定の機能を果たすまたは特定のデータタイプを実現する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、その他を含む。これらの動作を説明する順序は、限定解釈されることを意図している訳ではなく、説明する動作のうち任意の数の動作を任意の順序でおよび/または並列に組み合わせて上記プロセスを実現してもよい。
【0073】
加えて、プロセス500は、実行可能な命令で構成された1つ以上のコンピュータシステムの制御下で実行されてもよく、コード(たとえば実行可能な命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実現されてもよい。上記コードは、1つ以上のプロセッサ上で、ハードウェアによって、またはこれらの組合せによって、集合的に実行される。先に述べたように、コードは、マシン読取可能な記憶媒体上に、たとえば1つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態で、格納されてもよい。マシン読取可能な記憶媒体は非一時的なものであってもよい。
【0074】
ステップ510において、プロセス500は、ファイアウォール通してモバイルデバイスからの要求を受けることを含む。ファイアウォールはモバイルクラウドサービスに関連付けられていてもよい。いくつかの例において、この要求は、モバイルデバイス上のクライアント側アプリケーションから送信されてもよい。この要求は、要求を処理すべきバックエンドシステム(またはサーバ側アプリケーション)の識別子を含み得る。この要求は、モバイルデバイスから遠隔サーバにオフロードすることができる、コンテンツ、処理、またはその他何らかの動作を対象とする要求であってもよい。
【0075】
ステップ520において、プロセス500は、第1の仮想マシンにおけるロジックに従い上記APIを用いて上記要求を上記ソフトウェアコードにディスパッチすることを含む。いくつかの例において、APIは、ファイアウォールの外側でバックエンドサービスに接続し得る。いくつかの例において、第1の仮想マシンにおけるロジックは、要求の最初の解決を処理することにより、この要求をどこにディスパッチするかを突き止めることができる。たとえば、第1の仮想マシンにおけるロジックは、この要求に関連付けられたモバイルバックエンドを特定することができる。第1の仮想マシンにおけるロジックは、APIを特定することもできる。いくつかの例において、上記要求は、第2の仮想マシンにディスパッチされてもよい。第2の仮想マシンは、ソフトウェアコードが実行される場所であってもよい。いくつかの例において、ソフトウェアコードは、モバイルクラウドサービスの他の部分から隔離されたユーザサンドボックスエリアで実行されてもよい。
【0076】
ステップ530において、プロセス500は、上記ソフトウェアコードを用いて要求に対するレスポンスを生成することを含む。このレスポンスは、ソフトウェアコード内のロジックに基づいていてもよい。いくつかの例において、ソフトウェアコードは、バックエンドシステムを用いることによりレスポンスを生成してもよい。たとえば、ソフトウェアコードは、データベースを用いることにより、要求に応答するために使用する情報を受けてもよい。
【0077】
ステップ540において、プロセス500は、上記応答をバックエンドサービスからモバイルデバイスまでルーティングすることを含む。いくつかの例において、この応答は、第2の仮想マシンから第1の仮想マシンまでルーティングされる。次に、第1の仮想マシンが、この応答をモバイルデバイス上のクライアント側アプリケーションにルーティングしてもよい。
【0078】
図6は、エンティティ間の関係の一例を示す図である。いくつかの例において、(上記)パッケージは、モバイルクラウドサービス環境内のエンティティ間の関係を再度形成して、1つ以上のエンティティがエクスポートされて異なるモバイルクラウドサービス環境にインポートされるようにすることができる。
【0079】
図6の例はポリシー620を含む。ポリシー620は環境固有の構成であってもよい。ポリシー620は1つ以上の属性(たとえば名前(name)と値(value))を含み得る。名前は、メタデータにおいて所定のアーティファクトにより参照されて、環境固有の構成を追加することができる。ポリシーの例は、セッションプロパティおよび環境プロパティを含む。いくつかの例において、ポリシー620は、1つ以上の選択されたエンティティに対応するように自動的に選択されてもよい。
【0080】
ポリシー620は、環境620内で保持(kept in)されてもよい。環境620は、顧客が有し得る異なるタイプの環境に関連付けられてもよい。たとえば、環境620は、テスト、開発、生産、またはその他の種類の環境であってもよい。いくつかの例において、環境は、他の環境から隔離されてもよい。いくつかの例において、環境は自立型(self-contained)であってもよい(たとえば、環境は、この環境のデータベースに、そのすべてのデータ含んでいてもよい)。いくつかの例において、環境620は、エンティティではなく、選択することもパッケージに含めることもできない。このような例において、パッケージは環境にインストールされ、これによって環境620が規定される。
【0081】
ポリシー620はモバイルバックエンド630に関連付けられてもよい。モバイルバックエンド630は、ユーザによって選択されたエンティティであってもよく、または上記依存性解析によって決定されてもよい。モバイルバックエンド630は1つ以上の属性(たとえば名前およびモバイルバックエンド(MBE)トークン(MBE token)を含み得る。
【0082】
モバイルバックエンド620は、1つ以上のストレージコレクション(たとえばモバイルオブジェクトストア(MOS)コレクション632およびユーザコレクション634)に関連付けられてもよい。いくつかの例において、モバイルバックエンド620はMOSコレクション632を使用(use)してもよい。MOSコレクション632は、モバイルバックエンド620のためのストレージコンテナを提供し得る。MOSコレクション632は、モバイルクラウドサービスパッチ全体にわたる互換性を確実にするためにフレームワークバージョンナンバーを含んでいてもよい。MOSコレクション632は、MOS APIを介してアクセス可能な、ユーザ定義名およびバージョンのコレクションのセットを提供することができる。
【0083】
上記1つ以上のストレージコレクションはインスタンスデータの例であってもよい。インスタンスデータは、環境固有の実行時データであってもよい。インスタンスデータは、一般的に、顧客またはフレームワークコードによって実行時に作成される。いくつかの例において、インスタンスデータは、スクリプトまたは特別にサポートされるオペレーションの使用を通して構成時に作成されてもよい。上記1つ以上のストレージコレクション内のデータは、パッケージにエクスポートされてもされなくてもよい。上記1つ以上のストレージコレクションは、ユーザによって選択されてもよく、または上記依存性解析によって決定されてもよい。
【0084】
いくつかの例において、MOSコレクション623内のユーザデータは、ロールによって、ユーザコレクション634内のユーザデータに関連付けられてもよい。このようなユーザデータは一般的に、MOSコレクション623のエクスポート時に転送されない。
【0085】
モバイルバックエンド620はAPI638を含み得る。いくつかの例において、API638は、メタデータリポジトリ内にあるRESTful APIモデリング言語(RESTful API Modeling Language:RAML)文書によって規定されてもよい。API638はRAML文書をアーティファクト644に格納することができる。アーティファクト644は内部にデータを格納するシステムであってもよい。ソフトウェアコードは、先に述べたように、アーティファクト644に格納することもできる。API638は、ユーザによって選択されてもよく、または上記依存性解析によって決定されてもよい。
【0086】
APIは、APIインプリメンテーション640へのバインディング642を含み得る。バインディング642は、ユーザ定義コードに対するエントリポイントを示すことができる。このエントリポイントは、1つ以上のAPIのためのものであってもよい。上記バインディングはメタデータであってもよい。バインディング642はパッケージ内のメタデータに含まれていてもよい。
【0087】
APIインプリメンテーション640はAPI638を実現する(implement)ことができる。たとえば、APIインプリメンテーション642は、API638のバージョンに対して実際のインプリメンテーションを提供することができる。いくつかの例において、APIインプリメンテーション642を、ポリシー610を介してAPI638に関連付けて、環境レベルの結合を得てもよい。環境は複数のモバイルバックエンドをデプロイしている可能性があるので、同じAPIの複数のバージョンを環境にデプロイすることにより、(ポリシーを介して)いつでもデプロイおよびマッピングされる複数のインプリメンテーションバージョンを得てもよい。APIインプリメンテーションは、ユーザによって選択されてもよく、または上記依存性解析によって決定されてもよい。
【0088】
コネクタ646は、API638および/またはAPIインプリメンテーション640を生成する(produce)ことができる。コネクタ646は、APIと、構成と、関連するサービス/カスタムコードインプリメンテーションとのブレンドであってもよい。コネクタ646は、ユーザによって選択されてもよく、または上記依存性解析によって決定されてもよい。
【0089】
図7は、分散システム700の簡略図を示す。分散システム700は、1つ以上のクライアントコンピューティングデバイス702、704、706、および708を含む。これらのクライアントコンピューティングデバイスは、ウェブブラウザ、プロプライエタリクライアント(たとえばOracle Forms)などを、1つ以上のネットワーク710上で実行し操作するように構成されている。サーバ712は、ネットワーク710を介して、遠隔のクライアントコンピューティングデバイス702、704、706、および708と通信可能に結合されていてもよい。
【0090】
さまざまな例において、サーバ712は、システムの1つ以上のコンポーネントによって提供される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように構成されてもよい。サービスまたはソフトウェアアプリケーションは非仮想および仮想環境を含むことができる。仮想環境は、二次元表現であれ三次元(3D)表現であれ、ページに基づく論理環境、またはその他であれ、仮想イベント、トレードショー、シミュレータ、クラスルーム、ショッピング交換、およびエンタープライズに対して用いられるものを含むことができる。いくつかの例において、これらのサービスは、ウェブに基づくサービスもしくはクラウドサービスとして、またはSoftware as a Service(SaaS)モデルの下で、クライアントコンピューティングデバイス702,704,706および/または708のユーザに対して提供されてもよい。クライアントコンピューティングデバイス702,704,706および/または708を動作させるユーザは、次いで、1つ以上のクライアントアプリケーションを利用してサーバ712と対話することにより、これらのコンポーネントによって提供されるサービスを利用してもよい。
【0091】
図示される構成において、システム700のソフトウェアコンポーネント718,720および722は、サーバ712上で実現されるものとして示される。他の例において、システム700のコンポーネントの1つ以上および/またはこれらのコンポーネントによって提供されるサービスは、クライアントコンピューティングデバイス702,704,706および/または708のうちの1つ以上によって実現されてもよい。クライアントコンピューティングデバイスを動作させるユーザは、次いで、1つ以上のクライアントアプリケーションを利用して、これらのコンポーネントによって提供されるサービスを用いてもよい。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せにおいて実現されてもよい。分散型システム700とは異なってもよいさまざまな異なるシステム構成が可能であることが理解されるはずである。図に示される例は、したがって、例示されるシステムを実現するための分散型システムの一例であり、限定を意図しているのではない。
【0092】
クライアントコンピューティングデバイス702,704,706および/または708は、携帯可能な手持ち式の装置(たとえばiPhone(登録商標)、セルラー電話、iPad(登録商標)、計算タブレット、携帯情報端末(PDA))またはウェアラブルデバイス(たとえばGoogle Glass(登録商標)頭部装着型ディスプレイ)であってもよく、Microsoft Windows Mobile(登録商標)などのようなソフトウェア、および/もしくは、iOS、Windows Phone(登録商標)、Android(登録商標)、BlackBerry(登録商標) 10、Palm OS(登録商標)などのようなさまざまなモバイルオペレーティングシステムを動作させ、インターネット、電子メール、ショートメッセージサービス(SMS)、Blackberry(登録商標)または他の通信プロトコルで可能化される。クライアントコンピューティングデバイスは汎用パーソナルコンピュータであることができ、たとえば、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinux(登録商標)オペレーティングシステムのさまざまなバージョンを動作させるパーソナルコンピュータおよび/またはラップトップコンピュータを含む。クライアントコンピューティングデバイスは、たとえばGoogle Chrome(登録商標) OSなどのようなさまざまなGNU/Linuxオペレーティングシステムを限定なく含む、さまざまな市場で入手可能なUNIX(登録商標)またはUNIXのようなオペレーティングシステムの任意のものを動作させるワークステーションコンピュータであり得る。代替的に、または加えて、クライアントコンピューティングデバイス702,704,706および708は、ネットワーク710を介して通信することができる、シンクライントコンピュータ、インターネットにより可能化されるゲームシステム(たとえばKinect(登録商標)ジェスチャ入力装置を伴うかまたは伴わないMicrosoft Xboxゲームコンソール)および/または個人メッセージ伝達装置などのような任意の他の電子装置であってもよい。
【0093】
例示的な分散型システム700は4つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサを伴うデバイスなど、他のデバイスがサーバ712と対話してもよい。
【0094】
分散型システム700におけるネットワーク710は、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワーク体系)、IPX(インターネットパケット交換)、AppleTalkなどを限定なしに含む、さまざまな市場で入手可能なプロトコルのうちの任意のものを用いてデータ通信をサポートすることができる、当業者が精通している任意のタイプのネットワークであってもよい。単なる例示として、ネットワーク710は、イーサネット(登録商標)、トークンリングなどに基づくものなどのような、ローカルエリアネットワーク(LAN)であり得る。ネットワーク710はワイドエリアネットワークおよびインターネットであり得る。それは、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば米国電気電子学会(IEEE)802.11のプロトコル一式、Bluetooth(登録商標)、および/もしくは任意の他の無線プロトコルのいずれかの下で動作するネットワーク)を限定なしに含む仮想ネットワーク;ならびに/またはこれらの任意の組合せおよび/もしくは他のネットワークを含み得る。
【0095】
サーバ712は、1つ以上の汎用コンピュータ、特別化されたサーバコンピュータ(たとえばPC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、平均的なサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、または任意の他の適切な構成および/もしくは組合せからなってもよい。サーバ712は、仮想オペレーティングシステムを動作させる1つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含むことができる。1つ以上の論理記憶装置からなる柔軟なプールを仮想化してサーバのために仮想記憶装置を維持することができる。仮想ネットワークを、サーバ712によって、ソフトウェア定義のネットワーク接続を用いて制御することができる。さまざまな例において、サーバ712は、前述の開示に記載される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように構成されてもよい。たとえば、サーバ712は、本開示の例に従って上記の処理を実行するためのサーバに対応してもよい。
【0096】
サーバ712は、先に述べたもののうちのいずれかを含むオペレーティングシステム、および市場で入手可能な任意のサーバオペレーティングシステムを実行してもよい。サーバ712は、さらに、HTTP(ハイパーテキスト・トランスポート・プロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含むさまざまなさらなるサーバアプリケーションおよび/または中間層アプリケーションのうちの任意のものを実行してもよい。例示的なデータベースサーバは、限定なしに、Oracle、Microsoft、Sybase、IBM(インターナショナルビジネスマシンズ)などから市販されているものを含む。
【0097】
いくつかの実現例では、サーバ712は、1つ以上のアプリケーションを含んで、クライアントコンピューティングデバイス702,704,706および708のユーザから受信されるデータフィードおよび/またはイベント更新を解析および整理統合してもよい。一例として、データフィードおよび/またはイベント更新は、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能計量ツール(たとえばネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などに関係する実時間イベントを含んでもよい、1つ以上の第三者情報源および連続的なデータストリームから受信される、Twitter(登録商標)フィード、Facebook(登録商標)更新または実時間更新を含んでもよいが、それらに限定はされない。サーバ712は、さらに、1つ以上のアプリケーションを含んで、データフィードおよび/または実時間イベントをクライアントコンピューティングデバイス702,704,706および708の1つ以上の表示装置を介して表示してもよい。
【0098】
分散型システム700は、さらに、1つ以上のデータベース714および716を含んでもよい。データベース714および716はさまざまな位置にあってもよい。例として、データベース714および716の1つ以上はサーバ712に局在する(および/またはサーバ712に常駐する)非一時的な記憶媒体にあってもよい。代替的に、データベース714および716は、サーバ712から遠隔にあり、ネットワークに基づくかまたは専用の接続を介してサーバ712と通信状態にあってもよい。1組の例において、データベース714および716は記憶域ネットワーク(SAN)にあってもよい。同様に、サーバ712に帰する機能を実行するための任意の必要なファイルが、適切に、サーバ712上においてローカルに、および/または遠隔で記憶されてもよい。1組の例において、データベース714および716はOracleによって提供されるデータベースのような、SQLフォーマットされたコマンドに応答してデータを格納、更新および取り出すように構成されたリレーショナルデータベースを含んでもよい。
【0099】
図8は、1つ以上のコンポーネントによって提供されるサービスがクラウドサービスとして提供されてもよいシステム環境800の1つ以上のコンポーネントの簡略ブロック図である。示される例において、システム環境800は、クラウドサービスを提供するクラウドインフラストラクチャシステム802と対話するようユーザによって用いられてもよい1つ以上のクライアントコンピューティングデバイス804,806および808を含む。クライアントコンピューティングデバイスは、クラウドインフラストラクチャシステム802と対話して、クラウドインフラストラクチャシステム802によって提供されるサービスを用いるよう、クライアントコンピューティングデバイスのユーザによって用いられてもよい、ウェブブラウザ、所有権付きクライアントアプリケーション(たとえばOracle Forms)または何らかの他のアプリケーションなどのようなクライアントアプリケーションを動作させるよう構成されてもよい。
【0100】
図に示されるクラウドインフラストラクチャシステム802は図示されるもの以外のコンポーネントを有してもよいことが理解されるべきである。さらに、図に示される例は、本開示の一例を組み込んでもよいクラウドインフラストラクチャシステムの一例に過ぎない。いくつかの他の例において、クラウドインフラストラクチャシステム802は、図に示されるよりも多いかもしくは少ないコンポーネントを有してもよく、2つ以上のコンポーネントを組み合わせてもよく、またはコンポーネントの異なる構成もしくは配置を有してもよい。
【0101】
クライアントコンピューティングデバイス804,806および808は、702,704,706および708に対して上記されたものと同様のデバイスであってもよい。例示的なシステム環境800は3つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサを伴うデバイスなどのような他のデバイスがクラウドインフラストラクチャシステム802と対話してもよい。
【0102】
ネットワーク810はクライアント804,806および808とクラウドインフラストラクチャシステム802との間におけるデータの通信および交換を容易にし得る。各ネットワークは、ネットワーク710に対して上記されたものを含む、さまざまな市場で入手可能なプロトコルの任意のものを用いてデータ通信をサポートすることができる、当業者が精通している任意のタイプのネットワークであってもよい。
【0103】
クラウドインフラストラクチャシステム802は、サーバ712に対して上記されたものを含んでもよい1つ以上のコンピュータおよび/またはサーバを備えてもよい。
【0104】
特定の例において、クラウドインフラストラクチャシステムによって提供されるサービスは、オンラインデータストレージおよびバックアップソリューション、ウェブに基づくeメールサービス、運営管理されるオフィススイートおよびドキュメントコラボレーションサービス、データベース処理、管理される技術サポートサービスなどのような、オンデマンドでクラウドインフラストラクチャシステムのユーザに利用可能にされるサービスのホストを含んでもよい。クラウドインフラストラクチャシステムによって提供されるサービスは動的にスケーリングしてそのユーザのニーズを満たすことができる。クラウドインフラストラクチャシステムによって提供されるあるサービスのある具体的なインスタンス化は本明細書では「サービスインスタンス」と呼ばれる。一般的に、クラウドサービスプロバイダのシステムからインターネットなどのような通信ネットワークを介してユーザに利用可能にされる任意のサービスは「クラウドサービス」と呼ばれる。典型的には、パブリックなクラウド環境においては、クラウドサービスプロバイダのシステムを形成するサーバおよびシステムは顧客自身のオンプレミスのサーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムはアプリケーションを運営管理してもよく、ユーザは、インターネットなどのような通信ネットワークを介して、オンデマンドで、アプリケーションをオーダーし使用してもよい。
【0105】
いくつかの例では、コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、ストレージ、運営管理されるデータベース、運営管理されるウェブサーバ、ソフトウェアアプリケーション、またはクラウドベンダーによってユーザに提供されるかもしくは他の態様で当該技術分野において公知であるような他のサービスに対する保護されたコンピュータネットワークアクセスを含んでもよい。たとえば、サービスは、クラウド上の遠隔ストレージに対するインターネットを介してのパスワード保護されたアクセスを含むことができる。別の例として、サービスは、ネットワーク接続された開発者による個人的な使用のために、ウェブサービスに基づく運営管理されたリレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含むことができる。別の例として、サービスは、クラウドベンダーのウェブサイトにおいて運営管理されるeメールソフトウェアアプリケーションに対するアクセスを含むことができる。
【0106】
特定の例において、クラウドインフラストラクチャシステム802は、セルフサービスの、サブスクリプションに基づく、順応性を持ってスケーラブルで、信頼性があり、非常に利用可能性があり、およびセキュリティ上安全な態様で顧客に対して配送されるアプリケーションの組、ミドルウェア、データベースサービス提供を含んでもよい。そのようなクラウドインフラストラクチャシステムの一例は本譲受人によって提供されるOracle Public Cloudである。
【0107】
時としてビッグデータとも称される大量のデータは、インフラストラクチャシステムによって、多数のレベルにおいて、および異なるスケールで運営管理および/または操作され得る。そのようなデータは、非常に大きくかつ複雑であるため典型的なデータベース管理ツールまたは従来のデータ処理アプリケーションを用いて処理することが困難であり得るデータセットを含み得る。たとえば、テラバイトのデータはパーソナルコンピュータまたはそれらのラックベースの対応物を用いて記憶、検索取得および処理することは難しいかもしれない。そのようなサイズのデータは、最も流通しているリレーショナルデータベース管理システムおよびデスクトップ統計および視覚化パッケージを用いて扱うことは困難であり得る。それらは、データを許容可能な経過時間内に捕捉しキュレーションし管理し処理するよう、一般的に用いられるソフトウェアツールの構造を超えて、何千ものサーバコンピュータを動作させる巨大に並列な処理ソフトウェアを必要とし得る。
【0108】
極端に大きなデータセットは、解析および研究者によって記憶および操作されることにより、大量のデータを視覚化し、傾向を検出し、および/または他の態様でデータと対話することができる。並列にリンクされた何十、何百または何千ものプロセッサが、そのようなデータに作用して、それを呈示するか、またはそのデータもしくはそれが表現するものに対する外部の力をシミュレーションすることができる。これらのデータセットは、データベースにおけるかまたは他の態様で構造化されたモデルに従って編成されたもののような構造化されたデータ、および/または構造化されないデータ(たとえばeメール、画像、データブロブ(バイナリラージオブジェクト)、ウェブページ、複雑なイベント処理)を伴い得る。より多い(またはより少ない)計算資源を目標に相対的に迅速に集中させる一例の能力をてこ入れすることによって、クラウドインフラストラクチャシステムは、ビジネス、行政機関、研究組織、私人、同じ意見の個人もしくは組織のグループ、または他のエンティティからの要望に基づいて大きなデータセットに対してタスクを実行するよう、よりよく利用可能であってもよい。
【0109】
さまざまな例において、クラウドインフラストラクチャシステム802は、クラウドインフラストラクチャシステム802によって提供されるサービスに対する顧客のサブスクリプションを自動的にプロビジョニング、管理、およびトラッキングするように構成されてもよい。クラウドインフラストラクチャシステム802はクラウドサービスを異なる開発モデルを介して提供してもよい。たとえば、サービスは、クラウドインフラストラクチャシステム802が(たとえばOracleによって所有される)クラウドサービスを販売する組織によって所有され、サービスが一般大衆または異なる業界エンタープライズに対して利用可能にされるパブリッククラウドモデルの下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム802が単一の組織に対してのみ動作され、その組織内における1つ以上のエンティティに対してサービスを提供してもよい、プライベートクラウドモデルの下で提供されてもよい。クラウドサービスは、さらに、クラウドインフラストラクチャシステム802およびクラウドインフラストラクチャシステム802によって提供されるサービスが関係付けられるコミュニティにおけるいくつかの組織によって共有されるコミュニティクラウドモデルの下で提供されてもよい。クラウドサービスは、さらに、2つ以上の異なるモデルの組合せであるハイブリッドクラウドモデルの下で提供されてもよい。
【0110】
いくつかの例において、クラウドインフラストラクチャシステム802によって提供されるサービスは、Software as a Service(SaaS)カテゴリ、Platform as a Service(PaaS)カテゴリ、Infrastructure as a Service(IaaS)カテゴリ、またはハイブリッドサービスを含む他のサービスのカテゴリの下で提供される、1つ以上のサービスを含んでもよい。顧客は、サブスクリプションオーダーを介して、クラウドインフラストラクチャシステム802によって提供される1つ以上のサービスをオーダーしてもよい。クラウドインフラストラクチャシステム802は、次いで、処理を実行して、顧客のサブスクリプションオーダーにおけるサービスを提供する。
【0111】
いくつかの例において、クラウドインフラストラクチャシステム802によって提供されるサービスは、限定を伴わずに、アプリケーションサービス、プラットフォームサービスおよびインフラストラクチャサービスを含んでもよい。いくつかの例では、アプリケーションサービスはクラウドインフラストラクチャシステムによってSaaSプラットフォームを介して提供されてもよい。SaaSプラットフォームは、SaaSカテゴリに入るクラウドサービスを提供するよう構成されてもよい。たとえば、SaaSプラットフォームは、一式のオンデマンドアプリケーションを統合された開発およびデプロイプラットフォーム上で構築し配送する能力を提供してもよい。SaaSプラットフォームは、SaaSサービスを提供するための基底のソフトウェアおよびインフラストラクチャを管理および制御してもよい。SaaSプラットフォームによって提供されるサービスを利用することによって、顧客はクラウドインフラストラクチャシステムにおいて実行されるアプリケーションを利用することができる。顧客は、別のライセンスおよびサポートを購入する必要なくアプリケーションサービスを獲得することができる。さまざまな異なるSaaSサービスが提供されてもよい。その例は、限定を伴うことなく、大きな組織に対する売上実績管理、エンタープライズ統合、および事業柔軟性に対するソリューションを提供するサービスを含む。
【0112】
いくつかの例において、プラットフォームサービスはクラウドインフラストラクチャシステムによってPaaSプラットフォームを介して提供されてもよい。PaaSプラットフォームはPaaSカテゴリの下におけるクラウドサービスを提供するよう構成されてもよい。プラットフォームサービスの例は、限定を伴わずに、(Oracleなどのような)組織が既存のアプリケーションを共有される共通のアーキテクチャにおいて整理統合することができるサービス、およびプラットフォームによって提供される共有されるサービスをてこ入れする新たなアプリケーションを構築する能力を含んでもよい。PaaSプラットフォームはPaaSサービスを提供するための基底のソフトウェアおよびインフラストラクチャを管理および制御してもよい。顧客は、クラウドインフラストラクチャシステムによって提供されるPaaSサービスを、別のライセンスおよびサポートを購入する必要なく獲得することができる。プラットフォームサービスの例は、限定を伴わずに、Oracle Java Cloud Service(JCS)、Oracle Database Cloud Service(DBCS)などを含む。
【0113】
PaaSプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムによってサポートされるプログラミング言語およびツールを使用することができ、デプロイされたサービスを制御することもできる。いくつかの例において、クラウドインフラストラクチャシステムによって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス(たとえばOracle Fusion(登録商標) Middlewareサービス)、およびJavaクラウドサービスを含んでもよい。一例において、データベースクラウドサービスは、組織がデータベース資源をプールし、顧客にDatabase as a Serviceをデータベースクラウドの形式で提供することを可能にする、共有されるサービスデプロイモデルをサポートしてもよい。ミドルウェアクラウドサービスは、顧客のためのプラットフォームを提供してさまざまなビジネスアプリケーションを開発およびデプロイしてもよく、Javaクラウドサービスは顧客のためのプラットフォームを提供してJavaアプリケーションをクラウドインフラストラクチャシステムにおいてデプロイしてもよい。
【0114】
さまざまな異なるインフラストラクチャサービスがIaaSプラットフォームによってクラウドインフラストラクチャシステムにおいて提供されてもよい。インフラストラクチャサービスは、SaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用する顧客に対するストレージ、ネットワーク、他の基礎的計算資源などのような基底の計算資源の管理および制御を容易にする。
【0115】
特定の例において、クラウドインフラストラクチャシステム802は、さらに、クラウドインフラストラクチャシステムの顧客に対してさまざまなサービスを提供するよう用いられる資源を提供するためのインフラストラクチャ資源830を含んでもよい。一例において、インフラストラクチャ資源830は、PaaSプラットフォームおよびSaaSプラットフォームによって提供されるサービスを実行するよう、サーバ、ストレージおよびネットワーク接続資源などのような、ハードウェアの予め統合され最適化された組合せを含んでもよい。
【0116】
いくつかの例において、クラウドインフラストラクチャシステム802における資源は、複数のユーザによって共有され、要望に付き動的に再割当てされてもよい。加えて、資源はユーザに対して異なる時間ゾーンで割当てられてもよい。たとえば、クラウドインフラストラクチャシステム830は、第1の時間ゾーンにおける第1の組のユーザがクラウドインフラストラクチャシステムの資源をある特定化された時間数の間利用することを可能にし、次いで、異なる時間ゾーンに位置する別の組のユーザに対する同じ資源の再割当てを可能にし、それによって、資源の利用を最大限にしてもよい。
【0117】
特定の例において、クラウドインフラストラクチャシステム802の異なるコンポーネントまたはモジュール、およびクラウドインフラストラクチャシステム802によって提供されるサービスによって共有される、ある数の内部の共有されるサービス832が提供されてもよい。これらの内部の共有されるサービスは、限定を伴うことなく、セキュリティおよびアイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性、バックアップおよびリカバリサービス、クラウドサポートを可能にするためのサービス、eメールサービス、通知サービス、ファイル転送サービスなどを含んでもよい。
【0118】
特定の例において、クラウドインフラストラクチャシステム802は、クラウドインフラストラクチャシステムにおいてクラウドサービス(たとえばSaaS、PaaS、およびIaaSサービス)の包括的な管理を提供してもよい。一例において、クラウド管理機能は、クラウドインフラストラクチャシステム802によって受信される顧客のサブスクリプションをプロビジョニングし、管理し、およびトラッキングする能力などを含んでもよい。
【0119】
一例において、図に示されるように、クラウド管理機能は、オーダー管理モジュール820、オーダーオーケストレーションモジュール822、オーダープロビジョニングモジュール824、オーダー管理および監視モジュール826、ならびにアイデンティティ管理モジュール828などのような1つ以上のモジュールによって提供されてもよい。これらのモジュールは、1つ以上のコンピュータおよび/またはサーバを含むかもしくはそれらを用いて提供されてもよく、それらは汎用コンピュータ、特殊化されたサーバコンピュータ、サーバファーム、サーバクラスタ、または任意の他の適切な構成および/もしくは組合せであってもよい。
【0120】
例示的な動作834においては、クライアントデバイス804、806または808などのようなクライアントデバイスを用いる顧客は、クラウドインフラストラクチャシステム802によって提供される1つ以上のサービスを要求すること、およびクラウドインフラストラクチャシステム802によって提供される1つ以上のサービスに対するサブスクリプションに対するオーダーを行うことによって、クラウドインフラストラクチャシステム802と対話してもよい。特定の例において、顧客は、クラウドユーザインターフェイス(UI)、クラウドUI812、クラウドUI814および/またはクラウドUI816にアクセスし、サブスクリプションオーダーをこれらのUIを介して行ってもよい。顧客がオーダーを行うことに応答してクラウドインフラストラクチャシステム802によって受取られるオーダー情報は、顧客を識別する情報、およびクラウドインフラストラクチャシステム802によって提供される、その顧客が利用することを意図する1つ以上のサービスを含んでもよい。
【0121】
オーダーが顧客によってなされた後、オーダー情報はクラウドUI812、814および/または816を介して受取られてもよい。
【0122】
動作836において、オーダーはオーダーデータベース818に格納される。オーダーデータベース818は、クラウドインフラストラクチャシステム818によって動作されるいくつかのデータベースの1つであり得、他のシステム要素との関連において動作され得る。
【0123】
動作838で、オーダー情報はオーダー管理モジュール820に転送される。いくつかの例では、オーダー管理モジュール820は、オーダーを検証すること、および検証でそのオーダーを予約することなど、オーダーに関係付けられる請求および課金機能を実行するよう構成されてもよい。
【0124】
動作840で、オーダーに関する情報がオーダーオーケストレーションモジュール822に通信される。オーダーオーケストレーションモジュール822は、オーダー情報を利用して、顧客によってなされたオーダーに対してサービスおよび資源のプロビジョニングをオーケストレーションしてもよい。いくつかの例では、オーダーオーケストレーションモジュール822は、資源のプロビジョニングをオーケストレーションして、利用されるサービスを、オーダープロビジョニングモジュール824のサービスを用いてサポートしてもよい。
【0125】
特定の例において、オーダーオーケストレーションモジュール822は、各オーダーに関連付けられるビジネスプロセスの管理を可能にし、ビジネスロジックを適用して、オーダーがプロビジョニングに進むべきかどうかを判断する。動作842で、新たなサブスクリプションに対するオーダーが受取られると、オーダーオーケストレーションモジュール822は、オーダープロビジョニングモジュール824に対して、資源を割当て、サブスクリプションオーダーを満たすよう必要とされる資源を構成するよう、要求を送る。オーダープロビジョニングモジュール824は、顧客によってオーダーされたサービスに対する資源の割当てを可能にする。オーダープロビジョニングモジュール824は、クラウドインフラストラクチャシステム800によって提供されるクラウドサービスと、要求されたサービスを提供するための資源をプロビジョニングするよう用いられる物理的インプリメンテーション層との間におけるある抽象レベルを与える。オーダーオーケストレーションモジュール822は、したがって、サービスおよび資源がオンザフライで実際にプロビジョニングされるか、または予めプロビジョニングされ、要求でのみ割当て/分配されるかどうかなど、インプリメンテーション詳細から隔離されてもよい。
【0126】
動作844で、サービスおよび資源がプロビジョニングされると、提供されるサービスの通知が、クラウドインフラストラクチャシステム802のオーダープロビジョニングモジュール824によってクライアントデバイス804、806および/または808における顧客に送信されてもよい。
【0127】
動作846で、顧客のサブスクリプションオーダーはオーダー管理および監視モジュール826によって管理およびトラッキングされてもよい。いくつかの例では、オーダー管理および監視モジュール826は、用いられるストレージの量、転送されるデータ量、ユーザの数、システムアップ時間およびシステムダウン時間の量などのような、サブスクリプションオーダーにおけるサービスに対する使用統計を収集するよう構成されてもよい。
【0128】
特定の例において、クラウドインフラストラクチャシステム800はアイデンティティ管理モジュール828を含んでもよい。アイデンティティ管理モジュール828は、クラウドインフラストラクチャシステム800におけるアクセス管理および承認サービスなどのようなアイデンティティサービスを提供するよう構成されてもよい。いくつかの例において、アイデンティティ管理モジュール828は、クラウドインフラストラクチャシステム802によって提供されるサービスを利用することを望む顧客についての情報を制御してもよい。そのような情報は、そのような顧客のアイデンティティを認証する情報、およびそれらの顧客がさまざまなシステム資源(たとえばファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど)に対してどのアクションを実行するよう承認されるかを記述する情報を含むことができる。アイデンティティ管理モジュール828は、さらに、各顧客についての記述的情報およびどのように誰によってその記述的情報がアクセスおよび修正され得るかの管理を含んでもよい。
【0129】
図9は、本発明のさまざまな例が実現され得る例示的なコンピュータシステム900を示す。システム900は、上記コンピュータシステムのうちのいずれかを実現するよう用いられてもよい。図に示されるように、コンピュータシステム900は、バスサブシステム902を介して複数の周辺サブシステムと通信する処理ユニット904を含む。これらの周辺サブシステムは、処理加速ユニット906、I/Oサブシステム908、ストレージサブシステム918および通信サブシステム924を含んでもよい。ストレージサブシステム918は有形のコンピュータ読取可能記憶媒体922およびシステムメモリ910を含む。
【0130】
バスサブシステム902は、コンピュータシステム900のさまざまなコンポーネントおよびサブシステムに意図されるように互いと通信させるための機構を提供する。バスサブシステム902は概略的に単一のバスとして図示されているが、バスサブシステムの代替例は複数のバスを利用してもよい。バスサブシステム902は、さまざまなバスアーキテクチャのうちの任意のものを用いるメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスを含むいくつかのタイプのバス構造のうちの任意のものであってもよい。たとえば、そのようなアーキテクチャは、産業標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、ビデオエレクトロニクス標準組織(VESA)ローカルバス、および周辺コンポーネントインターコネクト(PCI)バス、を含んでもよく、IEEE P1386.1規格に従って製造される中二階バスとして実現され得る。
【0131】
処理ユニット904は、1つ以上の統合された回路(たとえば従来のマイクロプロセッサまたはマイクロコントローラ)として実現されることができ、コンピュータシステム900の動作を制御する。1つ以上のプロセッサが処理ユニット904に含まれてもよい。これらのプロセッサは単一コアまたはマルチコアプロセッサを含んでもよい。特定の例において、処理ユニット904は、1つ以上の独立した処理ユニット932および/または934として、単一または複数コアのプロセッサが各処理ユニットに含まれる状態で実現されてもよい。他の例において、処理ユニット904は、さらに、2つのデュアルコアプロセッサを単一のチップに統合することによって形成されるクワッドコア処理ユニットとして実現されてもよい。
【0132】
さまざまな例において、処理ユニット904はさまざまなプログラムをプログラムコードに応答して実行することができ、複数の同時に実行されるプログラムまたはプロセスを維持することができる。任意の所与の時間において、実行されるべきプログラムコードの一部またはすべてがプロセッサ904および/またはストレージサブシステム918に常駐することができる。好適なプログラミングを介して、プロセッサ904は上記のさまざまな機能を提供することができる。コンピュータシステム900はさらに処理加速ユニット906を含んでもよく、それはデジタル信号プロセッサ(DSP)、特殊目的プロセッサなどを含むことができる。
【0133】
I/Oサブシステム908はユーザインターフェイス入力装置およびユーザインターフェイス出力装置を含んでもよい。ユーザインターフェイス入力装置は、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれるタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力装置、マイクロフォン、および他のタイプの入力装置を含んでもよい。ユーザインターフェイス入力装置は、たとえば、ユーザがジェスチャおよび話し言葉コマンドを用いて自然なユーザインターフェイスを介してMicrosoft Xbox(登録商標)360ゲームコントローラなどのような入力装置を制御しそれと対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサなどのようなモーション感知および/またはジェスチャ認識装置を含んでもよい。ユーザインターフェイス入力装置は、さらに、ユーザから目の活動(たとえば写真を撮る、および/またはメニュー選択を行っている間の「瞬き」)を検出し、目の動きを入力装置(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのような目のジェスチャ認識装置を含んでもよい。さらに、ユーザインターフェイス入力装置は、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知装置を含んでもよい。
【0134】
ユーザインターフェイス入力装置は、さらに、限定を伴わずに、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡装置などのような聴覚/視覚装置を含んでもよい。加えて、ユーザインターフェイス入力装置は、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、医療超音波検査装置などのような医療画像化入力装置を含んでもよい。ユーザインターフェイス入力装置は、さらに、たとえば、MIDIキーボード、デジタル音楽機器などのような音声入力装置を含んでもよい。
【0135】
ユーザインターフェイス出力装置は、ディスプレイサブシステム、インジケータライト、または音声出力装置のような非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使うもののようなフラットパネルデバイス、投影装置、タッチスクリーンなどであってもよい。一般に、「出力装置」という語の使用は、コンピュータシステム700からユーザまたは他のコンピュータに情報を出力するためのすべての考えられ得るタイプの装置および機構を含むよう意図される。たとえばユーザインターフェイス出力装置は、限定を伴うことなく、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力装置およびモデムなどのような、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示装置を含んでもよい。
【0136】
コンピュータシステム900は、システムメモリ910内に現在位置するとして示される、ソフトウェア要素を含むストレージサブシステム918を含んでもよい。システムメモリ910は、処理ユニット904においてロード可能および実行可能であるプログラム命令、ならびにこれらのプログラムの実行中に生成されるデータを記憶してもよい。
【0137】
コンピュータシステム900の構成およびタイプによっては、システムメモリ910は(ランダムアクセスメモリ(RAM))など揮発性であってもよく、および/または(リードオンリメモリ(ROM)、フラッシュメモリなど)不揮発性であってもよい。RAMは典型的には、処理ユニット904に即座にアクセス可能であり、および/もしくは処理ユニット904によって現在動作および実行されている、データならびに/またはプログラムモジュールを含む。いくつかの実現例では、システムメモリ910は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)などのような複数の異なるタイプのメモリを含んでもよい。いくつかの実現例では、起動中などのように、コンピュータシステム900内における要素間において情報の転送を助ける基本的なルーチンを含む基本的な入力/出力システム(BIOS)が、典型的にはROMに記憶されてもよい。例として、限定ではなく、システムメモリ910は、さらに、アプリケーションプログラム912を示し、それは、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)など、プログラムデータ914およびオペレーティングシステム916を含んでもよい。例として、オペレーティングシステム916は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/もしくはLinux(登録商標)オペレーティングシステムのさまざまなバージョン、さまざまな市場で入手可能なUNIX(登録商標)またはUNIXのようなオペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むが限定されない)、ならびに/またはiOS、Windows Phone(登録商標)、Android(登録商標) OS、BlackBerry(登録商標) 10 OS、およびPalm(登録商標) OSなどのようなモバイルオペレーティングシステムを含んでもよい。
【0138】
ストレージサブシステム918は、いくつかの例の機能を提供する基本的なプログラミングおよびデータ構造を記憶するための有形のコンピュータ読取可能記憶媒体を提供してもよい。プロセッサによって実行されると上記の機能を提供するソフトウェア(プログラム、コードモジュール、命令)がストレージサブシステム918に記憶されてもよい。これらのソフトウェアモジュールまたは命令は処理ユニット904によって実行されてもよい。ストレージサブシステム918は、さらに、本発明に従って用いられるデータを記憶するためのリポジトリを提供してもよい。
【0139】
ストレージサブシステム900は、さらに、コンピュータ読取可能記憶媒体922にさらに接続され得るコンピュータ読取可能記憶媒体リーダ920を含んでもよい。システムメモリ910とともに、およびオプションとしてシステムメモリ910との組合せで、コンピュータ読取可能記憶媒体922は、コンピュータ読取可能情報を一時的および/またはより永続的に含み、記憶し、送信し、および検索取得するための、遠隔の、ローカルな、固定された、および/またはリムーバブルな記憶装置に記憶媒体を加えたものを包括的に表現してもよい。
【0140】
コードまたはコードの一部を含むコンピュータ読取可能記憶媒体922は、さらに、情報の記憶および/または送信のための任意の方法または技術において実現される揮発性および不揮発性の、リムーバブルおよび非リムーバブルな媒体などであるがそれらに限定はされない、記憶媒体および通信媒体を含む、当該技術分野において公知であるかまたは用いられる任意の適切な媒体を含むことができる。これは、RAM、ROM、電子的に消去可能なプログラマブルROM(EEPROM)、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、または他の有形のコンピュータ読取可能媒体などのような、有形の、非一時的なコンピュータ読取可能記憶媒体を含むことができる。指定される場合には、これは、さらに、所望の情報を送信するよう用いられることができ、コンピューティングシステム900によってアクセスされることができる、データ信号、データ伝送または任意の他の媒体のような、非有形の一時的なコンピュータ読取可能媒体を含むことができる。
【0141】
例として、コンピュータ読取可能記憶媒体922は、非リムーバブルの、不揮発性磁気媒体において読出または書込を行うハードディスクドライブ、リムーバブルの不揮発性磁気ディスクにおいて読出または書込を行う磁気ディスクドライブ、およびCD ROM、DVD、およびブルーレイ(登録商標)ディスク、もしくは他の光媒体などのようなリムーバブルの不揮発性光ディスクにおいて読出または書込を行う光ディスクドライブを含んでもよい。コンピュータ読取可能記憶媒体1022は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含んでもよいがそれらに限定はされない。コンピュータ読取可能記憶媒体922は、さらに、フラッシュメモリに基づくSSDなどのような不揮発性メモリ、エンタープライズフラッシュドライブ、ソリッドステートROMなどに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMに基づくSSD、磁気抵抗RAM(MRAM)SSDなどのような揮発性メモリに基づくSSD、ならびにDRAMおよびフラッシュメモリに基づくSSDの組合せを用いるハイブリッドSSDを含んでもよい。ディスクドライブおよびそれらの関連のコンピュータ読取可能媒体は、コンピュータシステム900のためのコンピュータ読取可能命令、データ構造、プログラムモジュールおよび他のデータの不揮発性記憶を提供してもよい。
【0142】
通信サブシステム924は、他のコンピュータシステムおよびネットワークへのインターフェイスを与える。通信サブシステム924は、他のシステムとコンピュータシステム900との間のデータの送受のためのインターフェイスとして働く。たとえば、通信サブシステム924は、コンピュータシステム900がインターネットを介して1つ以上の装置に接続することを可能にしてもよい。いくつかの例において、通信サブシステム924は、(たとえばセルラー電話技術、3G、4GもしくはEDGE(グローバル進化のための高速データレート)などのような先進データネットワーク技術、WiFi(IEEE802.11ファミリー規格、もしくは他のモバイル通信技術、またはそれらの任意の組合せを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)送受信機コンポーネント、グローバルポジショニングシステム(GPS)受信機コンポーネント、ならびに/または他のコンポーネントを含むことができる。いくつかの例において、通信サブシステム924は無線インターフェイスに加えて、またはそれに代わって、有線ネットワーク接続(たとえばイーサネット)を提供することができる。
【0143】
いくつかの例において、通信サブシステム924は、さらに、コンピュータシステム900を用い得る1人以上のユーザのために、入力通信を、構造化されたデータフィードおよび/または構造化されないデータフィード926、イベントストリーム928、イベント更新930などの形式で受信してもよい。
【0144】
例として、通信サブシステム924は、データフィード926を、実時間で、Twitter(登録商標)フィード、Facebook(登録商標)更新、Rich Site Summary(RSS)フィードなどのようなウェブフィード、および/もしくは1つ以上の第三者情報源からの実時間更新などのようなソーシャルメディアネットワークおよび/または他の通信サービスのユーザから受信するよう構成されてもよい。
【0145】
加えて、通信サブシステム924は、さらに、データを、明示的な端部を有さない本質的に連続的または無限であってもよい、実時間イベントのイベントストリーム928および/またはイベント更新930を含んでもよい、連続データストリームの形式で受信するよう構成されてもよい。連続データを生成するアプリケーションの例は、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえばネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などを含んでもよい。
【0146】
通信サブシステム924は、さらに、構造化されたデータフィードおよび/または構造化されないデータフィード926、イベントストリーム928、イベント更新930などを、コンピュータシステム900に結合される1つ以上のストリーミングデータソースコンピュータとの通信状態にあってもよい1つ以上のデータベースに出力するよう構成されてもよい。
【0147】
コンピュータシステム900は、手持ち式の携帯装置(たとえばiPhone(登録商標)セルラーフォン、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(Google Glass(登録商標)頭部装着型ディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または任意の他のデータ処理システムを含む、さまざまなタイプのもののうちの1つであり得る。
【0148】
常に変化するコンピュータおよびネットワークの性質のため、図に示されるコンピュータシステム900の記載は具体的な例としてのみ意図される。図に示されるシステムより多いかまたは少ないコンポーネントを有する数多くの他の構成が可能である。たとえば、カスタマイズされたハードウェアも用いられるかもしれず、および/または特定の要素がハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、またはある組合せにおいて実現されるかもしれない。さらに、ネットワーク入力/出力装置などのような他のコンピューティングデバイスへの接続も用いられてもよい。ここに与えられる開示および教示に基づいて、当業者はさまざまな例を実現する他の態様および/または方法を理解する。
【0149】
上記明細書において、局面がその特定の例を参照して記載されているが、当業者はこの記載がそれに限定されないことを認識する。上記さまざまな特徴および局面は、個別にまたは一緒に用いられてもよい。さらに、例は、明細書のより広い精神および範囲から逸脱することなく、本明細書に記載されるものを超えて、任意の数の環境およびアプリケーションにおいて利用することができる。明細書および図面はしたがって、限定ではなく例示と見なされねばならない。
図1
図2
図3
図4
図5
図6
図7
図8
図9