サービス更新を検証して、実稼働 API Management インスタンスの中断を回避する
適用対象: すべての API Management レベル
"クラウドの価値提案の 1 つは、それが継続的に改善されており、新機能だけでなく、セキュリティや信頼性の拡張機能を提供していることです。 ただし、プラットフォームが継続的に進化しているため、変更は避けられません。」 - Mark Russinovich、CTO、Azure
Microsoft では、安全なデプロイ プラクティス フレームワークを使用してサービス更新を徹底的にテスト、監視、検証してから、段階的なアプローチを使用してそれらを Azure リージョンにデプロイします。 それでも、API Management インスタンスに到達するサービス更新により、実稼働ワークロードに予期しないリスクが導入され、API コンシューマーが中断される可能性があります。 更新プログラムを実稼働 API Management 環境に到達する前に検証することでリスクを軽減するために、安全なデプロイ アプローチをどのように適用できるかについて説明します。
Azure の安全なデプロイ プラクティス フレームワークとは
Azure では、安全なデプロイ プラクティス (SDP) フレームワークを使用して、一連の実稼働前および実稼働手順で特定のサービスの更新プログラムをデプロイします。 このフレームワークは、次の図に簡略化された形式で示されています。
デプロイ フェーズには、次のものが含まれます。
開発とテスト - Azure エンジニアリング チームは、厳しい品質ゲートを使用して、開発およびテスト環境でサービスの更新プログラムを反復処理して検証します。
これらの段階での回帰に対する慎重な監視、検証、広範囲にわたるテストによって、ソフトウェアの変更が実稼働環境での顧客の Azure ワークロードに悪影響を与えるリスクが軽減されます。
実稼働 - その後、実稼働可能な更新プログラムが、段階的な実稼働ロールアウト パイプラインで顧客の Azure サービスに導入されます。
最初に、カナリア リージョンが更新プログラムを受信します。 公式には EUAP (Early Updates Access Programs) リージョンと呼ばれるこれらのリージョンは、シナリオを Azure エンジニアリング チームおよび招待された顧客で大規模に検証できる完全な実稼働レベルの環境です。 現在、Azure カナリア リージョンは米国東部 2 EUAP と米国中部 EUAP です。
注意
EUAP リージョンは実稼働可能ですが、容量は制限される可能性があるほか、Azure エンジニアリング チームによるディザスター リカバリーの訓練やその他のテストのためにサービスが中断される場合があります。
その次に、SLA による実稼働環境での使用のためにサポートされているパイロット リージョンが更新プログラムを受信します。 現在、パイロット リージョンは米国中西部です。
パイロット リージョンでの観察期間の後、サービス更新は徐々に残りのリージョンに導入され、顧客の露出が広がっていきます。
更新プログラムを API Management インスタンスに安全にデプロイするにはどうすればよいですか?
Azure の顧客は、サービス更新をいつ API Management インスタンスに適用するかを制御できず、更新プログラムは自動的に適用されます。 ただし、リスクを最小限に抑えるために、実稼働インスタンスを実行するリージョンの前に更新プログラムを受信するリージョンに重要度の低いインスタンスをデプロイする戦略を使用できます。
最初に更新プログラムを受信するインスタンスは事実上、カナリア デプロイです。
ベースラインの実稼働インスタンスに対する更新プログラムによって発生する問題を監視するには、このインスタンスを使用します。 監視により、実稼働サービスが影響を受ける前に、潜在的な回帰を識別して軽減します。
重要
カナリア インスタンスで更新プロセスに関連する問題が発生した場合は、できるだけ早く Azure サポート リクエストを開いてください。
カナリア デプロイを検証した後は、後で実稼働インスタンスに到達する更新プログラムをより信頼できるようになります。
この記事の後の方にある、API Management のカナリア デプロイを作成して使用するための戦略の例を参照してください。
インスタンスがいつ更新プログラムを受信するかを認識する
最初の手順として、予測されるサービス更新または進行中のサービス更新について確実に認識してください。
API Management の更新は、API Management GitHub リポジトリで発表されます。 更新プログラムのロールアウトがいつ開始されるかを認識するために、このリポジトリからの通知の受信をサブスクライブすることをお勧めします。
Azure アクティビティ ログを使用して、API Management インスタンスで実行されるサービス更新を監視します。 "予定メンテナンス" イベントは、更新が開始されたときに出力されます。
通知を自動的に受信するには、アクティビティ ログでアラートを設定します。
更新プログラムは、まず Azure EUAP リージョン、次に米国中西部、その後の残りのリージョンでのいくつかのフェーズという各フェーズでリージョンにロールアウトされます。 後のデプロイ フェーズで更新されるリージョンのシーケンスは、サービスによって異なります。 実稼働ロールアウトの各フェーズの間に少なくとも 24 時間を予測できます。
1 つのリージョン内では、Premium レベルの API Management インスタンスが、その他のサービス レベルのインスタンスの数時間後に更新プログラムを受信します。
ヒント
API Management インスタンスが複数の場所 (リージョン) にデプロイされている場合、更新のタイミングは、そのインスタンスのプライマリの場所によって決定されます。
カナリア デプロイ戦略
API Management インスタンスを、実稼働インスタンスより前に更新プログラムを受信するカナリア デプロイとして使用するための戦略の例を次に示します。
EUAP リージョンにデプロイする - Azure EUAP リージョンにアクセスできる場合は、そこでインスタンスを使用して、実稼働パイプラインにリリースされた直後の更新プログラムを検証できます。 「Azure リージョンのアクセス リクエストのプロセス」を参照してください。
注意
EUAP リージョンでの容量の制約のために、必要に応じて API Management インスタンスをスケーリングできない場合があります。
パイロット リージョンにデプロイする - 米国中西部でインスタンスを使用して実稼働環境をシミュレートするか、またはそれを重要度の低い API トラフィックに対して実稼働環境で使用します。 このリージョンは EUAP リージョンの後に更新プログラムを受信しますが、そこにあるデプロイの方が、サービス構成に固有の回帰を識別する可能性は高くなります。
1 つのリージョンに重複したインスタンスをデプロイする - 実稼働ワークロードが特定のリージョン内の Premium レベルのインスタンスである場合は、同様に構成されたインスタンスを、その前に更新プログラムを受信するより低いレベルにデプロイすることを検討してください。 たとえば、更新プログラムを検証するために、Developer レベルに実稼働前インスタンスを構成します。