1

当社は、クライアントの Windows Server 2008 IIS 7 Web サーバーでリッチ クライアント アプリケーション (主に ASP.NET、WCF サービス、および ASP.NET AJAX で記述) の更新をリリースします。ときどき、大規模なアップデートのリリースがあります。また、自動化テストやステージ テストでは検出されず、リリース直後にユーザーが検出するバグが時々あります。影響を受けていないコードを含むワークフローを中断することなく、ユーザーがまだ IIS 7 に ASP.NET コードをスムーズに展開する方法はありますか? ステージから (web.config なしで) コードを手動でコピーし、それを運用 Web ルート フォルダーに貼り付けるだけでは、誰も実際に開始されないことがわかりました。しかし、アプリケーションで熱心に作業しているユーザーにとって、この戦略には何らかの副作用があるのではないかと考えています。私' 他の接続が中断される可能性があるかどうか、またはこの状況でどのように処理されるか (つまり、SQL 接続、WCF サービス呼び出し、同じセッションを維持するかどうか、影響があるかどうかなど) を考えているだけです。この方法を選択した場合、web.config に、(マスター ページの) すべてのユーザーにメッセージを表示するものがあります。たとえば、「ログオフしてキャッシュをクリアしてください」というバナーのように、対処された問題の更新が表示されます。ただし、これは影響を受けるユーザーにのみ関連します。すべてのユーザーに (マスター ページで) メッセージを表示する構成を作成します。これは、「ログオフしてキャッシュをクリアしてください」というバナーのようなもので、解決された問題の更新が表示されます。ただし、これは影響を受けるユーザーにのみ関連します。すべてのユーザーに (マスター ページで) メッセージを表示する構成を作成します。これは、「ログオフしてキャッシュをクリアしてください」というバナーのようなもので、解決された問題の更新が表示されます。ただし、これは影響を受けるユーザーにのみ関連します。

これがマイナーな更新の良い戦略であると誰かが考えていない場合、展開が行われている間にユーザーを別のサーバーまたは何かに強制する web.config 設定を変更するなど、より良い戦略があります。または他の方法論、私の耳は聞いています。明らかに後者の方が安全に聞こえますが、これを行う方法がわかりません。負荷分散サーバーについて読んだことがありますが、このタイプのサーバー設定は、サーバーがダウンした場合など、さまざまな目的で行われると思いますよね? それとも、1 つのサイトを停止する場合、これが最善の解決策でしょうか? どんなアイデアでも大歓迎です。

4

2 に答える 2

3

以前はリリースの影響を最小限に抑えることも強調していましたが、現在は削除しています。現実は 2 つあります。

  1. 誰かが現在取り組んでいるものすべてが、あなたが更新しようとしているものではないという保証はできません。これを考慮してください: ユーザーは x.aspx で作業しており、ポストバックの途中です。新しい x.aspx をドロップします。

  2. 十分な通知があれば、メンテナンス期間は日常生活の一部です。ユーザーは、更新などを行うためにアプリケーションへの排他的アクセスが必要になる場合があることを予期する必要があります。

展開中に誰かが何に取り組んでいるのか本当にわからない場合、すべてのプレートを空中に保つのは非常に困難です. 特にデータベースの更新が混在している場合は!

于 2011-08-08T19:08:17.420 に答える
3

ロード バランサーが混在している場合: 古いコードのサーバーを削除し、新しいコードのサーバーを追加します。これにより、人々を追い出すことなく、古いコード サーバーでトラフィックを消滅させることができます。新しいサーバーがトラフィックを取得します。

これは、サーバー ファーム内のすべてのコードを置き換えるまで、一度に 1 つのサーバーに新しいリリースで行います。これにより、アプリケーションが現実の世界でベイクする時間が与えられます。問題が発生した場合は、単一のサーバーを元に戻すだけで済みます。負荷分散を使用すると、より簡単になります。

これは (通常) シームレスな移行です。もちろん、アプリがデータベースの変更などを処理できることを確認する必要があります。

于 2011-08-08T19:08:48.363 に答える