私は、確立されたWebアプリケーションの新しいバージョンを展開する最適な方法を決定しようとしています。過去に私はいくつかの方法を変えましたが、今度は少し違うやり方をしたいと思っています。制限されたユーザー数へのWebアプリケーションの展開
私たちは開発/ステージング/プロダクションサーバを使用しています。開発が完了し、基本的な機能がテストされたら、ステージングサーバー上のアップグレードされた運用データベースを使用して開発コードを実行します。ステージング環境で内部QAが問題を見つけられない場合は、その変更を有効にします。
は必ず アップグレードを行うために、テストの ビットを行う、使用率が低い時のコードとデータベース スキーマをアップグレードします。最後のステップは、以下の2つの方法で行われてきた
その後、指が交差して と交差し、ユーザーがQAが逃した バグが見つからないことを願って、 はいつも火災を出すか、またはメジャーの場合は の前のバージョンに戻る。 失敗。
アプリケーションの新しいバージョンを別のURLに作成します。 運用データベースを新しい バージョンにコピーして空にしてから、選択したユーザーのデータを にコピーし、 に新しいURLを使用させます。つまり、 は www.example.comの代わりに www2.example.comからアプリケーションにアクセスします。徐々に ユーザーを新しいバージョンに移動してから、 のURLを元に戻してください。
今回は、2つの方法の組み合わせのようなことをしています。基本的には、同じURLを維持しながら少数のユーザーを新しいサービスに移動させることを考えています。
ここで私は仮想ホストでやっていると考えています。新しいユーザーが移動されると、Map.txtが生成/更新されます。 (私はPRGの書き換えマップを使用して見たが、スクリプトを待っているapacheのぶら下がりの怖いです。)
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /web/www.example.com
ServerName www.example.com
RewriteEngine on
RewriteMap deploymentmap txt:/web/map.txt
RewriteRule ^/id/([0-9]+)/(.*)$ ${deploymentmap:$1}/id/$1/$2
</VirtualHost>
map.txt:
10001 /web/www2.example.com/
10002 /web/www2.example.com/
10003 /web/www2.example.com/
10004 /web/www2.example.com/
10005 /web/www2.example.com/
この展開戦略で明らかな欠陥がありますか?私はいくつかのシンプルで効果的な、苦痛の少ない、アップグレード方法が欠けていますか?
ありがとうございました。
-Paul