YAPC::Asia 2015で発表してきました & ConsulとStretcherについて

YAPC::Asia 2015 でトークを採用していただいたので、発表してきました。

YAPC::Asiaは自分は2006年から10回皆勤で、トークは2009年LT、2010〜2013, 2015は本編で計6回もしてるんですね…YAPC::Asiaにはここまでのエンジニア人生の半分以上を支えてもらっていて、(ひとまず)最後の回でもトークできて感無量です。

1年ぶりにYAPCでしか顔を合わせない人もいた懇親会は、皆さん言うように同窓会のよう、というか本当の同窓会よりも現在の話題を共有している分濃密でしたね。

Consulと自作OSSを活用した100台規模のWebサービス運用

1日目午後一の激戦枠に放り込まれたのでどれぐらい会場が埋まるか心配でしたが、200人以上入る会場でほぼ満員だったようで、聞きに来ていただいた皆様ありがとうございます。

ここ1年程度で本番運用してきたConsulと周辺に関する知見を詰め込んだので、発表はだいぶ駆け足になってしましました。トーク内容についてもうちょっと詳しく知りたいみたいなことがありましたら、どこか勉強会でも飲み会でもお誘いいただいたらほいほい出向くと思います。

ConsulとStretcherについて

「Consulってこんなに一般化してたのか」的な感想をちらほら見かけるのですが、これはおそらく世間的には全然そんなことはないんじゃないですかね…今回の発表で Consul が出てきたのは自分が把握している限り以下のトークだと思うのですが、

  • @hsbt さんの発表(ペパボさんの事例)
  • @aereal さんの発表(はてなさんの事例、検証中)
  • @kenjiskywalker さんの発表
  • カヤックからの発表 × 2 (@fujiwara, @tkuchiki)

たしかにトーク数では 5/90 なのでだいぶ一般化した技術に見えそうですが、おそらくわりと狭い範囲で実験的に使われているのだけどたまたま通ったトークが多かったので目立ってた、というのが実際のところではないかな、という印象です。

ちゃんと使えるようになるとだいぶ便利なのですが、なにかおかしくなったらとりあえず再起動、的な運用をするとあっさり崩壊するので、慣れた人が導入したConsulを慣れてない人に運用を引き継いだりするとツラい目に遭う未来が見えます。老婆心ながら。

Stretcher については、だいぶ興味を持って頂いたかたが多かったようで、大変嬉しいです。ただ、おそらく最初に「Consul と連携する」という部分を(半ば意図的になのですが) 押し出してしまったせいか、StretcherにはConsulが必須のように思われてる節があるので一応説明しておきますと……

StretcherはConsulなしでも使えます!

「Consulと連携」というのは実際には、「consul watch が渡してくる標準入力からのJSONを当てにしている」ぐらいが正確なところで、標準入力から規定のフォーマットのJSONを流してやれば、最初のバージョンからConsulとは無関係にデプロイを行うことができました。

v0.1.0 からは Serf eventで実行されるイベント形式(単に標準入力に値が来る) に対応したので簡単に Serf でも動きますし、昨夜リリースした v0.1.2 ではデフォルトで (consul watch 以下で実行されない場合に) 標準入力から単に manifest URL を読み取るようになったので、sshでもなんでも、デプロイしたいホストで stretcher コマンドを実行さえできればそれで実行可能になっています。

$ echo s3://example.com/manifest.yml | stertcher

要するにこれが実行できればよい、ということですね。

ということで、台数は少ないし増減もないから Consul いれるのはちょっと……現状capでsshは全台にできるんだけど、というような環境でも簡単に stretcher を実行することができますので、是非お気軽にお試しいただければと思います。