Back of Envelope Calculations
September 24, 2024システム設計の面接では、与えられた情報からシステムに求められるシステムリソースを試算することを、back of the envelope calculations (estimation)という。
QPS, peak QPS, storage, cache, サーバ数が問われやすい。 これまでに見かけた面接対策の書籍やウェブサイトは必ずというほど試算の基礎としてNumbers Everyone Should Knowを解説しているので、Numbers Everyone Should Knowは基礎知識としてとらえていいだろう。 Numbers Everyone Should Knowは、ハードウェアの性能に依存する値なので、サイトや書籍ごとに具体的な数値は違う。 しかし、Back of Envelope Calculationは大まかな試算なので、ある項目が別の項目の何倍違うかを抑えておけばいいだろう。 特に重要に思えた項目を以下に抜粋する。
| 処理 | 所要時間 |
|---|---|
| snappyで1kbを圧縮 | 10µs |
| メモリ上の連続する1MBのデータの読み取り | 250µs |
| データセンタ内のラウンドトリップ | 500µs |
| SSD上の連続する1MBのデータの読み取り | 1ms |
| カリフォルニアとネーデルランド間のパケットのラウンドトリップ | 150ms |
覚えやすいのは、SSDの1MBのデータ読み取りだろう。1MBに対して1msだ。 さらに、SSDの読み取りに対するほかの項目のオーダーを覚えれば、残りの所要時間を計算できる。