Java の実行環境としての底力

Python ゾーンに行きたくて行けないソメダです、こんばんわ。局所的に Java の話題で盛り上がっているので便乗して。

ちょうど先週末18日に実施された情報処理技術者試験に向け、10月に入ってからはちょいスタディへのアクセスも順調に伸びました。10月のアクセス傾向をグラフで見ると以下のような感じ。

ピークを迎えたのは上記グラフの赤丸にあたる試験前日の17日(土)で、一日あたり

  • 13万解答超
  • 25万PV

と過去最高のアクセスを叩きだしました。以前 Seasar Conference の事例紹介の時点で100万PV/月、55万解答/月が最高だったことからも、グンと数字は伸びました。ちなみに月間PVは150万PVを越え、記録更新中です。

さて、アクセスが増えると当然負荷も高まるので、17日の晩はハラハラしながら、いざとなったら仮想マシンのハードウェアリソースの割当を変更して再起動する心づもりでログと stat と睨めっこしていました。結果、平常時の約8倍くらいまでアクセスも伸び、CPU も振り切るくらいでしたが、落ちる事もレスポンスが返らなくなることもなく、乗り切ってしまいました。改めて Java の実行環境の底力を体感した次第。

今回の経験から、ハードの物理構成の変更なしに今回の 1.5 倍ほど (40万PV/日) までいけそうな感触はあります。今は物理 H/W リソースの約半分くらいをサービス用の仮想環境に割り当ててますのでリソース割当の変更をすればまだ伸びるはず。これ、私の経験で、アクセス数の規模感だけでいうと、従業員数1,000名規模の会社の基幹業務システムと同等かそれ以上のアクセスです。それ位の規模であれば、バックアップとか冗長性とかは別にして、サーバ一台で事足りてしまうという現実。

特にスタートアップ企業などで新規サービス立ち上げをしようとする場合、EC2 やホスティングVPS、自前サーバ、と選択肢は色々あるにせよ、少ない台数でそれなりの規模までの負荷を安定してさばける実行環境を選択することはランニングコスト低減からも、サービスを継続して提供する視点からも重要だと思うのです。なんやかんやいっても、インフラだけで月々100万かかる、とか、ピークに達すると実行環境が不安定になり頻繁に落ちる、などは色んな意味でプレッシャー感じるのが自然だと思いますですよ。それらの視点で見た時に Java ってとても魅力的な実行環境なんじゃないかと、そう思った次第です。

「開発生産性」とか「クラウド」とか、そういった話題はとても大事だと思ってます。ただ一方、地味な内容かもしれませんが、こういうプログラムを動かす「実行環境」についての考察や情報ももっとあってよいかなーとも思うのです。なんといっても、ソフトウェアは開発よりも使われる時間の方が長いですし、また、全てのソフトウェアがクラウドのような超ハイスペックなインフラを必要とする訳でなく、通常のサーバ環境で動かす機会のほうが今は(ここ数年は)まだまだ多いと思うのです。

Javaエンタープライズな文脈では良く語られるものの (語りきられてしまった?!)、ちょいスタディのようなローからミドルの規模感でのサービスにおける文脈で語られる事がなかなか無いので、アクセス数の数字などもあわせてエントリしてみました。

ま、Java って、ここにきてもまだ新しいガベコレ追加したり、HotSpot 改良したり、そういった地道な努力を続けている言語である、という側面を持っている所が単純に好きだったりもするんですけどね。ではまた、来週。