え? まだSwitchTower使っていないんですか?

You're Using SwitchTower, Aren't You?
SwitchTowerは,Ruby on Railsのアプリをデプロイするユーティリティツール。
以下ざっくり翻訳。

私がSwitchTowerラブなのは秘密でも何でもない。ちょうど昨日SwitchTowerを使ってまた1つRailsアプリのデプロイを自動化したところだ。SwitchTowerの設定とテストには数分しかかからなかったし,新しいリリースをデプロイするたびに恩恵を受けている。実際SwitchTowerは素晴らしい投資で,今でも私はSwitchTowerが過小評価されているんじゃないかと思っている。そこで,昨日どんなことが起きたか簡単な概要をここに書き,SwitchTower評価の一助にしたい。

デフォルトのSwitchTowerのレシピファイルにちょっとした修正を加えて,以下のコマンドを自分のローカルマシンで実行することで,公開サーバ上にデプロイ用のディレクトリ構造を生成した。

    rake remote_exec ACTION=setup

自分のローカルマシンから公開サーバのコードを更新して,アプリをリスタートする。

    rake deploy

もしトラブルが起きたら,以前のデプロイバージョンにロールバックしたい。

    rake rollback

この時点で我々はApacheFastCGIMySQL 5を公開サーバ上で動作させていた。これらを複数のマシンに分散させたいことがあるかもしれない。その場合デプロイ手順はどうなるだろう? 素晴らしいことに何も変わらない。

SwitchTowerタスクを実行すると,タスクはアサインされた全てのマシン上で(自動的に)並行に動作する。開発環境のマシンとプロセスが増大しても,デプロイ作業はずっと1つのコマンドで済むということだ。

しかし,これはもっとよくなる。SwitchTower は隅々までよく考え抜かれている。
どこでも使ってみれば必然(と苦痛)に裏打ちされたツールであるというサインを見ることができる。例えば,バージョンコントロールシステムのtrunkにあるバージョンと,最新のデプロイ版とのdiffを見たいとする。それも1つのコマンドでできる。

    rake diff_from_last_deploy

また,リリース版のちょっとしたメンテでウェブアクセスを一時的に停止したいときはどうする? 作業中はユーザのために分かりやすいメンテ中の画面を出しておくのがいいだろう。ただし画面を出す作業もダウンタイム中にやらなければならない。SwitchTowerを使わないとそういう羽目になる。ローカルマシンから次のコマンドを実行せよ。

    rake remote_exec ACTION=disable_web \
              UNTIL="14:00 MST" \
              REASON="a database upgrade"

これだけで,ユーザに分かりやすいステータス画面を見せることができる。

これじゃまだ分かりにくい? 心配ない。テンプレートハ好きなようにカスタマイズできる。そしてデータベースのメンテを完了したら,また1行のコマンドでメンテ画面を外すことができる。

    rake remote_exec ACTION=enable_web

これが私の言いたい自動化ってやつなんだ!

正直言ってあなたはSwitchTowerを使わずにいられない。マニュアルは短くてよく出来ている。ソフトは分かりやすく期待通りに動作する。ここに書いたことは全て組み込みの機能で,簡単にカスタマイズして,あなたのデプロイ環境に合わせて拡張できる。今後数週間で,我々はますますSwitchTowerを使うことになるだろうと思っている。願わくばあなたも!