rails勉強会議事メモ - 前半セッション SwitchTowerの光と影

rails勉強会いってきました。今回もいろいろ勉強になった&刺激を受けることが山盛りでした。とりあえず覚えてる範囲での議事メモを。
前半セッションではSwitchTowerの光と影ということで、id:secondlifeさんが某企業での体験を元に、SwitchTowerの実装のダサいところと、大規模システムでのdeployツールとしてSwitchTowerを使った場合の落し穴をいろいろ紹介してくださいました。

  • SwitchTowerの実装の影
  • 大規模で使うときの影
  • まとめとか感想とか

SwitchTowerの実装の影

  • rakeから呼び出せるようにlib/tasks/switchtower.rakeでSwitchTowerを呼び出すためだけのタスクを足している。冗長でダサい。
  • その上、switchtowerコマンドを決め打ちしているので、switchtowerのコマンドが備えている柔軟性*1すらをあえて殺している。
  • 決め打ちが多い。サーバ上で実行されるコマンドとか内部の作りとか。deploy時にsvn coしか使えないというのは改善された(参考id:moro:20060112)けど、似たような決め打ち問題が多い。
  • そのため、rails以外のシステムをdeployしようとしたり、ちょっと凝ったことをやるとソース書き換えが必要。
  • SwitchTower使用時に入力したパスワードが画面にエコーされてしまう、というのはtermiosをインストールすると解消できる*2。が、そういうのを知るためにソースを読まなきゃいけないというのはどうかと。

大規模で使うときの影

  • 定義できるサーバがAPとWebとDBと、三種類しかない。開発用の環境と、結合テスト環境と、システム全体のテスト環境と、プレ本番環境と。。。という風に複数の環境があるのが普通だが、そのへんが考慮されていない。
  • サーバ側での用意が多い。100台規模の環境にdeployするのは大変過ぎ。
    • sshでログインできるようにしておかなきゃいけないとか
    • そのログインパスフレーズ(とかauthorized_keysとか)はあわせておかなきゃいけないとか
      • ここでAppleの営業の人がNetInfo/OpenDirectoryだといろんな方式の認証を一元管理できて萌えという話をし出して盛り上がりました。
    • subversionもインストールしておかなきゃいけないとか
      • ここでAppleの営業の人MacOS XだとバージョニングがAppleのコントロール下にあるのである程度固定される、で比較的楽といいだしたり、FreeBSDな人が各サーバにPortsを配布する仕組があるよと言い出したり、gentooな人が100台で分散コンパイル&そのバイナリをみんなで使えばいいじゃないと言い出したり、でも結局Debにしておくと楽かもねという話題で盛り上がったりしました。
  • 複数台のWebサーバを再起動させるのに時間を分けたい(10/100台ずつアップデートしたい)とか、現場で求められる泥くさいタスクを扱うのがうまくないね。
  • で、それをなんとかしようとするとソース読め&クラスを書き換えろ、という話になるのがダサい。

まとめとか感想とか

  • SwitchTowerの簡単にdeployとか簡単にrollbackとか、はプレゼン受けはよい。
  • タスクを処理するとかsshで巡回するとかの基盤としては使える。いまは基盤とアプリケーション依存の部分が密結合しすぎているのが問題。
    • sshでログインしたあとに実行するコマンドがハードコードだったり、とか
  • OSSなdeployツールがなかなか少ない。
  • (やや私感?)SwitchTowerはエンプラ系大規模システムへの貢献は小さな一歩だが、そういう叩き台が出てきたということでは大きな一歩。みんなで叩いて叩いてよくしていきたいものです。

*1:コマンドラインオプションとか。see : switchtower -h

*2:試してみたところほんとに表示されなくなった!