JP2018535486A - カナリア分析を用いて、サーバ側挙動のクライアント側効果を決定する技術 - Google Patents

カナリア分析を用いて、サーバ側挙動のクライアント側効果を決定する技術 Download PDF

Info

Publication number
JP2018535486A
JP2018535486A JP2018521061A JP2018521061A JP2018535486A JP 2018535486 A JP2018535486 A JP 2018535486A JP 2018521061 A JP2018521061 A JP 2018521061A JP 2018521061 A JP2018521061 A JP 2018521061A JP 2018535486 A JP2018535486 A JP 2018535486A
Authority
JP
Japan
Prior art keywords
request
time
canary
routing
mapping
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018521061A
Other languages
English (en)
Other versions
JP6613373B2 (ja
Inventor
ロイド コーエン,マイケル
ロイド コーエン,マイケル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netflix Inc
Original Assignee
Netflix Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netflix Inc filed Critical Netflix Inc
Publication of JP2018535486A publication Critical patent/JP2018535486A/ja
Application granted granted Critical
Publication of JP6613373B2 publication Critical patent/JP6613373B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/42Centralised routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/368Test management for test version control, e.g. updating test cases to a new software version
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1014Server selection for load balancing based on the content of a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本発明の一実施形態において、スティッキーなカナリアルータは、サービスと関連づけられた各要求を、サービスに対する変更を実施するカナリアクラスタのサーバまたは変更を実しないベースラインクラスタのサーバのいずれかにルーティングする。スティッキーなカナリアルータは、現在の時間、ルーティングのための時間窓、および要求の特性に基づいて、各要求のルーティングを決定するマッピングアルゴリズムを実装する。特に、マッピングアルゴリズムは、時間窓に等しい持続時間を有する時区間にわたって、スティッキーなカナリアルータが、特定の装置から受信された全ての要求をカナリアクラスタまたはベースラインクラスタのいずれかに一貫してルーティングするよう実装され得る。このように構成されたスティッキーなカナリアルータは、カナリアサーバとのクライアントのやりとりのほぼ完全なセッションの分析を可能にし、それにより、変更によるクライアント側効果の識別を容易にする。

Description

関連出願の相互参照
本願は、2015年10月23日に出願された米国特許出願第14/922,101号による利益を主張するものであり、これを参照して本明細書に組み込む。
本発明の実施形態は、一般的に、コンピュータサイエンスに関し、より具体的には、カナリア分析を用いて、サーバ側挙動のクライアント側効果を決定する技術に関する。
クライアントがクライアント装置を介してサービスを要求し、それに応答してサーバがサービスを提供するクライアント−サーバアーキテクチャを介して、多くのサービス提供者がサービスを供給している。例えば、Netflix社は、オンデマンドストリーミングビデオをクライアントに供給するサービス提供者である。クライアントは要求を提出し(例えば、クライアント装置を介して、特定のビデオを再生することを要求し)、Netflix社のサーバは、要求に応答して、ビデオをクライアント装置に配信するためにソウトウェアを実行する。クライアントは、サポートされている任意のクライアント装置(例えば、ビデオゲームコンソール、テレビ、携帯型機器等)を用いて、要求を入力し得る。
クライアント体験の改善の一部として、サービス提供者は、しばしば、新たな機能を導入する、既存の機能を改善する、および/または不具合を修正するソウトウェア更新を展開する。より具体的には、サービス提供者はソウトウェア更新をサーバに「プッシュ」し、次に、サーバは、更新されたソウトウェアを実行する。クライアント体験がソウトウェア更新によって悪影響を受けないことを確実にするための試みにおいて、サービス提供者は、ソウトウェア更新を展開する前に、ソウトウェア更新を検証するための様々なテスト方法を用いるのが典型的である。しかし、サポートされている全てのタイプのクライアント装置上において、全てのクライアントワークフローを通して、ソウトウェア更新を手動でテストすることは、たとえ不可能ではないとしても、通常は非常に困難であると共に時間がかかる。例えば、Netflix社のオンデマンドストリーミングビデオサービスは、多くのブルーレイディスクプレイヤー、多くのタブレットコンピュータ、多くの携帯電話、多くの高精細テレビ受信機、多くのホームシアターシステム、多くのセットトップボックス、多くのビデオゲームコンソール等をサポートしている。その結果、サポートされている各タイプのクライアント装置を用いて、ソウトウェア更新を網羅的にテストするのに要する時間の量は、許容不可能なほど長い。更に、ソウトウェア更新の展開前に、ソウトウェア更新によって生じる不具合が検出されず、補正されない場合には、クライアント体験の質が低下し得る。
ソウトウェア更新によって生じる未検出の不具合の影響を低減する1つの手法において、一部のサービス提供者は、カナリア分析として知られている展開プロセスを用いる。カナリア分析では、サービス提供者は、ソウトウェア更新を比較的小さい割合の「カナリア」サーバにプッシュし、一方、比較的大きい割合の「ベースライン」サーバは変更されず、ベースライン(即ち、未更新の)ソウトウェアを実行する。ソウトウェア更新は限られた数のサーバ上のみでテストされるので、ソウトウェア更新によって不具合が生じた場合、その影響を受けるのは、比較的少数のクライアント装置と関連づけられた比較的小さい割合の要求である。
カナリアサーバおよびベースラインサーバが動作している際に、サービス提供者は、ソウトウェア更新の効果を評価するために、サーバの動作を測定する。一般的に、そのような測定の結果を「サーバ側測定指標」として参照する。カナリアサーバと関連づけられたサーバ側測定指標と、ベースラインサーバと関連づけられたサーバ側測定指標とを比較することにより、サービス提供者は、ソウトウェア更新によって生じた1以上の不具合を示す異常を検出し得る。例えば、ソウトウェア更新によって更なるレイテンシーが生じるものとする。カナリア分析中、サーバ側測定指標は、カナリアサーバと関連づけられたレイテンシーが、ベースラインサーバと関連づけられたレイテンシーを顕著に超えることを示し得る。この決定が行われたら、サービス提供者は、最終的なソウトウェア更新を全てのサーバにプッシュする前に、更なるレイテンシーを解消するためにソウトウェア更新を修正し得る。
しかし、カナリア分析は、カナリアサーバの動作における異常を検出することにより、ソウトウェア更新の展開と関連づけられたリスクを低減し得るが、ソウトウェア更新によって生じた一部の不具合が、上述のカナリア分析プロセスによる検出から逃れる場合もあり得る。特に、カナリア分析中に、ベースラインソウトウェアも使用可能であることにより、クライアント装置の動作に対するソウトウェア更新の効果が覆い隠される場合がある。例えば、特定のクライアント装置が、カナリアサーバによって受信される要求を発行し、次に、カナリアサーバが、要求に対する応答を生成するために、更新されたソウトウェアを実行するものとする。更に、更新されたソウトウェアと関連づけられた不具合が、カナリアサーバを誤作動させて、特定のクライアント装置が応答を解釈できなくなるものとする。従来のカナリア分析プロセスでは、特定のクライアント装置は要求を再試行し、サービスを実装するサーバのうちの比較的少数がカナリアサーバであるので、この第2の要求はベースラインサーバが受信する可能性が最も高い。ベースラインサーバはベースラインソウトウェアを実行し、その結果、第2の要求を正しく処理して、第2の要求に対する応答を生成する。この特定のクライアント装置は、第2の要求に対する応答を正しく解釈できるので、サーバ側測定指標は、ソウトウェア更新と関連づけられた問題を示さない。この場合、この不具合は実際上、検出から逃れることになる。
クライアント装置の動作に対するサーバの挙動のそのような未検出の効果(本明細書においては、サーバ側挙動のクライアント側効果と称する)は、データ差分、フォーマット変更、空のサーバ応答等を含み得る。動作においては、未検出の不具合を生じたソウトウェア更新が、カナリア分析で合格となった場合には、サービス提供者は、不具合に気づかずに、ソウトウェア更新を全てのサーバにプッシュすることとなる。このとき、ベースラインソウトウェアはもはや使用できないので、ソウトウェア更新に存在する不具合が、複数のタイプのクライアント装置にわたるクライアント体験に負の影響を与え得る。
上記で示した通り、当該技術分野において、サーバ装置上で実行されるソウトウェアに対する変更をテストする際に、不具合を検出するためのより効果的な技術が必要である。
本発明の一実施形態は、カナリア分析を行う際に要求をルーティングするための、コンピュータによって実装される方法を述べる。この方法は、第1の要求の少なくとも1つの特性、第1の要求と関連づけられた時間、およびルーティングのための時間窓に基づいて、第1のマッピングを計算する工程と、第1のマッピングが、第1の要求がサーバによって提供されるサービスに対する変更と関連づけられることを示しているか否かを決定する工程と、第1のマッピングが、第1の要求が変更と関連づけられることを示しているか否かに基づいて、第1の要求を、変更を実装する第1のサーバまたは変更を実装しない第2のサーバのいずれかにルーティングする工程とを含む。
要求をルーティングするための本開示の技術の1つの長所は、サービス提供者が、これらの技術を利用して、クライアント体験およびサーバの挙動の両方に対する、サービスの変更の効果を総合的に分析し得ることである。特に、変更のクライアント側効果をモニタリングするために、サービス提供者は、クライアント装置の或るサブセットからの要求が、ほぼ完全なクライアントセッションにわたって、変更を実装するサーバに一貫してルーティングされるように、時間窓を構成し得る。そのサブセットに含まれるクライアント装置は、その時間窓の持続時間にわたって、変更されていないサービスにアクセスできないので、サービス提供者は、サービス提供者がそれらのクライアント装置に対する変更の効果を分析することを可能にする測定指標を収集し得る。
本発明の1以上の態様を実装するよう構成されたシステムの概念図 本発明の様々な実施形態による、図1Aのサービス提供者インフラのより詳細な図 本発明の様々な実施形態による、図1Bのスティッキーなカナリアルータのより詳細な図 本発明の様々な実施形態による、図2のスティッキーなカナリアルータによって実装されるルーティングの一例を示す 本発明の様々な実施形態による、サービスと関連づけられたソウトウェア更新のカナリア分析を行う際に要求をルーティングする方法のステップのフロー図
本発明の上記の特徴を詳細に理解できるように、上記で簡潔に要約した本発明を、実施形態を参照してより具体的に説明する。実施形態の幾つかが、添付の図面に示されている。しかし、添付の図面は、本発明の典型的な実施形態のみを示すものであり、本発明の範囲を限定するものとは見なされず、本発明は、他の等しく効果的な実施形態を認め得ることを留意されたい。
以下の説明において、本発明のより完全な理解を提供するために、多くの具体的な詳細が述べられる。しかし、当業者には、これらの具体的な詳細の1以上を含まずとも本発明が実施され得ることが自明である。
システムの概観
図1は、本発明の1以上の態様を実装するよう構成されたシステム100の概念図である。図示されるように、システム100は、クラウド102とやりとりする機能がある様々なクライアント装置に接続されたクラウド102(例えば、カプセル化された共有リソース、ソフトウェア、データ等)を含むが、それに限定されない。そのようなクライアント装置としては、デスクトップコンピュータ108、ラップトップ106、スマートフォン104、スマートテレビ109、ゲームコンソール107、タブレット105、テレビに接続された機器(図示せず)、携帯型機器(図示せず)、およびストリーミングエンターテインメント機器(図示せず)が挙げられるが、それらに限定されない。
クラウド102は、任意の数(0を含む)の中央処理装置(CPU)112、グラフィック処理装置(GPU)114、メモリ116等で構成された任意の数のコンピュートインスタンス110を含み得る。動作においては、CPU112はコンピュートインスタンス110のマスタープロセッサであり、コンピュートインスタンス110に含まれる他の構成要素の動作を制御し調和させる。具体的には、CPU112は、GPU114の動作を制御するコマンドを発行する。GPU114には、グラフィックおよびビデオ処理のために最適化された回路(例えば、ビデオ出力回路を含む)が組み込まれている。様々な実施形態において、GPU114には、コンピュートインスタンス110の他の要素のうちの1以上が統合され得る。メモリ116は、コンピュートインスタンス110のCPU112およびGPU114が用いるためのコンテンツ(例えばソフトウェアアプリケーションおよびオーディオビジュアルデータ等)を格納する。動作において、クラウド102は、クライアント装置(例えば、ラップトップ110)から入力されたクライアント情報を受信し、コンピュートインスタンス110のうちの1以上がクライアント情報に対する処理を行い、クラウド102は、処理された情報をクライアント装置に送信する。
別の実施形態では、クラウド102は、任意のタイプのクラウドコンピューティング環境と置き換えられ得る。他の実施形態では、システム100は、クラウド102の代わりに、任意の分散型コンピュータシステムを含み得る。更に別の実施形態では、システム100はクラウド102を含まず、その代わりに、システム100は、任意の数の処理装置(例えば、任意の組合せの中央処理装置および/またはグラフィック処理装置)を実装する単一のコンピューティング装置を含む。
一般的に、クラウド102に含まれるコンピュートインスタンス110は、1以上のアプリケーションを実行する1以上のサーバを実装するよう構成される。図示されるように、コンピュートインスタンス110〜110は、サービス提供者インフラ118に含まれるサーバとして構成される。
図1Bは、本発明の様々な実施形態による、図1Aのサービス提供者インフラ118のより詳細な図である。図示されるように、サービス提供者インフラ118は、エッジサービスクラスタ120、プロダクションクラスタ140、ベースラインクラスタ150、およびカナリアクラスタ160を含むが、それらに限定されない。エッジサービスクラスタ120、プロダクションクラスタ140、ベースラインクラスタ150、およびカナリアクラスタ160は、サーバとして構成されたコンピュートインスタンス110のうちの1以上を含む。説明の目的で、プロダクションクラスタ140に含まれるサーバを、本明細書においてはプロダクションサーバとして参照し、ベースラインクラスタ150に含まれるサーバを、本明細書においてはベースラインサーバとして参照し、カナリアクラスタ160に含まれるサーバを、本明細書においてはカナリアサーバとして参照する。
動作においては、クライアント装置は、サービス提供者インフラ118において実装されるサービスとやりとりするクライアントセッションの一部として、要求を発行する。この要求に応答して、サービス提供者インフラ188に含まれるサーバは、ソウトウェアを実行し、要求に対する応答を発行する。各クライアントセッションは、1以上の関連するタスクを達成することが意図された一群の挙動を含む。例えば、サービスはビデオ配信サービスであり、クライアント装置はラップトップ106であるものとする。クライアントセッションは、クライアントが、サービス提供者インフラ118に含まれるサーバによって生成されたグラフィカルユーザインターフェース(GUI)をロードしたときから、クライアントが再生するビデオを選択したときまでに、ラップトップ106によってサービス提供者インフラ118へと発行された複数の要求を含み得る。
動作においては、エッジサービスクラスタ120は、サービスを実装するサーバへのゲートウェイとして動作する。とりわけ、エッジサービスクラスタ120は、クライアント装置からの要求を受信し、それらの要求を、サービスを実装するソウトウェアを実行するサーバにルーティングする。典型的には、サービス提供者は、クライアント体験の改善の一部として、サービスと関連づけられたソウトウェアを定期的に変更する。より具体的には、サービス提供者は、サーバによって実装されるソウトウェアを修正するソウトウェア更新をプッシュする。典型的には、サービス提供者は、ソウトウェア更新をプッシュする前に、サービスと関連づけられたソウトウェア更新によって生じた不具合(あれば)を検出することを試みる。しかし、しばしば、サポートされているタイプのクライアント装置が多数であること、および/またはクライアントのワークフローが多数であることにより、総合的なテストは実現不可能である。この理由から、エッジサービスクラスタ120は、カナリア分析を可能にするよう構成される。
カナリア分析の一部として、エッジサービスクラスタ120は、要求を受信した際、その要求を、プロダクションクラスタ140、ベースラインクラスタ150、またはカナリアクラスタ160のうちの1つにルーティングする。プロダクションクラスタ140およびベースラインクラスタ150の各々は、要求に対する応答を発行するために、ソウトウェア更新を含まない、サービスと関連づけられたソウトウェアを実行するサーバを含む。説明の目的で、ソウトウェア更新を含まない、サービスと関連づけられたソウトウェアを、本明細書においては「ベースラインサービスソウトウェア」として参照する。それとは対照的に、カナリアクラスタ160は、要求に対する応答を発行するために、サービスと関連づけられたソウトウェア更新を実行するサーバを含む。説明の目的で、サービスと関連づけられたソウトウェア更新を、本明細書においては「サービスソウトウェア更新」として参照する。当業者には認識されるように、一部の実施形態では、サービスと関連づけられたソウトウェア更新は、集合的サービスソウトウェア更新を生成するために、ベースラインソウトウェアに加えて適用され得る。説明の目的で、本明細書においては、サービスソウトウェア更新および集合的サービスソウトウェア更新の両方を、サービスソウトウェア更新として参照する。
ベースラインクラスタ150およびカナリアクラスタ160に含まれるサーバが要求を実行した際、エッジサービスクラスタ120は、1以上のカナリア測定指標を介して、サーバおよび/またはクライアント装置の動作を捕捉して分析する。カナリア測定指標は、サービスソウトウェア更新によって生じた予期せぬ効果の検出を容易にするよう設計される。例えば、カナリア測定指標は、サーバエラーの数および/またはタイプ、サーバによって生じたレイテンシー、サーバの負荷、CPU112の動態等を反映し得るが、それらに限定されない。一般的に、各カナリア測定指標について、エッジサービスクラスタ120は、ベースラインクラスタ160と関連づけられた値とカナリアクラスタ170と関連づけられた値とを比較して、カナリアクラスタ170において実装されたサービスソウトウェア更新がクライアント体験に負の影響を与え得ることを示す異常(あれば)を識別する。
エッジサービスクラスタ120は、技術的に可能な任意の方法で、カナリア測定指標を捕捉して分析し得る。例えば、一部の実施形態では、エッジサービスクラスタ120は、事象ストリーム処理システム(図示せず)と協働して動作して、応答ストリームおよび装置ログを分析し得る。より具体的には、エッジサービスクラスタ120は、エッジサービスクラスタ120がベースラインクラスタ150またはカナリアクラスタ160のいずれかにルーティングする各要求を「タグ付け」し得る。事象ストリーム処理システムは、タグ付けされた要求を識別し、タグ付けされた要求の識別特性(例えば、要求を発行したクライアント装置を識別するESN(Electronic Serial Number)等)に基づいて、装置ログと応答ストリームとを相関させるよう構成され得る。
カナリア測定指標の分析に基づいて、エッジサービスクラスタ120は、識別された異常またはエラー(あれば)に関するカナリアデータをサービス提供者に提供する。カナリアデータは、異常またはエラーに関する任意のタイプの情報(クライアント装置のタイプ、影響を受けた要求の割合等を含むが、それらに限定されない)を含み得る。カナリアデータに基づいて、サービス提供者は、サービスソウトウェア更新のプッシュを拡大するか、または、サービスソウトウェア更新を「撤回」するかを決定し得る。サービス提供者は、技術的に可能な任意の方法で、サービスソウトウェア更新を撤回し得る。例えば、サービス提供者は、任意の数のサーバを、サービスソウトウェア更新の代わりにベースラインサービスソウトウェアを実行するよう再構成し得る。一部の実施形態では、サービス提供者は、識別された異常またはエラーを補正する新たなサービスソウトウェア更新をプッシュし得る。サービス提供者は、技術的に可能な任意の方法で、カナリアデータを分析し得る。例えば、一部の実施形態では、サービス提供者は、カナリアデータを解釈するための自動カナリア分析(ACA)ツールを構成し得る。
しかし、カナリアデータが、カナリアクラスタ160において実装されたサービスソウトウェア更新がクライアント体験に負の影響を与え得ることを示していないことを、サービス提供者が決定した場合には、サービス提供者は、サービスソウトウェア更新を更なるサーバにプッシュすることにより、カナリアクラスタ160のサイズを増やしてもよい。最終的に、カナリアクラスタ160において実装されたサービスソウトウェア更新がクライアント体験に負の影響を与えないことを、カナリアデータが継続的に示している場合には、サービス提供者は、サービスソウトウェア更新をプロダクションにプッシュして、プロダクションクラスタ140に含まれるサーバを、ベースラインサービスソウトウェアの代わりにサービスソウトウェア更新を実行するよう構成し得る。
更に、一部の実施形態では、エッジサービスクラスタ120は、サービス提供者がカナリア分析を修正するのを可能にするアプリケーションプログラミングインターフェース(API)を提供し得る。例えば、そのようなAPIは、サービス提供者がカナリアデータを読み出すこと、カナリア分析を開始すこと、カナリア分析を停止すこと、カナリア分析を構成すること等を可能にし得る。更に別の実施形態では、エッジサービスクラスタ120が、カナリアクラスタ160において実装されたサービスソウトウェア更新がクライアント体験に負の影響を与え得ることを示す異常を検出した場合には、エッジサービスクラスタ120は、カナリア分析を自動的に停止することにより、変更の影響を限定的なものにし得る。
一般的に、カナリア測定指標の品質は、カナリア分析の有効性に影響を与える。より具体的には、ソウトウェアサービス更新に含まれる1以上の不具合が、カナリア測定指標に反映されていない場合には、サービス提供者は、それらの不具合を含むソウトウェアサービス更新をプロダクションクラスタ140にプッシュし得る。その場合、不具合は、許容できない数のクライアントに負の影響を与え得る。カナリア測定指標の品質を下げる従来のエッジサービスクラスタの1つの限界は、従来のエッジサービスクラスタによって実装されるランダムルーティング処理である。
従来のエッジサービスクラスタは、典型的には、要求のうちの比較的小さいランダムサンプリングをカナリアクラスタ160にルーティングする。ベースラインソウトウェアは依然として使用可能であり、ベースラインクラスタ150およびプロダクションクラスタ140に含まれるサーバによって実行されるので、ランダムサンプリング処理は、クライアント装置の動作に対するサービスソウトウェア更新の効果を覆い隠す場合がある。特に、カナリア測定指標は、カナリアクラスタ160に含まれるサーバとベースラインクラスタ150に含まれるサーバとの挙動の違いに起因するクライアント装置の動作に対する悪影響を反映しない場合がある。クライアント装置の動作に対するサーバの挙動のそのような未検出の効果(本明細書においては、サーバ側挙動のクライアント側効果として参照する)は、データ差分、フォーマット変更、空のサーバ応答等を含み得る。
例えば、カナリアクラスタ160は6台のカナリアサーバを含み、ベースラインクラスタ150は6台のベースラインサーバを含み、プロダクションクラスタ140は988台のプロダクションサーバを含むものとする。クライアントセッション中に、クライアント装置が30個の要求を発行し、従来のエッジサービスクラスタがこれらの要求をルーティングする場合には、カナリアサーバのうちの1つがこれらの要求のうちの1つを処理する尤度は約3%になる。更に、従来のエッジサービスクラスタは、第1の要求をカナリアサーバにルーティングするものとする。カナリアサーバはサービスソウトウェア更新を実行するが、不具合を伴うサービスソウトウェア更新がカナリアサーバを誤作動させ、第1の要求に対する、クライアント装置が解釈できない応答を発行する。それに応答して、クライアント装置は、第2の要求を発行することによって要求を再試行するものとする。
従来のエッジサービスクラスタが第2の要求をルーティングする場合には、カナリアサーバのうちの1つが第2の要求を処理する尤度は約0.09%となる。ベースラインサーバまたはプロダクトサーバのうちの1つが第2の要求を処理し、第2の要求に対する第2の応答を生成するためにベースラインソウトウェアを実行する場合には、クライアント装置は、この第2の応答を正しく解釈できる。従って、カナリア測定指標は問題を示さず、サービス提供者が変更をプロダクションクラスタ140にプッシュするまで、不具合は検出から逃れ得る。サービス提供者が変更をプロダクションクラスタ140にプッシュした後、クライアント装置が第1の要求を発行した場合には、プロダクションクラスタ140はサービスソウトウェア更新を実行し、クライアント装置は、再試行の回数に関係なく、応答を正しく解釈できなくなる。従って、クライアント体験の質が低下することとなる。
カナリア分析中に、変更のそのようなクライアント側効果の検出を可能にするために、エッジサービスクラスタ120は、スティッキーなカナリアルータ130を含む。一般的に、スティッキーなカナリアルータ130は、カナリア分析のために、小さい割合のクライアント装置から受信された要求を、限られた時間の量にわたって、カナリアクラスタ160またはベースラインクラスタ150のいずれかに一貫してルーティングする。限られた時間の量は、本明細書においては有効期間(TTL:time-to-live)として参照され、典型的には、ほぼ完全なクライアントセッションを捕捉するよう選択される。TTLは、本明細書においては、ルーティングのための時間窓としても参照される。エッジサービスクラスタ120は、残りの要求をプロダクションクラスタ140にルーティングする。スティッキーなカナリアルータ130は、技術的に可能な任意の方法で実装され得る。例えば、一部の実施形態では、スティッキーなカナリアルータ130は、エッジサービスクラスタ120に含まれる1以上のフィルターとして実装され得る。
動作においては、TTLに等しい持続時間の時区間にわたって、スティッキーなカナリアルータ130は、クライアント装置の小さいサブセットからの要求をカナリアクラスタ160にルーティングすると共に、それとは異なるクライアント装置の小さいサブセットからの要求をベースラインクラスタ150にルーティングする。TTLに等しい持続時間の次の時区間にわたって、スティッキーなカナリアルータ130は、クライアント装置の更に別の小さいサブセットからの要求をカナリアクラスタ160にルーティングすると共に、それとは異なるクライアント装置の小さいサブセットからの要求をベースラインクラスタ150にルーティングする。カナリア分析が終了するまで、スティッキーなカナリアルータ130はこの処理を継続し、クライアント装置のそれぞれ異なるサブセットからの要求を、カナリアクラスタ160またはベースラインクラスタのいずれかにルーティングする。スティッキーなカナリアルータ130は、例えば合計時間等の技術的に可能な任意の基準に基づいて、カナリア分析を終了させるよう構成され得る。
単に説明の目的で、スティッキーなカナリアルータ130が所与のTTLにわたって要求をカナリアクラスタ160にルーティングする対象であるクライアント装置の小さいサブセットを、本明細書においては「カナリアクライアント装置」として参照する。同様に、スティッキーなカナリアルータ130が所与のTTLにわたって要求をベースラインクラスタ150にルーティングする対象であるクライアント装置の小さいサブセットを、本明細書においては「ベースラインクライアント装置」として参照する。残りのクライアント装置を、本明細書においては「プロダクションクライアント装置」として参照する。カナリアクライアント装置として参照される一組のクライアント装置、ベースラインクライアント装置として参照される一組のクライアント装置、およびプロダクションクライアント装置として参照される一組のクライアント装置は、時間が進むにつれて変わる。
スティッキーなカナリアルータ130は、関連づけられたクライアント装置に基づいて、要求を一貫してルーティングすることにより、エッジサービスクラスタ120が、クライアントセッション全体にわたるカナリアクラスタ160とのやりとりを正確且つ総合的に反映するカナリア測定指標を取得するのを可能にする点が有利である。その結果、従来のカナリア分析では検出から逃れる変更のクライアント側効果が、カナリア測定指標を介して決定され得る。特に、変更が望ましくないクライアント側効果を生じる場合には、カナリア測定指標は、典型的には、ベースラインクライアント装置と関連づけられた呼び出しパターンとは異なるカナリアクライアント装置と関連づけられた呼び出しパターンを反映する。
特に、スティッキーなカナリアルータ130は、TTLの持続時間にわたって、カナリアクライアント装置から受信された要求をベースラインソウトウェアから分離するので、ベースラインソウトウェアは、カナリアクライアント装置に対するサービスソウトウェア更新の効果を覆い隠さない。例えば、TTLは90秒間であり、カナリアクライアント装置は、スティッキーなカナリアルータ130がカナリアクラスタ160にルーティングする第1の要求を発行するものとする。カナリアクラスタ160に含まれるカナリアサーバは、サービスソウトウェア更新を実行するが、サービスソウトウェア更新と関連づけられた不具合がカナリアサーバを誤作動させ、第1の要求に対する、クライアント装置が解釈できない応答を発行させる。それに応答して、クライアント装置は、第2の要求を発行することによって要求を再試行するものとする。スティッキーなカナリアルータ130は、この第2の要求をカナリアクラスタ160にルーティングし、カナリアサーバは、サービスソウトウェア更新を実行する。サービスソウトウェア更新は上記の不具合を含み、その結果、クライアント装置は、第2の要求に対するカナリアサーバの応答を解釈できない。
クライアント装置は、90秒間のTTLにわたって継続的に要求を再試行し得るが、そのTTLの間、スティッキーなカナリア130は、クライアント装置から受信された要求のいずれもを、ベースラインクラスタ150またはプロダクションクラスタ140のいずれにもルーティングしないので、クライアント装置は良好に動作できなくなる。特に、サービスソウトウェア更新に含まれる不具合の結果として、カナリアクラスタ160によって受信された要求の容量は、ベースラインクラスタ150によって受信された要求の容量を劇的に超え得る。この容量の増加はカナリア測定指標に反映されるので、サービス提供者は、スティッキーなカナリア分析によって、サービスソウトウェア更新に含まれる不具合を検出でき、サービスソウトウェア更新を撤回して、不具合を修正できる。
更に、スティッキーなカナリアルータ130は、限られたTTLにわたって、小さい割合のクライアント装置のみをカナリアクラスタ160にルーティングするよう構成されるので、クライアント体験に対するカナリアテストの影響は最小化される。例えば、スティッキーなカナリアルータ130は、10秒間のTTLにわたって、クライアント装置の3%からの要求をカナリアクラスタ160にルーティングするよう構成され得る。10秒後、スティッキーなカナリアルータ130は、2分間の合計カナリアテスト時間の次の10秒間にわたって、クライアント装置の異なる3%からの要求をカナリアクラスタ160にルーティングし得る。その結果、サービスソウトウェア更新に含まれる不具合(あれば)の各クライアント装置に対する影響は10秒間に制限される。
なお、本明細書に記載される技術は限定するものではなく、説明のためのものであり、本発明のより広い趣旨および範囲から逸脱することなく変更され得る。特に、スティッキーなカナリアルータ130は、スティッキーなカナリアルータ130が、技術的に可能な任意の基準に基づいて、任意の時間の長さにわたって、要求をカナリアクラスタ160またはベースラインクラスタ150のいずれかに一貫してルーティングするのを可能にする任意のアルゴリズムを実装してよい。例えば、別の実施形態では、カナリアルータ130は、カナリアクラスタ160にルーティングする要求を、要求の装置識別子、クライアント識別子、ESN、セッション識別子、または他の任意の特性に基づいて選択し得る。一部の実施形態では、カナリアルータ130は、特定のクライアント装置上で実行される1つのセッションからの要求をカナリアクラスタ160にルーティングし、特定のクライアント装置上で実行される他のセッションからの要求をプロダクションクラスタ140にルーティングし得る。
更に、一部の実施形態では、システム100はエッジサービスクラスタ120を含まず、スティッキーなカナリアルータ130はスタンドアロンルーティングアプリケーションとして実装される。別の実施形態では、スティッキーなカナリアルータ130に含まれる機能性は、任意の装置またはアプリケーションに含まれてよく、技術的に可能な任意の方法で実装されてよい。様々な実施形態において、スティッキーなカナリアルータ130は、ソウトウェア、ハードウェア、またはそれらの任意の組合せで実装され得る。一部の実施形態では、サービスソウトウェア更新は、変更を実装するサーバの機能性を変える任意のタイプの変更と置き換えられ得る。例えば、一部の実施形態では、サービスソウトウェア更新は、任意の数および組合せのソウトウェア更新、データ更新、スクリプト更新、テンプレート更新等を含むサービス更新と置き換えられる。
スティッキーなカナリアルーティング
図2は、本発明の様々な実施形態による、図1のスティッキーなカナリアルータ130のより詳細な図である。図示されるように、スティッキーなカナリアルータ130は、装置ハッシュ242、時間ハッシュ246、およびルーティングハッシュ248を含むが、それらに限定されない。動作においては、スティッキーなカナリアルータ130は、1以上の要求210を受信し、1以上のルーティング構成220に基づいて、各要求210を処理する。次に、スティッキーなカナリアルータ130は、エッジサービスクラスタ120と協働して、各要求をカナリアクラスタ160、ベースラインクラスタ150、またはプロダクションクラスタ140のうちの1つにルーティングする。
図示されるように、要求210は、要求識別子(ID)212、クライアントID214、および装置ID216を含むが、それらに限定されない。要求ID212、クライアントID214、および装置ID216は、技術的に可能な任意の方法で指定されてよく、当該技術分野において知られている任意の慣習に従ってよい。例えば、装置ID216は、装置のシリアル番号が連結された装置タイプを含む文字列であり得る。別の実施形態では、要求210は、要求と関連づけられた任意の数の特性を識別する任意の数およびタイプの情報を含み得る。例えば、一部の実施形態では、要求210は、ESNおよびセッション識別子を含み得る。
スティッキーなカナリアルータ130は、ルーティング構成220を介して構成される。各ルーティング構成220は、装置タイプ222、ルーティング226、100万分の1のレート(RPM:rate per million)232、有効期間(TTL)234、およびシード値236を含むが、それらに限定されない。装置タイプ222は、装置のタイプ(例えば、PlayStation(登録商標)3(PS3)またはBIVL(Best Resolution Audio Visual Integrated Architecture Internet Video Link)テレビ等)を指定する。ルーティング226は、ルーティング構成220がカナリアクラスタ160と関連づけられているかまたはベースラインクラスタ150と関連づけられているかを指定する。100万分の1のレート(RPM)232は、装置タイプ222のクライアント装置から受信される要求210のうちの、ルーティング226によって指定されているクラスタにルーティングされる割合を指定する。TTL234は、クライアント装置の特定のサブセットが、装置ID216に基づいて、ルーティング226によって指定されているクラスタにルーティングされる時区間の持続時間を指定する。最後に、シード値236は、各ルーティング構成220に対して一意の値であり、スティッキーなカナリアルータ130がルーティング構成220に従ってルーティングするクライアント装置のサブセットが、ルーティング構成220間で変わることを確実にするよう選択される。
特に、ルーティング構成220は、スティッキーなカナリアルータ130に含まれる機能性が、様々なロジスティックな考慮に基づいて微調整されることを可能にする。一部の実施形態では、ルーティング構成220は、要求のルーティング260を、装置タイプ222に基づいて正規化し得る。例えば、BIVLテレビの普及率は、PS3と比較して遥かに低い。従って、BIVLテレビの十分なテストを確実にするために、BIVLテレビと関連づけられたルーティング構成220のRPM232は1,000であり、PS3と関連づけられたルーティング構成220のRPM232は10であり得る。ルーティング構成220は、技術的に可能な任意の方法で、任意の形式で生成され得る。例えば、一部の実施形態では、事象ストリーム処理システムは、装置タイプ222のランク付けされた相対分布を生成してもよく、サービス提供者は、このランク付けされた分布に基づいて、RPM232を決定してもよい。他の実施形態では、TTL232は、異なる装置タイプ222と関連づけられた異なるクライアントフローについてのほぼ全セッションを捕捉するために、ルーティング構成220毎に微調整され得る。
動作においては、要求210を受信したら、スティッキーなカナリアルータ130は、要求210を発行したクライアント装置のタイプを、装置ID216に基づいて決定する。次に、スティッキーなカナリアルータ130は、「カナリア」のルーティング226およびクライアント装置のタイプに一致する装置タイプ222を含むルーティング構成220を識別するために、1以上の比較処理を行う。次に、スティッキーなカナリアルータ130は、装置ID216および識別された「カナリア」ルーティング構成220に基づいて、要求210をカナリアクラスタ160にルーティングするか否かを決定する。
スティッキーなカナリアルータ130が、要求210をカナリアクラスタ160にルーティングしないことを決定した場合には、スティッキーなカナリアルータ130は、「ベースライン」のルーティング226およびクライアント装置のタイプに一致する装置タイプ222を含むルーティング構成220を識別するために、比較処理を行う。次に、スティッキーなカナリアルータ130は、装置ID216および識別された「ベースライン」ルーティング構成220に基づいて、要求210をベースラインクラスタ150にルーティングするか否かを決定する。図示されるように、装置タイプ222「装置A」と関連づけられた「カナリア」ルーティング構成220(1)に含まれるシード値236は、装置タイプ222「装置A」と関連づけられた「ベースライン」ルーティング構成220(2)に含まれるシード値236とは異なる。
スティッキーなカナリアルータ130が、要求210をカナリアルーティングクラスタ260またはベースラインクラスタ250のいずれにもルーティングしないことを決定した場合には、エッジサービスクラスタ120は、要求210を、エッジサービスクラスタ210において実装されているデフォルトのルーティングに従って(典型的にはプロダクションクラスタ140に)ルーティングする。このようにして、スティッキーなカナリアルータ130およびエッジサービスクラスタ210は協働して、全ての要求210をルーティングする。
要求210を特定のルーティング構成220に基づいてルーティングするか否かを決定することの一部として、スティッキーなカナリアルータ130は、装置ハッシュ242、時間ハッシュ246、およびルーティングハッシュ248を計算する。より具体的には、スティッキーなカナリアルータ130は、装置ID216に基づいて、一貫した装置ハッシュ242を計算する。動作においては、スティッキーなカナリアルータ130は、ルーティング構成220に関係なく、特定のクライアント装置から受信された全ての要求210に対して、同じ値の装置ハッシュ242を計算する。それとは対照的に、スティッキーなカナリアルータ130は、異なるクライアント装置から受信された2つの要求210に対して、2つの異なる値の装置ハッシュ242を計算する。従って、幾つかの別の実施形態では、スティッキーなカナリアルータ130は、カナリアルーティング構成220を識別する前に、装置ハッシュ242を計算し得る。スティッキーなカナリアルータ130は、装置ID216の各値に対して一貫した値を確定的に返す技術的に可能な任意の方法で、装置ハッシュ242を計算し得る。例えば、一部の実施形態では、スティッキーなカナリアルータ130は、装置ID216に対して、ハッシュ処理または巡回冗長検査(CRC)処理を行い得る。
スティッキーなカナリアルータ130は、TTL234およびシード値236に基づいて、TTL234に等しい持続時間にわたって一貫した時間ハッシュ246を計算するよう構成される。例えば、TTL234が90秒間であり、シード値236が「カナリアシード値」である場合には、スティッキーなカナリアルータ130は、90秒間にわたって、時間ハッシュ246を「第1のカナリア時区間」として計算し得る。次に、次の90秒間にわたって、スティッキーなカナリアルータ130は、時間ハッシュ246を「第2のカナリア時区間」として計算し得る(以下同様)。シード値236は各ルーティング構成220について別々に定義され得るので、ルーティング構成220のTTL234が等しいか否かに関係無く、時間ハッシュ246はルーティング構成220に基づいて変わり得る。
スティッキーなカナリアルータ130は、特定のシード値236について、技術的に可能な任意の方法で時間ハッシュ246を計算してよく、時間ハッシュ246が、TTL234に等しい持続時間の時区間にわたって一貫した値であることを確実にする。例えば、図示されるように、スティッキーなカナリアルータ130は以下の式を実装し得る。
時間ハッシュ246=floor(current_time_since_epoch()/TTL234)*シード値236 …(1)
サーバ時間が複数のサーバ、クラスタ、および領域にわたって一貫していることを確実にするために、TTL234は、ネットワーク・タイム・プロトコル(NTP)を用いて同期される。従って、式1はそれらのサーバおよびサーバのクラスタにわたって有効である。
スティッキーなカナリアルータ130は、装置ハッシュ242および時間ハッシュ246を利用して、ルーティングハッシュ248を計算する。一般的に、装置ID216およびルーティング構成220については、スティッキーなカナリアルータ130は、TTL234に等しい持続時間の時間間隔中に、ルーティングハッシュ248に対して単一の一意の値を一貫して計算するよう構成される。スティッキーなカナリアルータ130は、上述のルーティングハッシュ248の特性に従う技術的に可能な任意の方法で、ルーティングハッシュ248を計算し得る。例えば、図示されるように、スティッキーなカナリアルータ130は、装置ハッシュ242および時間ハッシュ246に対して、例えば、ハッシュリスト処理等のハッシュ処理を行い得る。別の実施形態では、スティッキーなカナリアルータ130は、装置ハッシュ242および時間ハッシュ246に対して、CRC処理を行い得る。更に別の実施形態では、スティッキーなカナリアルータ130は、装置ハッシュ242と時間ハッシュ246との乗算処理を行い得る。
要求210についてのルーティングハッシュ248を計算後、スティッキーなカナリアルータ130は、RPM232に基づいて、要求210をルーティングするか否かを決定する。具体的には、スティッキーなカナリアルータ130は、ルーティングハッシュ248および100万という値(value one million)に対してモジュロ演算を行って、係数を決定する。次に、スティッキーなカナリアルータ130は、係数をRPM232と比較する。係数がRPM232より小さい場合には、スティッキーなカナリアルータ130は、要求210を、ルーティング構成220に含まれるルーティング226に基づいてルーティングする。例えば、ルーティング226の値が「カナリア」である場合には、スティッキーなカナリアルータ130は、要求210をカナリアクラスタ160にルーティングする。
特に、所与のTTL324によって指定されている時間窓にわたるルーティングハッシュ240の一貫した値は、スティッキーなカナリアルータ130が各クライアント装置に対して「スティッキーな」ルーティングを提供することを確実にする。より具体的には、所与のTTL324にわたって、スティッキーなカナリアルータ130は、カナリアクライアント装置から受信された要求210をカナリアクラスタ160にルーティングし、ベースラインクライアント装置から受信された要求210をベースラインクラスタ150にルーティングする。エッジサービスクラスタ120は、残りのクライアント装置(プロダクションクライアント装置)から受信された要求210をプロダクションクラスタ140にルーティングする。更に、RPM232は、クライアント装置の総数に対して相対的なカナリアクライアント装置およびベースラインクライアント装置の割合を制御する。このようにして、スティッキーなカナリアルータ130は、TTLの持続時間にわたって、カナリアクライアント装置から受信された要求をベースラインソウトウェアから分離する。従って、ベースラインソウトウェアは、カナリアクライアント装置に対するサービスソウトウェア更新の効果を覆い隠さない。
図3は、本発明の様々な実施形態による、図2のスティッキーなカナリアルータ120によって生成されるルーティングの例である。図3の文脈は、複数のクライアント装置305から要求210が受信され、スティッキーなカナリアルータ130は、各要求210を、ルーティング構成220(図3には図示せず)に基づいて、カナリアクラスタ160、ベースラインクラスタ150、またはプロダクションクラスタ140のうちの1つにルーティングするというものである。
単に説明の目的で、要求210は、ルーティング構成220に含まれるTTL234以内にスティッキーなカナリアルータ120によって受信されるものとする。従って、スティッキーなカナリアルータ120は、特定のクライアント装置305から受信された全ての要求210を、カナリアクラスタ160、ベースラインクラスタ150、またはプロダクションクラスタ140に一貫してルーティングする。より具体的には、図示されるように、スティッキーなカナリアルータ120は、クライアント装置305(3)および305(5)から受信された全ての要求210をカナリアクラスタ160にルーティングする。それとは対照的に、スティッキーなカナリアルータ120は、クライアント装置305(4)および305(M)から受信された全ての要求210をベースラインクラスタ150にルーティングする。スティッキーなカナリアルータ120は、残りのクライアント装置305から受信された全ての要求210をエッジサービスクラスタ120に渡し、エッジサービスクラスタ120は、これらの要求210をプロダクションクラスタ140にルーティングする。
図4は、本発明の様々な実施形態による、サービスと関連づけられたソウトウェア更新のカナリア分析を行う際に要求をルーティングする方法のステップのフロー図である。この方法のステップは図1〜図3のシステムを参照して説明されるが、この方法のステップを任意の順序で実装するよう構成された任意のシステムが本発明の範囲内に含まれることが、当業者には理解されよう。
図示されるように、方法400はステップ402において開始し、ここで、スティッキーなカナリアルータ130は、ルーティング構成220を受信する。各装置タイプ222について、スティッキーなカナリアルータ130は、2つのルーティング構成220を受信する。カナリアクラスタ260と関連づけられたルーティング構成は、ルーティング226についての「カナリア」の値によって示される。それとは対照的に、ベースラインクラスタ250と関連づけられたルーティング構成220は、ルーティング226についての「ベースライン」の値によって示される。ステップ404において、スティッキーなカナリアルータ130は要求210を受信する。要求210は、要求210を発行したクライアント装置305の装置ID216を含む。ステップ406において、スティッキーなカナリアルータ130は、装置ID216に基づいて、装置ハッシュ242を計算する。
ステップ408において、スティッキーなカナリアルータ130は、「カナリア」のルーティング226およびクライアント装置305のタイプに一致する装置タイプ222を含むルーティング構成220を選択する。スティッキーなカナリアルータ130は、技術的に可能な任意の方法で、クライアント装置305のタイプを取得し得る。例えば、一部の実施形態では、クライアント装置のタイプは装置ID216に埋め込まれている。ステップ410において、スティッキーなカナリアルータ130は、現在の時間、選択されたルーティング構成220に含まれるTTL234、および選択されたルーティング構成に含まれるシード値236に基づいて、時間ハッシュ246を計算する。本明細書において先に述べたように、スティッキーなカナリアルータ130は、シード値236について、TTL234に等しい持続時間の時区間にわたって時間ハッシュ246が一貫した値であることを確実にする技術的に可能な任意の方法で、時間ハッシュ246を計算し得る。
ステップ412において、スティッキーなカナリアルータ130は、装置ハッシュ242および時間ハッシュ246に対してハッシュ処理を行い、ルーティングハッシュ248を計算する。特に、装置ID216および選択されたルーティング構成220について、スティッキーなカナリアルータ130は、TTL234に等しい持続時間の時間間隔中に、ルーティングハッシュ248に対して単一の一意の値を一貫して計算するよう構成される。ステップ414において、スティッキーなカナリアルータ130は、ルーティングハッシュ248および100万という値に対してモジュロ演算を行い、係数を決定する。次に、スティッキーなカナリアルータ130は、この係数を、選択されたルーティング構成220に含まれるRPM232と比較する。ステップ414において、スティッキーなカナリアルータ130が、係数がRPM232より小さいことを決定した場合には、方法400はステップ416に進む。
ステップ416において、スティッキーなカナリアルータ130は、要求を、選択されたルーティング構成220に従ってルーティングする。より具体的には、選択されたルーティング構成220に含まれるルーティング226の値が「カナリア」である場合には、スティッキーなカナリアルータ130は、要求をカナリアクラスタ160にルーティングする。それとは対照的に、選択されたルーティング構成220に含まれるルーティング226の値が「ベースライン」である場合には、スティッキーなカナリアルータ130は、要求をベースラインクラスタ150にルーティングする。次に、方法400はステップ404に戻り、ここで、スティッキーなカナリアルータ130は新たな要求210を受信する。
しかし、ステップ414において、スティッキーなカナリアルータ130が、係数がRPM232より小さくないことを決定した場合には、方法400は直接ステップ418に進む。ステップ418において、スティッキーなカナリアルータ130は、選択されたルーティング構成220が、クライアント装置305の装置タイプについてのベースラインルーティング構成220であるか否かを決定する。より正確には、スティッキーなカナリアルータ130は、ルーティング226の値が「ベースライン」であるか否かを決定する。スティッキーなカナリアルータ130が、ルーティング226の値が「ベースライン」ではないことを決定した場合には、方法400はステップ420に進む。
ステップ420において、スティッキーなカナリアルータ130は、「ベースライン」のルーティング226およびクライアント装置305のタイプに一致する装置タイプ222を含むルーティング構成220を選択する。次に、方法400はステップ410に戻り、スティッキーなカナリアルータ130は、選択されたベースラインルーティング構成220およびクライアント装置305の装置ID216に基づいて、要求210をベースラインクラスタ150にルーティングするか否かを決定する。
しかし、ステップ418において、スティッキーなカナリアルータ130が、ルーティング226の値が「ベースライン」であることを決定した場合には、方法400は直接ステップ422に進む。ステップ422において、エッジサービスクラスタ120は、エッジサービスクラスタ120において実装されているデフォルトのルーティングアルゴリズムに従って要求210をルーティングする。典型的には、エッジサービスクラスタ120は、要求210をプロダクションクラスタ140にルーティングする。次に、方法400はステップ404に戻り、そこで、スティッキーなカナリアルータ130は新たな要求210を受信する。
このようにして、スティッキーなカナリアルータ130は、カナリア分析が終了したことをスティッキーなカナリアルータ130が決定するまで、ステップ404〜422のサイクルを継続する。スティッキーなカナリアルータ130は、技術的に可能な任意の方法で、カナリア分析が終了したことを決定し得る。例えば、スティッキーなカナリアルータ130は、10分後にカナリア分析を終了させるよう構成され得る。
要約すると、本開示の技術は、サービスと関連づけられたソウトウェア更新によって生じた不具合を、クライアントに対する不具合の影響を最小化しつつ、効率的に検出するために用いられ得る。動作においては、各装置タイプについて、スティッキーなカナリアルータは、カナリア割合、ベースラインの割合、および所定の有効期間に等しい持続時間の時区間を設定する。特に、有効期間は、サービスとのクライアントのやりとりのほぼ完全なセッションを捕捉するよう構成される。特定の装置タイプの全てのクライアント装置について、特定の時区間内において、スティッキーなカナリアルータは、クライアント装置のうちのカナリアの割合(本明細書においてはカナリアクライアント装置として参照する)からの要求を、サービスと関連づけられたソウトウェア更新を実行するカナリアクラスタのサーバに一貫してルーティングする。それとは対照的に、特定の時区間内において、スティッキーなカナリアルータは、クライアント装置のうちのベースラインの割合(本明細書においてはベースラインクライアント装置として参照する)からの要求を、ソウトウェア更新を含まないソウトウェアと関連づけられたベースラインサービスを実行するベースラインクラスタのサーバに一貫してルーティングする。
特に、スティッキーなカナリアルータは、TTLの持続時間にわたって、カナリアクライアント装置から受信された要求をベースラインソウトウェアから分離するので、ベースラインソウトウェアは、カナリアクライアント装置に対するサービスソウトウェア更新の効果を覆い隠さない。従って、ソウトウェア更新が任意の数およびタイプのクライアント装置に悪影響を与え得ることを示す異常を検出するために、サーバおよび装置からのデータが分析され得る。
スティッキーなカナリアルータは、ほぼ完全なセッションにわたって、要求をサーバのカナリアクラスタにルーティングするよう構成され得るので、クライアント体験およびサーバの挙動の両方に対する既存のサービスの変更の効果が、従来の手法と比べてより総合的に分析され得る点が有利である。特に、スティッキーなカナリアルータは、TTLの持続時間にわたって、カナリアクライアント装置がベースラインソウトウェアにアクセスするのを防止するので、クライアント装置の動作が、測定可能に影響され得る。例えば、ソウトウェア更新によって生じた不具合がカナリアサーバを誤作動させ、要求に対して、カナリアクライアント装置が解釈できない応答を発行した場合には、カナリアクライアント装置は、TTLの持続時間にわたって、失敗した要求を再試行し得る。その結果、カナリアサーバによって受信された要求の容量は、ベースラインサーバによって受信された要求の容量を劇的に超え、そのことにより、サービスと関連づけられたソウトウェア更新が不具合を含んでいたことを示し得る。
更に、クライアント装置のタイプに基づいて、カナリアの割合および/または有効期間を選択することにより、スティッキーなカナリアルータは、異なる装置タイプの相対的な普及率および/または予期されるセッションの異なる長さに基づくカナリア分析の微調整を可能にする。例えば、第1の装置タイプのクライアント装置が比較的普及しており、第2の装置タイプのクライアント装置が比較的稀であるものとする。第2の装置タイプが十分なカナリアテストを受けることを確実にするために、第2の装置タイプと関連づけられたカナリアの割合は、第1の装置タイプと関連づけられたカナリアの割合より1000倍大きい値に設定され得る。
説明の目的で、様々な実施形態の説明を示したが、これらは網羅的であることを意図したものではなく、開示された実施形態に限定することは意図しない。当業者には、記載された実施形態の範囲および趣旨から逸脱することなく、多くの修正および変形が自明である。
本明細書に記載された主題の複数の態様を、以下の番号を付した項において述べる。
1. カナリア分析を行う際に要求をルーティングするための、コンピュータによって実装される方法において、第1の要求の少なくとも1つの特性、前記第1の要求と関連づけられた時間、およびルーティングのための時間窓に基づいて、第1のマッピングを計算する工程と、前記第1のマッピングが、前記第1の要求が複数のサーバを介して提供されるサービスに対する変更と関連づけられることを示しているか否かを決定する工程と、前記第1のマッピングが、前記第1の要求が前記変更と関連づけられることを示しているか否かに基づいて、前記第1の要求を、前記変更を実装する第1のサーバまたは前記変更を実装しない第2のサーバのいずれかにルーティングする工程とを含むことを特徴とする方法。
2. 前記第1の要求の前記少なくとも1つの特性が、装置識別子を含み、前記第1のマッピングを計算する前記工程が、前記装置識別子に対して第1のハッシュ処理を行うことにより装置ハッシュを生成する工程と、現在の時間を前記ルーティングのための前記時間窓で除算することにより、前記第1の要求と関連づけられた前記時間が時区間内にある時区間を決定する工程と、前記時区間に対して第2のハッシュ処理を行うことにより時間ハッシュを生成する工程と、前記装置ハッシュおよび前記時間ハッシュに対して第3のハッシュ処理を行うことにより前記第1のマッピングを生成する工程とを含む、項1記載のコンピュータによって実装される方法。
3. 前記第1の要求と関連づけられた前記時間が、前記ルーティングのための前記時間窓に等しい持続時間を有する第1の時区間内にあり、第2の要求の少なくとも1つの特性が前記第1の要求の前記少なくとも1つの特性に等しい第2の要求を受信する工程と、前記第2の要求と関連づけられた時間が前記第1の時区間内にあるか否かに基づいて、前記第1の要求を、前記変更を実装する第3のサーバまたは前記変更を実装しない第4のサーバのいずれかにルーティングする工程とを更に含む、項1または項2記載のコンピュータによって実装される方法。
4. 前記第1のマッピングを計算する前記工程が、前記第1の要求の第1の特性、前記第1の要求と関連づけられた前記時間、および前記ルーティングのための前記時間窓に対してハッシュ処理および巡回冗長検査処理のうちの少なくとも1つを行う工程を含む、項1〜3のいずれか一項に記載のコンピュータによって実装される方法。
5. 前記ハッシュ処理および前記巡回冗長検査処理のうちの前記少なくとも1つが、前記変更と関連づけられた一意の定数に基づく、項1〜4のいずれか一項に記載のコンピュータによって実装される方法。
6. 前記変更がソウトウェア更新を含む、項1〜5のいずれか一項に記載のコンピュータによって実装される方法。
7. 前記要求の前記少なくとも1つの特性が、装置識別子、クライアント識別子、ESN、またはセッション識別子のうちの1つを含む、項1〜6のいずれか一項に記載のコンピュータによって実装される方法。
8. プロセッサによって指示が実行された際に、該プロセッサに、第1の要求の第1の特性に基づいて、サービスに対する変更と関連づけられるマッピングの割合を決定する工程と、前記第1の要求の第2の特性、前記第1の要求と関連づけられた時間、およびルーティングのための時間窓に基づいて、第1のマッピングを計算する工程と、前記第1のマッピングおよび複数のマッピングの割合に基づく比較処理を行うことにより、前記第1のマッピングが、前記第1の要求が前記変更と関連づけられることを示しているか否かを決定する工程と、前記第1のマッピングが、前記第1の要求が前記変更と関連づけられることを示しているか否かに基づいて、前記第1の要求を、前記変更を実装する第1のサーバまたは前記変更を実装しない第2のサーバのいずれかにルーティングする工程とを行わせる指示を含むコンピュータ可読ストレージ媒体を含むことを特徴とするプログラム製品。
9. 前記第1のマッピングを計算する前記工程が、前記第2の特性、前記第1の要求と関連づけられた前記時間、および前記ルーティングのための前記時間窓に対してハッシュ処理および巡回冗長検査処理のうちの少なくとも1つを行う工程を含む、項8に記載のプログラム製品。
10. 前記ハッシュ処理および前記巡回冗長検査処理のうちの前記少なくとも1つが、前記変更と関連づけられた一意の定数に基づく、項8または項9に記載のプログラム製品。
11. 前記第2の特性が装置識別子を含み、前記第1のマッピングを計算する前記工程が、前記装置識別子に対して第1のハッシュ処理を行うことにより装置ハッシュを生成する工程と、現在の時間を前記ルーティングのための前記時間窓で除算することにより、前記第1の要求と関連づけられた前記時間が時区間内にある時区間を決定する工程と、前記時区間に対して第2のハッシュ処理を行うことにより時間ハッシュを生成する工程と、前記装置ハッシュおよび前記時間ハッシュに対して第3のハッシュ処理を行うことにより前記第1のマッピングを生成する工程とを含む、項8〜10のいずれか一項に記載のプログラム製品。
12. 前記第1の要求と関連づけられた前記時間が、前記ルーティングのための前記時間窓に等しい持続時間を有する第1の時区間内にあり、前記方法が、前記第1の要求の前記第1の特性に等しい第1の特性を有する第2の要求を受信する工程と、前記第2の要求と関連づけられた時間が前記第1の時区間内にあるか否かに基づいて、前記第1の要求を、前記変更を実装する第3のサーバまたは前記変更を実装しない第4のサーバのいずれかにルーティングする工程とを更に含む、項8〜11のいずれか一項に記載のプログラム製品。
13. 開始時間と終了時間との間の差分が前記ルーティングのための前記時間窓に等しく、前記第1のマッピングを計算する前記工程が、現在の時間が前記開始時間を超え且つ前記終了時間を超えない場合に、第1のハッシュ値に等しい前記第1のマッピングを設定する工程、または、前記現在の時間が前記開始時間を超えないもしくは前記終了時間を超える場合に、第2のハッシュ値に等しい前記第1のマッピングを設定する工程を含む、項8〜12のいずれか一項に記載のプログラム製品。
14. 前記要求の前記第2の特性が、装置識別子、クライアント識別子、ESN、またはセッション識別子のうちの1つを含む、項8〜13のいずれか一項に記載のプログラム製品。
15. 前記第1の要求の前記第2の特性が、前記第1の要求が第1のクライアント装置と関連づけられていることを指定しており、前記第1のクライアント装置が第1の装置タイプと関連づけられており、前記第1のマッピングが、前記要求が前記変更と関連づけられることを示しているか否かを決定する前記工程が、前記第1のマッピングと、前記変更と関連づけられる前記第1の装置タイプのクライアント装置の割合を指定するレートとに基づいて、比較処理を行う工程を含む、項8〜14のいずれか一項に記載のプログラム製品。
16. 前記ルーティングのための前記時間窓を、前記第1の特性に基づいて設定する工程を更に含む、項8〜15のいずれか一項に記載のプログラム製品。
17. カナリア分析を行う際に要求をルーティングするよう構成されたシステムにおいて、サービスに対する変更を実装する第1のサーバと、前記サービスを実装するが前記変更を実装しない複数のサーバと、スティッキーなカナリアルータであって、要求の少なくとも1つの特性に基づいて第1のマッピングを計算し、前記要求と関連づけられた時間、ルーティングのための時間窓、および前記変更と関連づけられた一意の定数に基づいて第2のマッピングを計算し、前記第1のマッピングおよび前記第2のマッピングに基づいて第3のマッピングを計算し、前記第3のマッピングが、前記要求が前記変更と関連づけられることを示しているか否かを決定し、前記第3のマッピングが、前記要求が前記変更と関連づけられることを示しているか否かに基づいて、前記要求を前記第1のサーバまたは前記複数のサーバのいずれかにルーティングするよう構成されたスティッキーなカナリアルータとを含むことを特徴とするシステム。
18. 前記スティッキーなカナリアルータが、現在の時間を前記ルーティングのための前記時間窓で除算することにより、前記要求と関連づけられた前記時間が時区間内にある時区間を決定し、該時区間と前記一意の定数とを乗算することにより前記第2のマッピングを生成することによって、前記第2のマッピングを計算するよう構成された、項17記載のシステム。
19. 前記変更が、ソウトウェア更新およびデータ更新のうちの少なくとも1つを含む、項17または項18記載のシステム。
20. 前記要求の前記少なくとも1つの特性が、装置識別子、クライアント識別子、ESN、またはセッション識別子のうちの1つを含む、項17〜19のいずれか一項に記載のシステム。
本実施形態の態様は、システム、方法、またはコンピュータプログラム製品として具現化され得る。従って、本開示の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウエア、常駐ソフトウェア、マイクロコード等を含む)、または、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形態をとり得るものであり、それらの全てを、本明細書においては一般的に「回路」、「モジュール」、または「システム」と称する。更に、本開示の態様は、具現化されたコンピュータ可読プログラムコードを有する1以上のコンピュータ可読媒体において具現化されたコンピュータプログラム製品の形態をとり得る。
1以上のコンピュータ可読媒体の任意の組合せが用いられ得る。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であり得る。コンピュータ可読記憶媒体は、例えば、電子、磁気、光、電磁、赤外線、もしくは半導体のシステム、装置、もしくはデバイス、またはそれらの任意の適切な組合せであり得るが、それらに限定されない。コンピュータ可読記憶媒体のより具体的な例(網羅的ではないリスト)としては、1以上のワイヤを有する電気的接続、ポータブルコンピュータのディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み出し専用メモリ(CD−ROM)、光ストレージ装置、磁気ストレージ装置、またはそれらの任意の適切な組合せが挙げられる。本明細書の文脈において、コンピュータ可読記憶媒体は、指示を実行するシステム、装置、またはデバイスによって用いられる、またはそれらに関連して用いられるためのプログラムを収容または格納可能な、任意の有体の媒体であり得る。
上記において、本開示の態様を、本開示の実施形態による方法、装置(システム)およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照して説明した。フローチャートおよび/またはブロック図の各ブロック、並びに、フローチャートおよび/またはブロック図のブロックの組合せは、コンピュータプログラムの指示によって実装され得ることが理解されよう。これらのコンピュータプログラム指示は、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに供給されてマシンを生成し得るものであり、そのコンピュータまたは他のプログラマブルデータ処理装置のプロセッサによって実行される指示が、フローチャートおよび/またはブロック図の1または複数のブロックにおいて指定されている機能/動作の実装を可能にするようになっている。そのようなプロセッサは、汎用プロセッサ、専用プロセッサ、特定用途向けプロセッサ、またはフィールドプログラマブルプロッセサもしくはゲートアレイであり得るが、それらに限定されない。
図面中のフローチャートおよびブロック図は、本開示の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能、および処理を示すものである。この点に関して、フローチャートまたはブロック図の各ブロックは、指定されている論理的機能を実装するための1以上の実行可能な指示を含むモジュール、セグメント、またはコードの一部を表し得る。なお、幾つかの別の実装例においては、ブロック内に記されている機能が、図面に記されている順序から外れて生じ得る。例えば、続けて示されている2つのブロックが、含まれる機能に応じて、実際には略並列に実行される場合もあり、または、それらのブロックが逆の順序で実行される場合もある。また、ブロック図および/またはフローチャートの各ブロック、並びに、ブロック図および/またはフローチャートのブロックの組合せは、指定された機能もしくは動作を行う専用ハードウェアに基づくシステムによって、または、専用ハードウェアとコンピュータ指示との組合せによって実装され得る。
上記は本開示の実施形態に向けられているが、本開示の基本的な範囲から逸脱することなく、本開示の他のおよび更なる実施形態も考案され得るものであり、本開示の範囲は添付の特許請求によって決定される。
100 システム
110 コンピュートインスタンス
118 サービス提供者インフラ
120 エッジサービスクラスタ
130 スティッキーなカナリアルータ
140 プロダクションクラスタ
150 ベースラインクラスタ
160 カナリアクラスタ
210 要求
220 ルーティング構成
232 100万分の1のレート(RPM)
234 有効期間(TTL、時間窓)
242 装置ハッシュ
246 時間ハッシュ
248 ルーティングハッシュ
305 クライアント装置

Claims (20)

  1. カナリア分析を行う際に要求をルーティングするための、コンピュータによって実装される方法において、
    第1の要求の少なくとも1つの特性、前記第1の要求と関連づけられた時間、およびルーティングのための時間窓に基づいて、第1のマッピングを計算する工程と、
    前記第1のマッピングが、前記第1の要求が複数のサーバを介して提供されるサービスに対する変更と関連づけられることを示しているか否かを決定する工程と、
    前記第1のマッピングが、前記第1の要求が前記変更と関連づけられることを示しているか否かに基づいて、前記第1の要求を、前記変更を実装する第1のサーバまたは前記変更を実装しない第2のサーバのいずれかにルーティングする工程とを含むことを特徴とする方法。
  2. 前記第1の要求の前記少なくとも1つの特性が、装置識別子を含み、
    前記第1のマッピングを計算する前記工程が、
    前記装置識別子に対して第1のハッシュ処理を行うことにより装置ハッシュを生成する工程と、
    現在の時間を前記ルーティングのための前記時間窓で除算することにより、前記第1の要求と関連づけられた前記時間が時区間内にある時区間を決定する工程と、
    前記時区間に対して第2のハッシュ処理を行うことにより時間ハッシュを生成する工程と、
    前記装置ハッシュおよび前記時間ハッシュに対して第3のハッシュ処理を行うことにより前記第1のマッピングを生成する工程と
    を含む、請求項1記載のコンピュータによって実装される方法。
  3. 前記第1の要求と関連づけられた前記時間が、前記ルーティングのための前記時間窓に等しい持続時間を有する第1の時区間内にあり、
    第2の要求の少なくとも1つの特性が前記第1の要求の前記少なくとも1つの特性に等しい第2の要求を受信する工程と、
    前記第2の要求と関連づけられた時間が前記第1の時区間内にあるか否かに基づいて、前記第1の要求を、前記変更を実装する第3のサーバまたは前記変更を実装しない第4のサーバのいずれかにルーティングする工程とを更に含む、
    請求項1記載のコンピュータによって実装される方法。
  4. 前記第1のマッピングを計算する前記工程が、前記第1の要求の第1の特性、前記第1の要求と関連づけられた前記時間、および前記ルーティングのための前記時間窓に対してハッシュ処理および巡回冗長検査処理のうちの少なくとも1つを行う工程を含む、請求項1記載のコンピュータによって実装される方法。
  5. 前記ハッシュ処理および前記巡回冗長検査処理のうちの前記少なくとも1つが、前記変更と関連づけられた一意の定数に基づく、請求項4記載のコンピュータによって実装される方法。
  6. 前記変更がソウトウェア更新を含む、請求項1記載のコンピュータによって実装される方法。
  7. 前記要求の前記少なくとも1つの特性が、装置識別子、クライアント識別子、ESN、またはセッション識別子のうちの1つを含む、請求項1記載のコンピュータによって実装される方法。
  8. プロセッサによって指示が実行された際に、該プロセッサに、
    第1の要求の第1の特性に基づいて、サービスに対する変更と関連づけられるマッピングの割合を決定する工程と、
    前記第1の要求の第2の特性、前記第1の要求と関連づけられた時間、およびルーティングのための時間窓に基づいて、第1のマッピングを計算する工程と、
    前記第1のマッピングおよび複数のマッピングの割合に基づく比較処理を行うことにより、前記第1のマッピングが、前記第1の要求が前記変更と関連づけられることを示しているか否かを決定する工程と、
    前記第1のマッピングが、前記第1の要求が前記変更と関連づけられることを示しているか否かに基づいて、前記第1の要求を、前記変更を実装する第1のサーバまたは前記変更を実装しない第2のサーバのいずれかにルーティングする工程と
    を行わせる指示を含むことを特徴とするコンピュータ可読ストレージ媒体。
  9. 前記第1のマッピングを計算する前記工程が、前記第2の特性、前記第1の要求と関連づけられた前記時間、および前記ルーティングのための前記時間窓に対してハッシュ処理および巡回冗長検査処理のうちの少なくとも1つを行う工程を含む、請求項8記載のコンピュータ可読ストレージ媒体。
  10. 前記ハッシュ処理および前記巡回冗長検査処理のうちの前記少なくとも1つが、前記変更と関連づけられた一意の定数に基づく、請求項9記載のコンピュータ可読ストレージ媒体。
  11. 前記第2の特性が装置識別子を含み、
    前記第1のマッピングを計算する前記工程が、
    前記装置識別子に対して第1のハッシュ処理を行うことにより装置ハッシュを生成する工程と、
    現在の時間を前記ルーティングのための前記時間窓で除算することにより、前記第1の要求と関連づけられた前記時間が時区間内にある時区間を決定する工程と、
    前記時区間に対して第2のハッシュ処理を行うことにより時間ハッシュを生成する工程と、
    前記装置ハッシュおよび前記時間ハッシュに対して第3のハッシュ処理を行うことにより前記第1のマッピングを生成する工程と
    を含む、請求項8記載のコンピュータ可読ストレージ媒体。
  12. 前記第1の要求と関連づけられた前記時間が、前記ルーティングのための前記時間窓に等しい持続時間を有する第1の時区間内にあり、
    前記方法が、
    前記第1の要求の前記第1の特性に等しい第1の特性を有する第2の要求を受信する工程と、
    前記第2の要求と関連づけられた時間が前記第1の時区間内にあるか否かに基づいて、前記第1の要求を、前記変更を実装する第3のサーバまたは前記変更を実装しない第4のサーバのいずれかにルーティングする工程と
    を更に含む、請求項8記載のコンピュータ可読ストレージ媒体。
  13. 開始時間と終了時間との間の差分が前記ルーティングのための前記時間窓に等しく、
    前記第1のマッピングを計算する前記工程が、
    現在の時間が前記開始時間を超え且つ前記終了時間を超えない場合に、第1のハッシュ値に等しい前記第1のマッピングを設定する工程、または、
    前記現在の時間が前記開始時間を超えないまたは前記終了時間を超える場合に、第2のハッシュ値に等しい前記第1のマッピングを設定する工程
    を含む、請求項8記載のコンピュータ可読ストレージ媒体。
  14. 前記要求の前記第2の特性が、装置識別子、クライアント識別子、ESN、またはセッション識別子のうちの1つを含む、請求項8記載のコンピュータ可読ストレージ媒体。
  15. 前記第1の要求の前記第2の特性が、前記第1の要求が第1のクライアント装置と関連づけられていることを指定しており、前記第1のクライアント装置が第1の装置タイプと関連づけられており、前記第1のマッピングが、前記要求が前記変更と関連づけられることを示しているか否かを決定する前記工程が、前記第1のマッピングと、前記変更と関連づけられる前記第1の装置タイプのクライアント装置の割合を指定するレートとに基づいて、比較処理を行う工程を含む、請求項8記載のコンピュータ可読ストレージ媒体。
  16. 前記ルーティングのための前記時間窓を、前記第1の特性に基づいて設定する工程を更に含む、請求項8記載のコンピュータ可読ストレージ媒体。
  17. カナリア分析を行う際に要求をルーティングするよう構成されたシステムにおいて、
    サービスに対する変更を実装する第1のサーバと、
    前記サービスを実装するが前記変更を実装しない複数のサーバと、
    スティッキーなカナリアルータであって、
    要求の少なくとも1つの特性に基づいて第1のマッピングを計算し、
    前記要求と関連づけられた時間、ルーティングのための時間窓、および前記変更と関連づけられた一意の定数に基づいて第2のマッピングを計算し、
    前記第1のマッピングおよび前記第2のマッピングに基づいて第3のマッピングを計算し、
    前記第3のマッピングが、前記要求が前記変更と関連づけられることを示しているか否かを決定し、
    前記第3のマッピングが、前記要求が前記変更と関連づけられることを示しているか否かに基づいて、前記要求を前記第1のサーバまたは前記複数のサーバのいずれかにルーティングする
    よう構成されたスティッキーなカナリアルータと
    を含むことを特徴とするシステム。
  18. 前記スティッキーなカナリアルータが、
    現在の時間を前記ルーティングのための前記時間窓で除算することにより、前記要求と関連づけられた前記時間が時区間内にある時区間を決定し、
    前記時区間と前記一意の定数とを乗算することにより前記第2のマッピングを生成する
    ことによって前記第2のマッピングを計算するよう構成された、請求項17記載のシステム。
  19. 前記変更が、ソウトウェア更新およびデータ更新のうちの少なくとも1つを含む、請求項17記載のシステム。
  20. 前記要求の前記少なくとも1つの特性が、装置識別子、クライアント識別子、ESN、またはセッション識別子のうちの1つを含む、請求項17記載のシステム。
JP2018521061A 2015-10-23 2016-10-18 カナリア分析を用いて、サーバ側挙動のクライアント側効果を決定する技術 Active JP6613373B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/922,101 2015-10-23
US14/922,101 US11616719B2 (en) 2015-10-23 2015-10-23 Techniques for determining client-side effects of server-side behavior using canary analysis
PCT/US2016/057521 WO2017070108A1 (en) 2015-10-23 2016-10-18 Techniques for determining client-side effects of server-side behavior using canary analysis

Publications (2)

Publication Number Publication Date
JP2018535486A true JP2018535486A (ja) 2018-11-29
JP6613373B2 JP6613373B2 (ja) 2019-11-27

Family

ID=57227114

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018521061A Active JP6613373B2 (ja) 2015-10-23 2016-10-18 カナリア分析を用いて、サーバ側挙動のクライアント側効果を決定する技術

Country Status (11)

Country Link
US (1) US11616719B2 (ja)
EP (1) EP3365791B1 (ja)
JP (1) JP6613373B2 (ja)
KR (1) KR102099028B1 (ja)
CN (1) CN108431782B (ja)
AU (2) AU2016341190B2 (ja)
CA (1) CA3002807C (ja)
DK (1) DK3365791T3 (ja)
MX (1) MX2018005000A (ja)
SG (1) SG11201803337XA (ja)
WO (1) WO2017070108A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021033892A (ja) * 2019-08-29 2021-03-01 株式会社デンソーテン 管理装置、サーバシステム、および、管理方法

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017033079A (ja) * 2015-07-29 2017-02-09 富士通株式会社 ソフトウェア導入支援プログラム、ソフトウェア導入支援装置およびソフトウェア導入支援方法
CN109726099B (zh) * 2018-04-12 2024-03-19 惠商云服(北京)科技有限公司 一种应用灰度发布方法、装置及设备
US10735262B1 (en) * 2018-04-26 2020-08-04 Intuit Inc. System and method for self-orchestrated canary release deployment within an API gateway architecture
US20200057714A1 (en) * 2018-08-17 2020-02-20 Google Llc Testing data changes in production systems
US11237815B2 (en) * 2018-08-23 2022-02-01 Citrix Systems, Inc. Service pool architecture for multitenant services to support canary release
CN110333884A (zh) * 2019-06-05 2019-10-15 钛马信息网络技术有限公司 软件升级方法、分布式系统及装置
CN112199104B (zh) * 2020-10-10 2024-03-01 卫宁健康科技集团股份有限公司 一种软件升级方法、装置、电子设备和存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3829125B2 (ja) * 2003-05-16 2006-10-04 株式会社コナミデジタルエンタテインメント ネットワークシステム、ネットワーク制御方法及びプログラム
JP2007287098A (ja) 2006-04-20 2007-11-01 Canon Inc ネットワークメンテンナスシステム
US8332952B2 (en) * 2009-05-22 2012-12-11 Microsoft Corporation Time window based canary solutions for browser security
JP2013524386A (ja) 2010-04-13 2013-06-17 イーティー インターナショナル,インコーポレイティド ランスペース方法、システムおよび装置
WO2012077300A1 (ja) 2010-12-08 2012-06-14 パナソニック株式会社 情報処理装置、及び、情報処理方法
US8677189B2 (en) 2011-11-16 2014-03-18 GM Global Technology Operations LLC Recovering from stack corruption faults in embedded software systems
US9367360B2 (en) 2012-01-30 2016-06-14 Microsoft Technology Licensing, Llc Deploying a hardware inventory as a cloud-computing stamp
US8990778B1 (en) 2012-09-14 2015-03-24 Amazon Technologies, Inc. Shadow test replay service
US9225621B2 (en) * 2013-06-25 2015-12-29 Netflix, Inc. Progressive deployment and termination of canary instances for software analysis
CN103853662B (zh) 2014-02-21 2016-08-17 北京神舟航天软件技术有限公司 一种航天软件系统溢出检测和破坏限制机制
US9979644B2 (en) * 2014-07-13 2018-05-22 Cisco Technology, Inc. Linking to content using information centric networking

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021033892A (ja) * 2019-08-29 2021-03-01 株式会社デンソーテン 管理装置、サーバシステム、および、管理方法
JP7300344B2 (ja) 2019-08-29 2023-06-29 株式会社デンソーテン 管理装置、サーバシステム、および、管理方法

Also Published As

Publication number Publication date
BR112018008094A2 (pt) 2019-01-08
CA3002807A1 (en) 2017-04-27
JP6613373B2 (ja) 2019-11-27
CN108431782B (zh) 2021-12-07
AU2016341190B2 (en) 2019-07-11
EP3365791B1 (en) 2021-04-07
AU2019246866A1 (en) 2019-10-31
DK3365791T3 (da) 2021-06-21
US20170118110A1 (en) 2017-04-27
WO2017070108A1 (en) 2017-04-27
MX2018005000A (es) 2018-09-21
EP3365791A1 (en) 2018-08-29
KR102099028B1 (ko) 2020-04-08
AU2016341190A1 (en) 2018-05-10
KR20180074723A (ko) 2018-07-03
SG11201803337XA (en) 2018-05-30
CA3002807C (en) 2023-02-14
CN108431782A (zh) 2018-08-21
US11616719B2 (en) 2023-03-28

Similar Documents

Publication Publication Date Title
JP6613373B2 (ja) カナリア分析を用いて、サーバ側挙動のクライアント側効果を決定する技術
US11159450B2 (en) Nonintrusive dynamically-scalable network load generation
US10866851B2 (en) Determining the failure resiliency of a service in a distributed computing system
US9866650B2 (en) Stream monitoring across a distributed platform
US8935581B2 (en) Upstream fault detection
KR101478698B1 (ko) 레이턴시를 유도함으로써 분산 컴퓨팅 서비스의 복원성을 평가하기 위한 방법 및 시스템
JP2013537344A (ja) ネットワーク化アプリケーションの弾力性検証
CN113242443B (zh) 数据流传输的异常检测方法及其装置
AU2018202020A1 (en) Enabling device under test conferencing via a collaboration platform
CN112153410A (zh) 一种流媒体服务高并发测试方法和系统
AU2014357345B2 (en) Method for measuring end-to-end internet application performance
CN110535685B (zh) 一种故障确定方法、装置及计算机可读存储介质
BR112018008094B1 (pt) Método implementado em computador e sistema configurado para encaminhar solicitações quando executando uma análise canária e um ou mais meios de armazenamento legíveis por computador não-transitórios
JP2024040102A (ja) 異常検出のためのシステム、方法、及びコンピュータ可読媒体

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180622

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180622

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190529

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190829

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191002

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191101

R150 Certificate of patent or registration of utility model

Ref document number: 6613373

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250