Azure PaaS のメンテナンスについて

API Management のメンテナンス?

Azure というか全体的に Intel CPU が入ってるサーバーでは年始から再起動祭りとなっていました。

マイクロソフト、CPUの脆弱性対策でAzureの計画メンテを前倒し、全リージョンの仮想マシンを今朝から強制再起動。Googleは対策済みと発表 - Publickey

ちょうど今日(1/4)19時頃 API Management を触っていたのですが、15分ほどサービスが停止していて使えないタイミングがありました。

f:id:khei-fuji:20180104193004p:plain

デプロイしていた API Management は Developer Tier だったため、SLA はありません。
料金 - API Management | Microsoft Azure

確信はありませんが、もしかすると今回のメンテナンスによる再起動だったかもしれません。
という出来事から PaaS に思いを馳せていました。

PaaS のメンテナンスについて

Azure では IaaS メンテナンスでは、その上で稼働している PaaS のサービスについてメンテナンスのアナウンスは来ません。
これは PaaS のサービスは SLA の範囲内で稼働する設計になっているためです。

今回の API Management は Developer より上の Tier では SLA が設定されています。
アーキテクチャを調べてませんが、Azure の可用性セットで組まれて冗長化されたサーバーが同時に再起動しないようにしているのでしょう。

他にも例を挙げると、Application Gateway は1インスタンスのみで動かすと、VM再起動のタイミングでサービス停止します。
高可用性を求める場合は2インスタンス以上のデプロイをするものとされています。

Application Gateway に関してよく寄せられる質問 | Microsoft Docs

では PaaS にはメンテナンスがないのかというと、そういうわけでもありません。
たとえば機能の変更によるアナウンスがあります。
App Service で PHP 5.5 をサポート終了するときはこういったアナウンスが出ています。
Retirement of the PHP 5.5 runtime from App Service

これはアプリケーションレイヤーで対応が必要になる場合があります。
(もっとも IaaS であってもサポート終了するミドルウェアには追随していくものでしょうが・・・)

まとめ

PaaS ではメンテナンスというよりは強制的なマイグレーションが発生します。
サービスも多く学習コストがかかりますが、一つ一つのコストは低めに作られているので、サービスに合わせて取り入れていきたいものです。