@kyanny's blog

My thoughts, my life. Views/opinions are my own.

"Wakame" は三年後、「あれはイノベーションだった」と言われても不思議じゃないソフトウェアだ

先週、株式会社あくしゅさんの新しいオフィスに遊びに行ったとき、 "Wakame" という不思議な名前のソフトウェアのプレゼンテーションがあった。それは衝撃的なソフトウェアで、三年後「あれはイノベーションだった」と言われても不思議ではないと、本気で思った。すごく興奮していたが、「来週水曜にリリースするからそれまで黙っててね!」と言われていて、今日やっと "Wakame" についてブログに書くことができるので、僕が見たこと、感じたことを包み隠さず、いまからここで書きます。

"Wakame" は、 Amazon EC2 上で自律的に動作する、サーバマネージングソフトウェアだ。 Amazon EC2 を知っている人向けにごくごく簡単に説明すると、コマンド一発でインスタンスの増減やアプリケーションの複製を管理できる。 Amazon EC2 を知らない人(まぁ僕のブログの読者にそういう人はあまり多くないとは思うけど)向けにごくごく簡単に説明すると、新しいパソコンを電気屋さんで買ってきたり、古いパソコンを粗大ゴミの日に出したりする手間が省けるのが Amazon EC2 だ。 "Wakame" はその Amazon EC2 をより便利に、いや「桁違いに」便利に扱える可能性を秘めた、ダイヤモンドの原石だ。

"Wakame" の公式ウェブサイトは、以下の URL だ。
http://wakame.axsh.jp/ (日本語)
http://wakame.rubyforge.org/ (English)
http://rubyforge.org/projects/wakame/ (開発者向け)

"Wakame" について、より詳しく、かつ包括的な情報を得たい人は、上に挙げた URL を是非訪れて見て欲しい。彼らが一体何をしたいのか、何を目指しているのかを、わかってもらえると思う。

これだけではただの紹介に過ぎないので、以降は僕が生でプレゼンテーションとデモンストレーションを見聞きした上での感想を綴っていきたいと思う。

"Wakame" はもちろんワカメ - Wikipediaのことだ。自律的にサーバの台数を増やしたり減らしたりするソフトウェアが "Wakame" と命名されているのは偶然じゃない。もちろん「ふえるわかめちゃん」を意識している(わかるよね?)。

僕も最初に聞いたときはすぐに「ああ、サーバを増やせるんだな」と思ったし、 "Wakame" がカバーする主たる領域はサーバの増減を管理することだから、これは間違いというわけではない。

でも、 100% 正しいわけでも、ない。なかった。プレゼンテーションを聞いて、僕はそのことに気づいた。

自律的にサーバが増える、と聞いたら、ある程度のトラフィックがあるウェブサイトを運営した経験のある人は誰でもこう思うだろう: 「じゃあ、 Y! トピックス爆弾とか、スラッシュドッテッドを食らったときに自動にスケーリングできるってことじゃないか!素晴らしい!」僕も最初はそう思った。でも、 "Wakame" 開発者の次の一言で、淡い幻想は砕かれてしまった。

「いつ負荷が急増するかなんて、事前にはわからないんだよね」

そう、莫大なトラフィックを誇る有名サイトから「いつ」リンクを張られるかなんて、事前にわかるわけがない。そして「爆弾」は台風か竜巻のように、一瞬でサーバを落とし、すぐに去っていく。負荷があがり始めてからサーバを増やそうとしたってとてもじゃないが間に合わないし、万全の体制が整ったころにはとっくにビッグウェーブは通り過ぎている。残念ながら、 "Wakame" は未来を予知するソフトウェアじゃない。だから、いつ起こるかもわからない台風襲来に備えて事前にスケールアウトしておくなんて芸当は、できない。

でもガッカリしている暇はなかった。次の一言で、僕の目の前に、今まで考えたこともなかった知見が広がった:

「でも、一日のうちでどの時間帯が一番高負荷で、どの時間帯が一番スカスカなのかは、事前にわかるんだよ」

ある程度のトラフィックがあるウェブサイトを運営している人なら、このことはよく知っていると思う。人間はふつう、朝起きて昼は仕事をしたり学校へ行ったりして、夜寝る。彼らがウェブサイトを訪れる時間帯、ネットサーフィンに興じられる時間帯はだいたい決まっている。そういう「ホットな時間帯」はだいたい毎日同じで、一番トラフィックが多いピークタイムと一番トラフィックが少ない過疎タイムでは、サーバへの負荷はがらりと変わる。

今まで、ウェブサイトのスケーリングというと「いかにして計画的にサーバの台数を増やすか、いかにして高負荷に耐えられるようにするか」だけが論じられてきた。当たり前といえば当たり前だが、「ウェブサイトは右肩上がりで成長し続ける」というモデルが根底にあるので、「いかにして計画的にサーバの台数を減らすか」なんてことについて真剣に話そうとする人はそんなに多くなかった。たいていのウェブサイトにとって、サーバの台数を減らさざるを得ないということは成長が鈍っているということで、僕らが考えなきゃならないのは高い成長率を維持することだろう?減らすときはもうオワリなんだから計画も何もないだろう?

正直、そんな風に考えていた時期が僕にもありました。でも "Wakame" が出来ることはそんなアタリマエのこととは根本的に考え方が違うんだ。「最近ページビューがあがってきて過負荷だからサーバを追加しよう」とか「あんまりアクセスされないし、サーバ減らしても十分持つよね」とか、そんなのとは全然違う。僕はその点を理解するのに、それなりの時間を要した。いままで当たり前だと、前提だと思っていたことを一度リセットしなきゃならなかったから。だから理解できたとき、「これは将来イノベーションと呼ばれてもおかしくないぞ」と思ったんだ。

キーワードは「自律的」だ。 "Wakame" は複数のサーバ同士の関係モデルを記述し、管理下に置くことができる。そしてシステム構成を、直接プログラマやシステム管理者が手を下すことなく、 "Wakame" のレイヤーを介して操作することができる。つまりシステム構成を変更する一連の操作を自動化できる。自動化できるということは、毎日定めたスケジュールに従ってサーバの台数を増減することもできる。これは画期的なことだ。

ふつう、稼働中のサービスに一台サーバを追加するとなると、データセンターへサーバを持ち込んでラックにセッティングしてソフトウェアのインストールをしてアプリケーションのセットアップをして、サービスインさせる。この一連の操作が、 "Wakame" を使えばコマンド一発で終わる。逆に、稼働中のサービスから一台サーバを減らすなら、ふつうはサービスから隔離して、データセンターへ行ってラックから取り外して持ち帰って廃棄処分する。これも、 "Wakame" ならコマンド一発だ。どうこれ、すごくない?

これがすごいのは、単に重たいサーバを持ち歩かなくていいからだけじゃない。 "Wakame" は Ruby のクラスとしてシステム構成を記述する。「記述しておける」んだ。ある日あなたのウェブサイトが重たくなったので、アプリケーションサーバとデータベースのスレーブを追加したくなったとする。あなたはすでに "Wakame" を使っているので、「アプリケーションサーバを一台起動する」のはコマンド一発でできる。「スレーブを一台追加する」のもコマンド一発でできる。もちろん、データは他のスレーブと同期した状態でサービスインする。あなたがすべきことは、コマンドを二回叩くだけ。あとは "Wakame" が自律的にサーバの起動、セットアップからサービスインまでの面倒を見てくれるので、仕事が終わるまでニコニコ動画でも見ていればいい。

サーバの台数を増やせることよりも、サーバの台数を減らせることのほうが、ほとんどのウェブサイト運営者にとっては重要で、現実的だ。世の中にはごくまれに、 Twitter のようにあり得ないくらいの超ウルトラスーパー大ヒットを飛ばしてアップアップになるウェブサイトがある一方で、その他大勢のウェブサイトは全然流行らない。最初は当たるなんて思ってもみなかったのでミニマムにはじめて、いざ当たってしまってからスケールアウトするのが大変だった、というのは全然マシ(というか羨ましい!)で、獲らぬ狸のなんとやらで最初から過負荷に耐えうる陣容を整えちゃったりしたけどふたを開けてみたらスッカスカでした、というのはとても悲しい(よくありますよねそういう話)。

"Wakame" なら、そのどちらの場合でも楽々対処できる。まぁ、最初からリッチにいきすぎるのはおすすめしないし、 "Wakame" を使えば段階的にサーバを増やしていくのは楽勝だから、最初はミニマムで全然問題ないんだけどね。

"Wakame" はすべて Ruby で書かれていて、現時点では各種の設定も Ruby の知識が必要なので、プログラマ以外の人にとっては少し敷居が高いかもしれない。でも、 Ruby は読みやすいって評判だし、 Ruby を知らない、プログラムにあまり詳しくない人でも、是非ちょっと触ってみるといいと思う。僕はいままで Perl ばっかりやってきて、 Ruby には何度も挫折してきたけど、 "Wakame" を使うためなら Ruby を覚えてもいいな、と思ったくらいだ。

僕の感じた驚きを伝えるには、まだまだ書き足りないことが山ほどあるのだけど、いま一息ついてここまで書いた文章を見返してみたら、長いこと長いこと・・・。ここ数ヶ月で一番の長文じゃないかと思う。さすがに疲れたし、これ以上書いても同じことの繰り返しになるので、ここらで終わりにしようと思う。

最後にもう一度おさらい: "Wakame" は、 Amazon EC2 上で自律的に動作する、サーバマネージングソフトウェアだ。

こいつは三年後、「クラウドコンピューティングは終わった」なんて揶揄されるくらいクラウドコンピューティングが当たり前になった世の中がきたら、「"Wakame" の登場は、今振り返るとイノベーションだったと言わざるを得ない」くらいの評価をされてもおかしくないソフトウェアだと思う。 "Wakame" に興味を持った人は、是非プロジェクトページを訪れて欲しい。

http://wakame.axsh.jp/ (日本語)
http://wakame.rubyforge.org/ (English)
http://rubyforge.org/projects/wakame/ (開発者向け)


リケン わかめスープファミリーパック 6.4g×10袋入り×2個

リケン わかめスープファミリーパック 6.4g×10袋入り×2個