AzurePaaS研究サイト

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

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

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

よくやられていると思われる例で、スロット(スワップ)機能を説明します。
 
まず、以下の2つの環境があるとします。
・本番環境 Ver.1
・本番環境 Ver.2(最新環境)
 
 
そして、"https: //test-app.com" が本番環境 Ver.1 が動作している状態から、本番環境 Ver.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] スワップを実施したタイミングでシステムを一切止めることなく稼働してくれます。
 
「ダウンタイムなし」とは、を説明しておきます。
 
アプリケーションを入れ替え・更新するときに、昔ながらのオンプレ開発だと、「夜中の1時頃にメンテナンス時間を利用者に通知して、1時間ほどのアプリケーション入れ替え・更新作業をして、システム再開する。」というのが昔ながらのやり方だと思います。
 
ですが、今の時代はそんなことをする必要ありません。スワップボタンをポチッと押すだけでアプリケーションが最新に入れ替わる上に、システムが停止する時間もありません。ということで、「ダウンタイムなし」とは、システムが使えない時間が発生しないということです。

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

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