Azure Web Appとは
Azure Web AppとはAzureが提供しているPaaSの一つです。 その名の通りWebアプリを乗せるために適したPaaSで、負荷分散や自動スケーリング、またGit等を利用した継続的デプロイなどの機能も提供しています。
対応している言語が2019/1/20現在で以下のようになっています。
WordPressをPaaSに乗せる上での課題
WordPressに限らないのですが、PaaSにWebアプリを乗せるときにはWebアプリ自体を「ステートレス」にしないといけません。 ステートレスとはその名の通り状態を持たないようにすることで、WordPressの例でいうと管理画面からアップロードする写真やインストールするプラグインがそれに値します。
PaaSはスケールアウトとスケールインといって、インスタンスを増やしたり減らしたり出来ることが大きな魅力の一つです。 しかし一つのサーバーの中に画像やプラグインのファイルが配置されていると他のサーバーからそのファイルが参照できないためにスケールアウトできません。
そのためPaaSにWordPressを乗せる場合には画像を専用サービス(例: S3)に送信したり、プラグインをgit管理して管理画面からは更新やインストールをしないようにするなどの運用にする必要があります。
しかし、画像をS3にアップロードするように修正するのも工数がかかりますし、プラグインをgit管理する場合はプラグインのインストールを開発チームが行わないといけなくなります。
Azure Web Appの何がWordPressに適しているのか?
Azure Web Appは状態があるWebアプリでもスケールアウトすることができる特徴があり、そのためWordPressに乗せるのに特別な改修をする必要がありません。
利用者側が気にすることはないですが、Azure Web Appの内部はざっくりいうとWeb WorkersとFile Workersに分かれています。
Web Workersが実際にリクエストを処理しプログラムが動作するサーバーになります。スケールアウトをしてインスタンス数を増やすとこのWeb Workersの数が増えます。
File Serversはhtmlやjs、画像やデプロイされるコードなどのファイル類が配置されているサーバーになります。これはAzure Storage Blobsがマウントされており、Web WorkersはFile Serversにnetwork driver越しにアクセスしています。
例えばインスタンスが3つに設定されたWebAppに載せたWordPress 上に画像をアップロードされると、プログラムレベルではサーバーのローカルディスクに保存しているように見えますがネットワークドライバー越しにFile Serverに保存されます。そのファイルを3つのWeb Serversから参照できるのでインスタンス数を増やしても減らしても大丈夫というわけです。
というわけで、もしWordPressのサイトをクラウドにのせたい場合はいつもはAWSを使っている方もぜひAzure WebAppを候補にしてみてください。