2011-02-10 25 views
3

私はWebアプリケーションを開発しており、ユーザー間で新しいビルドとバージョンの配置をずらすことができるようにしたいと考えています。たとえば、アプリの...Webアプリケーションの段階的な展開を管理する方法

  • 展開新しいバージョンとテストが幸せになると
  • をテストするためにそれをテストアカウントのカップルを移行し、新バージョンへのお客様の5%を言うとサポートの問題を監視し、移動それらの顧客とのサーバー負荷問題。
  • まだ問題が解決しない場合は、すべてのユーザーが更新されるまで徐々に新しいバージョンに移行してください。

FogbugzとKilnのFogCreekは、このようなデプロイメントシステムを使用しています。あなたはそれについて読むことができますhere...

私が現時点で解決しようとしている問題はです。システム上の異なるアカウントは異なるバージョンのコードを使用している可能性があります。

これを管理して制御する良い方法は何ですか? Apacheはここで重労働を起こすことができますか?私はあまりにも多くのオーバーヘッドや、奇妙なローダースクリプトを避けて、どこにリクエストを送信するかを考えたい。 Fogbugz on DemandのようなWebアプリケーションはどのように問題に対処しますか?このために認識されたデザインパターンはありますか?

ユーザーはドメイン名(例:user1.example.com、user-bob.example.comなど)で識別されます。

+0

http://programmers.stackexchange.comに移行する投票 – Mchl

答えて

3

これを達成するには簡単に何百もの方法があります。

  • YahooやMSNのような大規模な公開サイトでは、ランダムなサンプルでデザインの変更を処理し、誰が新しいデザインを受け取るべきかを識別するために長いタイムアウトでクッキーを設定します。
  • 有料アップグレードとベータ版の招待では、ログイン時に新しい「デザイン」や機能セットを受け取る顧客アカウントを特定してタグ付けすることができます。たとえば、Digg v4の新しいアップデートは、ログインしている顧客とオプトインする顧客のためだけでした。 Facebookは、新しいプロフィールページを使ってシステム全体に似た展開をしていました。
  • ベータテスターに​​お支払いいただくことがあります。 AmazonのMechanical Turkやcustfeedback.comのようなサイトを簡単に使用できます。

具体的な内容はあなたとあなたのアーキテクチャ次第です。うまくいけば、あなたはこの機能を念頭に置いてあなたのソフトウェアを書いたでしょう。デプロイ時にアプリケーションとデータベースのアップグレードを簡単に行うための簡単な方法を提供していただければ幸いです。 Magento(オープンソースの電子商取引プラットフォーム)はこれをうまく処理します。各モジュールはプラグインの形式で構築され、各コンポーネントは独自のバージョンを記録します。データベースのアップグレードは、設定ファイルに保持されている新しい/将来のバージョンに基づいて、インストールスクリプトとアップグレードスクリプトで実行されます。

ベータテスタを、本番マシンよりも詳細なロギングとリアルタイム解析を行う新しいドメインまたはデータベースに移動することを選択できます。これは、キルンのブログ記事に記載されている方法でした。彼らはサイトhttp://martinfowler.com/bliki/BlueGreenDeployment.htmlを参照しました。結局、アカウントとトラフィックの分離を達成したにもかかわらず、結局統合する必要がありました。メンテナンスウィンドウで移行を実行し、誰もが同じバージョンになるようにする必要があります。

運が良かった!

関連する問題