System Design入門 設計判断を数字とコードで確かめる
捨てたものを言う
この回でやること
選んだ案と選ばなかった案を読み比べ、何を捨てたかとその理由を確認します。
- 読む 約 7 分
- 最後にクイズ 1 問
選んだ案が負けた項目も残す
席の予約サービスで案を選ぶときは、費用や運用の楽さを比べます。それぞれに点を付け、重みを掛けて足せば、同じ条件で順位を出せます。
合計点で勝った案でも、全ての項目で勝っているとは限りません。説明には、選ばなかった案と、選んだ案が負けた項目も残します。
重く見た項目の点が高ければ、ほかの項目で負けても合計は高くなります。費用で負けている事実は、合計点では消せません。
半年後に月額が問題になったとき、合計点だけでは高い案を選んだ理由を説明できません。費用をどれだけ捨て、代わりに何を得たのかを書きます。
重みは比べる前に決める
点は測定や見積もりを材料に付けますが、重みには何を優先するかという判断が入ります。同じ点数表でも、重みが変われば選ぶ案は変わります。
費用の点は安いほど高く、運用の点は手が少ないほど高くするなど、点の向きも先に揃えます。点を付けた根拠が曖昧なら、順位の精密さに意味はありません。
だから、比較の前に重みと理由を記録します。後で条件が変わったら、どの優先度が変わったかを読み、同じ候補を比べ直せます。
予約サービスで解いてみる
DAU 3万、1人6回なら平均約2 QPSです。ピーク係数50で100 QPS、1台40件毎秒なら3台必要という条件を、両案に共通で置きます。
予算は月5万円で、自前構築は月3万円、委託は月4万円と見積もりました。どちらもピークを処理でき、予算内と確認してから、点を付けます。
| 案 | 費用の点 | 運用の楽さの点 |
|---|---|---|
| 自前構築 | 8 | 3 |
| 委託 | 4 | 9 |
合計は、費用の点に費用の重みを掛け、運用の点に運用の重みを掛けて足します。少人数で夜間対応するため、費用の重みを1、運用の重みを3と先に決めました。
自前構築は8×1+3×3=17点、委託は4×1+9×3=31点です。委託を選び、「費用の点では負けるが、夜間の運用負担を減らすため運用を3倍重く見た」と残します。
逆に費用を3、運用を1にすると、自前構築は27点、委託は21点で順位が逆転します。数字の変化に加え、重みを変える理由を確認してから決定を更新します。
予算を超える案は、合計点が高くてもそのまま採用できません。動かせない制約で候補を絞ることと、残った候補の何を優先するかは、別々に説明します。