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