やる気がストロングZERO

やる気のストロングスタイル

高トラフィックに耐える構成を考える

トラフィックに耐える構成についてざっくり書いてみる。
インフラエンジニアでもないので間違いあるかも。

アプリケーションサーバ

ステートレスに作っておいて、稼働台数を増やしてLBで振り分ける。
LBに対してはDNSラウンドロビンで負荷分散させる。

DBサーバー

やっぱりDBへの負荷をどう下げるかがキモ。
参照と更新で分けて考える。

参照:

キャッシュサーバーを用意してキャッシュし、DBへのアクセス自体をできる限り減らす。
レプリケーションセカンダリを複数用意し、参照リクエストを分散させる。(ここにもLB使える?)

更新:

更新はプライマリに対して行わなければならず、単純に数を増やして対応することができない。
出来る限りスケールアップによって性能を上げる。
特にメモリは多く確保し、DBのデータをすべてメモリに乗せられるようにしてIOの発生を出来る限り避ける。

更新が極端に多い特性のデータはKVSへ保持させることを検討する。
redisはクラスタ構成を組むことで更新に対してもスケールアウトによる負荷分散が可能。

最終手段としてテーブルの水平分割や垂直分割を行って、プライマリDB自体を分割し、アクセスを分散させる。

そのうち検証とかしたい。raspberry piとか複数買って小さい環境作って限界目指してみるとか。