More info...

2008-05-22

memcachedの驚愕の事実。

MixiFacebook、Wikipediaなど、大規模なサイトでmemcachedを利用する例が増えている。マイコミジャーナルのレポートでFacebookの事例紹介があるのだが、なんとmemcached用のサーバは805台で、メモリ容量は15TBにもなるそうだ。ディスクではなくメモリだけで15TB!である。アクティブユーザーの数は7000万人もいるそうだから、それを捌くとなるとハードウェアも凄い規模にならざるを得ないのである。

このように大規模サイトを支えるmemcachedであるが、そのプログラムの中身は一体いかなるものなのであろうか。memcachedはhttp://www.danga.com/memcachedでソースコードが配布されている。現時点での最新版は1.2.5である。ぜひダウンロードしてみてほしい。そしておもむろにファイルサイズを確認してみてほしい。するとあることに気づくだろう。

shell> ls -lh memcached-1.2.5.tar.gz
-rw-r--r--@ 1 mikiya  staff   204K  3  4 05:00 memcached-1.2.5.tar.gz

なんと204kbしかない。

次は展開して中身を見てみよう。すると更に驚くことになるだろう。

shell> tar zxf memcached-1.2.5.tar.gz
shell> cd memcached-1.2.5
shell> wc -l *.c *.h
     616 assoc.c
      68 daemon.c
     482 items.c
    3143 memcached.c
     421 slabs.c
     365 stats.c
     675 thread.c
       7 assoc.h
      95 config.h
      24 items.h
     374 memcached.h
      33 slabs.h
       8 stats.h
    6311 total

なんとヘッダファイルも含めて6311行しかない!!?15TBもの規模にまで超弩級にスケールアップするプログラムが!?!である。

先日、FOSS界の重鎮(?)Brian Aker氏からmemcachedに関するレクチャーを受けたのだが、Brian曰く「memcachedサーバーはバカ」なんだそうな。サーバーにはインテリジェントな役割はなく、ハッシュなどの機能は全てクライアント側にあると。ということであればプログラムサイズが小さいのも納得がいく。

しかしである。たった6000行そこそこのプログラムを使ってここまでの大規模サイトを支えるというのは、自分の感覚ではとても違和感を覚える。memcachedは単調にメモリをアロケートして、クライアントからの問い合わせに対してごく単純に応答しているだけである。賢い能はなく、そのためにバカと呼ばれようとも、一つのことに全身全霊を注ぎ込んでいるから出来ることなのである。なんと潔く、なんと男らしく、なんと感動的な話だろう!

オトコもバカでありたい。

0 件のコメント:

コメントを投稿