(57)【要約】【課題】エッジ位置でのカスタマイズ可能なイベントトリガ型計算のための方法、システム、及びコンピュータ可読記憶媒体が開示される。コンテンツに対する要求は、クライアントデバイスからエッジサーバで受信される。【解決手段】コンテンツは、エッジサーバのコンテンツキャッシュからまたはエッジサーバに結合された配信元サーバから求められる。イベントに遭遇することを含む、要求の処理が開始される。イベントは、カスタマによって指定される機能と関連付けられる。イベントと関連付けられた機能は、プロセス分離を使用し、エッジサーバで実行される。コンテンツは、機能の実行に少なくとも部分的に基づいて生成される。コンテンツは、エッジサーバからクライアントデバイスに送信される。【選択図】図１
2019032903.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
発信元サーバ及びエッジサーバを備えるコンテンツ配信ネットワークを実装するように構成された複数のコンピューティングデバイスを備え、前記エッジサーバが、前記発信元サーバから取り出されたコンテンツを記憶するように構成されたコンテンツキャッシュを備え、前記エッジサーバが、
読み取り専用データストア、及び機能のイベントとの関連付けを受信することであって、前記読み取り専用データストア、前記機能、及び前記関連付けが、前記コンテンツ配信ネットワークのカスタマからの入力に少なくとも部分的に基づいて決定される、前記受信することと、
クライアントデバイスから、前記コンテンツキャッシュからまたは前記発信元サーバからのコンテンツに対する要求を受信することと、
前記要求の処理を開始することであって、前記要求の前記処理が、前記機能と関連付けられた前記イベントに遭遇することを含む、前記要求の処理を開始することと、
前記イベントと関連付けられた前記機能を実行することであって、前記機能が前記読み取り専用データストアを入力として指定し、前記機能の実行が前記読み取り専用データストアからの１つ以上の要素の取り出しを含む、前記実行することと、
前記機能の実行に少なくとも部分的に基づいて前記コンテンツを生成することと、
前記クライアントデバイスに前記コンテンツを送信することと、を行うように構成される、システム。
【請求項２】
前記イベントが前記クライアントデバイスからのコンテンツに対する前記要求の受領、または前記配信元サーバからのコンテンツに対する要求の準備を含み、前記イベントと関連付けられた前記機能を実行する際に、前記エッジサーバが、
前記コンテンツキャッシュからのコンテンツに対する前記要求または前記発信元サーバからのコンテンツに対する前記要求を修正する、ように構成される、請求項１に記載のシステム。
【請求項３】
前記イベントが、前記コンテンツキャッシュからのコンテンツに対する前記要求に対する応答の生成、または前記配信元サーバからのコンテンツに対する要求に対する応答の受領を含み、前記イベントと関連付けられた前記機能を実行する際に、前記エッジサーバが、
前記コンテンツキャッシュからのコンテンツに対する前記要求への応答、または前記発信元サーバからのコンテンツに対する前記要求への前記応答を修正する、ように構成される、請求項１に記載のシステム。
【請求項４】
前記コンテンツが、前記コンテンツキャッシュからまたは前記配信元サーバから前記コンテンツを取り出すことなく、前記機能の実行に少なくとも部分的に基づいて生成される、請求項１に記載のシステム。
【請求項５】
コンピュータ実装方法であって、
読み取り専用データストアをエッジサーバに複製することと、
クライアントデバイスから前記エッジサーバで、コンテンツに対する要求を受信することと、
前記要求の処理を開始することであって、前記要求の前記処理がイベントに遭遇することを含み、前記イベントがカスタマによって指定される機能と関連付けられ、前記機能が読み取り専用データストアを入力として指定する、前記要求の処理を開始することと、
前記読み取り専用データストアからデータを取り出すことを含む、前記エッジサーバで前記イベントと関連付けられた前記機能を実施することと、
前記機能を実施することに少なくとも部分的に基づいて前記コンテンツを生成することと、
前記エッジサーバから前記クライアントデバイスに前記コンテンツを送信することと、を含む、コンピュータ実装方法。
【請求項６】
前記イベントが、前記クライアントデバイスからのコンテンツに対する前記要求の受領、または配信元サーバからのコンテンツに対する要求の準備を含み、前記イベントと関連付けられた前記機能を実施することが、
前記エッジサーバでのコンテンツキャッシュからのコンテンツに対する前記要求、または前記発信元サーバからのコンテンツに対する前記要求を修正すること、を含む、請求項５に記載の方法。
【請求項７】
前記イベントが、前記エッジサーバでのコンテンツキャッシュからのコンテンツに対する前記要求に対する応答の生成、または配信元サーバからのコンテンツに対する要求に対する応答の受領を含み、前記イベントと関連付けられた前記機能を実施することが、
前記コンテンツキャッシュからのコンテンツに対する前記要求に対する応答、または前記発信元サーバからのコンテンツに対する前記要求に対する前記応答を修正すること、を含む、請求項５に記載の方法。
【請求項８】
前記イベントと関連付けられた前記機能を実施することが、
前記要求を処理することと関連付けられた１つ以上のメトリックスまたはログエントリを生成することと、を含む、請求項５に記載の方法。
【請求項９】
前記コンテンツが、コンテンツキャッシュからまたは配信元サーバから前記コンテンツを取り出すことなく、前記機能を実施することに少なくとも部分的に基づいて生成される、請求項５に記載の方法。
【請求項１０】
前記エッジサーバでの１つ以上の他の機能の実行に関してプロセス分離を使用し、前記機能が実行される、請求項５に記載の方法。
【請求項１１】
前記読み取り専用データストアが複数のキー‐値対を備える、請求項５に記載の方法。
【請求項１２】
前記読み取り専用データストアが前記カスタマによって指定される、請求項５に記載の方法。
【請求項１３】
前記イベントと関連付けられた前記機能を実施することが、
追加サーバでプロバイダネットワークのリソースにアクセスすること
を含む、請求項５に記載の方法。
【請求項１４】
コンピュータ可読記憶媒体であって、
エッジサーバ及び複数の追加エッジサーバに読み取り専用データストアを複製することであって、前記読み取り専用データストアがコンテンツ配信ネットワークのカスタマによって指定される、前記読み取り専用データストアを複製することと、
クライアントデバイスから前記エッジサーバで、コンテンツに対する要求を受信することと、
前記要求の処理を開始することであって、前記要求の前記処理がイベントを実行することを含み、前記イベントがユーザー定義プログラムコードと関連付けられ、前記ユーザー定義プログラムコードが前記読み取り専用データストアを入力として指定する、前記要求の処理を開始することと、
前記エッジサーバで、前記イベントと関連付けられた前記ユーザー定義プログラムコードを実行することであって、前記ユーザー定義プログラムコードが前記エッジサーバでの他のユーザー定義プログラムコードの実行に関して分離技術を使用し、実行される、前記ユーザー定義プログラムコードを実行することと、
前記ユーザー定義プログラムコードの実行に少なくとも部分的に基づいて前記コンテンツを生成することであって、前記ユーザー定義プログラムコードの前記実行が前記読み取り専用データストアからの前記データの取り出しを含む、前記コンテンツを生成することと、
前記エッジサーバから前記クライアントデバイスに前記コンテンツを送信することと、を実行するコンピュータ実行可能なプログラム命令を記憶する、コンピュータ可読記憶媒体。
【請求項１５】
前記イベントが、前記クライアントデバイスからのコンテンツに対する前記要求の受領、または配信元サーバからのコンテンツに対する要求の準備を含み、前記イベントと関連付けられた前記ユーザー定義プログラムコードを実行することが、
前記エッジサーバでのコンテンツキャッシュからのコンテンツに対する前記要求、または前記発信元サーバからのコンテンツに対する前記要求を修正すること、を含む、請求項１４に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
多くの会社及び他の組織は、その事業を支援するために、（例えば、ローカルネットワ
ークの一部として）同一場所に配置されている、または代わりに（例えば、１つ以上のプ
ライベート仲介ネットワークもしくはパブリック仲介ネットワークを介して接続される）
複数の別個の地理的位置に配置されているコンピューティングシステムを用いて等、多数
のコンピューティングシステムを相互接続するコンピュータネットワークを運用している
。例えば、相当数の相互接続されたコンピューティングシステムを収容する分散システム
が日常的になっている。係る分散システムは、クライアントと対話するサーバにバックエ
ンドサービスを提供してよい。また、係る分散システムは、コンピューティングリソース
をカスタマに提供するためにエンティティによって運用されるデータセンタを含むことも
ある。一部のデータセンタ事業者は、多様なカスタマによって所有されるハードウェアに
ネットワークアクセス、電力、及び安全な設置施設を提供する。一方、他のデータセンタ
事業者はそのカスタマによる使用のために利用できるハードウェアリソースも含む「フル
サービス」施設を提供する。分散システムの規模及び範囲が拡大するにつれ、リソースを
セットアップする、運営する、及び管理するタスクはますます複雑になってきた。
【０００２】
例えば、コンテンツ配信ネットワークまたはコンテンツ配布ネットワーク（ＣＤＮ）は
、エンドユーザーにコンテンツを効率的に配信するために異なる地理的位置全体で分散シ
ステムを利用してよい。ＣＤＮは、例えばウェブページ及びその構成要素、ストリーミン
グメディア、ダウンロード可能メディア、アプリケーションデータ等の多様なタイプのコ
ンテンツを提供してよい。ＣＤＮの目標は、コンテンツ配信のための高可用性及び低遅延
を含んでよい。ＣＤＮを実装する分散システムは、多くの場合複数の基幹回線を介して多
くの地理的位置に遠隔のポイントオブプレゼンスを含むことがあり、これにより優れた性
能を有する異なるユーザーにコンテンツを提供できる。これらの遠隔のポイントオブプレ
ゼンスは、エッジ位置と称されることがある。
【図面の簡単な説明】
【０００３】
【図１】一実施形態に従って、エッジ位置でのカスタマイズ可能なイベントトリガ型計算（ｅｖｅｎｔ−ｔｒｉｇｇｅｒｅｄ  ｃｏｍｐｕｔａｔｉｏｎ）のための例のシステム環境を示す図である。
【図２】一実施形態に従って、イベントと関連付けられた、カスタマ指定機能を含む、エッジ位置でのカスタマイズ可能なイベントトリガ型計算のための例のシステム環境の追加の態様を示す図である。
【図３】一実施形態に従って、計算をトリガするためのイベントの例を含む、エッジ位置でのカスタマイズ可能なイベントトリガ型計算のための例のシステム環境の追加の態様を示す図である。
【図４】一実施形態に従って、エッジサーバでのイベントトリガ機能の安全な実行を含む、エッジ位置でのカスタマイズ可能なイベントトリガ型計算のための例のシステム環境の追加の態様を示す図である。
【図５】一実施形態に従って、エッジ位置でのカスタマイズ可能なイベントトリガ型計算のための方法を示すフローチャートである。
【図６】一実施形態に従って、エッジ位置への読み取り専用データの複製を含む、エッジ位置でのカスタマイズ可能なイベントトリガ型計算のための例のシステム環境の追加の態様を示す図である。
【図７】一実施形態に従って、複製された読み取り専用データストアを使用する、エッジサーバでのイベントトリガ機能の安全な実行を含む、エッジ位置でのカスタマイズ可能なイベントトリガ型計算のための例のシステム環境の追加の態様を示す図である。
【図８】一実施形態に係る、エッジ位置への読み取り専用データの複製のための方法を示すフローチャートである。
【図９】一部の実施形態で使用され得る例のコンピューティングデバイスを示す図である。
【発明を実施するための形態】
【０００４】
実施形態は本明細書でいくつかの実施形態及び例示的な図面についての例として説明さ
れるが、当業者は、実施形態が説明される実施形態または図面に限定されないことを認識
するであろう。図面及びその詳細な説明は、実施形態を開示される特定の形式に限定する
ことを意図しておらず、逆に、その意図は、添付の特許請求の範囲によって定義される精
神及び範囲に含まれる全ての変形、均等物及び代替物に及ぶことを理解するべきである。
本明細書で使用される見出しは、構成的な目的だけで使用され、明細書及び特許請求の範
囲の範囲を限定するために使用することを意図していない。本出願を通じて使用されるよ
うに、単語「ｍａｙ（してよい）」は、必須の意味（すなわち、ｍｕｓｔ（しなければな
らない）を意味する）ではなく、許容的な意味（すなわち、ｈａｖｉｎｇ  ｔｈｅ  ｐｏ
ｔｅｎｔｉａｌ  ｔｏ（する可能性がある）を意味する）で使用される。同様に、単語「
ｉｎｃｌｕｄｅ（含む）」、「ｉｎｃｌｕｄｉｎｇ（含む）」、及び「ｉｎｃｌｕｄｅｓ
（含む）」は「ｉｎｃｌｕｄｉｎｇ，ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ（を含むが
、これに限定されるものではない）」を意味する。
【０００５】
エッジ位置でのカスタマイズ可能なイベントトリガ型計算のための方法、システム、及
びコンピュータ可読記憶媒体の多様な実施形態が説明される。本明細書に説明される技術
を使用し、コンテンツ配信ネットワーク（ＣＤＮ）のカスタマは、多様なタイプのコンテ
ンツ配信イベントと関連付けられた機能を供給、選択、またはそれ以外の場合構成してよ
い。機能、及び機能のイベントとの関連付けは、ＣＤＮのエッジサーバに反映されてよい
。適切な要求がエッジサーバで受信されると、関連付けられた機能がエッジサーバで実行
されてよい。エッジサーバは、機能を実行することによって、エッジサーバでキャッシュ
からのコンテンツに対する要求を修正し、配信元サーバからのコンテンツに対する要求を
修正し、エッジサーバでのキャッシュからのコンテンツに対する要求に対する応答を修正
し、配信元サーバからのコンテンツに対する要求に対する応答を修正し、メトリックスま
たはログエントリを生成するための要求分解を修正する、または要求と関連付けられたエ
ラーを生じさせてよい。機能は、安全な実行環境でプロセス分離のための技術を使用し、
実行されてよい。一実施形態では、読み取り専用データストアがエッジサーバに反映され
てよい。読み取り専用データストアはカスタマ特有であってよく、特定のカスタマによる
使用のために、そのカスタマの代わりにコンテンツを生成し及び／またはクライアントに
配信する際に、供給及び／または修正されてよい。コンテンツに対する要求を処理する際
に、エッジサーバは、データストアから取り出されたデータの要素を活用する機能（例え
ば、カスタマ指定機能）を実行してよい。このようにして、コンテンツの生成及び／また
はエッジ位置からユーザーへの配信はカスタマイズされ得る。
【０００６】
図１は、一実施形態に従って、エッジ位置でのカスタマイズ可能なイベントトリガ型計
算のための例のシステム環境を示す図である。コンテンツ配信ネットワーク（ＣＤＮ）１
００は、１つ以上のネットワーク１９０を介してクライアントデバイス１８０Ａ〜１８０
Ｎにコンテンツを配信するために対話する複数のコンピューティングデバイスを含んでよ
い。ＣＤＮ１００は、例えばウェブページ及びその構成要素、ストリーミングメディア、
ダウンロード可能メディア、アプリケーションデータ、クライアントデバイスでの実行を
目的としたプログラムコード等の多様なタイプのコンテンツを提供してよい。一実施形態
では、ＣＤＮ１００は、１つ以上の配信元サーバ１１０及び複数のエッジサーバ１２０Ａ
〜１２０Ｎを含んでよい。配信元サーバ（複数可）１１０は、コンテンツストレージ１１
１にコンテンツの要素を持続的に記憶してよく、例えばコンテンツストレージ１１１のコ
ンテンツの要素に基づいてコンテンツを動的に生成してよい。エッジサーバ１２０Ａ〜１
２０Ｎは、配信元サーバ（複数可）１１０から最初に入手されたコンテンツの要素をキャ
ッシュに格納してよい。したがって、エッジサーバ１２０Ａ〜１２０Ｎのそれぞれは、例
えばエッジサーバ１２０Ａ用のコンテンツキャッシュ１２１Ａ、エッジサーバ１２０Ｂ用
のコンテンツキャッシュ１２１Ｂ、及びエッジサーバ１２０Ｎ用のコンテンツキャッシュ
１２１Ｎ等のコンテンツキャッシュを含んでよい。
【０００７】
一実施形態では、ＣＤＮ１００からコンテンツを求めているクライアントは、配信元サ
ーバ（複数可）１１０とよりむしろ、おもにエッジサーバ１２０Ａ〜１２０Ｎと対話して
よい。クライアントデバイス１８０Ａ〜１８０Ｎからのコンテンツに対する要求を処理す
るとき、エッジサーバ１２０Ａ〜１２０Ｎは最初にそのローカルコンテンツキャッシュか
らコンテンツを配信しようと試みてよい。コンテンツがローカルにキャッシュに格納され
ていない場合、エッジサーバは配信元サーバ（複数可）１１０から要求されたコンテンツ
を入手してよい。コンテンツキャッシュ１２１Ａ〜１２１Ｎは、（例えば、コンテンツの
要素が設定可能な期間内にクライアントによって要求されなかった場合）コンテンツの要
素が期限切れとなり、キャッシュから削除され得るようにキャッシング方針を実装してよ
い。しかしながら、コンテンツの要素は必ずしも配信元サーバ（複数可）１１０のコンテ
ンツストレージ１１１から期限切れとならないことがある。コンテンツストレージ１１１
及び／またはコンテンツキャッシュ１２１Ａ〜１２１Ｎを実装するために、任意の適切な
ストレージ技術が使用されてよい。
【０００８】
配信元サーバ（複数可）１１０は、エッジサーバ１２０Ａ〜１２０Ｎよりも（例えば、
特定の領域内で）より中心に位置してよい。本明細書で使用されるように、用語「エッジ
サーバ」は概してエッジ位置にあるコンテンツサーバを指し、用語「エッジ位置」は概し
て（地理及び／またはネットワークトポロジーの観点から）なんらかのメトリックに従っ
てエンドユーザーにより近い位置を指す。本明細書中で使用されるように、用語「配信元
サーバ」は、概して１つ以上のエッジサーバにコンテンツを提供するコンテンツサーバを
指す。エッジサーバ１２０Ａ〜１２０Ｎは、さまざまな地理的位置、またはエッジ位置と
称されることがあるネットワークトポロジーの位置で分散されてよい。エッジサーバ１２
０Ａ〜１２０Ｎは、それらが概して配信元サーバ（複数可）１１０よりも高い性能で多様
な位置のクライアントデバイス１８０Ａ〜１８０Ｎにコンテンツを提供できるように異な
る位置に配置されてよい。一実施形態では、エッジサーバ１２０Ａ〜１２０Ｎを使用する
コンテンツ配信のより高い性能は、ネットワーク待ち時間、ネットワーク帯域幅使用、ペ
ージロード回数、及び／または任意の他の適切なメトリック（複数可）の観点から測定さ
れてよい。例えば、コンテンツに対する特定の要求の場合、特定のクライアントデバイス
は、例えばクライアントデバイスと選択されたエッジサーバとの間のネットワークホップ
の数を削減することによって、ネットワーク待ち時間を最小限に抑えるまたはそれ以外の
場合性能を最大限にするように特定のエッジサーバにルート設定されてよい。また、コン
テンツを配信するためのエッジサーバ１２０Ａ〜１２０Ｎの使用はより高い可用性及び／
またはより低いコストを実現することもある。
【０００９】
エッジサーバ１２０Ａ〜１２０Ｎは、カスタマイズ可能なイベントトリガ型計算を実装
することによって、クライアントデバイス１８０Ａ〜１８０Ｎからのコンテンツ要求の処
理中に任意の適切なイベントでカスタマ指定機能またはユーザー指定機能を実行してよい
。例えば、カスタマ指定機能はクライアントからのコンテンツ要求を修正し、コンテンツ
要求に対する応答を修正し、配信元サーバ（複数可）に対する発信元の要求を修正し、配
信元サーバ（複数可）に対する発信元の要求に対する応答を修正し、（例えば、要求され
たコンテンツを配信できないときにクライアントに対する）エラー通知を修正し、及び／
またはコンテンツ要求を処理した後にメトリックス及び／またはログエントリを生成して
よい。一実施形態では、カスタマイズ可能なイベント駆動計算は、コンテンツを生成する
及び／またはクライアントデバイス１８０Ａ〜１８０Ｎに配信するためにエッジサーバ１
２０Ａ〜１２０Ｎに複製された読み取り専用データストアを使用してよい。エッジサーバ
１２０Ａ〜１２０Ｎのそれぞれは、１つ以上のモジュール、構成要素、またはカスタマイ
ズ可能なイベントトリガ型計算を実装する機能性の他の要素を含んでよい。例えば、各エ
ッジサーバ１２０Ａ〜１２０Ｎは、エッジサーバ１２０Ａでのイベントトリガ型計算機能
１２２Ａ、エッジサーバ１２０Ｂでのイベントトリガ型計算機能１２２Ｂ、及びエッジサ
ーバ１２０Ｎでのイベントトリガ型計算機能１２２Ｎ等のイベントトリガ型計算の機能を
含んでよい。
【００１０】
ＣＤＮ１００及びクライアントデバイス１８０Ａ〜１８０Ｎは、例えばネットワーク（
複数可）１９０等、１つ以上の適切なネットワークを使用し、互いに通信で結合されてよ
い。クライアントデバイス１８０Ａ〜１８０Ｎは、多様なクライアントまたはユーザーを
表してよい、または相当してよい。クライアントデバイス１８０Ａ〜１８０Ｎは、任意の
適切な位置または地域にわたって分散されてよい。一実施形態によると、クライアントデ
バイス１８０Ａ〜１８０Ｎは、ＣＤＮ１００からのコンテンツを消費するブラウザプログ
ラムまたは他のアプリケーションを実行するように構成されてよい。例えば、クライアン
トデバイス１８０Ａ〜１８０Ｎは、ＣＤＮ１００からのコンテンツに対するＨＴＴＰ（ハ
イパーテキスト転送プロトコル）要求を生成するウェブブラウザを実行してよい。クライ
アントデバイス１８０Ａ〜１８０Ｎのそれぞれは、１つ以上のコンピューティングデバイ
スを使用し、実装されてよく、１つ以上のコンピューティングデバイスのいずれかは図９
に示される例のコンピューティングデバイス３０００によって実装されてよい。
【００１１】
ＣＤＮ１００は複数のコンピューティングデバイスを含んでよく、複数のコンピューテ
ィングデバイスのいずれかは図９に示される例のコンピューティングデバイス３０００に
よって実装されてよい。多様な実施形態では、ＣＤＮ１００の機能の部分は、同じコンピ
ューティングデバイスによってまたは任意の適切な数の異なるコンピューティングデバイ
スによって提供されてよい。一実施形態では、エッジサーバについて本明細書に説明され
る機能の部分は、複数のコンピューティングデバイス及び／またはストレージリソース全
体で分散されてよい。例えば、コンテンツキャッシュ１２１Ａ及びイベントトリガ型計算
１２２Ａは、ネットワークまたは他の相互接続を使用して結合される異なるコンピューテ
ィングデバイスを使用し、実装されてよい。ＣＤＮ１００の構成要素のいずれかが異なる
コンピューティングデバイスを使用し、実装される場合、次いで構成要素及びそのそれぞ
れのコンピューティングデバイスは、例えばネットワークを介して通信で結合されてよい
。（例えば、コンテンツストレージ１１１、コンテンツキャッシュ１２１Ａ〜１２１Ｎ、
及びイベントトリガ型計算１２２Ａ〜１２２Ｎ等）示されている構成要素のそれぞれは、
そのそれぞれの機能を実施するために使用できるソフトウェア及びハードウェアの任意の
組み合わせを表してよい。
【００１２】
ＣＤＮ１００は、図示されていない追加の構成要素、図示されているよりも少ない構成
要素、または図示されている構成要素の異なる組み合わせ、構成、及び量を含むことがあ
ることが意図される。例えば、３つのエッジサーバ１２０Ａ、１２０Ｂ、及び１２０Ｎが
例及び説明のために図示されているが、エッジサーバの異なる量及び構成が使用されてよ
いことが意図される。さらに、３つのクライアントデバイス１８０Ａ、１８０Ｂ、及び１
８０Ｎが例及び説明のために示されているが、異クライアントデバイスの異なる量及び構
成が使用されてよいことが意図される。
【００１３】
一部の実施形態では、発信元サーバ（複数可）１１０、エッジサーバ１２０Ａ〜１２０
Ｎ、及び／またはクライアントデバイス１８０Ａ〜１８０Ｎは、仮想計算インスタンス及
び／または物理計算インスタンスを使用し、実装されてよい。仮想計算インスタンス及び
／または物理計算インスタンスは、計算リソース、メモリリソース、ストレージリソース
、及びネットワークリソースを管理するプロバイダネットワークによってクライアントに
提供され、セットアップされ、保守されてよい。仮想計算インスタンスは、（ＣＰＵのタ
イプ及び数、メインメモリのサイズ等を示すことによって指定されてよい）指定された計
算能力、ならびに指定されたソフトウェアスタック（例えば、同様にハイパーバイザの上
部で実行してよいオペレーティングシステムの特定のバージョン）を有する１つ以上のサ
ーバを含んでよい。１つ以上の仮想計算インスタンスは、図９に示される例のコンピュー
ティンデバイス３０００によって実装されてよい。
【００１４】
一実施形態では、ＣＤＮ１００の適切な構成要素は、多様なサーバまたはＣＤＮの他の
構成要素（配信元サーバ（複数可）１１０、エッジサーバ１２０Ａ〜１２０Ｎ、及び／ま
たはその構成要素モジュール）を実装するための仮想計算インスタンスを選択及び／また
はセットアップしてよい。例えば、仮想計算インスタンスは利用可能なコンピューティン
グインスタンスの適切なプールからセットアップされてよい。一実施形態において、追加
のコンピューティングインスタンスは、必要に応じてＣＤＮ１００に追加されてよい。一
実施形態において、コンピューティングインスタンスは、コンピューティングインスタン
スが特定の時点で必要とされない場合、利用可能なコンピューティングインスタンスのプ
ールに返されてよい。
【００１５】
一実施形態では、ＣＤＮ１００の機能はプロイダネットワークを使用し、カスタマに提
供されてよい。ＣＤＮ１００のカスタマは、ＣＤＮにコンテンツ（例えば、カスタマによ
って供給または選択されるコンテンツ）をクライアントデバイス１８０Ａ〜１８０Ｎに配
信させるようとするエンティティ（例えば、人物、企業、及び／または他の組織）を表し
てよい。例えば、ＣＤＮ１００の機能性は、ウェブアクセス可能サービスとしてカスタマ
に提示されてよい。インターネット及び／または他のネットワークを介してクライアント
の分散された集合に、アクセス可能な１つ以上のウェブサービス（例えば、多様なタイプ
のクラウドベースコンピューティングまたはストレージ）を提供するために、企業または
公共部門組織等のエンティティによってセットアップされたネットワークは、プロバイダ
ネットワークと称されてよい。プロバイダネットワークは、例えばプロバイダによって提
供されるインフラ及びサービスを実装し、分配するために使用される、物理的なコンピュ
ータサーバ及び／または仮想化コンピュータサーバ、ストレージデバイス、ネットワーク
機器の集合体等の多様なリソースプールをホストする多数のデータセンタを含んでよい。
一部の実施形態では、リソースは、例えば仮想のまたは物理的な計算インスタンスまたは
ストレージインスタンス等の「インスタンス」と呼ばれる単位でクライアントに提供され
てよい。仮想計算インスタンスは、例えば、（ＣＰＵのタイプ及び数、メインメモリのサ
イズ等を示すことによって指定されてよい）指定された計算能力、ならびに指定されたソ
フトウェアスタック（例えば、同様にハイパーバイザの上部で実行してよいオペレーティ
ングシステムの特定のバージョン等）を有する１つ以上のサーバを含んでよい。コンピュ
ータサーバ、ストレージデバイス、ネットワークデバイス等を含む、異なる実施形態でプ
ロバイダネットワークのリソースを実装するために、いくつかの異なるタイプのコンピュ
ーティングデバイスを単独でまたは組み合わせて使用してよい。
【００１６】
図２は、一実施形態に従って、イベントと関連付けられた、カスタマ指定機能を含む、
エッジ位置でのカスタマイズ可能なイベントトリガ型計算のための例のシステム環境の追
加の態様を示す図である。エッジサーバ１２０Ａ〜１２０Ｎでのイベントトリガ型計算は
、１人以上のカスタマまたはＣＤＮ１００の他のユーザーによってカスタマイズされてよ
い。一実施形態では、カスタマ入力１１４は、イベントトリガ型計算を実行するためのカ
スタマ構成１１５を指定する、定義する、またはそれ以外の場合（少なくとも部分的に）
決定するために使用されてよい。上述されたように、ＣＤＮ１００のカスタマは、ＣＤＮ
にコンテンツ（例えば、カスタマによって供給または選択されるコンテンツ）をクライア
ントデバイス１８０Ａ〜１８０Ｎに配信させようとするエンティティ（例えば、人物、企
業、及び／または他の組織）を表すことがあり、これによりコンテンツはカスタマの代わ
りにクライアントに配信されると言われることがある。カスタマ入力１１４は、ＣＤＮ１
００の特定のカスタマによって提供される入力を表してよく、カスタマ構成１１５はその
カスタマのための構成を表してよい。一実施形態では、構成サーバ２１０によって維持さ
れる追加カスタマ構成は、追加カスタマのための追加の構成を含んでよい。一実施形態で
は、カスタマ構成１１５は、特定のカスタマのための特定のアプリケーションまたはデー
タセットに関してよく、特定のカスタマは追加のアプリケーションまたは追加のデータセ
ットのための追加カスタマ構成を指定してよい。したがって、カスタマ構成１１５は、特
定のカスタマのための（及びおそらくそのカスタマのための特定のアプリケーションまた
は特定のデータセット）のためのイベントトリガ型計算方針を表してよい。
【００１７】
カスタマ入力１１４は、アプリケーションプログラミングインタフェース（ＡＰＩ）及
び／またはグラフィカルユーザインタフェース（ＧＵＩ）等の任意の適切なインタフェー
ス（複数可）を使用し、カスタマによって提供されてよい。例えば、カスタマ構成１１５
を修正するためのＧＵＩは、ウェブページでコントロールを使用し、提示されてよく、カ
スタマはウェブページにアクセスしてカスタマ構成を修正するためにウェブブラウザを使
用してよい。カスタマ入力１１４は、カスタマ構成１１５を指定するために構成サーバ２
１０等の集中型の構成要素に提供されてよい。カスタマ構成１１５は、次いで構成サーバ
２１０からエッジサーバ１２０Ａ〜１２０Ｎに反映されてよい。また、（例えば、追加カ
スタマ入力に基づいた）カスタマ構成１１５に対する更新も構成サーバ２１０で行われ、
次いでエッジサーバ１２０Ａ〜１２０Ｎにプッシュされてよい。このようにして、同じイ
ベントトリガ型計算方針は、例えばエッジサーバ１２０Ａ〜１２０Ｎ等の複数のエッジサ
ーバ全体で特定のカスタマ（及びおそらくそのカスタマのための特定のアプリケーション
または特定のデータセット）のために実装されてよい。構成サーバ２１０は、エッジサー
バ１２０Ａ〜１２０Ｎに関して任意の適切な場所に配置されてよく、図９に示される例の
コンピューティングデバイス３０００によって実装されてよい。
【００１８】
一実施形態では、カスタマ構成１１５は多様なイベントタイプと多様な機能を関連付け
てよい、またはリンクしてよい。図２の例に示されるように、カスタマ構成１１５は、複
数のイベントタイプ１１６Ａ〜１１６Ｎのいずれかのための関連付けられた機能を指定し
てよい。例えば、カスタマ入力１１４に基づいて、イベントタイプ１１６Ａは機能１１７
Ａと関連付けられてよく、イベントタイプ１１６Ｎは機能１１７Ｎと関連付けられてよい
。イベントタイプ１１６Ａ〜１１６Ｎ及び機能１１７Ａ〜１１７Ｎは図解及び例のために
示されているが、任意の適切な数及び構成のイベントタイプ及び機能がカスタマ構成１１
５と使用されてよいことが意図される。一実施形態では、特定のイベントタイプは関連付
けられた機能を有さないことがある。イベントタイプ１１６Ａ〜１１６Ｎは概して、コン
テンツの準備及び／またはエッジサーバ１２０Ａ〜１２０Ｎの１つからクライアント装置
１８０〜１８０Ｎの１つへの配信の間に遭遇することがあるイベントに関し得る。イベン
トタイプの例は、図３に関して以下に説明される。
【００１９】
機能１１７Ａ〜１１７Ｎ及び対応するイベントタイプ１１６Ａ〜１１６Ｎとの機能１１
７Ａ〜１１７Ｎの関連付けは、例えばカスタマ入力１１４を使用し、カスタマによって指
定されてよい。一実施形態では、機能１１７Ａ〜１１７Ｎはカスタマによって構成サーバ
２１０にアップロードされてよい。一実施形態では、機能１１７Ａ〜１１７Ｎは、カスタ
マによって所定の機能のセットから選択されてよい。所定の機能の少なくともいくつかは
カスタマ及び／または追加カスタマによって提供されてよい。機能１１７Ａ〜１１７Ｎは
、エッジサーバ１２０Ａ〜１２０Ｎに対して（解釈、コンパイル、及び／またはジャスト
インタイムコンパイルの使用を含む）任意の適切な実行技術を使用して実行できる（プロ
グラム命令を含む）プログラムコードのセットを含んでよい。したがって、機能１１７Ａ
〜１１７Ｎはスクリプト言語、高水準プログラミング言語、コンパイルしたプログラム、
または任意の他の適切なフォーマットもしくはフォーマットの組み合わせを含む、任意の
適切なフォーマットでカスタマによって指定されてよい。一実施形態では、機能１１７Ａ
〜１１７Ｎの１つ以上は入力のソースとして読み取り専用データソースを指してよい。読
み取り専用データストアは同じカスタマによって指定されてよく、機能１１７Ａ〜１１７
Ｎとの使用のためにエッジサーバ１２０Ａ〜１２０Ｎに反映されてよい。
【００２０】
図３は、一実施形態に従って、計算をトリガするためのイベントの例を含む、エッジ位
置でのカスタマイズ可能なイベントトリガ型計算のための例のシステム環境の追加の態様
を示す。一実施形態では、イベントタイプ１１６Ａ〜１１６Ｎは、コンテンツ要求１５１
、コンテンツ応答１５２（例えば、コンテンツ要求１５１に対する応答）、発信元要求１
５３、発信元応答１５４（例えば、発信元要求１５３に対する応答）、エラー通知１５５
、及び／または要求分解１５６等のコンテンツ配信に関係するイベントを含んでよい。一
実施形態では、これらのイベントの１つ以上は、特定のカスタマによって特定の機能と関
連付けられてよく、特定の機能は、そのカスタマのためのコンテンツ配信をカスタマイズ
するために対応するイベントのときにまたは後に実行されてよい。イベント１５１〜１５
６の１つ以上は、（コンテンツの生成及び／または取り出しならびにコンテンツの配信を
含む）クライアントデバイス１８０Ａからのコンテンツ要求の処理中に遭遇することがあ
る。一部の状況では、イベント１５１〜１５６の全てにコンテンツに対する特定の要求の
処理で遭遇することがあるわけではない。
【００２１】
一実施形態では、エッジサーバでの機能の実行は、サービスリソースまたはストレージ
リソース等の、エッジサーバにとってローカルであるリソースにアクセスすることを含ん
でよい。一実施形態では、機能の実行は、例えばエッジサーバ１２０Ａ〜１２０Ｎ及び発
信元サーバ（複数可）１１０以外のサーバにアクセスするためにネットワークを使用し、
プロバイダネットワークのリソースにアクセスすることを含んでよい。例えば、プロバイ
ダネットワークのアクセス可能なリソースは、仮想化されたコンピューティングリソース
、仮想化されたストレージリソース、及び多様なタスクを実行するように構成された多様
なサービスを含んでよい。
【００２２】
コンテンツ要求イベント１５１は、コンテンツに対する要求がクライアントデバイス１
８０Ａからエッジサーバ１２０Ａによって受信されるときに発生してよい。コンテンツ要
求イベント１５１は、コンテンツ要求のための（例えば、ＣＡＣＨＥまたはＰＲＯＸＹ要
求のための）要求ヘッダがクライアントデバイス１８０Ａから受信されるときに発生して
よい。任意の適切な機能は、コンテンツ要求イベント１５１に応えてエッジサーバ１２０
Ａによって実行されてよい。例えば、コンテンツ要求イベント１５１と関連付けられた機
能は、コンテンツ要求自体を修正するために実施（例えば、実行）されてよい。例えば、
コンテンツ要求イベント１５１と関連付けられた機能は、コンテンツ要求のルートの設定
を変更するために、コンテンツ要求のプロトコルを変更するために、及び／または発信元
要求のためのヘッダを修正するために実施（例えば、実行）されてよい。一実施形態では
、コンテンツ要求イベント１５１と関連付けられた機能は、コンテンツキャッシュ１２１
Ａまたは発信元サーバ（複数可）１１０からコンテンツを取り出すことなく、コンテンツ
要求に対する応答を動的に生成するために実施（例えば、実行）されてよい。
【００２３】
コンテンツ応答イベント１５２は、コンテンツがコンテンツに対する要求に応じて、そ
の要求を発行したクライアントデバイス１８０Ａに送信されると発生してよい。任意の適
切な機能は、コンテンツ応答イベント１５２に応えてエッジサーバ１２０Ａによって実施
されてよい。例えば、コンテンツ応答イベント１５２と関連付けられた機能は、コンテン
ツ応答自体を修正するために実施（例えば、実行）されてよい。
【００２４】
発信元要求イベント１５３は、エッジサーバ１２０Ａが発信元サーバ（複数可）１１０
からコンテンツを要求するために準備しているときに発生してよい。例えば、発信元要求
は、コンテンツがコンテンツキャッシュ１２１Ａで見つけられないときに発信元サーバ（
複数可）１１０からコンテンツを入手するために発行されてよい。したがって、要求され
たコンテンツがコンテンツキャッシュ１２１Ａで見つけられる場合、発信元要求イベント
１５３に遭遇しないことがある。任意の適切な機能は、発信元要求イベント１５３に応え
てエッジサーバ１２０Ａによって実施されてよい。発信元要求イベント１５３と関連付け
られた機能は、発信元要求自体を修正するために実施（例えば、実行）されてよい。例え
ば、発信元要求イベント１５３と関連付けられた機能は、発信元要求のルート設定を変更
する、発信元要求のプロトコルを変更する、及び／または発信元要求に許可ヘッダを追加
するために実施（例えば、実行）されてよい。一実施形態では、発信元要求イベント１５
３と関連付けられた機能は、コンテンツキャッシュ１２１Ａまたは発信元サーバ（複数可
）１１０からコンテンツを取り出すことなく、発信元要求に対する応答を動的に生成する
ために実施（例えば、実行）されてよい。
【００２５】
発信元応答イベント１５４は、コンテンツが発信元要求に応えて、発信元サーバ（複数
可）１１０からエッジサーバ１２０Ａによって受信されると発生してよい。再び、要求さ
れたコンテンツがコンテンツキャッシュ１２１Ａで見つけられる場合、発信元応答イベン
ト１５５に遭遇しないことがある。一実施形態では、発信元応答イベント１５４は、コン
テンツがエッジサーバ１２０Ａによって受信されるが、コンテンツがコンテンツキャッシ
ュ１２１Ａに格納される前に発生してよい。任意の適切な機能は、発信元応答イベント１
５４に応えてエッジサーバ１２０Ａによって実施されてよい。例えば、発信元応答イベン
ト１５４と関連付けられた機能は、発信元応答自体を修正するために実施（例えば、実行
）されてよい。
【００２６】
コンテンツ要求１５１の処理中の任意の適切な点でエラーが生じる、またはエラーに遭
遇すると、エラーイベント１５５が発生することがある。例えば、エラーは、要求された
コンテンツをクライアントデバイス１８０Ａに配信できない場合生じてよい。任意の適切
な機能は、エラーイベント１５５に応えてエッジサーバ１２０Ａによって実施されてよい
。例えば、エラーイベント１５５と関連付けられた機能は、例えばクライアントデバイス
１８０Ａに送信されるエラー等、エラーページまたは他のエラー通知をフェッチする、修
正する、またはそれ以外の場合生じさせるために実施（例えば、実行）されてよい。
【００２７】
要求分解イベント１５６は、コンテンツ応答１５２またはエラー１５５の後に発生する
ことがある。要求分解１５６は、コンテンツに対する要求を処理することに関係する１つ
以上の性能メトリックス及びまたはログエントリを生成してよい。任意の適切な機能は、
要求分解イベント１５６に応えてエッジサーバ１２０Ａによって実行されてよい。例えば
、要求分解イベント１５６と関連付けられた機能は、１つ以上のメトリックス及び／また
はログエントリを生成し、それらをメトリックス及びログ１６０のレポジトリに記憶する
ために実施（例えば、実行）されてよい。
【００２８】
図４は、一実施形態に従って、エッジサーバでのイベントトリガ機能の安全な実行を含
む、エッジ位置でのカスタマイズ可能なイベントトリガ型計算のための例のシステム環境
の追加の態様を示す。イベントトリガ型計算機能１２２Ａは、例えばプロセス分離のため
の１つ以上の技術を使用し、安全な方法でコンテンツ配信をカスタマイズするための機能
を実施（例えば、実行）してよい。本明細書で使用されるように、用語「プロセス分離」
は概して、第１の機能が第２の機能（または第２の機能と関連付けられたデータ）に直接
的に影響を及ぼすまたはアクセスすることができないように、機能の処理の互いからの分
離を含む。一実施形態では、エッジサーバ１２０Ａ〜１２０Ｎのいずれかは、プロセス分
離を使用し、カスタマ指定機能を実行するための１つ以上の構成要素を含む、安全な実行
環境を実装してよい。プロセス分離を提供するための安全な実行環境の実装は、カスタマ
指定機能での任意のプログラムコードの安全な実行を許可してよい。エッジサーバ１２０
Ａでは、コンテンツ要求処理モジュール１３０Ａは、コンテンツに対する要求をクライア
ントデバイス１８０Ａから受信してよい。上述されるように、コンテンツに対する要求を
処理する際に、（例えば、イベント１５１〜１５６のように）１つ以上のコンテンツ配信
イベントに遭遇することがある。例えば、要求を処理することは、コンテンツがすでにコ
ンテンツキャッシュ１２１Ａに記憶されていない場合、エッジサーバ１２０Ａが発信元サ
ーバ（複数可）１１０からコンテンツ１１２を要求することを含んでよい。カスタマ構成
１１５で機能と関連付けられるイベントに遭遇するとき、エッジサーバ１２０Ａでのトリ
ガモジュール１３１Ａはその機能の実行を開始してよい。
【００２９】
イベントトリガ型計算１２２Ａは、イベントと機能との間の関連付けを決定するために
カスタマ構成１１５を参照してよい。一実施形態では、各機能は、対応するイベントによ
ってトリガされた後専用の分離されたコンテナで実行されてよい。エッジサーバ１２０Ａ
は、複数のコンテナ１４２Ａを含んでよい。コンテナ１４２Ａは、複数の機能の実行にプ
ロセス分離を提供してよい。コンテナ１４２Ａのそれぞれは、コンテンツ配信イベントと
関連付けられた機能の実行のために安全な実行環境を実装してよい。コンテナ１４２Ａを
実装するために、任意の適切な技術が使用されてよい。一実施形態では、コンテナ１４２
Ａのいずれかは、機能を実施できるバーチャルマシンを実装してよい。任意の適切なバー
チャルマシン技術は、コンテナ１４２Ａを実装するために使用されてよい。一実施形態で
は、コンテナ１４２Ａのいずれかは、機能を実施できるＬｉｎｕｘ（登録商標）コンテナ
を実装してよい。各Ｌｉｎｕｘコンテナは、専用の計算リソース、メモリリソース、入出
力リソース、及びネットワークリソースを含む仮想環境を提供してよい。コンテナ１４２
Ａは集合的に、１人のカスタマのためのまたは複数のカスタマのための機能の実行のため
に使用されてよい。コンテナ１４２Ａのいずれも、使用時に、１人の特定のカスタマのた
めにどんなときでも機能を実行するために使用され得ることが意図される。
【００３０】
コンテナ１４２Ａは、コンテナマネージャモジュール１４０Ａによって管理されてよい
。例えば、コンテナマネージャ１４０Ａは、コンテナをインスタンス化し、コンテナをリ
サイクルまたはリセットし、コンテナを破壊し、コンテナ１４２Ａを管理するための任意
の他の適切なタスクを実施してよい。トリガモジュール１３１Ａは、例えばコンテナマネ
ージャ１４０Ａに特定の機能の実行のためにコンテナをインスタンス化またはそれ以外の
場合準備するように命令するために、コンテナマネージャ１４０Ａに制御メッセージを送
信してよい。トリガモジュール１３１Ａは、機能実行メッセージを要求ルート設定モジュ
ール１４１Ａに送信してよく、要求ルート設定モジュール１４１Ａは特定の機能の実行を
開始するためにそれらのメッセージを適切なコンテナに転送してよい。一実施形態では、
特定の機能のためのコンテナが、対応するイベントに遭遇する前にインスタンス化されて
よく、要求ルート設定モジュール１４１Ａは、対応するイベントがトリガされるときにそ
れらの事前設定されたコンテナに実行要求を送ってよい。一実施形態では、特定の機能の
ためのコンテナは、対応するイベントに遭遇した後にインスタンス化されてよく、要求ル
ート設定モジュール１４１Ａは、対応するイベントがトリガされるときにそれらのコンテ
ナに実行要求を送ってよい。コンテナでの機能の実行の結果は、例えばコンテナ１４２Ａ
からコンテナ要求処理モジュールまたはトリガモジュール１３１Ａに直接的に等、任意の
適切な方法でコンテンツ要求処理モジュール１３０Ａに送り返されてよい。
【００３１】
図５は、一実施形態に従って、エッジ位置でのカスタマイズ可能なイベントトリガ型計
算のための方法を示すフローチャートである。５０５に示されるように、機能はコンテン
ツ配信のためのイベントのタイプと関連付けられてよい。機能は、コンテンツ配信ネット
ワーク（ＣＤＮ）の１人以上のカスタマからのカスタマ入力に基づいたイベントと関連付
けられてよい。機能は、カスタマ（複数可）によって指定されてよい、または使用可能な
機能のセットからカスタマ（複数可）によって選択されてよい。機能は、概して（コンテ
ンツの生成または取り出し、及びコンテンツの配信を含む）ＣＤＮからのコンテンツに対
する要求の処理で実行できる、またはそれ以外の場合実施できる（プログラム命令を含む
）プログラムコードのセットを含んでよい。イベントは、コンテンツ要求、コンテンツ応
答（例えば、コンテンツ要求に対する応答）、発信元要求、発信元応答（例えば、発信元
要求に対する応答）、エラー通知、及び／または要求分解等のコンテンツ配信に関係する
イベントを含んでよい。一実施形態では、（例えば、カスタマ入力に基づいて）読み取り
専用データストアも指定されてよい。
【００３２】
５１０に示されるように、カスタマ指定機能はＣＤＮの複数のエッジサーバに送信され
てよい。一実施形態では、機能はエッジサーバに反映される前に、例えば構成サーバ等の
集中型の場所でイベントに指定されてよい。また、エッジサーバに機能を送信することは
、機能と対応するイベントタイプとの間の関連付けを送信することを含んでもよい。一実
施形態では、読み取り専用データストアもエッジサーバに反映されてよい。
【００３３】
５１５に示されるように、コンテンツ要求は、クライアントデバイスからエッジサーバ
で受信されてよい。要求は、エッジサーバのコンテンツキャッシュからまたは配信元サー
バからのコンテンツに対する要求を表してよい。エッジサーバはコンテンツを生成する要
求の処理を開始してよく、処理は１つ以上のイベントに遭遇することを含んでよい。５２
０〜５３５に示されるように、エッジサーバは多様なイベントを順に処理し、任意の関連
付けられた機能を実施してよい。このようにして、コンテンツはイベントによってトリガ
される１つ以上のカスタマ指定機能の実行に（少なくとも部分的に）基づいて生成されて
よい。５２０に示されるように、エッジサーバは、機能が（例えば、カスタマによって指
定されるように）現在のイベントにリンクされるかどうかを判断してよい。リンクされる
場合、次いで５２５に示されるように、機能はエッジサーバで実行されてよい、またはそ
れ以外の場合実施されてよい。一実施形態では、機能は、コンテナが追加のコンテナで実
行中の追加の機能から分離され得るように、プロセス分離を使用し、コンテナで実行され
てよい。機能の実行は、エッジサーバに複製される読み取り専用データストアから１つ以
上の要素を取り出し、使用することを含んでよい。５３０に示されるように、要求の処理
と関連付けられる全てのイベントに遭遇したかどうかが判断されてよい。遭遇していない
場合、次いで５３５に示されるように、方法は次のイベントに進んでよい。全てのイベン
トに遭遇すると、５４０に示されるように、エッジサーバはクライアントデバイスにコン
テンツを送信してよい。
【００３４】
本明細書で説明されるＣＤＮは、異なるカスタマのためのカスタマ指定機能が同じエッ
ジサーバで異なるイベントによってトリガされ得るようにマルチテナンシーのための技術
を実装してよい。一実施形態では、追加コンテンツに対する追加要求はエッジサーバで受
信されてよい。追加要求は、例えばエッジサーバのコンテンツキャッシュからまたは発信
元サーバから等、異なるカスタマからのコンテンツに対する要求を表してよい。エッジサ
ーバはコンテンツを生成する追加要求の処理を開始してよく、処理は１つ以上のイベント
に遭遇することを含んでよい。５２０〜５３５に関して上述されるように、エッジサーバ
は多様なイベントを反復し、あらゆる関連付けられた機能を実施してよい。このようにし
て、追加コンテンツは、異なるカスタマによって指定される１つ以上のイベントトリガ機
能の実行に（少なくとも部分的に）基づいて生成されてよい。エッジサーバは、全てのイ
ベントに遭遇するとクライアントデバイスにコンテンツを送信してよい。
【００３５】
図６は、一実施形態に従って、エッジ位置への読み取り専用データの複製を含む、エッ
ジ位置でのカスタマイズ可能なイベントトリガ型計算のための例のシステム環境の追加の
態様を示す。エッジサーバ１２０Ａ〜１２０Ｎでのイベントトリガ型計算は、１人以上の
カスタマまたはＣＤＮ１００の他のユーザーによってカスタマイズされてよい。一実施形
態では、カスタマ入力６１４は、イベントトリガ型計算を実行するために使用可能な読み
取り専用データストア６１５を指定する、定義する、またはそれ以外の場合（少なくとも
部分的に）決定するために使用されてよい。上述されたように、ＣＤＮ１００のカスタマ
は、ＣＤＮにコンテンツ（例えば、カスタマによって供給または選択されるコンテンツ）
をクライアントデバイス１８０Ａ〜１８０Ｎに配信させようとするエンティティ（例えば
、人物、企業、及び／または他の組織）を表すことがあり、これによりコンテンツはカス
タマの代わりにクライアントに配信されると言われることがある。カスタマ入力６１４は
ＣＤＮ１００の特定のカスタマによって提供される入力を表すことがあり、読み取り専用
データストア６１５はその特定のカスタマのためのデータストアを表すことがある。一実
施形態では、追加の読み取り専用データストアは、同じカスタマのために及び／または追
加カスタマのために構成サーバ２１０によって維持されてよい。一実施形態では、読み取
り専用データストア６１５は特定のカスタマのための特定のアプリケーションまたはデー
タセットに関することがあり、特定のカスタマは追加のアプリケーションまたは追加のデ
ータベースのための追加の読み取り専用データストアを指定してよい。
【００３６】
カスタマ入力６１４は、例えばアプリケーションプログラミングインタフェース（ＡＰ
Ｉ）及び／またはグラフィカルユーザーインタフェース（ＧＵＩ）等の任意の適切なイン
タフェース（複数可）を使用し、カスタマによって提供されてよい。例えば、カスタマは
、適切なＡＰＩを使用し、読み取り専用データストア６１５のためのデータの要素を構成
サーバ２１０にアップロードし、それによって読み取り専用データストア６１５をポピュ
レートしてよい。カスタマ入力６１４は、読み取り専用データストア６１５の要素を指定
するために、構成サーバ２１０等の集中型構成要素に提供されてよい。読み取り専用デー
タストア６１５は、次いで構成サーバ２１０からエッジサーバ１２０Ａ〜１２０Ｎに反映
されてよい。また、（例えば、追加カスタマ入力に基づいた）読み取り専用データストア
６１５への更新は、構成サーバ２１０で行われてもよく、次いでエッジサーバ１２０Ａ〜
１２０Ｎにプッシュされてよい。このようにして、同じ読み取り専用データストア６１５
を使用するイベントトリガ型計算は、例えばエッジサーバ１２０Ａ〜１２０Ｎ等の複数の
エッジサーバ全体で、特定のカスタマのために（及びそのカスタマのためのおそらく特定
のアプリケーションまたは特定のデータセットのために）実装されてよい。構成サーバ２
１０は、エッジサーバ１２０Ａ〜１２０Ｎに関して任意の適切な場所に配置されてよく、
図９に示される例のコンピューティングデバイス３０００によって実装されてよい。
【００３７】
読み取り専用データストア６１５を実装するために、任意の適切な技術が使用されてよ
い。一実施形態では、読み取り専用データストア６１５は、複数のキー‐値対を記憶する
キー‐値データストアであってよい。図６の例に示されるように、読み取り専用データス
トア６１５のデータの要素は、キー６１６Ａ及び関連付けられた値６１７Ａ、キー６１６
Ｂ及び関連付けられた値６１７Ｂ、ならびにキー６１６Ｎ及び関連付けられた値６１７Ｎ
を含んでよい。しかしながら、任意の適切な数及び構成のデータ要素が、読み取り専用デ
ータストア６１５を使用し、維持され得ることが意図される。一実施形態では、カスタマ
によって指定される機能の１つ以上は、入力のソースとして読み取り専用データストア６
１５を参照してよい。読み取り専用データストア及び機能は同じカスタマによって指定さ
れてよく、ともにエッジサーバ１２０Ａ〜１２０Ｎに反映されてよい。
【００３８】
図７は、一実施形態に従って、複製された読み取り専用データストアを使用する、エッ
ジサーバでのイベントトリガ機能の安全な実行を含む、エッジ位置でのカスタマイズ可能
なイベントトリガ型計算のための例のシステム環境の追加の態様を示す。イベントトリガ
型計算機能１２２は、例えばプロセス分離のための１つ以上の技術を使用し、安全な方法
でコンテンツ配信をカスタマイズするための機能を実施（例えば、実行）してよい。本明
細書で使用されるように、用語「プロセス分離」は概して、第１の機能が第２の機能（ま
たは第２の機能と関連付けられたデータ）に直接的に影響を及ぼすまたはアクセスするこ
とができないように、機能の処理の互いからの分離を含む。一実施形態では、エッジサー
バ１２０Ａ〜１２０Ｎのいずれかは、プロセス分離を使用し、カスタマ指定機能を実行す
るための１つ以上の構成要素を含む、安全な実行環境を実装してよい。エッジサーバ１２
０Ａでは、コンテンツ要求処理モジュール１３０Ａは、コンテンツに対する要求をクライ
アントデバイス１８０Ａから受信してよい。上述されるように、コンテンツに対する要求
を処理する際に、（例えば、イベント１５１〜１５６のように）１つ以上のコンテンツ配
信イベントに遭遇することがある。例えば、要求を処理することは、コンテンツがすでに
コンテンツキャッシュ１２１Ａに記憶されていない場合、エッジサーバ１２０Ａが発信元
サーバ（複数可）１１０からコンテンツ１１２を要求することを含んでよい。カスタマ構
成１１５で機能と関連付けられるイベントに遭遇するとき、エッジサーバ１２０Ａでのト
リガモジュール１３１Ａはその機能の実行を開始してよい。機能の実行は、例えば１つ以
上のキーと関連付けられた１つ以上の値等、読み取り専用データストア６１５からデータ
の１つ以上の要素を取り出し、使用することを含んでよい。生成され、要求側のデバイス
１８０Ａに送信されるコンテンツは、このようにして読み取り専用データストア６１５か
らのデータの要素を含むことがある、またはそれ以外の場合に読み取り専用データストア
６１５からのデータの要素に（少なくとも部分的に）基づくことがある。
【００３９】
イベントトリガ型計算１２２Ａは、イベントと機能との間の関連付けを決定するために
カスタマ構成１１５を参照してよい。一実施形態では、各機能は、対応するイベントによ
ってトリガされた後専用の分離されたコンテナで実行されてよい。エッジサーバ１２０Ａ
は、複数のコンテナ１４２Ａを含んでよい。コンテナ１４２Ａは、複数の機能の実行にプ
ロセス分離を提供してよい。コンテナ１４２Ａのそれぞれは、コンテンツ配信イベントと
関連付けられた機能の実行のために安全な実行環境を実装してよい。コンテナ１４２Ａを
実装するために、任意の適切な技術が使用されてよい。一実施形態では、コンテナ１４２
Ａのいずれかは、機能を実施できるバーチャルマシンを実装してよい。任意の適切なバー
チャルマシン技術は、コンテナ１４２Ａを実装するために使用されてよい。一実施形態で
は、コンテナ１４２Ａのいずれかは、機能を実施できるＬｉｎｕｘコンテナを実装してよ
い。各Ｌｉｎｕｘコンテナは、専用の計算リソース、メモリリソース、入出力リソース、
及びネットワークリソースを含む仮想環境を提供してよい。コンテナ１４２Ａは集合的に
、１人のカスタマのためのまたは複数のカスタマのための機能の実行のために使用されて
よい。コンテナ１４２Ａのいずれも、使用時に、１人の特定のカスタマのためにどんなと
きでも機能を実行するために使用され得ることが意図される。
【００４０】
コンテナ１４２Ａは、コンテナマネージャモジュール１４０Ａによって管理されてよい
。例えば、コンテナマネージャ１４０Ａは、コンテナをインスタンス化し、コンテナをリ
サイクルまたはリセットし、コンテナを破壊し、コンテナ１４２Ａを管理するための任意
の他の適切なタスクを実施してよい。トリガモジュール１３１Ａは、例えばコンテナマネ
ージャ１４０Ａに特定の機能の実行のためにコンテナをインスタンス化またはそれ以外の
場合準備するように命令するために、コンテナマネージャ１４０Ａに制御メッセージを送
信してよい。トリガモジュール１３１Ａは、機能実行メッセージを要求ルート設定モジュ
ール１４１Ａに送信してよく、要求ルート設定モジュール１４１Ａは特定の機能の実行を
開始するためにそれらのメッセージを適切なコンテナに転送してよい。一実施形態では、
特定の機能のためのコンテナが、対応するイベントに遭遇する前にインスタンス化されて
よく、要求ルート設定モジュール１４１Ａは、対応するイベントがトリガされるときにそ
れらの事前設定されたコンテナに実行要求を送ってよい。一実施形態では、特定の機能の
ためのコンテナは、対応するイベントに遭遇した後にインスタンス化されてよく、要求ル
ート設定モジュール１４１Ａは、対応するイベントがトリガされるときにそれらのコンテ
ナに実行要求を送ってよい。コンテナでの機能の実行の結果は、例えばコンテナ１４２Ａ
からコンテナ要求処理モジュールまたはトリガモジュール１３１Ａに直接的に等、任意の
適切な方法でコンテンツ要求処理モジュール１３０Ａに送り返されてよい。
【００４１】
図８は、一実施形態に係る、エッジ位置への読み取り専用データの複製のための方法を
示すフローチャートである。８０５に示されるように、読み取り専用データストアが指定
されてよい。データストアは、例えばカスタマがデータストアのためのデータの要素及び
／または利用可能な要素の集合からのデータの選択された要素をアップロードすることに
よって等、コンテンツ配信ネットワーク（ＣＤＮ）のカスタマによって指定されてよい。
データストアは複数のキー‐値対を含んでよい。一実施形態では、カスタマは、イベント
と関連付けられた１つ以上の機能を指定してもよい。機能は、概して（コンテンツの生成
または取り出し、及びコンテンツの配信を含む）ＣＤＮからのコンテンツに対する要求の
処理で実行できる、またはそれ以外の場合実施できる（プログラム命令を含む）プログラ
ムコードのセットを含んでよい。イベントは、コンテンツ要求、コンテンツ応答（例えば
、コンテンツ要求に対する応答）、発信元要求、発信元応答（例えば、発信元要求に対す
る応答）、エラー通知、及び／または要求分解等のコンテンツ配信に関係するイベントを
含んでよい。
【００４２】
８１０に示されるように、読み取り専用データストアは、ＣＤＮの複数のエッジサーバ
に送信されてよい。エッジサーバのそれぞれは、おそらくオフサーバストレージを含むエ
ッジサーバによって管理されるストレージリソースにデータストアのローカルコピーを維
持してよい。読み取り専用データストアは、エッジサーバに反映される前に、例えば構成
サーバ等の集中型の場所で指定されてよい。エッジサーバに読み取り専用データストアを
送信することは、読み取り専用データストアのローカルコピーまたはインスタンスをポピ
ュレートするためにエッジサーバにデータを送信することを含んでよい。一実施形態では
、カスタマ指定機能（複数可）もＣＤＮの複数のエッジサーバに送信されてよい。また、
エッジサーバに機能を送信することは、機能と対応するイベントタイプとの間の関連付け
を送信することを含んでもよい。
【００４３】
８１５に示されるように、コンテンツ要求は、クライアントデバイスからエッジサーバ
で受信されてよい。要求は、エッジサーバのコンテンツキャッシュからまたは配信元サー
バからのコンテンツに対する要求を表してよい。８２０に示されるように、エッジサーバ
はコンテンツを生成する要求の処理を開始してよく、処理は１つ以上の機能を実施するこ
とを含んでよい。要求されたコンテンツを生成するために、１つ以上の機能はエッジサー
バでの読み取り専用データストアからデータの要素を取り出し、使用してよい。一実施形
態では、１つ以上の機能は、読み取り専用データストアのローカルコピーからのデータを
入力として参照するパラメータを含んでよい。コンテンツ要求の処理では、１つ以上のイ
ベントに遭遇することがある。特定の機能は特定のイベントと関連付けられてよく、これ
により（例えば、読み取り専用データストアも指定したカスタマによって指定される）機
能のそれぞれは、コンテキスト要求の処理で対応するイベントに遭遇するときに実施され
てよい。エッジサーバでの機能を実施することは、読み取り専用データストアのローカル
コピーからデータを取り出し、使用することを含んでよい。８２５に示されるように、エ
ッジサーバはクライアントデバイスにコンテンツを送信してよい。
【００４４】
例示的なコンピュータシステム
少なくとも一部の実施形態では、本明細書に記載される技術の内の１つまたは複数の一
部または全てを実装するコンピュータシステムは、１つ以上のコンピュータ可能媒体を含
む、またはそれにアクセスするように構成されたコンピュータシステムを含んでよい。図
９は、係るコンピューティングデバイス３０００を示す。示される実施形態では、コンピ
ューティングデバイス３０００は、入出力（Ｉ／Ｏ）インタフェース３０３０を介してシ
ステムメモリ３０２０に結合された１つ以上のプロセッサ３０１０を含む。コンピューテ
ィングデバイス３０００さらに、Ｉ／Ｏインタフェース３０３０に結合されたネットワー
クインタフェース３０４０を含む。
【００４５】
多様な実施形態では、コンピューティングデバイス３０００は、１つのプロセッサ３０
１０を含むユニプロセッサシステム、またはいくつかのプロセッサ３０１０（例えば、２
つ、４つ、８つもしくは別の適切な数）を含むマルチプロセッサシステムであってよい。
プロセッサ３０１０は、命令を実行することが可能な任意の適切なプロセッサを含んでよ
い。例えば、多様な実施形態では、プロセッサ３０１０は、例えばｘ８６、ＰｏｗｅｒＰ
Ｃ、ＳＰＡＲＣもしくはＭＩＰＳ  ＩＳＡ、または任意の他の適切なＩＳＡ等の、さまざ
まなインストラクションセットアーキテクチャ（ＩＳＡ）のいずれかを実装するプロセッ
サであってよい。マルチプロセッサシステムでは、プロセッサ３０１０のそれぞれは、通
常同じＩＳＡを実装してよいが、必ずしも同じＩＳＡを実装しないことがある。
【００４６】
システムメモリ３０２０は、プロセッサ（複数可）３０１０によってアクセス可能なプ
ログラム命令及びデータを記憶するように構成されてよい。多様な実施形態では、システ
ムメモリ３０２０は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、同期型ＲＡＭ
（ＳＤＲＡＭ）、不揮発性／フラッシュタイプのメモリまたは任意の他のタイプのメモリ
等のいずれかの適切なメモリ技術を使用し、実装されてよい。示される実施形態では、上
述されたそれらの方法、技術、及びデータ等の１つ以上の所望の機能を実装するプログラ
ム命令及びデータは、コード（つまり、プログラム命令）３０２５及びデータ３０２６と
してシステムメモリ３０２０内に記憶されて、示される。
【００４７】
一実施形態において、Ｉ／Ｏインタフェース３０３０は、プロセッサ３０１０と、シス
テムメモリ３０２０と、ネットワークインタフェース３０４０またはほかの周辺インタフ
ェースを含むデバイス内のあらゆる周辺装置との間のＩ／Ｏトラフィックを調整するよう
に構成されてよい。一部の実施形態では、Ｉ／Ｏインタフェース３０３０は、データ信号
をある構成要素（例えば、システムメモリ３０２０）から別の構成要素（例えば、プロセ
ッサ３０１０）による使用に適切なフォーマットに変換するために任意の必要なプロトコ
ル、タイミング、または他のデータ変換を実施してよい。一部の実施形態では、Ｉ／Ｏイ
ンタフェース３０３０は、例えば、ペリフェラルコンポーネントインターコネクト（ＰＣ
Ｉ）バス規格またはユニバーサルシリアルバス（ＵＳＢ）規格の変形等の多様なタイプの
周辺バスを通じて取り付けられたデバイスに対するサポートを含んでよい。一部の実施形
態では、Ｉ／Ｏインタフェース３０３０の機能は、例えば、ノースブリッジ及びサウスブ
リッジ等の２つ以上の別々の構成要素に分けられてよい。また、一部の実施形態では、シ
ステムメモリ３０２０へのインタフェース等のＩ／Ｏインタフェース３０３０の機能のい
くつかまたは全ては、プロセッサ３０１０に直接的に組み込まれてよい。
【００４８】
ネットワークインタフェース３０４０は、コンピューティングデバイス３０００と１つ
または複数のネットワーク３０５０に取り付けられた他のデバイス３０６０との間でデー
タを交換できるように構成されてよい。多様な実施形態では、ネットワークインタフェー
ス３０４０は、例えば、イーサネット（登録商標）ネットワークのタイプ等のいずれか適
切な有線汎用データネットワークまたは無線汎用データネットワークを介した通信をサポ
ートしてよい。さらに、ネットワークインタフェース３０４０は、例えばアナログ音声ネ
ットワークもしくはデジタルファイバ通信ネットワーク等の電気通信／電話ネットワーク
を介した、ファイバチャネルＳＡＮ等のストレージエリアネットワークを介した、または
任意の他の適切なタイプのネットワーク及び／もしくはプロトコルを介した通信をサポー
トしてよい。
【００４９】
一部の実施形態では、システムメモリ３０２０は、対応する方法及び装置の実施形態を
実装するための、上述されたプログラム命令及びデータを記憶するように構成されたコン
ピュータ可読（つまり、コンピュータアクセス可能）媒体の一実施形態であってよい。し
かしながら、他の実施形態では、プログラム命令及び／またはデータは、異なるタイプの
コンピュータアクセス可能媒体上で受信、送信、または記憶されてよい。一般的に、コン
ピュータ可読媒体は、例えばＩ／Ｏインタフェース３０３０を介してコンピューティング
デバイス３０００に結合されたディスクまたはＤＶＤ／ＣＤ等の磁気媒体または光学媒体
等の非一過性の記憶媒体またはメモリ媒体を含んでよい。また、非一過性のコンピュータ
可読記憶媒体は、システムメモリ３０２０または別のタイプのメモリとしてコンピューテ
ィングデバイス３０００の一部の実施形態に含められることがある、ＲＡＭ（例えば、Ｓ
ＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭ等）、ＲＯＭ等の任意の揮発性媒
体または不揮発性媒体を含んでもよい。さらに、コンピュータ可読媒体は、例えばネット
ワークインタフェース３０４０を介して実装されるように、伝送媒体、または例えばネッ
トワーク及び／または無線リンク等の通信媒体を介して伝達される電気信号、電磁信号、
もしくはデジタル信号を含んでよい。図９に示されるもの等の複数のコンピューティング
デバイスの部分または全ては、多様な実施形態で説明された機能を実装するために使用さ
れてもよく、例えば、さまざまな異なるデバイス及びサーバ上で実行するソフトウェア構
成要素は、機能を提供するために協働してよい。一部の実施形態では、説明される機能の
部分は、ストレージデバイス、ネットワークデバイス、またはコンピュータシステムを使
用し、実装されてよい。本明細書で使用される用語「コンピューティングデバイス」は、
少なくとも全てのこれらのタイプのデバイスを指し、これらのタイプのデバイスに制限さ
れない。
【００５０】
多様な実施形態はさらに、上述の説明に従って実装される命令及び／もしくはデータを
受信すること、送信すること、またはコンピュータ可読媒体上で記憶することを含むこと
がある。一般的には、コンピュータ可読媒体は、例えば、ディスクまたはＤＶＤ／ＣＤ−
ＲＯＭ、ＲＡＭ（例えば、ＳＤＲＡＭ、ＤＤＲ、ＲＤＲＡＭ、ＳＲＡＭ等）、ＲＯＭ等の
揮発性媒体または不揮発性媒体等の磁気媒体または光学媒体等の、記憶媒体またはメモリ
媒体を含んでよい。一部の実施形態では、コンピュータ可読媒体は伝送媒体、または例え
ばネットワーク及び／もしくは無線リンク等の通信媒体を介して伝達される電気信号、電
磁信号、またはデジタル信号等の信号を含んでもよい。
【００５１】
図面に示され、本明細書で説明される多様な方法は、方法の実施形態の例を表している
。方法は、ソフトウェア、ハードウェア、またはそれらの組み合わせで実施されてよい。
多様な方法では、ステップの順序は変更されてよく、多様な要素が追加、並べ替え、結合
、省略、修正等されてよい。ステップの多様なステップは、（例えば、ユーザー入力によ
って直接的にプロンプトで促されることなく）自動的に及び／または（例えば、プログラ
ム命令に従って）プログラムで実施されてよい。
【００５２】
本明細書で本発明の説明に使用される用語は、特定の実施形態を説明する目的のためで
あり、本発明を制限することを意図していない。本発明の明細書及び添付の特許請求の範
囲で使用されるように、単数形「ａ」、「ａｎ」、及び「ｔｈｅ」は、文脈上明確に他の
意味を示すべき場合を除いて、複数形も同様に含むことが意図される。また、本明細書で
使用される用語「ａｎｄ／ｏｒ（及び／または）」は、関連付けられ、示されている項目
の１つ以上のありとあらゆる考えられる組み合わせを指し、包含することも理解される。
用語、「ｉｎｃｌｕｄｅｓ（含む）」、「ｉｎｃｌｕｄｉｎｇ（含む）」、「ｃｏｍｐｒ
ｉｓｅｓ（含む）」、及び／または「ｃｏｍｐｒｉｓｉｎｇ（含む）」は、本明細書で使
用されるとき、記載されている特徴、整数、ステップ、動作、要素、及び／または構成要
素の存在を指定するが、１つ以上の他の特徴、整数、ステップ、動作、要素、構成要素、
及び／またはそれらの群の存在または追加を除外しないことがさらに理解される。
【００５３】
本明細書で使用されるように、用語「ｉｆ（場合）」は、状況に応じて、「ｗｈｅｎ（
とき）」または「ｕｐｏｎ（時）」または「ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ  ｄｅｔｅｒ
ｍｉｎｉｎｇ（〜判断することに応えて）」、または「ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ  
ｄｅｔｅｃｔｉｎｇ（〜検出することに応えて）」、を意味すると解釈されてよい。同様
に、句「ｉｆ  ｉｔ  ｉｓ  ｄｅｔｅｒｍｉｎｅｄ（が判断される場合）」または「ｉｆ
［ａ  ｓｔａｔｅｄ  ｃｏｎｄｉｔｉｏｎ  ｏｒ  ｅｖｅｎｔ］  ｉｓ  ｄｅｔｅｃｔ
ｅｄ（［記載される条件またはイベント］が検出される場合）」は、状況に応じて、「ｕ
ｐｏｎ  ｄｅｔｅｒｍｉｎｉｎｇ（判断時）」または「ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ  
ｄｅｔｅｒｍｉｎｉｎｇ（〜判断することに応えて）」、または「ｉｎ  ｒｅｓｐｏｎｓ
ｅ  ｔｏ  ｄｅｔｅｃｔｉｎｇ  ［ｔｈｅ  ｓｔａｔｅｄ  ｃｏｎｄｉｔｉｏｎ  ｏｒ  
ｅｖｅｎｔ］（〜［記載される状態またはイベント］を検出することに応えて）」、を意
味すると解釈されてよい。
【００５４】
また、用語、第１の、第２の等は本明細書で多様な要素を記述するために使用されるこ
とがあるが、これらの要素はこれらの用語によって制限されるべきではないことも理解さ
れる。これらの用語は、ある要素を別の要素と区別するために使用されるにすぎない。例
えば、本発明の範囲から逸脱することなく、第１の接点は第２の接点と呼ぶことができ、
同様に第２の接点は第１の接点と呼ぶことができるだろう。第１の接点及び第２の接点は
ともに接点であるが、それらは同じ接点ではない。
【００５５】
上記の事項は、以下の条項を考慮してより良く理解され得る。
【００５６】
１．システムであって、
発信元サーバ及びエッジサーバを備えるコンテンツ配信ネットワークを実装するように
構成された複数のコンピューティングデバイスを備え、前記エッジサーバが、前記発信元
サーバから取り出されたコンテンツを記憶するように構成されたコンテンツキャッシュを
備え、前記エッジサーバが、
機能のイベントとの関連付けを受信することであって、前記機能及び前記関連付けが前
記コンテンツ配信ネットワークのカスタマからの入力に少なくとも部分的に基づいて決定
される、前記機能のイベントとの関連付けを受信することと、
クライアントデバイスから、前記コンテンツキャッシュからまたは前記発信元サーバか
らのコンテンツに対する要求を受信することと、
前記要求の処理を開始することであって、前記要求の前記処理が、前記機能と関連付け
られた前記イベントに遭遇することを含む、前記要求の処理を開始することと、
前記エッジサーバでの１つ以上の他の機能の実行に関してプロセス分離を使用し、前記
イベントと関連付けられた前記機能を実行することと、
前記機能の実行に少なくとも部分的に基づいて前記コンテンツを生成することと、
前記クライアントデバイスに前記コンテンツを送信することと、を行うように構成され
る、前記システム。
【００５７】
２．前記イベントが前記クライアントデバイスからのコンテンツに対する前記要求の受領
、または前記配信元サーバからのコンテンツに対する要求の準備を含み、前記イベントと
関連付けられた前記機能を実行する際に、前記エッジサーバが、
前記コンテンツキャッシュからのコンテンツに対する前記要求または前記発信元サーバ
からのコンテンツに対する前記要求を修正する、ように構成される、条項１に記載のシス
テム。
【００５８】
３．前記イベントが、前記コンテンツキャッシュからのコンテンツに対する前記要求に対
する応答の生成、または前記配信元サーバからのコンテンツに対する要求に対する応答の
受領を含み、前記イベントと関連付けられた前記機能を実行する際に、前記エッジサーバ
が、
前記コンテンツキャッシュからのコンテンツに対する前記要求への応答、または前記発
信元サーバからのコンテンツに対する前記要求への前記応答を修正する、ように構成され
る、条項１に記載のシステム。
【００５９】
４．前記コンテンツが、前記コンテンツキャッシュからまたは前記配信元サーバから前記
コンテンツを取り出すことなく、前記機能の実行に少なくとも部分的に基づいて生成され
る、条項１に記載のシステム。
【００６０】
５．コンピュータ実装方法であって、
クライアントデバイスからエッジサーバで、コンテンツに対する要求を受信することと
、
前記要求の処理を開始することであって、前記要求の前記処理がイベントに遭遇するこ
とを含み、前記イベントがカスタマによって指定される機能と関連付けられる、前記要求
の処理を開始することと、
前記エッジサーバで、前記イベントと関連付けられた前記機能を実施することであって
、前記機能を実施することが前記エッジサーバで１つ以上の他の機能に関して分離される
、前記機能を実施することと、
前記機能を実施することに少なくとも部分的に基づいて前記コンテンツを生成すること
と、
前記エッジサーバから前記クライアントデバイスに前記コンテンツを送信することと、
を含む、前記コンピュータ実装方法。
【００６１】
６．前記イベントが、前記クライアントデバイスからのコンテンツに対する前記要求の受
領、または配信元サーバからのコンテンツに対する要求の準備を含み、前記イベントと関
連付けられた前記機能を実施することが、
前記エッジサーバでのコンテンツキャッシュからのコンテンツに対する前記要求、また
は前記発信元サーバからのコンテンツに対する前記要求を修正すること、を含む、条項５
に記載の方法。
【００６２】
７．前記イベントが、前記エッジサーバでのコンテンツキャッシュからのコンテンツに対
する前記要求に対する応答の生成、または配信元サーバからのコンテンツに対する要求に
対する応答の受領を含み、前記イベントと関連付けられた前記機能を実施することが、
前記コンテンツキャッシュからのコンテンツに対する前記要求に対する応答、または前
記発信元サーバからのコンテンツに対する前記要求に対する前記応答を修正すること、を
含む、条項５に記載の方法。
【００６３】
８．前記イベントと関連付けられた前記機能を実施することが、
前記要求を処理することと関連付けられた１つ以上のメトリックスまたはログエントリ
を生成することと、を含む、条項５に記載の方法。
【００６４】
９．前記コンテンツが、前記エッジサーバでのコンテンツキャッシュからまたは配信元
サーバから前記コンテンツを取り出すことなく、前記機能を実施することに少なくとも部
分的に基づいて生成される、条項５に記載の方法。
【００６５】
１０．前記機能を分離することが、前記エッジサーバでのコンテンツで前記機能を実行す
ること、及び前記エッジサーバでの１つ以上の他のコンテナで前記１つ以上の他の機能を
実行することを含む、条項５に記載の方法。
【００６６】
１１．前記コンテナがバーチャルマシンを備え、前記１つ以上の他のコンテナが１つ以上
の他のバーチャルマシンを備える、条項１０に記載の方法。
【００６７】
１２．前記イベントと関連付けられた前記機能を実施することが、
追加サーバでプロバイダネットワークのリソースにアクセスすること
を含む、条項５に記載の方法。
【００６８】
１３．前記エッジサーバで、追加のコンテンツに対する追加要求を受信することと、
前記追加要求の処理を開始することであって、前記追加要求の前記処理が追加イベント
に遭遇することを含み、前記追加イベントが異なるカスタマによって指定される異なる機
能と関連付けられる、前記追加要求の処理を開始することと、
前記エッジサーバで、前記追加イベントと関連付けられた前記異なる機能を実施するこ
とであって、前記異なる機能を実施することが、前記エッジサーバでの前記機能の実行に
関して分離される、前記異なる機能を実施することと、
前記異なる機能を実施することに少なくとも部分的に基づいて前記追加コンテンツを生
成することと、をさらに含む、条項５に記載の方法。
【００６９】
１４．コンピュータ可読記憶媒体であって、
クライアントデバイスからエッジサーバで、コンテンツに対する要求を受信することと
、
前記要求の処理を開始することであって、前記要求の前記処理がイベントを実行するこ
とを含み、前記イベントがユーザー定義プログラムコードと関連付けられる、前記要求の
処理を開始することと、
前記エッジサーバで、前記イベントと関連付けられた前記ユーザー定義プログラムコー
ドを実行することであって、前記ユーザー定義プログラムコードが前記エッジサーバでの
他のユーザー定義プログラムコードの実行に関して分離技術を使用し、実行される、前記
ユーザー定義プログラムコードを実行することと、
前記ユーザー定義プログラムコードの実行に少なくとも部分的に基づいて前記コンテン
ツを生成することと、
前記エッジサーバから前記クライアントデバイスに前記コンテンツを送信することと、
を実行するコンピュータ実行可能なプログラム命令を記憶する、前記コンピュータ可読記
憶媒体。
【００７０】
１５．前記イベントが、前記クライアントデバイスからのコンテンツに対する前記要求の
受領、または配信元サーバからのコンテンツに対する要求の準備を含み、前記イベントと
関連付けられた前記ユーザー定義プログラムコードを実行することが、
前記エッジサーバでのコンテンツキャッシュからのコンテンツに対する前記要求、また
は前記発信元サーバからのコンテンツに対する前記要求を修正すること、を含む、条項１
４に記載のコンピュータ可読記憶媒体。
【００７１】
１６．前記イベントが、前記エッジサーバでのコンテンツキャッシュからのコンテンツに
対する前記要求に対する応答の生成、または前記配信元サーバからのコンテンツに対する
要求に対する応答の受領を含み、前記イベントと関連付けられた前記ユーザー定義プログ
ラムコードを実行することが、
前記コンテンツキャッシュからのコンテンツに対する前記要求に対する応答、または前
記発信元サーバからのコンテンツに対する前記要求に対する前記応答を修正すること、を
含む、条項１４に記載のコンピュータ可読記憶媒体。
【００７２】
１７．前記イベントと関連付けられた前記ユーザー定義プログラムコードを実行すること
が、
前記要求を処理することと関連付けられた１つ以上のメトリックスまたはログエントリ
を生成することと、を含む、条項１４に記載のコンピュータ可読記憶媒体。
【００７３】
１８．前記コンテンツが、前記エッジサーバでのコンテンツキャッシュからまたは配信元
サーバから前記コンテンツを取り出すことなく、前記ユーザー定義プログラムコードの実
行に少なくとも部分的に基づいて生成される、条項１４に記載のコンピュータ可読記憶媒
体。
【００７４】
１９．前記分離技術を使用することが、前記エッジサーバでのコンテンツで前記ユーザー
定義プログラムコードを実行すること、及び前記エッジサーバでの１つ以上の他のコンテ
ナで前記他のユーザー定義プログラムコードを実行することを含む、条項１４に記載のコ
ンピュータ可読記憶媒体。
【００７５】
２０．コンピュータ実行可能な前記プログラム命令が、
前記エッジサーバで、追加のコンテンツに対する追加要求を受信することと、
前記追加要求の処理を開始することであって、前記追加要求の前記処理が追加イベント
を実施することを含み、前記追加イベントが異なるユーザーによって指定される異なるユ
ーザー定義プログラムコードと関連付けられる、前記追加要求の処理を開始することと、
前記エッジサーバで、前記追加イベントと関連付けられた前記異なるユーザー定義プロ
グラムコードを実行することであって、前記異なるユーザー定義プログラムコードが前記
エッジサーバでの前記ユーザー定義プログラムコードの実行に関して前記分離技術を使用
し、実行される、前記異なるユーザー定義プログラムコードを実行することと、
前記異なるユーザー定義プログラムコードの実行に少なくとも部分的に基づいて前記追
加コンテンツを生成することと、をさらに実行する、条項１４に記載のコンピュータ可読
記憶媒体。
【００７６】
さらに、上記の事項は、以下の条項を考慮してより良く理解され得る。
【００７７】
２１．システムであって、
発信元サーバ及びエッジサーバを備えるコンテンツ配信ネットワークを実装するように
構成された複数のコンピューティングデバイスを備え、前記エッジサーバが、前記発信元
サーバから取り出されたコンテンツを記憶するように構成されたコンテンツキャッシュを
備え、前記エッジサーバが、
読み取り専用データストア、及び機能のイベントとの関連付けを受信することであって
、前記読み取り専用データストア、前記機能、及び前記関連付けが、前記コンテンツ配信
ネットワークのカスタマからの入力に少なくとも部分的に基づいて決定される、前記受信
することと、
クライアントデバイスから、前記コンテンツキャッシュからまたは前記発信元サーバか
らのコンテンツに対する要求を受信することと、
前記要求の処理を開始することであって、前記要求の前記処理が、前記機能と関連付け
られた前記イベントに遭遇することを含む、前記要求の処理を開始することと、
前記イベントと関連付けられた前記機能を実行することであって、前記機能が前記読み
取り専用データストアを入力として指定し、前記機能の実行が前記読み取り専用データス
トアからの１つ以上の要素の取り出しを含む、前記実行することと、
前記機能の実行に少なくとも部分的に基づいて前記コンテンツを生成することと、
前記クライアントデバイスに前記コンテンツを送信することと、を行うように構成され
る、前記システム。
【００７８】
２２．前記イベントが前記クライアントデバイスからのコンテンツに対する前記要求の受
領、または前記配信元サーバからのコンテンツに対する要求の準備を含み、前記イベント
関連付けられた前記機能を実行する際に、前記エッジサーバが、
前記コンテンツキャッシュからのコンテンツに対する前記要求または前記発信元サーバ
からのコンテンツに対する前記要求を修正する、ように構成される、条項２１に記載のシ
ステム。
【００７９】
２３．前記イベントが、前記コンテンツキャッシュからのコンテンツに対する前記要求に
対する応答の生成、または前記配信元サーバからのコンテンツに対する要求に対する応答
の受領を含み、前記イベントと関連付けられた前記機能を実行する際に、前記エッジサー
バが、
前記コンテンツキャッシュからのコンテンツに対する前記要求への応答、または前記発
信元サーバからのコンテンツに対する前記要求への前記応答を修正する、ように構成され
る、条項２１に記載のシステム。
【００８０】
２４．前記コンテンツが、前記コンテンツキャッシュからまたは前記配信元サーバから前
記コンテンツを取り出すことなく、前記機能の前記実行に少なくとも部分的に基づいて生
成される、条項２１に記載のシステム。
【００８１】
２５．コンピュータ実装方法であって、
読み取り専用データストアをエッジサーバに複製することと、
クライアントデバイスから前記エッジサーバで、コンテンツに対する要求を受信するこ
とと、
前記要求の処理を開始することであって、前記要求の前記処理がイベントに遭遇するこ
とを含み、前記イベントがカスタマによって指定される機能と関連付けられ、前記機能が
読み取り専用データストアを入力として指定する、前記要求の処理を開始することと、
前記読み取り専用データストアからデータを取り出すことを含む、前記エッジサーバで
前記イベントと関連付けられた前記機能を実施することと、
前記機能を実施することに少なくとも部分的に基づいて前記コンテンツを生成すること
と、
前記エッジサーバから前記クライアントデバイスに前記コンテンツを送信することと、
を含む、前記コンピュータ実装方法。
【００８２】
２６．前記イベントが、前記クライアントデバイスからのコンテンツに対する前記要求の
受領、または配信元サーバからのコンテンツに対する要求の準備を含み、前記イベントと
関連付けられた前記機能を実施することが、
前記エッジサーバでのコンテンツキャッシュからのコンテンツに対する前記要求、また
は前記発信元サーバからのコンテンツに対する前記要求を修正すること、を含む、条項２
５に記載の方法。
【００８３】
２７．前記イベントが、前記エッジサーバでのコンテンツキャッシュからのコンテンツに
対する前記要求に対する応答の生成、または配信元サーバからのコンテンツに対する要求
に対する応答の受領を含み、前記イベントと関連付けられた前記機能を実施することが、
前記コンテンツキャッシュからのコンテンツに対する前記要求に対する応答、または前
記発信元サーバからのコンテンツに対する前記要求に対する前記応答を修正すること、を
含む、条項２５に記載の方法。
【００８４】
２８．前記イベントと関連付けられた前記機能を実施することが、
前記要求を処理することと関連付けられた１つ以上のメトリックスまたはログエントリ
を生成することと、を含む、条項２５に記載の方法。
【００８５】
２９．前記コンテンツが、コンテンツキャッシュからまたは配信元サーバから前記コンテ
ンツを取り出すことなく、前記機能を実施することに少なくとも部分的に基づいて生成さ
れる、条項２５に記載の方法。
【００８６】
３０．前記エッジサーバでの１つ以上の他の機能の実行に関してプロセス分離を使用し、
前記機能が実行される、条項２５に記載の方法。
【００８７】
３１．前記読み取り専用データストアが複数のキー‐値対を備える、条項２５に記載の方
法。
【００８８】
３２．前記読み取り専用データストアが前記カスタマによって指定される、条項２５に記
載の方法。
【００８９】
３３．前記イベントと関連付けられた前記機能を実施することが、
追加サーバでプロバイダネットワークのリソースにアクセスすること、を含む、条項２
５に記載の方法。
【００９０】
３４．コンピュータ可読記憶媒体であって、
エッジサーバ及び複数の追加エッジサーバに読み取り専用データストアを複製すること
であって、前記読み取り専用データストアがコンテンツ配信ネットワークのカスタマによ
って指定される、前記読み取り専用データストアを複製することと、
クライアントデバイスから前記エッジサーバで、コンテンツに対する要求を受信するこ
とと、
前記要求の処理を開始することであって、前記要求の前記処理がイベントを実行するこ
とを含み、前記イベントがユーザー定義プログラムコードと関連付けられ、前記ユーザー
定義プログラムコードが前記読み取り専用データストアを入力として指定する、前記要求
の処理を開始することと、
前記エッジサーバで、前記イベントと関連付けられた前記ユーザー定義プログラムコー
ドを実行することであって、前記ユーザー定義プログラムコードが前記エッジサーバでの
他のユーザー定義プログラムコードの実行に関して分離技術を使用し、実行される、前記
ユーザー定義プログラムコードを実行することと、
前記ユーザー定義プログラムコードの実行に少なくとも部分的に基づいて前記コンテン
ツを生成することであって、前記ユーザー定義プログラムコードの前記実行が前記読み取
り専用データストアからの前記データの取り出しを含む、前記コンテンツを生成すること
と、
前記エッジサーバから前記クライアントデバイスに前記コンテンツを送信することと、
を実行するコンピュータ実行可能なプログラム命令を記憶する、前記コンピュータ可読記
憶媒体。
【００９１】
３５．前記イベントが、前記クライアントデバイスからのコンテンツに対する前記要求の
受領、または配信元サーバからのコンテンツに対する要求の準備を含み、前記イベントと
関連付けられた前記ユーザー定義プログラムコードを実行することが、
前記エッジサーバでのコンテンツキャッシュからのコンテンツに対する前記要求、また
は前記発信元サーバからのコンテンツに対する前記要求を修正すること、を含む、条項３
４に記載のコンピュータ可読記憶媒体。
【００９２】
３６．前記イベントが、前記エッジサーバでのコンテンツキャッシュからのコンテンツに
対する前記要求に対する応答の生成、または配信元サーバからのコンテンツに対する要求
に対する応答の受領を含み、前記イベントと関連付けられた前記ユーザー定義プログラム
コードを実行することが、
前記コンテンツキャッシュからのコンテンツに対する前記要求に対する応答、または前
記発信元サーバからのコンテンツに対する前記要求に対する前記応答を修正すること、を
含む、条項３４に記載のコンピュータ可読記憶媒体。
【００９３】
３７．前記イベントと関連付けられた前記ユーザー定義プログラムコードを実行すること
が、
前記要求を処理することと関連付けられた１つ以上のメトリックスまたはログエントリ
を生成することと、を含む、条項３４に記載のコンピュータ可読記憶媒体。
【００９４】
３８．前記コンテンツが、コンテンツキャッシュからまたは配信元サーバから前記コンテ
ンツを取り出すことなく、前記ユーザー定義プログラムコードの実行に少なくとも部分的
に基づいて生成される、条項３４に記載のコンピュータ可読記憶媒体。
【００９５】
３９．前記ユーザー定義プログラムコードが、前記エッジサーバでの他のユーザー定義プ
ログラムコードに関してプロセス分離を使用し、実行される、条項３４に記載のコンピュ
ータ可読記憶媒体。
【００９６】
４０．前記読み取り専用データストアが複数のキー‐値対を備える、条項３４に記載のコ
ンピュータ可読記憶媒体。
【００９７】
結論
特許請求の範囲に記載された主題の完全な理解を提供するために、多数の具体的な詳細
が本明細書に述べられている。しかしながら、特許請求の範囲に記載された主題がこれら
の具体的な詳細なしに実施され得ることは、当業者により理解されるであろう。他の例で
は、当業者によって知られるだろう方法、装置、またはシステムは特許請求の範囲に記載
された主題を不明瞭にしないために、詳細には説明されていない。本開示の利点を有する
当業者に明白であるように、多様な修正及び変更が行われてよい。全てのそのような修正
及び変更を含むことが意図され、したがって、上記説明は制限的な意味ではなく例示的な
意味で考えられるべきである。
【図１】
2019032903.tif 000003
【図２】
2019032903.tif 000004
【図３】
2019032903.tif 000005
【図４】
2019032903.tif 000006
【図５】
2019032903.tif 000007
【図６】
2019032903.tif 000008
【図７】
2019032903.tif 000009
【図８】
2019032903.tif 000010
【図９】
2019032903.tif 000011
【外国語明細書】
2019032903000001.pdf