Elastic Algorithm Service (EAS) は、サービス変更を安全にロールアウトし、本番トラフィックで新しいバージョンを検証し、問題が発生した場合に迅速にロールバックするために、リリース戦略、カナリアトラフィックのシフト、バージョン管理を提供します。
概要
リリース管理は、サービス変更 (新しいイメージ、パラメーター、モデルなど) を本番環境にロールアウトするプロセスをカバーします。次の 3 つの機能が含まれます:
変更を本番環境に公開:リリース戦略 (ローリング、バッチ、または一時停止) でアップデートのペースを制御し、リクエストの中断を回避します。デフォルトでは、ローリングアップデートによりレプリカが段階的に置き換えられ、グレースフルシャットダウンが処理中のリクエストをドレインします。数十~数百のレプリカを持つサービスで、チェックポイントを挟みながら段階的にロールアウトする必要がある場合は、より細かな制御のためにアップデートプランを使用します。
本番トラフィックで検証:本番サービスとカナリアサービスを同じサービスグループに割り当て、比率に基づいて実トラフィックを分割し、カナリアサービスが正常であることを確認できたら、すべてのトラフィックを段階的にカナリアサービス へシフトします。
履歴の表示とロールバック:アップデートのたびにバージョンスナップショットが作成されます。デプロイ履歴を表示し、バージョンを比較し、問題が発生した場合は任意の以前のバージョン へロールバックできます。
本番環境への変更の公開
変更のリスクレベルに応じて、リリース戦略を選択します:
ローリングアップデート (デフォルト): すべてのアップデートの基盤となるメカニズムです。システムは、
max_surge(望ましいレプリカ数を超えて許可されるレプリカ数) およびmax_unavailable(利用不可にできるレプリカの最大数) に基づいて、新しいレプリカを段階的に作成し、古いレプリカを置き換えます。古いレプリカは、実行中のリクエストをドレイニングした後、正常にシャットダウンします。これは、サービスの再起動およびパラメーター更新時のデフォルトの動作です。詳細については、「ローリングアップデートとグレースフルシャットダウン」をご参照ください。アップデートプラン:ローリングアップデートに、バッチ処理と一時停止の機能を追加します。サービスのレプリカが数十~数百あり、バッチ間でビジネスメトリクスを確認しながら段階的に進める必要がある場合は、アップデートプランを使用します。手動と自動のバッチモードの両方をサポートしており、いつでも一時停止、調整、またはロールバックできます。詳細については、「アップデートプラン」をご参照ください。
通常の更新には、デフォルトのローリング戦略を使用してください。大規模、高リスク、または段階的なロールアウトでは、アップデートプランを追加してください。
本番トラフィックによる検証
カナリアリリースは サービスグループ を通じて機能します。本番サービスとカナリアサービスは、レプリカ数またはカスタムウェイトに基づいてトラフィックを分配する単一のアクセスエンドポイントを共有します。まずトラフィックの一部をカナリアサービスにルーティングして正常性を確認し、その後、カナリアサービスがすべてのトラフィックを処理するまで比率を段階的に増やします。詳細については、「サービスグループ」をご参照ください。
履歴の表示とロールバック
推論サービスのリストで対象のサービスを見つけ、バージョン 列の現在のバージョンをクリックして、バージョンリストを開きます。バージョンリストでは、次の操作が可能です:
[デプロイ設定の表示]: イメージ、リソース仕様、環境変数、起動コマンドなど、バージョンのデプロイパラメーターを表示できます。
[作成者の表示]: 監査のために、各変更を行ったユーザーを特定できます。
[バージョン比較]: 2 つのバージョンを選択し、それらのデプロイ設定を比較して変更点を特定できます。これにより、ロールバック前に影響を評価したり、更新後の問題をトラブルシューティングしたりできます。
[このバージョンにロールバック]: 選択したバージョンのデプロイ設定にサービスを復元します。現在のバージョンではボタンがグレーアウトされます。
ロールバックについて、次の 2 点に注意してください:
バージョン間の互換性:ロールバックには、対象バージョンのイメージ、モデルファイル、環境変数などのリソースが引き続き利用可能である必要があります。イメージが削除されている場合や外部依存関係が変更されている場合、ロールバックが失敗したり、サービスに問題が発生したりする可能性があります。
2 つのロールバック方法の使い分け:
アップデートが完全に完了しており、古いバージョンに戻す必要がある場合は、バージョンリストのロールバックを使用してください。これはローリングアップデート戦略に従い、アップデートプランの影響を受けません。
アップデートが進行中 (レプリカの一部は切り替わっているがすべてではない) の場合で、サービスでアップデートプランが有効になっている場合は、代わりにアップデートプランのロールバック (対象レプリカ数を 0 に設定した手動バッチ処理) を使用してください。すでにアップデート済みのレプリカが段階的にロールバックされるため、より高速です。