【Microsoft Azure】AppServiceのDeployment Slotを使ってダウンタイムなしでアプリをリリースする

こんにちは!

本日は、App ServiceのDeployment Slot機能を使って、アプリの新バージョンと旧バージョンを素早く切り替えられるようにしていきたいと思います。

App Service上にReactアプリケーションを作成

言語は何でも良いのですが、今回はありもののReactプロジェクトを利用しています。

こちらは、こちらの記事を参考にしていただければと思います。

App Service上にステージングスロットを作成

*ここから先のスクリーンショットのApp Service名は上の別記事で作成したアプリの名前とは異なりますが、読み替えていただけると幸いです。

ステージングスロットは、App Service PlanのStandard以上のTierで利用可能です。Free/Shared/Basicを利用の方はプランのスケールアップが必要です。

ステージングスロットの作成は、以下画面から数クリックで完了します。

今回は、Stagingという名前のスロットを追加しました。この時、スロット追加のオプションで、本番スロットのApp Service設定を引き継ぐことができるので、これも指定しておきます。

作成したスロットをクリックすると、スタートアップコマンドなどの起動コマンドが引き継がれていることが確認できます。

続けて、ステージングスロット側のデプロイセンターでも、デプロイ対象のアプリを指定しておきます。

今回は、同じリポジトリの別ブランチ(”Next-Release”という名前)を指定しています。(”Next Release”ブランチのコードは、masterブランチのApp.jsの一部を書き換えただけのものです)

Next-releaseブランチのコード変更点

ステージングスロットのURLを開くと、next-releaseブランチでの変更点が反映されていますね。

ちなみに、App Serviceプランから見ると、オリジナルのWebAppと、Stagingスロットの2つがアプリとして認識されています。

また、本番環境とステージング環境に割り当てられたPublic IPアドレスは、同じものが割り当てられています。

本番
ステージング

スロットのスワップを実行してみる

ステージングスロットを準備できたところで、いよいよスワップを試してみたいと思います。

ステージング環境を本番環境に入れ替えるということで、ソースをステージング、ターゲットを本番環境に設定します。

公式ドキュメントによると、スワップは、内部的に以下の流れで進んでいきます。つまり、アプリケーションのリリースに伴うダウンタイムをなくすため、ソースターゲットで1~4の準備を行っている間はターゲットスロットは稼働させておき、準備完了した段階ではじめてルーティングを入れ替えています。

  • 1,ターゲットスロットからソーススロットへの設定の移植
  • 2,ソーススロットの全てのインスタンスの再起動
  • 3,(ローカルキャッシュが有効になっている場合)ローカルキャッシュのクリア&再起動
  • 4,ソーススロットのアプリケーションのウォームアップ
  • 5,ウォームアップが完了したら、ソーススロットとターゲットスロットのルーティング規則の入れ替え

スロットが完了したら、もう一度本番用URLをブラウザでたたいてみます。すると、ステージングスロットのアプリケーションがデプロイされていますね!無事スワップが完了しました!

本番URL

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。

ABOUT US

Yuu113
初めまして。Yuu113と申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。