近年色々なベンチャー企業の方の個人Blogや、Lab情報を公開しているBlogなどではアプリケーションのチューニングノウハウについて多く議論されており、PHPの高速化やMySQLの高速化について数多くのエントリーを見かけます。

Webサービスをチューニングする場合、いくつかの観点があると最近感じています。

サンはインフラを主としてチューニングを考える。アーキテクチャごとに最適化を考える。NW I/Oのボトルネック、Disk I/Oのボトルネックをまずは疑い、その次にCPUリソースを適切に利用されているかなどを判断します。

エンジニアの話を聞くに、マルチコアCPUでは、すべてのコアを綺麗に使い切ることは難しい様です。よって、適切にコアやスレッドに対して処理をアサインさせる必要があります。そういった統計情報をとれるのはSolarisの素晴らしいところらしい。vmstatやsarを用いて様々な情報を収集できるだけでなく、DTraceを用いることで、より細部にわたる情報や、Java/Ruby等のアプリケーションの挙動を追う事も可能です。

Solarisの良いところは、やろうと思えばシステムの隅々まで 見渡すことが出来ることにあるのではないかと考えています。もちろんLinuxにもそれに近い機能はあるながらも、CPUからMiddlewareまで開発しているサンは、より細かい部分にもメスを入れられる、逆に言うと、玄人好み?な会社なのではないかと感じています。

玄人好みが故にか、あまり一般ウケしないところもあるらしく、使ってもらえない場合もあったりなかったり。実は触ってみるといいね!と気に入ってくれるお客様が最近少しずつ増えてきているのが、日々営業活動をしていく中で私の自信にも繋がってきます。

話を戻して、システムのチューニングに関してですが、サンが行うミクロなチューニングだけでなく、マクロなチューニングもあります。処理のアルゴリズムを変えてみる、処理系を変えてみる、設定ファイルを最適化してみる等やり方は数多くあります。ただし、ひとつだけもったいないなと感じたのが、なかなかインフラを見ている方と、アプリケーションを開発されている方の情報交換が少なく感じることです。

Webサービスを最適化するには、様々な観点があると冒頭で述べましたが、様々な切り口でチューニングのメスをいれていくためには、多彩な視点が必要だと感じています。せっかくインフラを整えたにも関わらず、そのアーキテクチャにアプリケーションが最適化されていなければ、どこかにボトルネックが発生したり、H/Wリソースを適切に利用できなかったりします。これらの問題を回避するためにも、システム全体を最適化する様、組織的な共同作業も必要になってくるかもしれません。

USでは、インフラに対する重要性が高いと判断する経営者やCTOが多いという話を耳にしたことがあります。単純にコストや消費電力だけでなく、アーキテクチャそのもの(アプリケーションを除く)に対する考え方が少し日本と異なっているようです。有名なWeb2.0系サービスのTwitterなどは多くの人が想像する以上にサーバの台数は少ないらしく、ギリギリまでリソースを使い切っているようです。

そのために、OSはOpenSolarisを使い、システム細部に渡るまでの情報を収集し、また必要に応じてプログラミング言語も選択しているようです。TwitterErlangが使われているのもそうした理由からなのではないでしょうか。

サンはJava以外にもRuby/JRubyに投資をしていますし、JVMの上で様々な言語が動作できる環境を目指しています。言語の壁を越え、プラットフォームの壁を越え、必要に応じて必要なものを選択できる環境 -選択肢-を目指しています。

Application ServerのGlassfishは、JavaだけでなくJRubyも動作しますし、PHPなども動作する様改良を進めているそうです。

必要に応じて必要なものを必要なだけ、そんな考え方って面白いと思いませんか?サンと共に今のWeb業界を盛り上げていきませんか!?

投稿されたコメント:

コメント
  • HTML文法 不許可

This blog copyright 2009 by Kazunori Aruse