David Heinemeier Hansson氏(Railsの開発者。以下DHH氏)が37signalsのブログに公開した「Running beta in production」というエントリによると、同社ではBasecampの開発に使われる6つのベータサーバがすべて単一の本番環境のデータベースを参照して動いているそうです。
Basecampでは新機能や改良の開発、技術的なアップグレードなどを継続的に行っており、そのために同一の本番環境のデータベースを参照する6個の異なるベータサーバが運用されています。
通常、開発中の機能は開発用のデータベースと共に運用するのがセオリーだと思いますが、DHH氏は「実際の重要なデータとともに不満を感じながら使わない限りは、そういった機能をきちんと評価することは不可能だと気づいた」とのことで、このような構成になっているそうです。
このようなスタイルの運用で気になるのが、データベースマイグレーション(スキーマの変更など)をどのように適用するかです。それについてはコメント欄でいくつかやりとりがされていて、基本的には次のようなものです。
- 本番データベースに接続されたステージング環境でマイグレーションのテストを行う
- その後、それを本番環境にもロールアウトする
近年、アプリケーションのデプロイ作業やサーバ構築などを自動化する試み(Capistrano、Puppet、Chefなど)はかなり広がってきていますが、運用中のシステムにクリティカルな影響を及ぼすスキーマ変更でデータベースのマイグレーション機能を自動化するという手法は日本ではまだあまり浸透はしていないように思えます。一歩先に進むために注意深くマイグレーション機能を活用していくことが開発・運用の効率をさらに上げていく鍵なのかもしれません。
URL:http://37signals.com/svn/posts/3251-running-beta-in-production
- 著者プロフィール
安藤祐介(あんどうゆうすけ)
下北沢OSSカフェの常連。 イベントラッシュが終わって疲労気味。
Twitter:yando
小倉純也(おぐらじゅんや)
QNYP、LLC.のプログラマ。そろそろ自社サービスをサービスインしないと……。
Twitter:junya
溝畑考史(みぞはたたかし)
サンフランシスコにやってきました!
Twitter:beatak