遅れた答えが間違った答えとみなされるトレーディングやアドテクのシステムでは、ふさわしい外部の会社は、自社のデッドラインと同じ範囲で仕事をしていて、速度の数字をどう計測したかを示せる。本命の会社には、何かを作る前に、稼働中のシステムを計測してもらうべきだ。
どの発注者にも当てはまる低レイテンシのソフトウェア開発会社のリストはない。この言葉が指すデッドラインには、100万倍もの開きがありうるからだ。トレーディング用のハードウェアでは、数十から数百ナノ秒を意味することがある。アプリや Web ページなら、約10分の1秒以内の応答で、使っている人にはもう瞬時に感じられる。だから最初の問いは、自社のデッドラインがどこに位置するかである。
短い答え:自社のデッドラインと、それを計測する二つの地点を書き出し、各社に、自ら作ったシステムのうちどれがすでにその範囲で本番稼働しているかを尋ねる。誰かが何かを作る前に、本命の会社に費用を払って稼働中のシステムを計測してもらい、どう決めるにせよ、そのレポートは手元に残す。
あわせて読みたい
あなたのシステムにとって、低レイテンシとは、名指しできる二つの地点のあいだで計測するデッドラインのことだ。デッドラインは大きく四つの範囲に分かれる:
一つのプロダクトの中に、範囲の異なる部分が同居することもある。トレーダーは画面で価格を読むが、そのトレーダーが送る注文は、取引所へ向かう途中で、はるかに厳しいデッドラインを満たさなければならないことがある。それぞれのデッドラインを、それを計測する二つの地点とともに書き出す。どの範囲に入るかで、どの種類の会社に連絡すべきかがわかる。
本稿は会社のランキングをしない。ふさわしい会社の種類は、自社のデッドラインがどの範囲にあるかと、どんな仕事が必要かによって決まる:
多くの会社は複数の種類にまたがるので、自社に割り当てられるエンジニアがどの種類の仕事をしてきたのかを尋ねる。
上でリンクした専任チームについての記事は、どの性能の数字にも添えられているべきものを挙げ、提案依頼書(RFP)にそのまま貼り付けられるチェックリストを示している。以下の問いは、その会社自身の数字がどう作られたのかを明らかにするためのものだ。
時計がどこで動き出し、どこで止まるのかを尋ねる。米国のオプション取引所の約定と気配を統合して配信する OPRA は、入ってきたメッセージが「OPRA 環境のアプリケーション入口に到着した」時点で時計を動かし、出ていくメッセージが「OPRA 環境のアプリケーション出口に到着した」時点で止める。上で引用した EU の定義も、両方の地点について同じくらい厳密だ。始点と終点が明示されていない数字は、自社の数字と比べられない。
典型的な応答だけでなく、最も遅い応答も見る。OPRA が公表している指標では、レイテンシの中央値、つまり真ん中の値は、2024年1月に19.5マイクロ秒、2月に20.5マイクロ秒だった。同じ2か月で、99パーセンタイル、つまり最も遅い1%のメッセージだけが超えた時間は、543.5マイクロ秒から57.5マイクロ秒に下がった。中央値だけのレポートなら、ほとんど変化がないように見えていただろう。
平均もまた、遅い応答を覆い隠す。2016年に O'Reilly から出版された Google の Site Reliability Engineering 本は、毎秒1,000リクエストで平均レイテンシが100ミリ秒の Web サービスを例に挙げ、そこでは「1%のリクエストが簡単に5秒かかりうる」と述べている。経路ごとの99パーセンタイルを求め、計測できるだけのリクエストをシステムが処理しているなら、1,000件に1件の応答だけが超える99.9パーセンタイルも求める。
それぞれの数字の裏にある負荷を確かめる。STAC の2020年の概要資料によれば、STAC-T0 はテスト用のトラフィックを三つのレートで送る。最も低いレートは「システムがほとんどアイドル状態のときにどう振る舞うかを見るために設計されて」おり、最も高いレートは、通常は被試験システムが処理できる上限近くで、「システムが非常に忙しいときにどう振る舞うかを見るために」ある。自社で最も忙しい1分間の数字か、それを再現したテストの数字を求める。
負荷試験がどう行われたのかを尋ねる。多くの負荷試験ツールは、リクエストを送り、応答を待ち、それから次のリクエストを送る。システムが停滞すると、こうしたツールは送信を止めるので、停滞のあいだに届いていたはずのリクエストは、一度も計測されない。
負荷試験ツール wrk2 の作者である Gil Tene は、この効果を coordinated omission と呼ぶ。2019年9月に最終更新されたこのツールのドキュメントで、彼は「レイテンシの高い応答によって、負荷生成器がサーバーと歩調を合わせ、レイテンシが高い期間の計測を避けることになる」と書いている。彼のツールは一定のレートでリクエストを送り、それぞれの応答を「送信が行われるべきだった時刻から」計測する。その会社のツールがこのように動くのか、あるいは結果をどう補正したのかを尋ねる。
それぞれのタイムスタンプをどこで取ったのかを尋ねる。マイクロ秒単位のレイテンシについては、STAC の概要資料は、ソフトウェアのタイムスタンプを使うベンチマークを「最良の選択肢」と呼んでいる。同時に、ソフトウェアのタイムスタンプに生じる小さく不均一な遅延は「数十から数百ナノ秒のレイテンシを計測する際には、かなりの誤差となりうる」と警告しており、STAC-T0 は代わりにハードウェアでタイムスタンプを取る。ナノ秒の数字を挙げる会社なら、ハードウェアのタイムスタンプをどこで取ったのかを示せるはずだ。
何が悪いのかはまだわからず、わかっているのは、システムが本来より遅いか、本来よりコストがかかっているように見えることだけなら、ここから始める。本命の会社に費用を払い、範囲を固定して稼働中のシステムを計測してもらう。レポートは、次にどう決めるにせよ自社のものとして残るようにする。計測のためにその会社が何をインストールし、何を変更してよいか、そして終わったあとにツールをどう取り除くかを、書面で取り決めておく。
レポートには次のことが示されているべきだ:
トレーディングシステムについては、上でリンクした注文執行の遅さについての記事が、すべての注文で記録すべき四つのタイムスタンプを挙げている。アドテクでは、トラフィックのピークについての記事と DSP のタイムアウトについての記事が、ピーク時に、そしてエクスチェンジとの接続ごとに何を計測すべきかを扱っている。
会社はそのレポートで評価する。自社のエンジニアがその会社なしでもレポートをもとに動けるなら、次の仕事を誰に任せるかを、実際の数字にもとづいて選べる。その会社であれ、別の会社であれ。
会社が新しい言語を提案してきたら、下でリンクしている記事が、言語が原因なのかどうかをエンジニアがどう確かめるかを示している。
amBrain は、トレーディングとアドテクの遅いシステムを診断する。稼働中のプラットフォームをエンドツーエンドで計測し、時間がどこで費やされているかをレポートで特定する。トレーディング分野の仕事には、トレーディングターミナルの開発、注文管理システム、FIX プロトコルによる取引所連携が含まれる。
AdTech の分野では、amBrain は DSP 開発、リアルタイムビディングのプラットフォーム、アドエクスチェンジのエンジニアリングに取り組んでいる。
amBrain の働き方には三つの形態がある。フルデリバリー、専任チーム、あるいはあなたのチームに入るエンジニアだ。顧客は、プロダクトとコードの完全な所有権を保持する。ただし、amBrain の再利用可能なコンポーネントは除く。
amBrain は2019年からソフトウェアを作っている。
この記事は事例紹介ではなく、顧客のための仕事についても述べていない。amBrain が構築したどのシステムについてもレイテンシの数字を挙げず、価格や期間も示さない。
amBrain にも、候補に挙がっているほかのどの会社にも、自社のシステムで最初に何を計測するかを尋ね、すべての会社に同じ確認を課す。
現在のアーキテクチャと気になっている障害シナリオをお持ちください。30 分で一緒に確認します。