このページの本文へ

Web App、マネージドMySQL、Azure DevOpsで実現するAzure PaaSのLAMP

オンプレLAMP環境を低コストで高可用なAzure PaaSへ移行しよう!

2018年12月19日 08時00分更新

文● 羽野三千世/TECH.ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

2.モダンなWebアプリ実行環境を数十秒で構築する「Azure Web App on Linux」

 次に、Azure Web App on Linuxの概要と作成方法ついて、Azure TSPの服部佑樹氏がデモで解説した。

日本マイクロソフト Azureアプリケーション開発 技術営業部 テクノロジーソリューションプロフェッショナル 服部佑樹氏

 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)。

図2-2 App Serviceプラン

 「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スタック向けなど、用途ごとに推奨されるプランが用意されている。

図2-2 App Serviceプラン

 「ランタイムスタック」で使用する言語を選択。最後に「作成」ボタンを押すと、20秒ほどでApp Serviceインスタンスのリソースとその上のWeb Appのリソースが立ち上がる(図2-3)。

図2-3 新規作成されたWeb App

 作成された空のWeb AppにWebサイトをデプロイする。Web Appでは、FTPやGitでアプリケーションをデプロイできるようになっており、Gitを使う場合は次に説明するCI/CDツールのAzure DevOps、オープンソースのJenkinsなどを使ってのデプロイが可能だ。今回のデモではライトに、Web AppがホストするローカルのGitでアプリケーションをデプロイした。

図2-4 Web AppのローカルのGitからアプリケーションをデプロイ

2-2.ホストしたWebアプリケーションへの「認証」設定

 Web Appは、作成したアプリケーションに対する認証を簡単に設定できる機能を備えている。Web Appの設定メニューにある「認証/承認」ページ(図2-5)で「App Service認証」をONにすると、ホストしたWebアプリケーションのエンドポイントに対して、Azure Active Directoryでの認証や、Facebook認証、Google認証などを設定することができる。

図2-5 「認証/承認」ページでWeb AppにホストしたWebアプリケーションへの各種認証を設定できる

2-3.Web Appの自動スケールアウト

 「Web Appでは、スケールイン、スケールアウトがとても簡単です」と服部氏。「スケールアウト」ページ(図2-6)でスライダーを動かして「保存」するだけで、数秒でインスタンス数が増減する。

図2-6 Web Appのスケールアウト

 さらに、自動スケールを有効化すると、Web Appのメトリックスを自動取得し、指定したルールベースで自動スケールアウトできるようになる。

図2-7 Web Appの自動スケールアウトのルール設定

2-4.Web Appの「スロット」

 Web Appに展開したWebアプリケーションの運用を強力に支援する機能に「デプロイスロット」がある。これは、プロダクション環境のスロットと、複数のステージング環境のスロットを同じWeb Appの枠組みの中にホストする仕組み。

図2-8 Web Appの「デプロイスロット」

 アプリケーションの更新をする際に、新しいアプリケーションをステージングのスロットに展開しておき、本番環境のスロットとエンドポイントを切り替えて入れ替えることで(Blue Green Deployment)、ゼロダウンタイムリリースを可能にする。スロットを複数作ってアプリケーションのバージョン管理をすることもできる。

Web AppのBlue Green Deployment

* * *

 このようにWeb Appは、WindowsやLinuxベースのWebアプリケーションホスティング環境を数十秒で構築し、自動スケール、Azure Active Directoryなどによる認証などを簡単に設定できるサービスであり、LAMPスタックの構築と運用の負荷を劇的に低減する。さらに、Blue Green Deploymentの仕組みを持ち、次に説明するCI/CDツールと組み合わせることで、LAMPスタックのDevOpsを手軽に実現する。

■関連サイト

カテゴリートップへ

  • 角川アスキー総合研究所
  • アスキーカード