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