Golang Revelフレームワーク ホットデプロイ方法
概要
Revel Official サイトにあるデプロイ方法を検証しました。
- ローカルでアプリをビルドしサーバにコピーする
- サーバーで更新したコードを pull し、ビルド・起動する
- Heroku を利用しデプロイ管理する
1. ローカルビルド
1 | # アプリを実行しテストする |
開発しているアーキテクチャと同じ環境へデプロイする場合、
もしくは go インストールを設定し、デフォルトで希望するアーキテクチャへビルドするための唯一の方法です。
2. 追加デプロイメント
フルセットアセット付きの静的にリンクされたバイナリが巨大になる可能性があるので、
追加デプロイをサポートしています。
1 | # アプリを一時ディレクトリにビルド |
rsync は ssh でのコピーをサポートしているので、以下のように複雑にはなりますがデプロイ可能です。
1 | # カスタム証明書、ログイン名、対象ディレクトリを指定しrsync |
3. サーバでビルド
この方法はバージョンコントロールシステムに依存します。
Go をインストールしているサーバーが必要です。
その代わり、クロスコンパイルを回避することができます。
1 | $ ssh server |
総評
現在社内では、1. ローカルビルド
のデプロイ方法を選択しています。
2. 追加デプロイメント
は、再起動時の瞬断が懸念されます。
大規模アクセスを捌く目的で利用する Go には向いていないと思います。
3. サーバでビルド
は、運用方法にもよりますが、
本番環境でコンフリクトが起きてしまったらコンパイルもストップしてしまう懸念があります。
1. ローカルビルド
方法を Jenkins で管理して運用しており
現状特に問題ないです。
Jenkins の設定等まとめてから公開したいと思います。
Golang Revelフレームワーク ホットデプロイ方法
https://kenzo0107.github.io/2015/08/11/2015-08-21-go-revel-fw-hotdeploy/