AzurePaaS研究サイト

~理解しずらい情報をシンプルにお伝えします~

AppService/Functions のスロット(スワップ)機能とは(本番環境をダウンタイムなしで切り替え)

スロット(スワップ)機能

 
スロット(スワップ)機能とは、ダウンタウンなしで最新版のアプリケーションをリリースできる機能になります。
 
Azure 内部では何をやっているかというと、クライアント側から受信したアプリケーションへのリクエストデータについて、ロードバランサ(LB)から送る先をアプリ A からアプリ B に切り替えるだけなので、ダウンタウンなしで切り替えられているという仕組みになっています。
 

スワップ(切り替え)の実行例

 
以下2つのバージョンのアプリケーションがあるとします。
 
(1)本番リリース用のアプリケーション Ver.1(本番環境で現在実行中)
(2)本番リリース用のアプリケーション Ver.2(開発済みの最新版)
 
"https: //test-app.com" について、(1)から(2)への切り替えを例に説明します。
 

STEP
本番環境 Ver.2 に最新のアプリケーションをデプロイ
https: //test-app.com が本番環境 Ver.1 で動作中
STEP
本番環境 Ver.2 で動作確認
https: //test-app.com が本番環境 Ver.1 で動作中
STEP
スワップ(本番環境 Ver.1 スロット ▶ 本番環境 Ver.2 スロット)
https: //test-app.com が本番環境 Ver.2(最新環境)で動作中
STEP
念の為、本番環境 Ver.2 で動作しているアプリケーションを動作確認する
Azure 自体も人の手で作ったシステムなので Azure のスロット機能も失敗する可能性はゼロではありません。良い意味で信用しきらずに、ご自身で運用スロットのアプリケーションに無事に入れ替えられていることを確認しましょう。システム運用をする上で、作業後の動作確認は当然ですよね。

 

「本番環境をダウンタイムなしで切り替えたい」という要望が叶えられる

Azure ユーザは、本番環境をバージョンアップするとき、ダウンタイムなしで切り替えたい。という要望がよくあります。
 
それは、このスロットのスワップ機能で実現することができて、上記手順 [STEP 3] スワップを実施したタイミングでシステムを止めることなく稼働してくれます。先述したとおり、Azure 内部の仕組みとしては、ロードバランサ(LB)の向け先を変えているだけだから、ダウンタウンなしに Azure 上で実行されるアプリケーションを切り替えられる、ということになります。
 
 
「ダウンタイムなし」とは、を説明しておきます。
 
アプリケーションを入れ替え・更新するときに、昔ながらのオンプレ開発だと、「夜中の1時頃にメンテナンス時間を利用者に通知して、1時間ほどのアプリケーション入れ替え・更新作業をして、システム再開する。」というのが昔ながらのやり方だと思います。
 
ですが、今の時代はそんなことをする必要ありません。スワップボタンをポチッと押すだけでアプリケーションが最新に入れ替わる上に、システムが停止する時間もありません。ということで、「ダウンタイムなし」とは、システムが使えない時間が発生しないということです。
 

各スロットはインスタンスを共有している

 
例えば、AppServiceプランでインスタンスが1台で稼働させている場合は、切り替え前のアプリケーションと切り替え後のアプリケーションは、そのインスタンスを各スロットのアプリケーションが共有して使用していることを覚えておいてください。
 

利用者がアプリケーションを使っている最中にスワップしたらどうなるのか

まず、Azure 側の動作としては、クライアントからのリクエストを継続して処理してくれます。スワップ操作したタイミングに Azure 側の処理が終わったタイミングでアプリケーションを入れ替えた後に、Azure 側のキューに溜まっているリクエストを継続して処理してくれます。
 
ただ・・・例えば、申込み機能を削除する場合、利用者が申込み機能を使用している最中に、申込み機能がない状態のバージョンにスワップしてしまうとさすがにエラーが発生します。
 
これは、わかりやすい極端な例をあげましたが、アプリケーションが大幅に更新された場合はスワップ機能に頼らずに、一度システムを止めてメンテナンス期間中にアプリケーションを入れ替えた方がいいと思います。スワップも魔法の機能ではありませんので、アプリケーションにどういう変更があるのかを理解した上でスワップで即時入れ替えを行うのかメンテナンス期間を設けるのかを判断していただければと思います。
 
 
以上です。
 

ご意見・ご要望はこちらへ