自分のプロジェクトのエンジニア間では、「誰がやるか決めようぜ!!!」みたいなことがときたま発生するので、以下のような感じのことができる Slack bot をつくった。
名前はわさび寿司的な意味で wasabi。
構成
今年の抱負の実現のために Go で API サーバーを立てる練習がしたかったので、それなりにきちんとつくった(若干の牛刀感は否めない)。特徴はざっくりと以下のような感じ。
- ベースは拙作の potto
/
:Slack の Outgoing WebHook をハンドリング/stats
:golang-stats-api-handler を使って runtime の情報を吐く
- graceful な感じ
- manners による graceful shutdown
- go-server-starter による graceful restart
- ストレージは Redis
- ルーレットの要素は set で管理
- channel ごとにルーレットの要素を管理
実際にサーバーで動かすにあたって
ミドルウェアのセットアップ
itamae でシュッと実行できるようにした。
itamae はシンプルで好き。最近趣味でなんかするときはよく使わせてもらっている。
daemonize
普段は daemontools を使っているけど、ちょっと前に ISUCON の勉強で supervisor を触っていたので、試しに使ってみるかってことで使ってみた。
が、
- yum でシュッと 3.x 系が入らない
- 2.x 系と 3.x 系の config の違い
あたりに翻弄されてだいぶ時間を喰われてしまった。。
3.x 系をシュッとセットアップする itamae の cookbook はできたのでまあよしとするかな。。。
感想
- 自分のつくったもの(ksatriya や potto)を使って実際にコードを書くと「これはイケてないわあ。。。」みたいなとこがどんどん見えて、がんがん使う側視点でリファクタリングが進むのでよい
- 目標であった「今年の抱負の実現のために Go で API サーバーを立てる練習がしたかった」については、1 つ自分の中でテンプレ的なものができたので達成
wasabi は練習台なので、年末焦燥感駆動でもうちょいがんばる 🙏
最近、アルーナ・フランシスの声かわいいな。。ってずっと思ってる
— m0t0k1ch1.eth (@m0t0k1ch1) November 23, 2015