手垢のついたテーマではあるが、ここ2年ほど色々痛い目にあってきたので、ここいらでその経験を活かしたソリューションに仕上げたい。
まず、注意しなければならないのはメモリとCPUを節約しなければならないということだ。アクセスが増えてきたにも関わらず、予算の関係でサーバを増強できないということは、ままある。だいいち、お金があるなら、RTmetricsのようなアプライアンスを導入できるし、その方が良い。予算がない場合が問題なのだ。
WebサーバとDBサーバを1台のサーバ機が兼任しているような環境で、しかもアクセスの増加にあえいでいるような局面でメモリとCPUを贅沢に使うわけにはいかない。だからRubyは選択肢から外さないといけない。なにしろRubyは遅いから。
C/C++という選択も駄目だ。サーバ機がどんなOSで動いているかわからない。多数のサーバOSをサポートするのはできないことではないが、検証環境を揃えるだけの予算がないし、そこまで性能が必要なわけでもない。
Javaは悪くない選択だ。まずは順当というところだろう。たいていのOSでJavaは稼動しているし、パフォーマンスも悪くない。
Objective CamlとCommon Lispも有力な候補だ。どちらもたいていのサーバOSで稼動するし、ネイティブコードにコンパイルできる。DBとの連携にも支障がない。
ほかにも候補はあるが、この3つの言語でそれぞれに実装してみよう。