読書 約 2 分

大規模サービス技術入門_

大規模サービス技術入門を読んだメモ。

  • 大規模サービスの実態

    • コスト感覚が大事。
    • スケールアップ(富豪的)よりスケールアウト(コモディティ構成)。
      • 安いハード並べたほうが柔軟だし、冗長性も確保しやすい。
  • ハードウェアの制約

    • 「推測するな、計測せよ」
    • 結局はメモリとディスクの速度差がボトルネック。
      • メモリ:ナノ秒
      • ディスク:ミリ秒
      • この数万倍の差をどう埋めるかが勝負。
  • OSとアルゴリズムでどうにかする

    • メモリに乗らないデータは遅い。
    • OSのページキャッシュを活用する。
      • 一度読んだらメモリに残るあれ。
      • 逆に言うと、再起動直後はキャッシュ空っぽだから死ぬほど遅い(ウォームアップが必要)。
    • データ自体を小さくする。
      • 圧縮アルゴリズム (VBCodeとか)。差分だけ持って符号化。
      • 局所性を活かす。
  • DBの負荷分散つらい

    • APサーバはステートレスだからロードバランサで足すだけ。
    • DBはステートフルだから同期問題がつきまとう。
      • レプリケーションとかシャーディングとかあるけど、運用コスト高い。
  • 疑問:SSDなら速いんじゃない?

    • 本ではHDD前提だったけど、SSD時代でも本質は変わらなそう。
    • ランダムアクセスは確かに速い(物理ヘッドないし)。
    • でもメモリ(DRAM)に比べたらやっぱり圧倒的に遅い。
    • 「極力メモリで済ませる」という鉄則は変わらないっぽい。
  • まとめ

    • 「ハードやソフトが持っている性能以上の性能を出すことは不可能」
    • 魔法はないから、仕組み(キャッシュとか)を理解して使い倒すしかない。