Web App、マネージドMySQL、Azure DevOpsで実現するAzure PaaSのLAMP
オンプレLAMP環境を低コストで高可用なAzure PaaSへ移行しよう!
2018年12月19日 08時00分更新
2.モダンなWebアプリ実行環境を数十秒で構築する「Azure Web App on Linux」
次に、Azure Web App on Linuxの概要と作成方法ついて、Azure TSPの服部佑樹氏がデモで解説した。
Azure Web AppはWebサイトやWebアプリケーションをホスティングするのに最適化されたフルマネージドのPaaS。Webホスティング環境とバックエンドのMySQLを一度に作成し、そこにAzure Marketplaceから「スマホにアプリを入れる感覚で」(服部氏)、WordPressなどを展開できる便利なサービスだ。Windows版とLinux版があり、Dockerコンテナーアプリケーションのホスティングにも対応する。
「マイクロソフトのPaaSはC#や.NETしか使えないと思われている人もいるようですが、Web AppはC#、Java、PHP、Python、nodeなど多種多様な言語に対応しています。Dockerコンテナがホストできるので、実際はコンテナにのるものであればどんな言語でも大丈夫です」と服部氏。Azure Web Appも、前述のMySQLのPaaSと同様に、インフラの可用性設計やアップデート、セキュリティといった非機能要件をAzureに預けてWebサイトを運用することができる。自動スケーリングや認証の設定、スロットの用意、リモートデバックなども簡単だ。
2-1.Web Appの作成
さっそく、デモでAzure Web Appを作成していく。AzureポータルのAzure Marketplaceから「Web App」を開き、リソースグループや必要事項を入力する(図2-1)。
「OS」はWindowsとLinuxから選択する。今回はLAMPスタックのセミナーということでLinuxを選択した。
「公開」は、コードデプロイモデル(コード)とDockerモデル(Docker)のどちらかを選択する。「LinuxベースのWeb AppでLinuxのイメージとして提供しているランタイムスタックのみを扱う場合は『コード』を、Pythonの特定のバージョンを使いたいケースなどフレームワークやランタイムのカスタマイズをするときは『Docker』を選択してください」(服部氏)。デモではコードを選択した。
「App Serviceプラン/場所」では、作成するWeb Appをホスティングするハードウェア構成や利用するAzureリージョン、Web Appの機能セットを指定する(図2-2)。Web Appは、Azure App Serviceというサービスの1つであり、App Serviceインスタンスの上にWeb Appを作成する形になる。App Serviceプランでは、App Serviceインスタンスの性能と、その上に展開するWeb Appの必要機能を選択する。LAMPスタック向けなど、用途ごとに推奨されるプランが用意されている。
「ランタイムスタック」で使用する言語を選択。最後に「作成」ボタンを押すと、20秒ほどでApp Serviceインスタンスのリソースとその上のWeb Appのリソースが立ち上がる(図2-3)。
作成された空のWeb AppにWebサイトをデプロイする。Web Appでは、FTPやGitでアプリケーションをデプロイできるようになっており、Gitを使う場合は次に説明するCI/CDツールのAzure DevOps、オープンソースのJenkinsなどを使ってのデプロイが可能だ。今回のデモではライトに、Web AppがホストするローカルのGitでアプリケーションをデプロイした。
2-2.ホストしたWebアプリケーションへの「認証」設定
Web Appは、作成したアプリケーションに対する認証を簡単に設定できる機能を備えている。Web Appの設定メニューにある「認証/承認」ページ(図2-5)で「App Service認証」をONにすると、ホストしたWebアプリケーションのエンドポイントに対して、Azure Active Directoryでの認証や、Facebook認証、Google認証などを設定することができる。
2-3.Web Appの自動スケールアウト
「Web Appでは、スケールイン、スケールアウトがとても簡単です」と服部氏。「スケールアウト」ページ(図2-6)でスライダーを動かして「保存」するだけで、数秒でインスタンス数が増減する。
さらに、自動スケールを有効化すると、Web Appのメトリックスを自動取得し、指定したルールベースで自動スケールアウトできるようになる。
2-4.Web Appの「スロット」
Web Appに展開したWebアプリケーションの運用を強力に支援する機能に「デプロイスロット」がある。これは、プロダクション環境のスロットと、複数のステージング環境のスロットを同じWeb Appの枠組みの中にホストする仕組み。
アプリケーションの更新をする際に、新しいアプリケーションをステージングのスロットに展開しておき、本番環境のスロットとエンドポイントを切り替えて入れ替えることで(Blue Green Deployment)、ゼロダウンタイムリリースを可能にする。スロットを複数作ってアプリケーションのバージョン管理をすることもできる。
* * *
このようにWeb Appは、WindowsやLinuxベースのWebアプリケーションホスティング環境を数十秒で構築し、自動スケール、Azure Active Directoryなどによる認証などを簡単に設定できるサービスであり、LAMPスタックの構築と運用の負荷を劇的に低減する。さらに、Blue Green Deploymentの仕組みを持ち、次に説明するCI/CDツールと組み合わせることで、LAMPスタックのDevOpsを手軽に実現する。