System Design入門 設計判断を数字とコードで確かめる
転送量
この回でやること
QPSと1回の応答の大きさから、必要な転送量を見積もります。
- 読む 約 7 分
- 最後にクイズ 1 問
毎秒出ていくデータ量を数える
保存量は残しておくデータの量でした。転送量では、席の予約サービスが利用者へ毎秒どれだけのデータを返すかを見積もります。
毎秒の転送量は、QPS に1回の応答のバイト数を掛けて求めます。1件の予約が小さくても、空席一覧を何度も返せば転送量は増えます。
ここでは1回の応答を20KB とし、1KB は1024バイトとして扱います。空席一覧や予約確認を平均した大きさで、画像などはこの見積もりに含めません。
1回は小さくても、同時に返す回数を掛けると量が増えます。回線が運べる量を超えれば、サーバーの処理が終わっていても応答を届けるのに時間がかかります。
応答の大きさには、何を含めたかも残します。画像や追加の通信がある画面では、その分を足してから回線の容量と比べます。
バイトをビットにそろえる
回線の速さは、Mbps という毎秒100万ビットの単位で表します。1バイトは8ビットなので、毎秒のバイト数を8倍してから100万で割ります。
MB/s は毎秒のメガバイト、Mbps は毎秒のメガビットです。似た文字でも単位が違うため、そのまま数字だけを比べてはいけません。
1MB を100万バイトとして毎秒2MBを送るなら、8倍して16Mbpsです。10Mbpsでは運べないので、先にバイトとビットをそろえる必要があります。
単位の換算を後回しにすると、必要な回線を8分の1に見積もってしまいます。掛け算の途中でもバイト毎秒かビット毎秒かを明記します。
予約サービスで解いてみる
DAU 3万人、1人6回から平均2 QPS、ピーク係数50からピーク100 QPS を使います。回線は発売開始に耐える必要があるので、ピークで計算します。
ピーク QPS に応答サイズを掛けて、毎秒のバイト数を求めます。その答えを8倍してビットに直し、Mbps に換算します。
応答サイズ = 20 × 1024 = 20480バイト
ピークの転送量 = 100 × 20480 = 2048000バイト/秒
必要な帯域 = 2048000 × 8 ÷ 1000000 = 16.384Mbps応答本体だけで約16.4Mbpsとなり、10Mbpsの回線では足りません。通信の付加情報や余裕も考えると、この値ちょうどの容量を選ぶのも避けます。
平均でも約0.328Mbpsあり、ゼロではありません。その平均で容量を選ぶと、発売開始の約16.4Mbpsを運べず、最も大事な時間に詰まります。
回線の容量はピークで考え、転送量に応じた料金の見積もりには期間中の合計量を使います。ピークが短時間なら、1日中続くとして料金を出す必要はありません。