1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Azure App Service や Azure Functionsのアプリケーション設定におけるデプロイスロットのチェックの挙動について

Posted at

背景

ステージング環境を設定する-スワップされる設定

↑に記述されているアプリケーション設定のスワップの挙動について、AzureのAppService(WebApps)やAzure Functionsのアプリケーション設定(≒環境変数)に「デプロイスロット」というチェックボックスがどのような作用をするかを検証したときのメモです。

まあ、わかる人は↑のドキュメントを見るだけでわかるかとは思います。。

事前準備

検証用のリソースの作成

ここではApp Serviceを例にします。
まず、App Serviceのリソースを適当に作成して、以下のようなアプリケーション設定をします。

名前 デプロイ スロットの設定
SLOT_OFF ORIGINAL OFF
SLOT_ON ORIGINAL ON

original-slot-01.png

デプロイメントスロットの作成

前項で作成したApp Serviceのリソースのデプロイメントスロットを作成します。
このとき、「次から設定を複製」で作成済みのオリジナル?のスロットを選択することで前項で設定したアプリケーション設定はデプロイスロットにもコピーされます。

create-deploy-slot.png

デプロイスロットのON/OFFによる挙動確認

スロット側のアプリケーション設定値の更新と追加

作成したデプロイスロット側のアプリケーション設定を以下のように更新&追加してみます。

名前 デプロイ スロットの設定 備考
NEW_SLOT_OFF NEW_DEPLOYME NT OFF 追加
NEW_SLOT_ON NEW_DEPLOYMENT ON 追加
SLOT_OFF DEPLOYMENT OFF 変更
SLOT_ON DEPLOYMENT ON 変更

add-and-update-app-settings-on-deploy-slot.png

スワップ前後のアプリケーション設定を確認(本題)

スワップ前

スワップ前は前述の事前準備に記載した状態ですが、比較のための再掲載。

運用スロット
before-swao-ope-slot.png

デプロイスロット
before-swap-deploy-slot.png

スワップ操作

スワップ操作をするときにソースとターゲットの構成設定がどのようになるかを事前にお知らせしてくれる。
これは非常にありがたい機能!!
swap-source-change.png
swap-target-change.png

スワップ後

運用スロット
after-swap-ope-slot.png

  • NEW_SLOT_OFF
    => スワップ前のデプロイスロットの値"NEW_DEPLOYMENT"がスワップされて運用スロットに反映されている
  • NEW_SLOT_ON
    => スワップ前のデプロイスロットで「デプロイスロットの設定」がONなのでスワップされず、運用スロットには存在しない
  • SLOT_OFF
    => スワップ前のデプロイスロットの値"DEPLOYMENT"がスワップされて運用スロットに反映されている
  • SLOT_ON
    => スワップ前の運用スロットで「デプロイスロットの設定」がONなのでスワップされず、もとの"ORIGINAL"のままになっている

デプロイスロット
after-swap-deploy-slot.png

  • NEW_SLOT_OFF
    => スワップ前の運用スロットには存在しないので、スワップされた結果、デプロイスロットには存在しない。
  • NEW_SLOT_ON
    => スワップ前のデプロイスロットで「デプロイスロットの設定」がONなのでスワップされず、スワップ前のデプロイスロットの値"NEW_DEPLOYMENT"のままになっている。
  • SLOT_OFF
    => スワップ前の運用スロットの値"ORIGINAL"がスワップされてデプロイスロットに反映されている
  • SLOT_ON
    => スワップ前のデプロイスロットで「デプロイスロットの設定」がONなのでスワップされず、デプロイスロットで変更したの"DEPOYMENT"のままになっている

まとめ

  • スロット生成時はオリジナル(コピー元)のスロットを指定して構成設定を複製することができる
  • スロット作成後のアプリケーション設定はスロット毎に固有の値となり、共有されているわけではない。
    => つまり、変更・追加する場合は両方のスロットに対して設定しなければならないのでスロットの作成はなるべき、すべての構成設定を終えてからやったほうが良さそう。
  • スワップをするとデプロイスロットのアプリケーション設定が運用スロットに反映される(逆に運用スロットの設定がデプロイスロットに反映される)
    => つまり、アプリケーション設定もスワップされる。
  • アプリケーション設定の「デプロイスロットの設定」にチェックを入れた値に限りスワップされない。
    =>つまり、チェックをONにしておいたアプリケーション設定値はスワップをしてもスワップ前の運用スロットのアプリケーション設定がそのまま残る。

所感

個人的な意見になりますが、この「デプロイスロットの設定」という名前がわかりづらさを冗長している気がします。
ちょっと文字数増えるけど、「デプロイスロット固有の値」とかの方が良い気がします。
せめて、infomationアイコンとかをクリックすると「チェックをするとスロット固有の設定になり、この値はスワップされません」と書いてくれればみんなわかるとおもうだけどなぁ。。

と細かい点ではいろいろ思うところはありますが、総じて言えばこのデプロイスロットという仕組みはとても便利です!!
強いていえば、「App Service プランのサービス レベルが Standard、Premium、または Isolated である場合」しか使えないので、個人でお勉強する場合などでちょっとお試しするのにはハードルが高いのがネック。。

参考リンク

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?