色々調べてたらgo でHTTPサーバーをgraceful restartする方法の記事にあたって、そのなかでシグナルを受け取るとリクエストを受け取ったらそれまでに受け付けたリクエストを処理してから停止するmannersというツールを見つけた。さらにゼロダウンタイムでサーバーを再起動するgoagainというツールも見つけたんだけど、これはサーバー内のコードをそれなりに変更しないといけないっぽくてうんざりしてしまった。

「っていうか普通にServer::Starterをかませるようにできればよくね?」と思ったので、go-server-starter-listenerを書いてみた!使い方はREADMEにあるとおり。このようなコードを書いておいてからstart_server --port XXX -- ./your-go-program って感じで動作させればServer::Starterが保持してるポートにバインドする・・・はず!(まだあんまりテストしてない)

あとはmannersとあわせれば良い感じでgraceful, zero-downtime restartができるはずー

ツッコミ歓迎です。