日記
スケーラビリティとミニマムの負荷Edit

旧バージョンはDBのselectクエリーは分散できるものの、それ以外は分散がほとんど効かないような設計だった。今回はアプリケーションサーバーもDBサーバーも単純に追加できるような設計にしてみたんだけど、そういう設計だとミニマムでの負荷はどうやってもある程度ベタに書いた設計よりも高くなってしまうなー。

すでに現段階で結構な手数を高速化(大量に呼び出されるurlForをベタに書き直したり、エスケープ処理の呼び出しにかかるコストを下げたりとか、とか)に費やしているんだけど、それでも1台増やしたサーバーがぱんぱんだ。DB負荷対策のためにメモリを増やしておいたんだけど、ロジックに費やすCPUパワーの方が先に頭打ちになってしまった。

商売でやってるんだったら、素直にサーバーを増やせばいいんだろうけど、個人でやっていると金だけじゃなく運用にかかる人的コストもばかにならない(俺は開発にかけるコストは趣味だから気にならないけど、運用は趣味じゃないから、その分のコストが増えるとうんざりしてくる)から、サーバーを増やす敷居が高い。

というわけで、単純にサーバーを追加するだけでスケールするような設計は、商売でやるにはいいんだろうけど、個人では実はあまり使えず、それよりも小技で高速化しやすいような設計(キャッシュをメソッド単位できめ細かくかましたり、フレームワーク依存のロジックを高速バージョンに差し替えやすかったり)の方がメリットが大きいかもなー。ひとまずメモリはまだ余っているんで、CPUパワーをメモリ使用量とトレードするような高速化を補助する仕組みをいろいろ追加していこう。っつーのはまあ、一般的には大して需要が大きくはないだろうけど。

Published At2006-07-10 00:00Updated At2006-07-10 00:00