@kyanny's blog

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

クラウド時代のサーバ/ネットワーク自動マネジメントツール Wakame の開発者を募集中

株式会社あくしゅさんが、 AmazonEC2 のクラウド環境下におけるサーバ/ネットワーク自動マネジメントツールである Wakame の開発者を募集しています。

やむにやまれず : [Wakame]Wakameの開発にご協力くださる方を探しています
http://blog.hansode.org/archives/52052018.html

クラウド環境下の仮想サーバが物理的なサーバと比べて特に優位なのは、サーバの追加や撤去をスピーディーかつダイナミックに行える点だと思います。ラックや電源やパーツなどの物理的な諸問題を、仮想サーバのユーザーは意識する必要がないから。

とはいえ、まだまだクラウド環境を実サービスの運用に利用するとなると躊躇してしまう人も少なくないはず。それまでのサーバ運用とは、少し違ったノウハウが必要になってくるわけだし、そういう環境に触れたことがない人にとっては勝手がわからず戸惑うことも多いと思います。

そこで、クラウド環境下でのサーバ運用にまつわるノウハウそのものををプログラミングしてしまって運用を自動化してしまえば、誰にでももっと簡単に扱えるようになるじゃないか、という発想からスタートしたプロジェクトがこの Wakame です。

Wakame がいかにすごいプロジェクトなのかについては、以前ブログにも書いたことがあります ("Wakame" は三年後、「あれはイノベーションだった」と言われても不思議じゃないソフトウェアだ - 刺身☆ブーメランのはてなダイアリー) 。特に重要だと思う点を繰り返すと、「サーバ資源の運用はプログラミング可能だ」という点。ピーク時に備えてサーバを増やす、深夜になったらサーバを減らす。そんなこと、物理的なサーバではもちろん、クラウド環境であっても人間がサーバを管理していたらできない。それが Wakame ならできる、もうすでにかなりできている。

Wakame 開発者の一人、あくしゅの山崎さんはブログで Wakameは「世界のクラウドソリューションへ」という安直なスローガンを掲げ、アホ臭いと言われようともけっこう真顔でそっち方面を目指しています。 と書いています。流行の最先端をいく分野で、技術者が楽しいものを作りつつも本気でビジネスとしての成功も目指している、これってかなり野心的で面白いプロジェクトだと思う。「世界初」を狙いにいけるポテンシャルを秘めていると思うのです。

そんなわけで、興味を持ってくれた方はぜひ、あくしゅさんにコンタクトをとってみてください!
Twitter: @axsh_co_ltd
E-mail: r_at_axsh_dot_net (_at_と_dot_は適宜文字列を置換してください)

「MySQLによるタフなサイトの作り方」を読んだ (Ameba の MySQL 本)

Ameba の中のひとが書いた MySQL 本。出るって噂は聞いてて、気になるなーと思っていたらかぜぶろさんのところでレビューされてたので買ってみた。

某 4G 本よりお薦め(俺にとって某 4G 本の内容はさほど目新しくないので、目新しい内容の本のほうを薦めたくなるのは当然ではある)。仕事で MySQL をいじることがあるウェブアプリケーションプログラマやデータベースエンジニアの人は一読して損はないと思う。知れてよかった!と思えるノウハウがたくさん書いてある。

某 4G 本と同じソフトバンククリエイティブだし、なんとなく会社紹介的というか、技術カタログ・品評会的な構成になるのかなぁ・・・と、あまり期待せずに読み始めたんだけど、予想に反してかなり泥臭いというか、現場の人のキーボードのキートップが手垢でテカテカしてるのまで見えてきそうな詰め詰めな内容だったので、なんと届いたその日に一日かけて読んでしまった。技術書を一日で読み終えるなんてめったにないよ・・・。

内容はひたすら MySQL の話だけ。最初のほうはインストール方法とか、真面目に読んでたら眠くなりそうな内容だったので、そんなの一章割いて書く必要あるのか?とか思いつつすっ飛ばした。構成としては、インストールからはじまって基本的な SQL とか運用コマンドを覚えたりしつつ、徐々にデータベースエンジニアっぽい専門的な事柄に進んでいく、という感じで、後ろにいけばいくほど高度な内容に。でも割と序盤のほうでも、 mMeasure とかレプリケーションを任意の秒数遅延させるスクリプトとか、すげーこんなのあったんだ!と驚くようなツールの紹介などもあって読み応えがある (単に俺がものを知らなすぎるだけかもしれない) 。

後ろのほうの章にいくと、やっぱり CPU やらメモリやら HDD やらのハードウェア絡みの話とか、 OS に絡む話とかの低レイヤなところにフォーカスしていって、いよいよ大規模サイト運用で培ったノウハウがお披露目されてきてページをめくりたびに垂涎ものなのだけど、「よく研究してるなぁ・・・」と素直に驚いたのは、 OS の I/O スケジューラを変えると何割かパフォーマンスが改善するので当然データベースサーバはそのへん変えて使いますね、という話。正直、そんなの全く知りませんでした・・・。自分がいかに勉強不足かを思い知らされた。

「Ameba では InnoDB の現状に不満があるので MyISAM を使ってます」というのが読む前から疑問で、具体的に InnoDB のどこが不満だと考えているのか、どういうケースだと MyISAM のほうが優位になったりするのか、などが気になっていたのだけど、一通り読み終わった段階だとちょっとよくわからないままだった。けど、 InnoDB は独自のキャッシュ機構をもっているけど MyISAM の場合は OS のページキャッシュに載るだけ、というあたりが肝なのかな?と思っている。 OS レベルでのキャッシュとか、データベースサーバ全体での効率を最優先して、あえてそういう選択をしているのかなーと。とある人が「MyISAM を使ってるという人は、何もわかってない素人か、相当詳しい玄人かのどちらかだ」と言っていたことがあるのだけど、この本を書いた Ameba の中のひとたちは相当の玄人集団だな、と思った。

BtoCサイト (CGM サイト) のデータベースエンジニアというのも、かなり奥が深くて面白い仕事なんだなと改めて思い出させてくれる本だった。 MySQL を使い始めたけどあまり運用に慣れていなくて・・・という人にとっては、徐々にステップアップしていくための良い道しるべになると思うし、もうかなり自信があるぜ!という人は、さらにプラスアルファの tips を身につけられるかもしれない。「gihyo の Google, はてな本の二番煎じだか三番煎じでしょ?」と思ってる人も、本屋で立ち読みくらいしてみたらいいと思う。ちょっと有名な会社の名前出しとけばヒキが強かろう、っていうノリで作ったらこういう中身にはならないと思う。

あと、ディストリビューションの選択についての話で、「個人で楽しむなら Gentoo で云々」とか書いてあって、またマニアックな人がいるもんだなーと思った。あと、「Ameba のシステムは Java が多くて、一昔前は CentOS のが安定してたんだけど、今なら Debian 選びますね」とかさらっと注釈に書いてあったりして、いままで Ameba の中のひとって技術者だとあまり外から見えない感じがして、ちょっと得体の知れない感じを抱いていたんだけど、個人的にこの本を読んでぐっと親近感が沸いた。

MySQLによるタフなサイトの作り方

MySQLによるタフなサイトの作り方

あと、ちょっと MySQL にまつわる話からは外れるのだけど。文中のコラムか何かで、「二三年前のアメブロのシステムは、ビジネスロジックが書いてある数百から数千行くらいの PL/SQL の関数がたくさんあって、 FOSS なシステムに移行していくのは骨が折れた」なんてことが書いてあり、 PL/SQL なんて名前くらいしか聞いたことがない俺でも背筋がぞっとしたのだけど、そういえばアメブロがよくダウンしてたらしい頃ってサイバーエージェントの社長が「技術者の頭数が足りない」とブログに書いてギークな方々から袋だたきにされていた頃だよなーと、どうでもいいことを思い出したのだけど、あのとき二十人だか三十人だか採用します!って言って獲った人たちは、結構優秀だったんだろうなぁと、またどうでもいいことを思ったりした。

HTML::TreeBuilder (など) で HTML をパースしたあと as_HTML() したときに タグがつかないようにしたい

具体的には以下のテストにパスするようにしたい。 $tree->implicit_tags(0); がそれっぽい気がするのだけど、うまくいかない・・・。

実際にやりたいことまではあともうワンステップあり、 HTML 中の 'div.blah' 以下のノードツリーはのぞいた HTML 部分が欲しいので、 HTML::Selector::XPath + HTML::TreeBuilder::XPath で該当ノードツリーを指定したのち削除してしまって、残った部分を as_HTML('') でとってくれば楽ちんだな、と思ったのだけど、 タグをくっつけられてしまうのでその手が使えず・・・という次第。使い方が間違ってるのか、見当違いのメソッドを使ってしまっているのか。困った。

追記

Web::Scraper のソースを読んだら、 __get_value() のなかで

        my $html = $node->as_XML;
        $html =~ s!^<.*?>!!;
        $html =~ s!\s*</\w+>\n*$!!;
        return $html;

などとやっていたので、どうやら ... は必ずくっついてしまって回避できないのかなぁ。これにならって自分で消すしかなさそう。