ひとりでやるRiak Advent Calendar 2012 day8 - GitHub:pagesで動くRiak

これを書いているのは2週間遅れなわけだけだが面白いのは、書かなくなるとパタッとPVが下がって検索からのトラフィックだけになるところだ。Hackとか入門ばかりではつまらないので、そんじょそこいらのKVSと違っていかに実績があるか実はみんな使っていたことになるRiakの話にしよう。

100_0512

毎年3月にエンジニア向けとしては世界最大級のカンファレンス、Erlang Factory SFが開かれている。そこでGitHubのエンジニア @jnewland が、GitHub:pagesの裏側で動いているRiakとWebmachineについてプレゼンをした。そう、みんな大好きGitHubのpagesです。動く @jnewland を観たい方はinfoqのページで動画も公開されているのでそちらをご覧いただきたい。

もともとpagesはnginxの静的ファイルホスティングを使って、更新がある度に設定ファイルを更新してそれで済ませていたらしく、

  • IO bound
  • 57000行の設定ファイル
  • ext3 fsck (実際にこのせいでダウンタイムが出た)

と、まあ実際に運用すると大変苦痛であったとのことで、一念発起してRiakを使ったホスティングに切り替えたのだそうだ。データ構造なんかはスライドに載っているが、Riakにした理由としては

  • 運用が楽
  • ダウンタイムなし
  • Predictable Performance

ということで、まあ別にApacheとかいろいろでshardとかして頑張ってもいいんだけど "building a distributed system ASS FIRST" となっちゃうのでやってらんねーということである。いくらコードを書かなくて済んだって、オペレーションのコストが上がってしまうようじゃ意味がない。
それでまあ、ブラウザから直接Riakを叩くわけにはいかない(PUTで更新もできちゃうしいろいろ不便)ので、webmachineでひとつReadonlyなWebサーバーを書いてみたらErlang初めてなんだけど300行くらいで書けちゃったよーHA HA HAなのである。

Webmachine初めはとっつきにくいのだけども、真面目にWebの仕組みを理解してエラーコードをちゃんと吐くようにするととてもややこしい状態遷移図を作る羽目になる。それを簡単に実装できるツールキット兼Webサーバー実装がWebmachineなのでこちらも、スケーラブルなサーバーがほしいときはこちらをどうぞ。