(57)【特許請求の範囲】
【請求項１】
クライアントを操作するユーザに対して推奨を生成する方法であって、
１つ以上の共通メモリサーバと通信する複数のステートレスプロセッサを含むアレイを有する推奨生成エンジンであり、前記１つ以上の共通メモリサーバは前記複数のステートレスプロセッサに対し共通であってこれらと通信する、推奨生成エンジンで、ホストから推奨要求を受信するステップと、
前記推奨生成エンジンで、前記推奨要求を前記ステートレスプロセッサのアレイ内の第１のステートレスプロセッサに向けるステップと、
前記第１のステートレスプロセッサで、前記推奨要求を受信し、前記共通メモリサーバのうち少なくとも１つにコンテキストデータのクエリを送信し、前記共通メモリサーバへの前記クエリに対する応答において前記共通メモリサーバのうち少なくとも１つからコンテキストデータを受信するステップであって、前記コンテキストデータは前記クライアントにより現在アクセスされているウェブページを含む、ステップと、
前記第１のステートレスプロセッサで、前記コンテキストデータを用いて前記推奨を生成するステップであって、前記推奨は前記ウェブページの関連コンテンツに関する、ステップと、
前記複数のステートレスプロセッサの利用可能処理帯域幅を監視し、前記利用可能処理帯域幅が最小利用可能処理帯域幅閾値より小さい場合、推奨を生成するために必要とされるデータなしにさらなるステートレスプロセッサをデプロイするステップと、
を含む方法。
【請求項２】
前記推奨を前記ホストに伝送するステップ、をさらに含む請求項１に記載の方法。
【請求項３】
前記コンテキストデータは前記ユーザに関する個人情報を含む、請求項１に記載の方法。
【請求項４】
前記個人情報は前記ユーザの識別情報を含む、請求項３に記載の方法。
【請求項５】
前記コンテキストデータは前記ユーザに関する人口統計学的情報を含む、請求項１に記載の方法。
【請求項６】
前記コンテキストデータは前記ユーザの閲覧履歴を含む、請求項１に記載の方法。
【請求項７】
前記推奨は、推奨された製品又は推奨されたサービスに関する、請求項１に記載の方法。
【請求項８】
前記関連コンテンツは、前記ユーザが購入するつもりである製品を有するショッピングカートを含む、請求項７に記載の方法。
【請求項９】
前記利用可能処理帯域幅が所定最大利用可能処理帯域幅閾値より大きい場合、余剰ステートレスプロセッサを非アクティブ化するステップ、をさらに含む請求項１に記載の方法。
【請求項１０】
複数のステートレスプロセッサと複数のメモリサーバとを含む推奨エンジンの処理キャパシティを制御する方法であって、
前記推奨エンジンの利用可能処理帯域幅を監視するステップと、
前記利用可能処理帯域幅が最小利用可能処理帯域幅閾値より小さいかを決定するステップと、
前記利用可能処理帯域幅が前記最小利用可能処理帯域幅閾値より小さい場合、推奨を生成するために必要とされるデータなしにさらなるステートレスプロセッサをアクティブ化するステップと、
前記さらなるステートレスプロセッサで、推奨要求を受信し、前記複数のステートレスプロセッサに対し及び前記さらなるステートレスプロセッサに対し共通である少なくとも１つのメモリサーバにコンテキストデータのクエリを送信し、前記少なくとも１つの共通メモリサーバから前記コンテキストデータを受信し、前記コンテキストデータを用いて推奨を生成するステップと、
を含む方法。
【請求項１１】
前記利用可能処理帯域幅が所定最大利用可能処理帯域幅閾値より大きいかを決定するステップと、
前記利用可能処理帯域幅が前記所定最大利用可能処理帯域幅閾値より大きい場合、余剰ステートレスプロセッサを非アクティブ化するステップと、
をさらに含む請求項１０に記載の方法。
【請求項１２】
前記利用可能処理帯域幅が前記最小利用可能処理帯域幅閾値より大きい場合でも、電子メールプロモーションに先立って前記さらなるステートレスプロセッサをアクティブ化するステップ、をさらに含む請求項１０に記載の方法。
【請求項１３】
推奨を生成するために必要とされるデータなしにデプロイされる複数のステートレスプロセッサと、
前記複数のステートレスプロセッサに対し共通である少なくとも１つの共通メモリサーバであって、前記複数のステートレスプロセッサと通信し、コンテキストデータを記憶する、少なくとも１つの共通メモリサーバと、
前記複数のステートレスプロセッサと通信して推奨要求を選択された前記ステートレスプロセッサに向けるルータであって、
前記複数のステートレスプロセッサの各々は、前記ルータから前記推奨要求を受信し、前記少なくとも１つの共通メモリサーバにコンテキストデータのクエリを送信し、前記少なくとも１つの共通メモリサーバから前記コンテキストデータを受信し、前記コンテキストデータを用いて推奨を生成するように構成される、ルータと、
前記複数のステートレスプロセッサと通信するコントローラであって、前記複数のステートレスプロセッサの利用可能処理帯域幅を監視し、前記利用可能処理帯域幅が最小利用可能処理帯域幅閾値より小さい場合、推奨を生成するために必要とされるデータなしにさらなるステートレスプロセッサをデプロイするように構成された、コントローラと、
を含むスケーラブルな推奨エンジン。
【請求項１４】
前記コントローラは、前記利用可能処理帯域幅が所定最大利用可能処理帯域幅閾値より大きい場合に余剰ステートレスプロセッサをデプロイメントから解放するように構成される、請求項１３に記載のスケーラブルな推奨エンジン。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般に、ユーザのオンライン及び／又はオフライン活動に関連したコンテンツ、製品、及び／又はサービスの推奨を生成し、供給するコンピュータシステム及び方法に関する。
【背景技術】
【０００２】
商業的ウェブサイト及びアプリケーションは、そのユーザに推奨をしばしば提供する。こうした推奨には、ユーザによりアクセスされている現在のウェブページ又はアプリケーションに関連したコンテンツ（例えば、関連したニュース記事）、ユーザのショッピングカート内の製品に関連した製品（例えば、ユーザが靴を購入している場合、ソックスの推奨）、又はユーザによりアクセスされている現在のウェブページ及び／又はユーザのショッピングカート内の製品に関連した宣伝／広告を含むことができる。製品及びオファー推奨はまた、ユーザに対して送信される電子メール通信に投入されてもよい。個人向けにされ、関連があり、かつ適切である推奨は、ユーザトラフィック、売上、及び／又は収益を増加させるのに役立つ可能性があり、したがって、商業的ウェブサイト及びアプリケーションの重要なコンポーネントである。
【０００３】
関連ある推奨を生成するために、推奨エンジンは、ユーザに関する１つ以上のファクタ又はデータ、及び／又はユーザによりアクセスされている現在のウェブページのコンテンツを考慮する。一般に、推奨エンジンは、リアルタイムの情報と長い時間期間にわたり蓄積された過去の情報とを使用して推奨を生成する。こうした推奨エンジンはメモリ及び処理能力を必要とし、このメモリ及び処理能力は、ユーザトラフィックのボリューム、マーチャントのカタログ内の製品又はオファーの数、及び利用可能な過去データの量に依存して変動し得る。推奨エンジンはまた、望まれないレイテンシ遅延なく推奨を供給するためのネットワーク帯域幅を必要とする。
【０００４】
図１は、従来技術によるクライアント１００に推奨を提供するシステム１０のブロック図である。ユーザがクライアント１００上で、ホスト１１０からダウンロードされたウェブページを見ているとき、ホスト１１０は、推奨の要求を推奨バックエンド１２０に伝送する。推奨バックエンド１２０は、ルーティングサーバ１３０と複数の推奨サーバ１４０ａ、１４０ｂ、１４０ｃ、１４０ｎとを含む。推奨サーバ１４０ａ、１４０ｂ、１４０ｃ、１４０ｎは各々、論理プロセッサ１５０ａ、１５０ｂ、１５０ｃ、１５０ｎと、メモリ１６０ａ、１６０ｂ、１６０ｃ、１６０ｎとをそれぞれ含む。プロセッサは推奨サーバ間で変わり得るが、各メモリは他のメモリのミラーイメージである。各メモリは、それぞれのサーバが推奨要求に応答するのに必要とするすべての情報を含む。
【０００５】
ルーティングサーバ１３０は、推奨要求を受信し、推奨要求をいずれの推奨サーバ１４０ａ、１４０ｂ、１４０ｃ、１４０ｎに送信すべきかを決定する。ルーティングサーバ１３０は、推奨要求を扱うべき適切な推奨サーバ１４０ａ、１４０ｂ、１４０ｃ、１４０ｎを決定するために様々なファクタを考慮することができ、例えば、利用可能なキャパシティ及び各推奨サーバの地理的位置などである。ルーティングサーバ１３０は、次いで、要求を処理すべき適切な推奨サーバ１４０ａに推奨要求を伝送する。推奨要求を受信すると、プロセッサ１５０ａは、要求に関連あるデータについてメモリ１６０ａに問い合わせる。こうしたデータには、ユーザに関する個人情報、ユーザによりアクセスされたウェブページ又はウェブサイトに関する情報、及び／又はユーザのショッピングカート内の製品に関連した製品のリストを含むことができる。プロセッサ１５０ａは、次いで、データに対してロジック（例えば、推奨アルゴリズム）を適用し、推奨をルーティングサーバ１３０に返す。ルーティングサーバ１３０は、次いで、推奨をホスト１１０を介してクライアント１００に伝送する。
【０００６】
推奨要求のボリュームに応答して（例えば、増加又は減少したウェブサイトトラフィックに起因して）、ルーティングサーバ１３０は、推奨サーバ１４０ａ、１４０ｂ、１４０ｃ、１４０ｎの数を上方又は下方に調整することができる。ルーティングサーバ１３０が、増加した推奨要求のボリュームに応答して新しい推奨サーバ１４０ｎをデプロイする必要がある場合、ルーティングサーバ１３０は、最初、既存の推奨サーバ１４０ｃに、そのメモリ１６０ｃを新しいサーバ１４０ｎのメモリ１６０ｎにコピーさせなければならない。メモリ１６０ｃは非常に大きいため、メモリ１６０ｃをメモリ１６０ｎにコピーすることは数時間以上かかる可能性がある。ゆえに、新しい推奨サーバ１４０ｎをデプロイするのには数時間以上かかる可能性がある。また、サーバ１４０ｃの帯域幅のうちいくらかは、新しいサーバ１４０ｎをオンラインにするために転用される。バックエンド１２０は、新しいサーバ１４０ｎがオンラインにされるまでオーバーキャパシティ（overcapacity）である（又は、オーバーキャパシティに近い）ため、推奨要求は処理するのにより長くかかることになり、これは望まれないレイテンシを結果としてもたらす。この理由のため、新しい推奨サーバは、データを新しいサーバにコピーするための十分な時間を許容するために、そのキャパシティが真に必要とされる前にしばしばデプロイされる。結果として、推奨バックエンド１２０はオーバーキャパシティで一般に動作し、これは望まれないコスト及び不十分さを結果としてもたらす。
【発明の概要】
【０００７】
下記の説明及び図面は、本開示に係る特定の例示的な実現を詳細に説明し、これらは、本開示の様々な原理が実施され得るいくつかの例示的な方法を示す。例示的な例は、しかしながら、本開示に係る多くの可能な実施形態の網羅ではない。本開示に係る他の目的、利点、及び新規の特徴が、図面と関連して考慮されたときに本開示の下記の詳細な説明において説明されるであろう。
【０００８】
本発明の態様は、ステートレスサーバ又はプロセッサの使用に向けられ、ステートレスサーバ又はプロセッサは、いくつか又はいずれかのトランザクション又は条件のステートに関する情報、例えばクライアントコンピュータとの対話からのセッションデータを、一般に保有（記憶）しない。スケーラブルな推奨エンジンが、コンテキストデータを記憶する少なくとも１つのメモリサーバと通信するステートレスプロセッサを含む。ルータが、推奨要求を第１のステートレスプロセッサに向けるように構成され、第１のステートレスプロセッサは、メモリサーバからのコンテキストデータを用いて推奨を生成するように構成される。コントローラが、ステートレスプロセッサの利用可能処理帯域幅を監視し、利用可能処理帯域幅が最小利用可能処理帯域幅閾値より小さい場合にさらなるステートレスプロセッサをデプロイする。コントローラは、利用可能処理帯域幅が事前設定された利用可能処理帯域幅閾値より大きい場合、ステートレスプロセッサをデプロイメントから削除することができ、該閾値は、本明細書において最大帯域幅、事前設定された最大帯域幅、又は所定最大帯域幅と呼ばれることがある。
【０００９】
一態様において、本発明は、クライアントを操作するユーザに対して推奨を生成する方法を含む。方法は、メモリと通信するステートレスプロセッサのアレイを有する推奨生成エンジンで、ホストから推奨要求を受信することを含む。方法は、上記推奨生成エンジンで、上記推奨要求を上記ステートレスプロセッサのアレイ内の第１のステートレスプロセッサに向けることをさらに含む。方法は、上記第１のステートレスプロセッサで、上記メモリへのコンテキストデータクエリに対する応答においてコンテキストデータを受信することであって、上記コンテキストデータは上記クライアントにより現在アクセスされているウェブページを含む、ことをさらに含む。方法は、上記第１のステートレスプロセッサで、上記コンテキストデータを用いて上記推奨を生成することであって、上記推奨は上記ウェブページの関連コンテンツに関する、ことをさらに含む。
【００１０】
別の態様において、本発明は、複数のステートレスプロセッサと複数のメモリサーバとを含む推奨エンジンの処理キャパシティを制御する方法を含む。方法は、上記推奨エンジンの利用可能処理帯域幅を監視することを含む。方法は、上記利用可能処理帯域幅が最小利用可能処理帯域幅閾値より小さいかを決定することをさらに含む。方法は、上記利用可能処理帯域幅が上記最小利用可能処理帯域幅閾値より小さい場合、さらなるステートレスプロセッサをアクティブ化することをさらに含む。
【００１１】
別の態様において、本発明は、スケーラブルな推奨エンジンを含む。推奨エンジンは、複数のステートレスプロセッサと、上記複数のステートレスプロセッサと通信する少なくとも１つのメモリサーバであって、コンテキストデータを記憶する、メモリサーバと、上記複数のステートレスプロセッサと通信して推奨要求を第１のステートレスプロセッサに向けるルータであって、上記第１のステートレスプロセッサは上記コンテキストデータを用いて推奨を生成するように構成される、ルータと、上記複数のプロセッサと通信するコントローラであって、上記複数のプロセッサの利用可能処理帯域幅を監視し、上記利用可能処理帯域幅が最小利用可能処理帯域幅閾値より小さい場合にさらなるステートレスプロセッサをデプロイするように構成された、コントローラとを含む。
【図面の簡単な説明】
【００１２】
本発明の性質及び利点のより完全な理解のために、好適な実施形態の下記の詳細な説明に対して、添付図面と関連して参照がなされる。
【図１】従来技術によるクライアントに推奨を提供するシステムのブロック図である。
【図２】一実施形態によるクライアントに推奨を提供するシステムのブロック図である。
【図３】一実施形態による推奨要求を生成する方法のフローチャートである。
【図４】一実施形態による推奨エンジンのキャパシティを制御する方法のフローチャートである。
【図５】一実施形態によるクライアントに推奨を提供するシステムのブロック図である。
【図６】ユーザに製品を推奨するフローチャート６０である。
【発明を実施するための形態】
【００１３】
図２は、一実施形態によるクライアント２００に推奨を提供するシステム２０のブロック図である。システム２０は、クライアント２００、ホスト２１０、及び推奨エンジン２２０を含む。推奨エンジン２２０は、ルータサーバ２３０、コントローラ２３５、ステートレス論理プロセッサ２４０ａ、２４０ｂ、２４０ｃ、２４０ｎ（一般に２４０）、及びメモリストア２５０ａ、２５０ｂ、２５０ｃ（一般に２５０）を含む。ステートレス論理プロセッサ２４０は、推奨エンジン２２０に計算能力を提供するサーバ又は仮想サーバである。いくつかの実施形態において、各論理プロセッサ２４０は同一である。論理プロセッサ２４０は、これらが推奨を生成するために必要とされるデータを永続的に記憶しない点で、ステートレスである。代わりに、データはメモリストア２５０に記憶され、メモリストア２５０は、クエリを通してステートレスプロセッサ２４０によりアクセスされることができる。
【００１４】
ステートレス論理プロセッサ２４０とメモリ２５０とが分離されるため、新しいステートレス論理プロセッサ２４０ｎが迅速かつ独立してオンラインにされることができ、なぜならば、データが新しいステートレス論理プロセッサ２４０ｎに関連づけられた新しいメモリ２５０ｎにコピーされる必要がないからである。さらに、論理プロセッサ２４０は互いに同一又は実質的に同一でもよいため、新しいステートレス論理プロセッサ２４０をオンラインにするために必要とされる構成又はリードタイムがほとんどない。例えば、新しいステートレス論理プロセッサ２４０は、オンラインになる前、ロードされた推奨サービスをロードすることと構成パラメータ（例えば、推奨のためのロジック又はルール）を取得することしか必要ない。ゆえに、推奨エンジン２２０は、推奨エンジン２２０のキャパシティのニーズが変動するときにほぼリアルタイムでステートレス論理プロセッサ２４０をアクティブ化し、非アクティブ化して、高度にスケーラブルな推奨エンジン２２０を提供することができる。例えば、推奨エンジン２２０が推奨要求の急増を受けた（あるいは、受けることを予期した）場合、新しいステートレス論理プロセッサ２４０ｎが迅速にアクティブ化されることができる。また、推奨要求のボリュームが閾値未満に低下し、あるいは論理プロセッサ２４０が事前設定された最大キャパシティより大きいキャパシティで動作している場合（例えば、５０％より大きい余剰のキャパシティ）、既存のステートレスプロセッサ（例えば、２４０ｃ）が非アクティブ化されることができる。論理プロセッサ（例えば、２４０ｃ）はすぐに再アクティブ化されることができるため、論理プロセッサを非アクティブ化することにおけるリスクは最小限である。
【００１５】
メモリストア２５０は、１つ以上のサーバ及び／又は仮想サーバ上のクラスタ内にホストされた１つ以上のデータベース（又は、データ記憶のための他の方法／構造）を含むことができる。いくつかの実施形態において、メモリストアは、Ｒｅｄｉｓデータサーバ又はデータサーバインスタンスである。いくつかの実施形態において、メモリストア２５０は、互いに通信することができる。さらに、所与のクラスタ内のサーバ及び／又は仮想サーバは互いに通信して、例えば、クラスタにわたりデータを共有することができる。付加的な記憶キャパシティ（例えば、推奨データのために）が必要とされるとき、及び／又はメモリストア２５０の地理的分散（例えば、ヨーロッパ市場にサービス提供するためにヨーロッパにメモリストア２５０を追加すること）のために、新しいメモリストア２５０がオンラインにされることができる。例えば、さらなる推奨データが、新しい顧客、新しい製品などにより決められ（driven）てもよい。こうした新しいメモリストア２５０は、新しいステートレスプロセッサ２４０をオンラインにする必要なくオンラインにされることができる。
【００１６】
動作において、ユーザが、クライアント２００にアクセスしてウェブページ又は電子メール宣伝広告を見る。ウェブページのコンテンツは、第１のネットワーク（例えば、第１のワイドエリアネットワーク）を通じてホスト２１０からクライアント２００に伝送される。並行して（あるいは、任意の時間に）、ホスト２１０及び／又はクライアント２００は、推奨の要求を推奨エンジン２２０に送信することができる。推奨要求は、ユーザの閲覧活動、ユーザのアカウント情報、ユーザのショッピングカート内の製品、ユーザにより操作された装置のタイプ、及び／又は推奨要求が生成された時間及び／又は日付に関する情報を含むことができる。ユーザの閲覧活動には、推奨要求を生成するのにユーザがアクセスした広告、宣伝電子メール、又はＵＲＬリンク（例えば、広告のためのリンク、製品又はサービスのためのリンク等）を含むことができる。要求は、ＡＰＩを通じて送信されることができる。
【００１７】
推奨要求は、第２のネットワーク（例えば、第２のワイドエリアネットワーク）を通じて送信され、第２のネットワークは、第１のネットワークと同じでもよく、異なってもよい。ルータサーバ２３０は、推奨要求を受信し、推奨要求を処理すべきステートレス論理プロセッサ２４０（例えば、ステートレス論理プロセッサ２４０ａ）を選択する。ルータサーバ２３０は、事前設定された最大キャパシティのうちステートレス論理プロセッサ２４０が動作しているパーセンテージ、ステートレス論理プロセッサ２４０の地理的位置、及び／又はステートレス論理プロセッサ２４０のためのネットワーク帯域幅に基づいて、ステートレス論理プロセッサ２４０を選択することができる。ルータサーバ２３０は、次いで、推奨要求を適切なステートレス論理プロセッサ２４０（例えば、ステートレスプロセッサ２４０ａ）に転送する。いくつかの実施形態において、ルータサーバ２３０はロードバランサと通信して、複数の利用可能ステートレスプロセッサ２４０にわたり処理ワークロードのバランスをとる。
【００１８】
コントローラ２３５は、ネットワーク（例えば、ローカルエリアネットワーク又はワイドエリアネットワーク）を通じてルータサーバ２３０と通信する。いくつかの実施形態において、コントローラ２３５及びルータサーバ２３０は、同じサーバ又は仮想サーバ上にある。コントローラ２３５は、例えば、ルータサーバ２３０を介して各論理プロセッサ２４０にクエリを送信することにより、ステートレスプロセッサ２４０の利用可能帯域幅を決定するように構成される。別法として、ステートレスプロセッサ２４０の利用可能帯域幅は、直接測定され、かつ／あるいはコントローラ２３５に対してプッシュされる。利用可能処理帯域幅が最小所定閾値（例えば、５％、１０％、又は２０％）より小さい場合、コントローラ２３５は、さらなるステートレスプロセッサ２４０をデプロイし（deploy）て利用可能処理帯域幅を増加させることができる。さらに、あるいは代替において、コントローラ２３５は、利用可能処理帯域幅が上記で説明された最小閾値より大きいとしても、予想された推奨要求の増加に先立ってさらなるステートレス論理プロセッサ２４０をデプロイすることができる。例えば、コントローラ２３５は、電子メール宣伝キャンペーンに先立って、又は他の予期された推奨要求トラフィックの増加に起因して（例えば、ブラックフライデーに）、さらなるステートレス論理プロセッサ２４０をデプロイすることができる。同様に、コントローラ２３５は、利用可能処理帯域幅が最大所定閾値（例えば、２５％、３０％、又は３５％）より大きい場合、ステートレスプロセッサ２４０の数を減少させることができる。例えば、コントローラ２３５は、最初、電子メールキャンペーンに先立ってステートレス論理プロセッサ２４０の数を増加させ、次いで、関連した推奨要求の急増が終了した後にステートレス論理プロセッサ２４０の数を減少させることができる。別の例において、コントローラ２３５は、日中にプロセッサ２４０の数を増加させ、夜間にプロセッサ２４０の数を減少させる。さらなるプロセッサ２４０のデプロイメントには、さらなるプロセッサ２４０を（例えば、Ａｍａｚｏｎ（登録商標）  Ｗｅｂ  Ｓｅｒｖｉｃｅなどのサービスプロバイダから）割り当てることと、推奨を提供する（本明細書において説明されるような）アルゴリズム及び関連したビジネスロジックを含む推奨サービスでプロセッサ２４０を構成することとを含むことができる。いくつかの実施形態において、プロセッサ２４０は、広告者／小売業者／サービスプロバイダからアルゴリズム及びビジネスロジックを周期的に取ってきて、これらが最新であることを確認する。
【００１９】
ステートレス論理プロセッサ２４０は、推奨要求に関連づけられた情報（もしあれば）を評価し、メモリストア２５０からのどのコンテキストデータ（contextual  data）を要求すべきかを決定する。プロセッサ２４０は、次いで、適切なコンテキストデータについて利用可能なメモリストア２５０（例えば、メモリストア２５０ｂ）にクエリを送信する。いくつかの実施形態において、ステートレス論理プロセッサ２４０は、クエリを複数のメモリストア２５０に送信する。論理プロセッサ２４０は、クエリに応答すべき第１のメモリストア２５０からのデータを使用することができ、あるいは論理プロセッサ２４０は、すべての応答を使用することができる。コンテキストデータには、ユーザのアカウント番号、ユーザの地理的位置、ユーザの性別、ユーザの年齢、ユーザのウェブサイトアクセス履歴、ユーザの注文履歴、ユーザのソーシャルメディア投稿（又は、他のソーシャルメディア対話データ）、ユーザによりアクセスされているウェブページのコンテンツ、製品レビュー、製品在庫、製品価格設定及び売上、製品カタログ、各製品の人気、製品注文トレンド、天気予報、及び同様の情報を含むことができる。
【００２０】
論理プロセッサ２４０がメモリストア２５０からコンテキストデータを受信し、コンテキストデータをローカルのメモリ又はキャッシュに記憶した後、論理プロセッサ２４０は、関連ある推奨を生成するためにコンテキストデータと推奨要求で受信した情報とのうち少なくともいくらかを用いてアルゴリズム又は他のロジックを適用する。この段階で、論理プロセッサ２４０は、任意のマーチャント定義（merchant-defined）ビジネスルールを適用して、ユーザに示される推奨をフィルタする／該推奨に影響を与えることができる。例えば、マーチャントは、いかなるクリアランスの製品もユーザに示さないように決定してもよい。別の例が、ユーザが閲覧している現在の製品のブランドに依存していずれのブランドがユーザに示されるのに適格であるかをマーチャントが決定してもよいことであり得る。別の例が、他よりも特定の属性（例えば、色、フィット、スタイル等）を有する製品が推奨として示されることをマーチャントがより好むことであり得る。アルゴリズム及びビジネスルールは、推奨を生成するために論理プロセッサ２４０により処理され、適用される。プロセッサ２４０は、次いで、推奨をルータサーバ２３０に伝送し、ルータサーバ２３０は、クライアント２００に提供すべき推奨をホスト２１０に転送する。いくつかの実施形態において、異なるアルゴリズムが同様のユーザに適用されて、例えば、アルゴリズムの相対的パフォーマンスをテストすることができる。
【００２１】
推奨は、特定のユーザのためだけに選択された関連したコンテンツ（例えば、関連したニュース記事）、特定のユーザのためだけに選択された関連した製品又はサービス（例えば、ユーザがテニスラケットを購入している場合、テニスボール）、特定のユーザのためだけに選択された宣伝（例えば、ユーザが男性である場合、男性の衣服の販売）、又は当業者により理解される同様の推奨についてであり得る。
【００２２】
いくつかの実施形態において、ルータサーバ２３０は、推奨要求を複数のステートレスプロセッサ２４０に送信して、異なるアルゴリズムに基づく複数の推奨を獲得することができ、推奨要求の結果は、一緒に組み合わせられ、マージされることができる。例えば、論理プロセッサ２４０ａが、ユーザの性別に基づいてアルゴリズムを適用してもよく、論理プロセッサ２４０ｂが、ユーザのショッピングカート内の製品に基づいてアルゴリズムを適用してもよい。ルータサーバ２３０又は第３の論理プロセッサ２４０ｃが、ユーザのために２つの推奨をマージして単一の推奨にすることができる。別法として、ルータサーバ又は第３の論理プロセッサ２４０ｃは、双方の推奨をユーザに提供することができる。いくつかの実施形態において、マーチャントから取得された構成パラメータが、推奨要求が複数のプロセッサ２５０に送信されるかどうかを決定することができる。
【００２３】
推奨エンジン２２０の動作がウェブページ又は電子メールに関して説明されたが、推奨エンジン２２０はこれらの技術に限定されない。推奨エンジン２２０は、推奨が所望される任意の技術に適用できる。例えば、推奨エンジン２２０は、アプリケーション、ビデオゲーム、オンラインデート、スマートフォン、店内広告、クーポン（オンラインの、又はレジで印刷される店内の）、販売マシン、電子書籍リーダ、又はレストラン（例えば、メニュー推奨）に適用できる。
【００２４】
いくつかの実施形態において、推奨エンジン２２０は、ステートレス論理プロセッサ２４０の外側レイヤ２４５とメモリストア２５０の内側レイヤ２５５とを有するものとして説明できる。外側レイヤ２４５内のステートレス論理プロセッサ２４０の数は、推奨エンジン２２０のキャパシティニーズ、推奨エンジン２２０により受信される推奨要求のボリューム、及び／又はネットワークトラフィックに基づいて、上方又は下方に調整できる。外側レイヤ２４５内のステートレス論理プロセッサ２４０は、内側レイヤ２５５内のメモリストア２５０と通信して、推奨を生成するためのコンテキストデータにアクセスする。
【００２５】
図３は、一実施形態による推奨要求を生成する方法３０のフローチャートである。方法３０は、ホストから推奨要求を受信すること３００を含む。上記で論じられたように、推奨要求は、ユーザの閲覧活動、ユーザのアカウント情報、ユーザのショッピングカート内の製品、ユーザにより操作された装置のタイプ、及び／又は推奨要求が生成された時間及び／又は日付に関する情報を含むことができる。方法は、推奨要求を第１のステートレス論理プロセッサに向けること３１０をさらに含む。推奨要求は、上記で論じられたようにルータ又はルータサーバにより第１のステートレス論理プロセッサに向けられることができる。方法は、メモリストアへのクエリに対する応答においてコンテキストデータを（例えば、ステートレス論理プロセッサにおいて）受信すること３２０をさらに含む。方法は、コンテキストデータのうち少なくともいくらかを用いて推奨要求を（例えば、ステートレス論理プロセッサにおいて）生成すること３３０をさらに含む。
【００２６】
図４は、推奨エンジンのキャパシティを動的に制御する方法４０のフローチャートである。方法４０は、ステートレス論理プロセッサ（例えば、ステートレス論理プロセッサ２４０）の利用可能処理帯域幅を決定すること４００を含む。４１０において、利用可能処理帯域幅は、最小利用可能処理帯域幅閾値と比較される。最小利用可能処理帯域幅閾値は、（例えば、管理者ユーザインターフェースを通して）オペレータにより手動で設定されることができ、あるいは過去データ又はベストプラクティスに基づいて自動的に設定されることができる。最小利用可能処理帯域幅閾値は、５％、１０％、１５％、２０％、又はこれらの間の任意の値でもよい。利用可能処理帯域幅が最小利用可能処理帯域幅閾値より小さい場合、４２０において、１つ以上のさらなるステートレス論理プロセッサがデプロイされて、推奨エンジンの利用可能処理帯域幅を増加させる。いくつかの実施形態において、さらなるステートレス論理プロセッサは、反復的にデプロイされる。例えば、第１のさらなるステートレスプロセッサがデプロイされることができ、次いで、利用可能処理帯域幅が決定されることができる。利用可能処理帯域幅が依然として最小処理帯域幅閾値より小さい場合、第２のさらなる論理ステートレスプロセッサがデプロイされることができ、次いで、利用可能処理帯域幅が再度決定されることができる。この反復的処理は、利用可能処理帯域幅が最小利用可能処理帯域幅閾値より大きくなるまで継続することができる。
【００２７】
利用可能処理帯域幅が最小利用可能処理帯域幅閾値より小さくない場合、方法は４３０に進む。４３０において、利用可能処理帯域幅は、事前設定された最大利用可能処理帯域幅閾値と比較される。事前設定された最大利用可能処理帯域幅閾値は、（例えば、管理者ユーザインターフェースを通して）オペレータにより手動で設定されることができ、あるいは過去データ又はベストプラクティスに基づいて自動的に設定されることができる。事前設定された最大利用可能処理帯域幅閾値は、４０％、４５％、５０％、又はこれらの間の任意の値でもよい。利用可能処理帯域幅が事前設定された最大利用可能処理帯域幅閾値より大きい場合、１つ以上の余剰ステートレスプロセッサがデプロイメントから解放されて、推奨エンジンの余剰処理帯域幅を低減させる。いくつかの実施形態において、余剰ステートレス論理プロセッサは、反復的にデプロイメントから解放されることができる。例えば、第１の余剰ステートレス論理プロセッサがデプロイメントから解放されることができ、次いで、利用可能処理帯域幅が決定されることができる。利用可能処理帯域幅が依然として事前設定された最大利用可能処理帯域幅閾値より大きい場合、第２の余剰ステートレス論理プロセッサがデプロイメントから解放されることができ、次いで、利用可能処理帯域幅が再度決定されることができる。この反復的処理は、利用可能処理帯域幅が事前設定された最大利用可能処理帯域幅閾値より小さくなるまで継続することができる。これらセクションにおいて、処理帯域幅は、ＣＰＵ使用量（usage）、メモリ使用量、ネットワーク使用量、又はこれらのファクタの組み合わせを参照し得る。
【００２８】
図５は、別の実施形態によるクライアント５００に推奨を提供するシステム５０のブロック図である。システム５０は、ホスト５１０、ルータ５２０、及び地域的推奨エンジン５２５を含む。地域的推奨エンジン５２５は、ロードバランサ５３０、ステートレス論理プロセッサ５４０Ａ、５４０Ｂ、５４０Ｃ（一般に５４０）、製品サーバ５５０、キャッシュサーバ５５０、ロギングサーバ５５５、事前計算推奨（pre-computed  recommendation）サーバ５６０、リアルタイムモデルスコア付けサーバ５６５、及び解析サーバ５７０を含む。地域的推奨エンジン５２５は、速い応答時間を提供するように地理的に分散され得る複数の推奨エンジンのうち１つを表す。
【００２９】
上記で論じられた実施形態と同様に、クライアント５００は、例えば、ホスト５１０によりホストされたウェブサイト又は電子メールサーバにアクセスすることにより、ホスト５１０と通信する。クライアント５００又はホスト５１０は推奨の要求を送信し、該要求はルータ５２０に伝送される。ルータ５２０は、推奨要求を地域的推奨エンジン５２５に向ける。地域的推奨エンジン５２５は、クライアント５００と推奨エンジン５２５との相対的位置、及び／又は推奨エンジン５２５の利用可能処理帯域幅に基づいて、選択されることができる。ルータ５２０は、ＤＮＳレイテンシルータでもよい。
【００３０】
推奨要求はロードバランサ５３０に送信され、ロードバランサ５３０は要求をステートレス論理プロセッサクラスタ又はレイヤ５４５に向ける。ロードバランサ５３０は、ステートレス論理プロセッサクラスタ／レイヤ５４５内の各ステートレス論理プロセッサ５４０の利用可能処理帯域幅を決定し、推奨要求を最も利用可能な処理帯域幅を有するステートレス論理プロセッサ５４０に向けて、複数のステートレスプロセッサ５４０にわたり処理ロードを分散させる。
【００３１】
ステートレスプロセッサ５４０は、製品サーバ５５０、キャッシュサーバ５５５、ロギングサーバ５６０、事前計算推奨サーバ５６５、リアルタイムモデルスコア付けサーバ５７０、及び解析サーバ５７５と通信する。ステートレスプロセッサ５４０は、１つ以上の事前算出された推奨について事前計算推奨サーバ５６５に問い合わせ、あるいはコールする（call）ことができる。事前算出された推奨には、全体で最も人気のある製品、同じ市又は地域からの顧客について最も人気のある製品、一般に一緒に購入される製品（例えば、シャツとネクタイ）、現在の季節について人気のある製品、販売中の製品等を含むことができる。事前算出された推奨には、顧客による過去のオンライン活動及び／又は購入に基づく推奨をさらに含むことができる。さらに、ステートレスプロセッサ５４０は、ユーザのオンライン活動に基づく１つ以上のリアルタイム推奨についてリアルタイムモデルスコア付けサーバ５７０に問い合わせ、あるいはコールすることができる。リアルタイム推奨の例には、ユーザのショッピングカート内のアイテムに基づく推奨、小売業者のウェブサイト内のユーザの閲覧履歴に基づく推奨、及び一般にユーザのオンライン活動に基づく推奨（例えば、ソーシャルメディア投稿、ウェブ検索等）が含まれる。
【００３２】
ステートレスプロセッサ５４０が事前計算推奨サーバ５６５及び／又はリアルタイムモデルスコア付けサーバ５７０から推奨を受信した後、ステートレスプロセッサ５４０は製品サーバ５５０と通信することができる。例えば、製品サーバ５５０は、小売業者によりオファーされる製品カタログのデータベースを有する。ゆえに、ステートレスプロセッサ５４０は、例えば、ネクタイの推奨に応答して現在利用可能な実際のネクタイなど、推奨された製品にマッチする現在の製品オファーについて製品サーバ５５０に問い合わせることができる。製品サーバ５５０は、各製品に関する様々なメタデータ、例えば、その価格、それが販売中であるかどうか、それが新しい製品か又はライフサイクルの終了に近い製品か、製品の在庫、製品が対象とする季節（例えば、冬に対して厚手のコート）等をさらに含む。ステートレスプロセッサ５４０は、事前計算推奨サーバ５６５から及び／又はリアルタイムモデルスコア付けサーバ５７０からの推奨に基づいてさらなる推奨製品を選択するために製品メタデータを使用することができる。ステートレスプロセッサ５４０は、推奨要求を処理する間、キャッシュサーバ５５５にデータを一時的に記憶することができる。例えば、キャッシュサーバ５５５は、ステートレスプロセッサ５４０からの中間の及び／又は最終的な算出を記憶して、後の応答をスピードアップすることができる。
【００３３】
ロギングサーバ５６０は、後の解析のためにステートレスプロセッサ５４０により処理された推奨要求及び推奨のログをとることができる。解析サーバ５７５は、小売業者ウェブサイト上のユーザ活動を追跡し、後の使用のために特定のメトリクスを計算することができる。例えば、解析サーバ５７５は、推奨された製品のコンバージョンレート（売上）と推奨を生成するために使用された方法論とを追跡するために使用できる。
【００３４】
図６は、製品をユーザに推奨するフローチャート６０である。ステップ６１０において、ステートレスプロセッサは、ユーザがマーチャントに既知であるかを決定する。例えば、ステートレスプロセッサは、ユーザの電子メールアドレス、ユーザのＩＰアドレス、ユーザの装置上のクッキー内のデータ等に基づいて、ユーザデータベースに問い合わせることができる。ユーザがマーチャントに既知でない場合、ステップ６２０において、推奨エンジンは、総計売上データに基づいて予備的（preliminary）推奨を生成する。例えば、推奨エンジンは、推奨が対象にするユーザと同じ装置を有するか又は同じ場所に住むユーザに対して販売された上位製品に基づいて予備的推奨を生成することができる。ユーザがマーチャントに既知である場合、ステップ６３０において、推奨エンジンは、該推奨エンジンがユーザの最近の活動に対する何らかのデータ（例えば、閲覧活動、ショッピングカート内の製品等）を有するかを決定する。最近の活動のデータが存在する場合、推奨エンジンは、最近活動機械学習モデル６４０を適用して予備的推奨を生成する。最近機械学習モデル６４０は、かなり最近の活動のみ使用して予備的推奨を生成する。最近の活動のデータが存在しない場合、推奨エンジンは、過去活動機械学習モデル６５０を適用して予備的推奨を生成する。過去活動機械学習モデル６５０は、ユーザのためのすべての利用可能な過去データを使用して予備的推奨を生成する。いくつかの実施形態において、双方の推奨エンジンが、最近活動機械学習モデル６４０と過去活動機械学習モデル６５０との双方を適用する。
【００３５】
最近活動機械学習モデル６４０及び／又は過去活動機械学習モデル６５０の出力は、ステップ６６０においてマージされる（ただし、モデル６４０及び６５０のうち一方のみが適用される場合、マージは必要ない）。ステップ６６０の出力は、組み合わせられた予備的推奨出力を提供するために、ステップ６７０においてステップ６２０の出力と組み合わせられる。換言すると、ステップ６２０において生成された予備的推奨（未知ユーザモデル）は、予備的推奨のスーパーセットを提供するために、ステップ６４０及び／又は６５０からの予備的推奨（既知ユーザモデル）とマージされる。ステップ６８０において、最終的な推奨を生成するために、組み合わせられた予備的推奨出力にビジネスルールが適用され、最終的な推奨は、ステップ６９０においてホスト／ユーザに返される。ステップ６８０において適用されるビジネスルールには、上記で論じられたように、いずれの製品が販売中であるか、いずれの製品をマーチャントが促進したいか、いずれの製品が季節に合うかを含むことができる。
【００３６】
今や十分理解されるように、上記システム及び方法は、推奨エンジンの処理帯域幅における動的な増加又は減少を許容する。こうしたシステム及び方法は、さらなる処理能力がオンラインにされる間にオーバーキャパシティで動作する推奨エンジンにおける望まれない処理レイテンシを低減させることができる。上記システム及び方法はコスト節減をさらに提供することができ、なぜならば、推奨エンジンが、さらなる処理能力が動的にデプロイされることができるため、オーバーキャパシティで動作する必要がないからである。そのようなものとして、余剰処理能力が、企業内のより生産的な使用のために解放され、あるいはクラウドプロバイダ（例えば、Ａｍａｚｏｎ）に解放され返されることができる。
【００３７】
本発明は、上記で説明された特定の実施形態に限定されるとみなされるべきでなく、むしろ、本特許請求の範囲に適正に提示された本発明のすべての態様をカバーするように理解されるべきである。様々な変更、均等的処理、及び、本発明が適用可能である多数の構造が、本開示の再考察において本発明が向けられる当業者に容易に明らかになるであろう。特許請求の範囲はこうした変更をカバーするよう意図される。
【図１】
0006630819.tif 000002
【図２】
0006630819.tif 000003
【図３】
0006630819.tif 000004
【図４】
0006630819.tif 000005
【図５】
0006630819.tif 000006
【図６】
0006630819.tif 000007