Amplification At Tails

Trustworthy Online Controlled Experiments という本を読んでいたら(いい本です。読み終わったら紹介予定)、ページロードのレイテンシを 100ms 遅くしたら売上が 1% 下がった 2006 年の Amazon の事例が引用されていた。引用先のブログ記事では、レイテンシが 500ms 遅くなる変更をしたら売上が 20% 下がった Marrisa (昔の Google の偉い人)の講演も引用されている。なお先の書籍では Bing の同様の事例も載っている。

Amazon の実験では人工的に遅延を挿入したようなので一概には言えないが、しばらくレイテンシの仕事をしていたら 100ms なり 500ms なり遅くなったらそりゃダメに決まってんだろと思う。

ここでいう 100ms などの数字は、おそらく 50 percentile (median) である。こうした遅延は、tail にいくとめちゃ増幅される傾向がある。DynamoDB の paper は p99 を 2x くらいに抑えたと自慢しているが、これはすごいがんばった事例の話で、しかもデータベースのようなデータセンタの中にある単一のコンポーネントについて議論している。E2E だと古くて遅い電話機もあるし、データがインターネットをまたぐし、バックエンドが沢山あると一番遅いやつが足を引っ張ったりするし、p99 が 10x くらいになるのは珍しくない。 p95 も 2x-3x とかである。こうなると p50 で 100ms だった遅延は p95 で 200ms, p99 で 1,000ms まで増幅される。ユーザは、そんなに長くは待ってくれない。200ms, 1,000ms というのは差分で、絶対値は(たとえば)2,000ms, 10,000ms とかだからね。

15 年前に件のストーリーを聞いた自分はこの事実をわかってなかった。速さが重要なんだというテック企業からの啓示をありがたく拝聴してただ真に受けていた。今は、それが当たり前になった。いちおう成長してんな自分。単に世の中が進歩しただけな気もするけど。