テール・レイテンシーが重要な理由

高度にスケーリングされた分散アプリケーションでは、テール・レイテンシーを監視するパフォーマンス・ソリューションを実装することが重要です。

あらゆる待ち時間は、劣悪なパフォーマンスを引き起こす原因としてよく知られています。例えば、お気に入りのGPSアプリが道順をロードするのにかかった時間や、ブラウザやCDNのキャッシュがウェブページデータを提供するのにかかった時間などがそれです。トラフィック、エラー率、飽和度と並んで、レイテンシはオブサーバビリティの4つのゴールデンシグナルの1つです。アプリケーションの多くは、イベントドリブンを採用し、動的なクラウドベースのマルチテナント環境でリクエストを処理するため、遅延の潜在的な原因はこれまで以上に多くなっています。

高度にスケーリングされた分散アプリケーションでは、ハイパーセンタイルレイテンシ(テールレイテンシとも呼ばれる)を監視するパフォーマンスソリューションを実装することが重要です。発生頻度は比較的まれですが、テール・レイテンシは、特に毎秒数十万または数百万のリクエストを処理するアプリケーションにおいて、パフォーマンスに重大な影響を及ぼす可能性があります。アプリケーションのテール・レイテンシーを明確に把握し、ユーザー・エクスペリエンスにどのような影響を与えているかを把握することは、顧客を満足させ、ビジネスを促進するソフトウェアを提供するための重要な要素です。

テールレイテンシーとは?

テールレイテンシとは、ハイパーセンタイルレイテンシともいわれ、サービスやアプリケーショ ンが処理する全リクエストの98.xxx-99.xxxパーセントより長い応答時間を持つリクエストをさします。処理は正常に行われるため、アプリケーション処理上、異常とは認識されませんが、待ち時間という意味では異常値を示します。
これらのテールレイテンシは、ネットワーク、ページフォルト、ガベージコレクション、負荷の急激な増加、リソースの確保、依存関係の問題など、リクエストの実行における様々な側面によって引き起こされる可能性があり、極端な遅延を引き起こします。

決済処理サービスに取り組んでおり、リクエストの90%について平均待ち時間を10msに短縮した。さらに2%のリクエストの平均待ち時間は1秒です。これはすべて期待されるパフォーマンスの範囲内です。しかし、リクエストの0.01%は平均10秒の待ち時間が発生しています。これらの大きく遅延したリクエストがテールレイテンシーです。

何故テールレイテンシが問題となるのか?

アプリケーションのレイテンシを最適化しようとするとき、誘惑的で、完全に間違っているわけではないが、最も頻度が高く、一貫性のある問題に対するエンジニアリング・ソリューションに焦点を当てるという対応をしがちです。しかし、このアプローチだけでは、準備に大きな盲点やギャップが残ります。コールチェーンの奥深くで遅延が発生しているサービスは、より多くのサービスとリソースが保留中のリクエストに縛られるため、雪だるま式にパフォーマンスが低下する可能性があります。つまりテールレイテンシが発生中は他の正常な処理にも待ち時間を発生させる可能性があるため、通常98.xxx-99.xxxパーセンタイルのパフォーマンスチューニングだけでは問題を解決できないケースがあります。

上記の決済代行サービスの例を見てみます。時折起こるアラートを除けば、ユーザーもクライアントも満足しているように見えます。その一方で、リクエストの0.01%は平均10秒のレイテンシーが存在しています。たまたま、チームは95パーセンタイルまでのレイテンシーしかモニターしておらず、サービスのテールレイテンシーの解決や理解を深めるために時間やリソースを割こうとはしていませんでした。

ここで、マーケティングチームがキャンペーンを実施し、それが流行し、トラフィックが劇的に増加し始めたとします。トラフィックが増加するにつれて、実際のユーザーデータで発生し、低負荷で隠蔽されるこれらの長いトランザクションは、依存するアップストリームサービスへの利用可能なリクエスト制限の合計を使い果たし始めました。待ち時間の間セッションが存続するためです。マーケティング・プッシュ・トランザクションが開始されてから15分後に障害が発生し、すべてのトランザクションに連鎖的な影響が及んで、可用性が大幅に低下しました。オンコールのエンジニアが対応し、過剰な同時リクエストに対応するために依存システムをスケールアップできた時には、マーケティングキャンペーンで生み出されたバイラル効果は過ぎ去り、手遅れになっていました。最も重要なとき、テールレイテンシはシステムのアキレス腱となりました。

テールレイテンシーは、ユーザーエクスペリエンスや顧客の信頼性に悪影響を及ぼす可能性があるため、重要です。テールレイテンシーに積極的に対処することは、サイトの信頼性にとって重要であり、サイトの信頼性は収益を上げる(維持する)ために重要です。

ユーザー体験

結局のところ、世界中のすべてのエンジニアリング・パワーは、魅力的でパフォーマンスの高いユーザー・エクスペリエンスに振り向けられなければ、何の意味もなしません。待ち時間がウェブユーザーにとっていかに重要かを示す研究があり、特にユーザーが待ち時間の少ない別のサービスに素早く切り替えることができる場合、待ち時間の少なさとエンゲージメント(またはその逆)の間に強い相関関係があることを示しています。Googleは、開発者がアプリのパフォーマンスに関するユーザーの期待に対応できるよう、RAILモデルを開発しました。例えば、ユーザーは動きに対して特に敏感であり、何らかのアニメーションや動きのある要素の許容可能な待ち時間はわずか10ミリ秒であることが分かっています。

テールレイテンシの影響を最もうけるのは誰でしょうか?一般的には、サービスを最も頻繁に利用するユーザー、あるいは最も要求の厳しいユーザーです。彼らの利用が平均値から遠ざかるにつれて、彼らはシステムの遅延に遭遇する可能性が高くなり、アプリケーションの最も重要なユーザーの継続的なエンゲージメントを直接脅かすことになります。

顧客からの信頼

クライアントは、自社のサービス内またはサービスと共に貴社のソフトウェアをデプロイする、異なるタイプのユーザーです。彼らのユーザーのための高品質なパフォーマンスを確保するために、クライアントは、多くの場合、特定のパフォーマンス保証が配置されたビジネス契約を締結します。これらは通常、サービス・レベル・アグリーメント(SLA)の形をとり、レイテンシーのようなサービス・レベル指標(SLI)のパフォーマンスが契約上合意されます。

システムのテールレイテンシーを理解し、その解決策を提供することで、システムの堅牢性とパフォーマンスが向上します。これに向けて、テールレイテンシに関してより厳しい要求を持つサービスレベル目標(SLO)を設定し、コントロール外のパフォーマンス影響から絶縁するのに役立てましょう。秒以下のレイテンシーがリクエストの99%で保証されている場合、99.9%または99.99%のリクエストで秒以下のレイテンシーというSLOを維持することで、クライアントの期待に確実に応えることができます。

まとめ

高いパーセンタイルレイテンシは、スケールで回復力を必要とするシステムにとって重要なパフォーマンス目標す。システムで最も影響力のあるユーザーは、最も多くのリクエストを開始する傾向があるため、このような苦痛を伴うテール・レイテンシを経験する可能性が高くなります。システムのテールレイテンシを分析し、最適化することで、システムで最も価値のあるユーザーのユーザーエクスペリエンスを守ることができます。この作業により、チームは顧客に対してより正確なパフォーマンス保証を設定し、高ストレス・インシデント時にパフォーマンスの堅牢性を追加することができます。