お客様にダウンタイムなしのアップグレードを提供するために、ブルーグリーンの展開戦略を分析しています。データストアとしてOracleを使用するエンタープライズJavaベースのモノリシックWebアプリケーションがあります。専門家の意見を得るためにいくつかの課題があります。
すべてのデータベースオブジェクトタイプ(プロシージャ、テーブル、インデックス、制約など)では、特別な処理が必要です。それらのほとんどは ここ と記述されています。最終的には、ユースケースごとに細かいコード処理が必要になります。
ブルーグリーンの展開では、アクティブユーザーのWebセッションをどのように処理しますか?セッション終了イベントを検出しますか?
このようなアプローチの実装作業には、時間(約1年の投稿が示唆するとおり)と、それが正しく行われるように細心の注意が必要です。これに代わるシンプルで優れた方法はありますか?
ありがとう!
ロードバランサー
2番目のポイントについては、適切なロードバランサーを使用します。トラフィックの一部をシフトして、最初に新しい展開を証明し、次に徐々に展開することができます。また、迅速なバックアウト戦略も可能になります。
データベースのバージョン管理
これには2つの方法があります。
最初の方法では、アプリケーションをデータ表現から遠ざけ、すべてのデータ転送をストアドプロシージャ経由で移動することは理にかなっています。これにより、転送可能なクリーンなインターフェースが保証されます。これにより、移行パスは次のようになります。
これが複雑すぎるように聞こえる場合、またはライブデータの操作を行うことが危険すぎる場合は、信頼できるものの定義を別のデータソースに移動することが必要な場合があります。これにより、SQLデータストアの内容は問題になりません(イベントログを格納している場合を除き、その部分を除きます)。デプロイメントは次のようになります。
アプリケーションは、最初にイベントログでデータをダブル入力する必要があります。次に、イベントログを読み取り、関連するテーブルデータを更新する必要があります。プラス面では、これにより、追加の作業を犠牲にして、いくつかのバージョンの製品が一時的に一緒に動作することが可能になります。