Solaris 10がリリースされてから随分経つが、目玉機能の一つであるSMFがあまり利用されてないように思う。理由は恐らく次のようなことからだろう。
- ドキュメントが乏しい(または難解である)
- XMLを編集しなければならないのが煩わしい
- 既存の仕組み(init.d)でも別に問題がない
しかしSMFは使いこなせば非常に有用なツールである。最も便利だと思うのは、プロセスが停止してしまった時に自動的に再起動してくれる点だ。世の中のすべてのプログラムにはバグがあり、バグによりプロセスが停止することは世の常である。従って、システム管理者たるものプロセスをすぐさま再起動するような仕組みを設けていなければならない。
既存の仕組みではそのようなことをシステムレベルで実装することができず、従って独自のプロセス監視方法などを導入する必要があった。しかしSMFを使えばその仕組みを比較的簡単に実装することができる。SMFはOpenSolarisでも利用可能であり、SMFにサービスを対応させる価値は大いにあるだろう。
エンジニアたるもの想像力が必要だ。
複数のmemcachedサーバーを起動させてキャッシュを分散させるような運用では、各データをそれぞれどのサーバーにキャッシュするかを自動的に選択する必要がある。そのアルゴリズムとして、
コンシステントハッシュ法というものがあるのだが、これがなんとも見事なアルゴリズムなのである。
先日、Brian Akerとミクシィの前坂氏によるmemcachedのセミナーがあった。
実践で使用する上での話や開発最前線の話が聴けたため、セミナーは非常に盛況であった。筆者にとっても非常に勉強になる内容だった。
セミナーの資料はBrian Aker氏のサイトから入手できるのでセミナーに参加出来なかったひとはこの資料を読んで自習して頂きたい。
が、いかんせん氏のスライドはパッと見ただけではなんとなく分かりづらいように俺は思う。なぜだろうか?それはきっと図がないからだ・・・と勝手に想像する。オトコたるもの、時には勝手な憶測で突き進むのもアリだ。ちなみにBrianのスライドはほとんど要点の箇条書きになっている。これでは解説がないと、特に新規にmemcachedやMySQLを学習している人たちには分かりづらいだろう。
というわけで氏に代わり、memcachedがどのように既存の仕組みを置き換えるかについて絵を描いてみたので以下に紹介する。
(余談だがMySQL ClusterのStewert Smith氏はパラパラ漫画のようなスライドを描く。Brian氏のプレゼントはまったく毛色が違う。ギークという人種は本当に個性豊かだ。)