複数のインスタンスを含むアプリケーションをアップグレードする場合は、ビジネス要件に基づいてカナリアリリースまたは段階的リリースを使用して、アプリケーションインスタンスを異なるバージョンにアップグレードできます。 このトピックでは、カナリアのリリース方法について説明します。 このトピックでは、アプリケーションのカナリアリリースを実行する方法と、アプリケーションをロールバックする方法についても説明します。
前提条件
カナリアリリースを実行するアプリケーション内のインスタンスの数が1より大きい。背景情報
カナリアリリースは、元の展開バージョンが使用可能なままである場合に、新しいバージョンのパフォーマンスをテストするために使用される展開方法です。 カナリアリリースは、システムの安定性を確保するのに役立ちます。 カナリアのリリース中に、できるだけ早い機会にエラーを特定して修正できます。
アプリケーションの安定性を確保するために、カナリアリリースのアプリケーションインスタンスの数は、アプリケーションインスタンスの総数の50% を超えることはできません。 残りのアプリケーションインスタンスは、特定のバッチでリリースされます。 アプリケーションインスタンスの最初のバッチがリリースされた後、次のバッチをリリースするかどうかを指定できます。 次のバッチを手動でリリースする前に、新しいバージョンのビジネスデータを収集して、次のバッチをリリースするかどうかを決定できます。
- たとえば、20% のトラフィックを新しいバージョンに転送し、80% のトラフィックを現在のバージョンに転送できます。
- たとえば、特定のユーザーIDによって送信されたリクエストによって生成されたトラフィックを新しいバージョンに転送し、その他のトラフィックを現在のバージョンに転送できます。
カナリアリリース方法は、段階的リリース方法よりもきめ細かいトラフィック制御を提供します。 フェーズリリース方法の詳細については、「アプリケーションのフェーズリリースの実行」をご参照ください。
手順
アプリケーションを再デプロイすると、アプリケーションは再起動されます。 業務中断などの予測できないエラーを防ぐため、オフピーク時にアプリケーションをデプロイすることを推奨します。
SAEコンソールにログインします。
左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。 上部のナビゲーションバーで、リージョンを選択します。 次に、アプリケーションの名前をクリックします。
の右上隅に基本情報ページをクリックします。アプリケーションのデプロイ.
配置パラメーターを設定します。
説明アプリケーションのデプロイ方法は、アプリケーションに対して初めて選択したデプロイ方法に基づいています。 選択した方法に基づいてパラメーターを設定します。
WARパッケージを使用したデプロイ: 別のWARパッケージをアップロードするか、新しくデプロイされたWARパッケージのパスを入力し、ランタイム環境およびその他の設定を構成します。
JARパッケージを使用したデプロイ: 別のJARパッケージをアップロードするか、新しくデプロイされたJARパッケージのパスを入力し、ランタイム環境およびその他の設定を構成します。
ZIPパッケージを使用したデプロイ: 別のZIPパッケージをアップロードするか、新しくデプロイされたZIPパッケージのパスを入力し、ランタイム環境およびその他の設定を構成します。
イメージ: [イメージの設定] セクションで、[イメージの変更] をクリックします。 [イメージの変更] パネルで、別のイメージリポジトリまたはイメージバージョンを選択します。
- [リリースポリシーの設定] セクションで、カナリアリリースを設定します。 下表に、各パラメーターを説明します。
パラメーター 説明 リリースポリシー [カナリアリリース] を選択します。 Canaryリリースのインスタンス カナリアリリースを実行するインスタンスの数。 カナリアリリース後の残りのバッチ カナリアリリース後に残りのインスタンスをリリースするバッチの数。 バッチモード このパラメーターは、Canaryリリース後の残りのバッチパラメーターを1より大きい値に設定した場合に必要です。 [自動] または [手動] を選択します。 バッチ間の間隔 このパラメーターは、バッチモードパラメーターを自動に設定した場合に必要です。 単位は分です。 有効な値: 0 ~ 30。 バッチ内の間隔 各バッチ内のアプリケーションインスタンスの数が1より大きい場合に、バッチ内のアプリケーションインスタンスがデプロイされる時間間隔。 単位は秒です。 最小使用可能インスタンス ローリングアップグレードごとに使用可能なインスタンスの最小数。
[番号]: 使用可能なインスタンスの最小数を入力します。 [システム推奨値の使用] を選択した場合、使用可能なインスタンスの最小数は既存のインスタンス数の25% に設定されます。
比率で: パーセンテージを入力します。
説明アプリケーションのデプロイおよびロールバック中に、少なくとも1つのインスタンスが使用可能であることを確認します。 これにより、ビジネスの継続性が確保されます。 値を0に設定すると、アプリケーションのアップグレード時に業務の中断が発生します。
パーセンテージを指定した場合、使用可能なインスタンスの最小数は最も近い整数に切り上げられます。 たとえば、5つのインスタンスが使用可能で、25% を指定します。 この場合、利用可能なインスタンスの最小数は2です。
マイクロサービスのカナリアリリースルールの有効化 Spring CloudまたはDubboアプリケーション用に作成したカナリアリリースルール。 - オプション: ビジネス要件に基づいて詳細設定を構成します。
- 設定後、をクリックします。確認.
- 次のいずれかの方法で、設定が有効かどうかを確認します。
- 方法1: [レコードの変更] ページで、アプリケーションの変更の詳細とリリースステータスを表示します。 すべてのバッチが実行されると、アプリケーションはアップグレードされます。
- 方法2: [基本情報] ページで、[インスタンスのデプロイ情報] タブをクリックして、インスタンスのステータスを表示します。 [ステータス] 列に [実行中] が表示され、インスタンスのバージョンがV2に変更された場合、アプリケーションはデプロイされます。
アプリケーションをロールバックする
カナリアリリースまたは段階的リリース方法を使用してアプリケーションのインスタンスをアップグレードするときに、1つ以上のインスタンスがアップグレードされていない場合、アプリケーションのアップグレードステータスはExecutingです。
例外によりアプリケーションインスタンスの最初のリリースバッチに対して応答が返されない場合は、[詳細の変更] ページで [今すぐロールバック] をクリックして、アップグレードされたインスタンスを以前のバージョンにロールバックし、アップグレード前のアプリケーション設定を元の設定に復元します。
アプリケーション変更プロセス中に例外が発生したためにアプリケーションのアップグレードに失敗した場合 (たとえば、デプロイメントパッケージが使用できない、またはヘルスチェックが失敗した場合) 、SAEはアプリケーションを停止し、アプリケーションをロールバックします。
SAEのアプリケーションのアップグレードプロセスは、完了するまでに約30分かかります。 アップグレードがタイムアウトすると、SAEはタイムアウト例外を報告し、変更プロセスを停止します。 この場合、リリースプロセスを手動で終了し、[詳細の変更] ページでアプリケーションをロールバックする必要があります。
関連ドキュメント
次の表に、SAEにアプリケーションをデプロイした後にアプリケーションで実行できる操作を示します。
操作 | 関連ドキュメント |
アプリケーションの更新、起動、停止、削除、アプリケーションのインスタンスのスケールインまたはスケールアウトなどのライフサイクル管理操作 | |
アプリケーションの自動スケーリングポリシーの設定、Server Load Balancer (SLB) インスタンスのアプリケーションへのバインド、バッチでのアプリケーションの起動または停止などのパフォーマンス最適化操作 | |
ログの管理、モニタリング設定の構成、アプリケーションイベントの表示、変更レコードの表示など、アプリケーションのステータスベースの操作 |