てきとうなメモ

本の感想とか技術メモとか

過負荷に耐えるWebの作り方

過負荷に耐えるWebの作り方 ~国民的アイドルグループ選抜総選挙の舞台裏 (Software Design plus)

過負荷に耐えるWebの作り方 ~国民的アイドルグループ選抜総選挙の舞台裏 (Software Design plus)

AKB48選抜総選挙の投票サイトの舞台裏についての本。毎秒一万アクセスと書かれてありちょっと興味があって読んでみた。

毎秒1万アクセスというのは、そもそも最大1万アクセス/秒という話だったのが、いつのまにか連続1万アクセス/秒という話になってしまったらしい。さらに、開発期間は2ヶ月程度。メンバーはメイン3人、サポート3人というハードな案件。

アプリケーションとしてはガラケーサイトなのでシンプルなHTMLで良いし、機能はメンバーを選んで投票するのみなのでかなりシンプル。問題となるのは短い開発期間で性能と可用性を保証しないといけない部分。

構成はLVS+Varnish+Jetty+VoltDB、WebフレームワークはApache Click。DB部分がネックになると想定してVoltDBを使ってみたそうだ。

毎秒1万アクセスを保証する部分は、スクリプトを実行して行っているのだが、毎秒1万アクセスをシミュレートしようとするとクライアントの性能の限界に達してしまうようだ。そこは、Amazon EC2インスタンスを10台を使ってそこからアクセスすることで解決したとのこと。

実際にテストしてみるとDBよりもネットワークが問題になり、faviconを削除したりHTMLのサイズを小さくすることで対応したそうだ。

技術的な話はそこまで多くなく、ソフトウェア開発全体の流れ(要件定義、設計、実装、テスト、運用)について、問題になりそうな部分でどのような選択をしていったかという話が興味深かった。

しかし、個々の選択が適切だったのかについてはちょっとツッコミどころが多い。VoltDBは情報が少ないしApache Clickは初めて利用したそうだ。毎秒1万アクセスというのも実際は平均1投票/秒未満だったらしく、過大な要件定義をしてしまっている。ただ、さすがに短納期なので、こういう選択もしかたないかなと思う。