アルパカDiary Pro

はてなブログProではありません

#tvrendo テレビ連動サーバ勉強会 で発表しました

http://connpass.com/event/10424/
弊社にて、テレビ連動サービスに特化した勉強会を開催しました。
で、自分も発表してました。


スライドはこちら。
http://www.slideshare.net/tsuyoshitorii5/public-43549341


時間配分全然わかってなかったので、(特に後半)かけ足になってしまいました。
申し訳ございません。



デモの辺りの補足

背景

そもそもだいぶ前から
「こういう感じでsocket.ioコンテナ化して自由に上げ下げできると面白いな。
 で、実際どうなのかな?実運用できそう?」
ということを考えていました。
そして今回いい機会なので急ぎでプロトタイプ書いてみたところ
なんとなく上手くいったのでデモとして公開してみました。
またこの構成だとLBが最初にサチるので、この構成単体だと限界があります。
あくまでサーバ1台辺りのリソースをうまく使いきりたいなーというところが目的です。
あと半分は遊びですねw

デモ動作説明

スライドにも書いてますが、以下のような仕組みで実現しています。

  • LBは Openresty+Luaで実現。sticky idからsocket.ioサーバを決定
  • socket.ioコンテナを増やすと以下のような処理が動く
    • Registratorが増えたコンテナ情報をconsulに通知する
    • consulと繋がっているconsul-templateに変更情報が通知される
    • consul-templateがnginx.confのサーバリストを書き換え、自動で restart が行なわれる
  • 複数コンテナはsocket.io-redis adapterで繋がっているのでブロードキャストも通知される
デモでやったこと

定期的にsocket.ioクライアントでコネクションし続け、
その状態でDockerコンテナ増やしたり減らしたりしても
問題なく接続/再接続できる様子を動画にしてみました。
反応ないのでわからないんですが、この手法どうだったんだろうかw
(動画アップロードしてもいいんですが、やりかたわからん…)



感想

クラスメソッドさんの大規模通知の話も共感しながら聞けましたし、
voluntasさんのMQTT話も本当にとてもわかりやすくて勉強になったし、
a2cさんのマル秘話も非公開にするのが惜しいほどすごいお話で刺激受けました。


正直言うと自分はめっちゃ面白かったので
第2回もあると良いですね!!!