今回は、Azureのサービス開始当初から提供されている「Azureクラウドサービス(Cloud Services)」について紹介します。Azureクラウドサービスは、Azureの「サービスとしてのプラットフォーム(Platform as a Service:PaaS)」の1つであり、「Azureストレージ」や「SQLデータベース」(当時の名称はSQL Azure)と同様にAzureのサービス開始当初から提供されている最も古いサービスです。
クラウドサービスでPaaSの基本を知る
クラウドサービスはもともと、インターネット上のユーザー向けにWebアプリケーションやWebサービスとして.NETアプリケーションをデプロイするためのプラットフォームとして登場しました。現在では、.NETアプリケーションのほか、Node.js、PHP、Pythonなど、さまざまな種類のアプリケーションの作成とデプロイも可能です。
クラウドサービスは、IISを使用してフロントエンドを提供する「Webロール(Web Role)」と、ビジネスロジックなどバックエンドの処理を実行する「Workerロール(Worker Role)」からなり、これにAzureストレージやSQLデータベースを組み合わせてWebアプリケーションやサービスのためのプラットフォームとして機能します(図1)。
前回までは「サービスとしてのインフラストラクチャ(Infrastructure as a Service:IaaS)」である「Azure仮想マシン」について説明してきましたが、もともとはクラウドサービスのVMロールとして登場し、その後、IaaSとして分離されました。
アプリケーション開発者は、Visual Studioなどで開発したアプリケーションを開発ツールから直接、またはパッケージファイルとしてアップロードして、ステージング環境または本番環境にデプロイすることができます。通常はステージング環境にデプロイしてテストした後に、本番環境に切り替えます。
仮想マシンの管理はクラウドの自動管理に任せることができる
PaaSであるクラウドサービスにデプロイしたアプリケーションは、ロールごとに自動作成される1台以上のWindows Server仮想マシンのインスタンス上に展開され、実行されます。IaaSであるAzure仮想マシンとの最大の違いは、Windows Server OSやミドルウェアの構成や更新管理が不要であり、アプリケーションの開発に専念できることです。トラフィックの急増に対して自動的にスケールアウトすることもできますし、最新のプラットフォームへの移行も簡単な手順で行えます。
WebロールおよびWorkerロールを実行する仮想マシンでは、アーキテクチャの違いやアプリケーションの前提(.NET Frameworkのバージョンなど)に応じて、Windows Server 2008 R2ベースの「Azure Guest OSファミリ2」からWindows Server 2019ベースの最新の「Azure Guest OSファミリ6」(現在の公式サポート対象は、Windows Server 2016ベースの「Azure Guest OSファミリ5」以降)の5つのOSファミリから選択できます。
各OSファミリにはセキュリティパッチが適用された更新バージョンが毎月リリースされ、既定では自動的にインスタンスが更新されます(最新の2更新バージョンが公式サポート)。IaaSのAzure仮想マシンではパッチ管理は利用者側の責任で行う必要がありますが、PaaSではそれが不要です。
新しいAzure Guest OSファミリへの移行は、ステージング環境にデプロイして互換性をテストします。互換性に問題がなければ、OSファミリを「自動」に切り替えることで、自動的にアップグレードさせることも可能です。
クラウドサービスのWebロールやWorkerロールに対するリモートデスクトップ接続を有効にすることも可能ですが、この目的はデプロイしたアプリケーションの動作確認のためのものです。例えば、ローカルディスクに記録されているログファイルやイベントログを確認したり、ローカルのWebブラウザーで接続したときに表示されるHTTPエラーを参照したりできます。
より新しく、より最適なPaaSサービスの利用も選択肢に
クラウドサービスを知ることは、PaaSについて学ぶのに良い教材になりますし、実際にクラウドサービスを用いて、スケーラブルで信頼性の高いWebアプリやサービスを提供することができます。次回はVisual Studio Communityを使用して、アプリケーション開発を無料(クラウドサービスへのデプロイは課金対象)で試してみる方法について紹介します。
クラウドサービスはAzureのPaaSの主要サービスですが、Azureリソースマネージャー(ARM)に対応していないレガシ(クラシック)なサービスでもあります。現在は、より新しいPaaSサービスで代替可能で、そちらのほうが利点が多い場合があります。
例えば、Webロールは「Azure App Service」を利用したほうが簡単ですし、さまざまなオープンソースソフトウェア環境を利用可能です。Workerロールは「Azure WebJobs」や「Azure Functions」で代替できるでしょう。クラウドサービスを将来置き換えることになるであろう、新しい技術として「Service Fabric」があります。
Service FabricはWindowsおよびLinuxの物理/仮想環境に展開できる汎用的なプラットフォームですが、これをAuzreからフルマネージドサービスとして提供する「Service Fabric Mesh」がプレビューとして利用可能です。この他に、「Azure Container Instances」や「Azure Kubernets Service」を使用した、コンテナ技術に基づいたアプリケーション開発も可能です。
著者プロフィール
山市良
Web媒体、IT系雑誌、書籍を中心に執筆活動を行っているテクニカルフリーライター。主にマイクロソフトの製品やサービスの情報、新しいテクノロジを分かりやすく、正確に読者に伝えるとともに、利用現場で役立つ管理テクニックやトラブルシューティングを得意とする。2008年10月よりMicrosoft MVP - Cloud and Datacenter Management(旧カテゴリ: Hyper-V)を連続受賞。ブログはこちら。
主な著書・訳書
「インサイドWindows 第7版 上」(訳書、日経BP社、2018年)、「Windows Sysinternals徹底解説 改定新版」(訳書、日経BP社、2017年)、「Windows Server 2016テクノロジ入門 完全版」(日経BP社、2016年)、「Windows Server 2012 R2テクノロジ入門」(日経BP社、2014年)などがある。