リリース作業の効率化
今日は担当サービスのちょっとした機能追加リリース日で、
リリース関連のルーチンワークや打ち合わせに忙殺。ふぅー。
ただ、ずーっと懸案だった統一手順でのデプロイスクリプトができたのが収穫でした。
(UNIX弱者のため、スクリプトのコア部分はサーバ管理チームのモロGeekにやってもらいましたが…)
前提条件
- 静的コンテンツはapache、動的コンテンツはAPサーバが処理。
- 静的コンテンツ、設定ファイルは共有ストレージに配置。
- APサーバが複数でwarが複数コピー必要な場合もある。
スクリプトの動き
- 開発チーム全員がアクセスできるテスト機で実行。
- SVNリポジトリからの取得とビルドは既存スクリプトで行っておく。
- apacheが公開してるディレクトリにhtml,js等を本番サーバへコピー。
- warに入れない設定ファイルを設定ファイルディレクトリへコピー
- warを複数の本番サーバへコピー
warだけならともかく、静的ファイルがapache担当と別れてるんでなかなかちゃんとした仕組みが作れなかったんですよね。
war内の展開ファイルをapacheが見るとか他のアプローチもあるんでしょうけど、既存の社内管理ルール上無理でした。
これでようやくほぼ自動で本番へのリリースができるようになりました。
SVNからの取得前提なので、致命的バグの際はロールバックも簡単。(いや、無いことを祈りますが)
あー、Railsっぽい(Rakeかな?)DBのMigrationの仕組みがあれば…ちょっと上手い方法が思いつきませんが。良い方法無いですかねぇ??
RubyのCapistranoみたいに決定版っぽいモノがJavaにもあればいんですけどねー。
ん、もしかしてMaven2のRelease Pluginとかでできたのかな??
どなたかもっと良い解決法があればご教授お願いします。