Goアプリのデーモン化とデプロイの仕組み

社内の某合宿イベントで、Go製の軽量WAF Echo を使ったAPIサーバーを作ろうとしていて、夏休み中にデーモン化とデプロイの仕組みを作ってみたので、ちょっとまとまりきってないですが忘れないうちにメモしておきます。

慣れない事が多くて試行錯誤しながら丸一日使ってめっちゃ疲れたけど勉強になった。hot deploy の仕組みが大変興味深いです。(参考記事

試行錯誤した結果、利用するツール・ライブラリは下記になりました。

  • デーモン化

  • デプロイ
    (githubに push したら アプリケーションサーバーが webhook 通知を受信してビルド・graceful restart する)

(デプロイの図) deploy

試行錯誤

試行錯誤や調査の結果、利用を見送ったもの。

daemontools (プロセス管理)

  • インストールが難しそう
  • 開発がアクティブじゃない
  • パッチを当てないといけない様子

 → supervisord の方がインストール楽だし、設定も簡単

go-server-starter (ホットデプロイ)

  • graceful shutdown に対応していない
  • graceful shutdown に対応するために manners を使おうとするとアプリケーションのソースコードに手をいれないといけない
    • Echo のレールから外れてしまう

 → grace なら最小限の変更で済む。公式にサンプルコードがある。

展望
参考記事