レスポンスタイムとレイテンシの違い
TL;DR
- レスポンスタイムとレイテンシの違いを、野球に例えて言語化してみた
- ターンアラウンドタイムについても言及した
はじめに
データ指向アプリケーションデザインの第1章を読んでいると、レスポンスタイムとレイテンシの定義について言及されている箇所がありました。
似ているようで違う2つの言葉、自分は違いを説明できる自信がなかったので、自分の理解度を上げるために記事にしました。
レスポンスタイムとは?
データ指向アプリケーションデザインで定義されていた言葉を抜粋すると
クライアントから見た値であり、リクエストの処理そのものに費やされた時間に加えて、ネットワークやキューイングによる遅延が含まれます
とありました。
レスポンスを受け取るまでの時間か?うーん、わかったようでわからん。
レイテンシとは?
データ指向アプリケーションデザインで定義されていた言葉を抜粋すると
リクエストが処理を待っている期間であり、リクエストはこの期間待ち状態にあり、サービスを待っています
とありました。
レイテンシって遅延みたいな意味じゃなかったっけ?うーん、わかったようでわからん。
結局何が違うの?
自分が野球をやっていたこともあり、野球を具体例に挙げて解釈します⚾️
- リクエスト
- キャッチャーがピッチャーに球種のサインを送る(リクエストする)
- 「ストレート来い」とか「カーブ投げろ」みたいな要求ですね
- キャッチャーがピッチャーに球種のサインを送る(リクエストする)
- レイテンシ
- サインを出してからピッチャーがキャッチャーに投げるまでの時間
- けん制をファーストに投げるかもしれないし、長めにセットポジションを取るかもしれないので、様々な要因でレイテンシの値は変動しそう
- リクエスト(キャッチャーからのサイン)が処理(ボールを投げる)を待っている期間ってこういうことなのかな
- サインを出してからピッチャーがキャッチャーに投げるまでの時間
- レスポンスタイム
- サインを出してからピッチャーがボールを投げて、キャッチャーがボールを受け取るまでの時間
- クライアント(キャッチャー)から見た値で、ネットワークやキューイングによる遅延(けん制するとか長めにセットポジション取るとか)ってこういうことなのかな
自分だけかもしれませんが、結構落とし込めた感じがしますw
(厳密には違うのかもしれませんが、イメージとしては大きく外してはいないはず。。)
ターンアラウンドタイム
余談ですが、レスポンスタイムの定義を調べているとターンアラウンドタイムという言葉がレスポンスタイムと似た言葉として紹介されていました。
レスポンスタイム:レスポンスを受け取るまでにかかった時間
ターンアラウンドタイム:処理完了までにかかった時間
またまた似たような定義ですが、これを野球に例えてみると
- レスポンスタイム
- サインを出してからピッチャーがボールを投げて、キャッチャーがボールを受け取るまでの時間
- ターンアラウンドタイム
- サインを出してからピッチャーがボールを投げて、キャッチャーがボールを受け取ってストライクとかボールとかをジャッジするまでの時間
こじつけた感は少しありますが、こんな感じのイメージで解釈しました。
まとめ
普段何気なく使っている言葉も、自分の言葉で言語化して説明するとなると難しいですね😅
だからこそ理解が深まるのかなと感じました。
あと、例え話を使って説明するとさらに理解が深まりますね。
Discussion