公開日:2024年5月30日最終更新日:
AzureやAWSなどのクラウドサービスの普及により、インフラを用意することなく、思いついたビジネスを迅速かつ低コストでサービス化することが可能になりました。最近ではさらなる効率化を図るために、システム運用者の負担を減らすサーバーレスサービスも普及し始めています。
AzureでもWebアプリケーションを動かすための環境を簡単に構築できるサーバーレスサービスAzure App Serviceが提供されています。本記事では、Azure App Serviceの活用場面がわかるようにサービスの特徴や料金を解説していきます。
目次 <Contents>
Azure App Serviceとは
Azure App Service(以下、App Service)は、Webアプリケーションを動かすのに必要なサーバーリソースやソフトウェアを備えた実行基盤を提供するサーバーレスサービスです。サーバーレスサービスはコストパフォーマンスに優れ、柔軟なシステム構成が採れることから近年注目されているクラウドサービスの一種です。
インフラを自前で用意することなく、簡単な操作でWebアプリケーションの実行環境をクラウド上に構築できます。例えば、仮想マシン上のOSでアプリケーションを動かすには、Webサーバーなど必要なソフトウェアのインストールに加えて、セキュリティ設定などを一から設定しなければなりません。一方のApp Serviceでは、必要な実行環境が予め揃っているため、すぐに開発作業に取り掛かれます。
また、Webアプリケーションのデプロイ方法もFTP/SFTPやGit/GitHub、コンテナに対応しており、既存のプロジェクトでも利用しやすいです。WebサービスやECサイトなどパブリック向けの用途から、セキュアな環境を必要とする社内システムなどプライベート向けの用途まで幅広く利用できます。
Azure App Serviceの特徴
App Serviceは様々なWebアプリケーションに対応できる低コストのサーバーレスサービスで、次の3つの特徴を持っています。
コストパフォーマンスが高いサーバーレスサービス
App Serviceは、サーバーリソースを利用した時間に応じて料金が加算されていく従量課金制のサービスです。メモリやCPU、ディスク容量の性能の高さに応じて段階的に料金が用意されており、運用する中で性能を変更できるので、Webアプリケーションの成長や需要の変化に対応できます。仮想マシンのようにサーバー管理を行う必要がないため、管理コストを抑えることができます。例えば、厳密なサーバー設定が不要な用途や、一時的な動作確認のためのテスト環境などに活用できるでしょう。
また、App ServiceではAzureが用意したドメインや固定IPアドレスが割り当てられるため、デプロイからすぐに公開が可能です。なお、独自ドメインやサーバー証明書を適用することもできるため、サーバー環境からの移設にも対応できます。
様々な言語やフレームワークに対応
App Serviceではランタイムスタックと呼ばれる、よく使われるアプリケーション実行環境が予め定義されており、希望するバージョンを選ぶだけですぐに環境が整います。.NET(VBやC#)をはじめ、Java、Python、PHP、Node.jsなどサーバーサイドで使われるランタイムスタックが揃っています。App Serviceで提供するのは基盤となる実行環境なので、Webアプリケーションを実装するフレームワークやライブラリは開発者側で自由にデプロイできます。
なお、Rubyや旧バージョンの言語などサポートされていないランタイムスタックは、コンテナで実行環境ごとデプロイすることも可能です。また、WordPressやJoomlaなどのコンテンツ管理システム(CMS)もコンテナにまとめてしまえば環境をそのままデプロイできます。
クラウドやオンプレミスとの連携しやすさ
App Serviceは、他のAzureサービスやオンプレミスサーバーとセキュアに接続できます。Azure上でサービス間の連携を許可しておくことで、Webアプリケーションに接続情報などを埋め込む必要がなくなります。
また、プライベート接続向けのEnvironmentプランを選ぶことで、オンプレミスの内部ネットワークとの通信が可能です。AzureのVPSを介したセキュアな環境や高いスループットが要求されるアプリケーションに活用できます。
Azure App Serviceと類似するAzureサービスとの違い
Azureでは、Webアプリケーションをホストできる様々な形態のサービスが提供されています。例えば、App Service以外にも次のようなサーバーレスサービスがあります。
Azure App ContainerやAzure Container Instancesは、コンテナをベースに構成されたアプリケーションのホスティング環境です。複数のコンテナから構成されるケースではAzure App Container、バッチ処理や短期間の高負荷なタスクをこなすケースではAzure Container Instances が適しています。App ServiceはWebアプリケーションのフロントエンド向けのサービスで、必要に応じて他のAzureサービスと連携する構成が採られます。
Azure Functionsは、リクエストに応じて処理を行うイベント駆動型のプログラム実行環境です。App Serviceと違って、処理が実行されている間のみ料金が発生する料金体系なので、処理頻度の少ない用途に向いています。App Serviceは常時稼働させる必要のあるWebサイトやWebサービスに適したソリューションです。
一方でサーバーレスではなく、OS上に直接Webプリケーションをホストできるクラウドサーバーサービスもあります。
Azure Virtual Machine(Azure VM)はOSがインストールされた仮想マシンを提供するサービス(IaaS)です。Webアプリケーションの実行に必要なソフトウェアが予めインストールされているApp Serviceとは提供するサービスが異なります。OSの細かい設定やチューニングが必要な場合はAzure VMのほうが適しているでしょう。
Azure App Serviceの利用料金
App Serviceの利用料金はサーバーリソースやOSの種類によって変わります。従量課金制が採られていますが、1~3年契約することで価格を25~55%ほど削減できます。
下記はApp Serviceのプランごとの利用料金です。Windowsの料金はライセンス込みの料金です。
Freeプラン
プラン名 | CPU | メモリ | ストレージ | 単位時間当たりの料金 (Linux/Windows) |
---|---|---|---|---|
F1 | 60分/日 | 1GB | 1GB | 0円 0円 |
D1 | 240分/日 | 1GB | 1GB | ー 2.407円 |
Basicプラン
プラン名 | コア数 | メモリ | ストレージ | 単位時間当たりの料金 (Linux/Windows) |
---|---|---|---|---|
B1 | 1 | 1.75GB | 10GB | 2.989円 13.920円 |
B2 | 2 | 3.5GB | 10GB | 5.820円 27.839円 |
B3 | 4 | 7GB | 10GB | 11.482円 55.678円 |
Premiumプラン
プラン名 | コア数 | メモリ | ストレージ | 単位時間当たりの料金 (Linux/Windows) |
---|---|---|---|---|
P0v3 | 1 | 4GB | 250GB | 19.267円 34.838円 |
P1v3 | 2 | 8GB | 250GB | 25.596円 54.734円 |
P1mv3 | 2 | 16GB | 250GB | 35.483円 60.648円 |
P2v3 | 4 | 16GB | 250GB | 59.138円 109.467円 |
P3v3 | 8 | 32GB | 250GB | 118.275円 218.934円 |
Environmentプラン
プラン名 | コア数 | メモリ | ストレージ | 単位時間当たりの料金 (Linux/Windows) |
---|---|---|---|---|
I1v2 | 2 | 8GB | 1TB | 65.901円 91.223円 |
I2v2 | 4 | 16GB | 1TB | 131.801円 182.445円 |
I3v2 | 8 | 32GB | 1TB | 263.602円 364.890円 |
なお、上記の表は東日本リージョンの内容で、料金は1ドル157.28円で算出されています。また、プランは一部のみ掲載しており、詳細は価格ページをご覧ください。
Azure App ServiceによるWebアプリケーション作成方法
App Serviceの環境にASP.NETアプリケーションをデプロイする方法を紹介していきます。デプロイにはGitHubを使用しています。
Web Appsの作成
まずはAzureポータルにログインして、App Serviceを作成しましょう。サービスの「コンピューティング」カテゴリから「App Service」を選びます。
次のページで「作成」から「Webアプリ」を選びましょう。
Webアプリの作成ページが開くので、下記の項目を入力します。
- リソースグループ:任意のリソースグループ名を入力します。
- 名前:App Serviceのドメインになる名称を入力します。
- 公開:Webアプリケーションの形態を選びます。今回はコードでデプロイします。
- ランタイムスタック:使用するアプリケーション実行環境を選びます。今回は.NETを使用します。
- オペレーティングシステム:使用するOSを選びます。今回はWindows上で動かします。
- 地域:リージョン(東日本、西日本など)を選びます。
- 価格プラン:App Serviceのプランを選びます。お試しであれば無料のFreeプランを選択しましょう。
また、今回は使用しないため監視タブでApplication Insightsを無効にします。最後に「確認および作成」を押すとApp Serviceの作成が開始されます。
作成できたら、「概要」にある「既定のドメイン」のリンクから、ブラウザでページを表示してみましょう。
まだWebアプリケーションをデプロイしていませんが、エンドポイントにアクセスできることが確認できます。
Webアプリケーションの発行
まずはAzureのGitHubにあるサンプルの.NETアプリケーションを自分のアカウントにフォーク(コピー)しましょう。
続いてAzureポータルに戻り、App Serviceに.NETアプリケーションをデプロイします。「デプロイセンター」を開き、「ソース」をGitHubに設定します。
GitHubの項目で、先程フォークしたアカウントをApp Serviceと連携させます。
「組織」、「リポジトリ」、「ブランチ」の内容に間違いがなければ「保存」を押して、設定を更新しましょう。しばらく待ってから再度エンドポイントにアクセスすると、.NETアプリケーションが表示されているのが確認できます。
またWebアプリケーションの更新は、変更内容をGitHubにプッシュするだけです。例えば、サンプルプロジェクト内のindex.cshtmlを修正してプッシュすると、App Serviceが連動して自動的にデプロイが開始され、下記のようにWebアプリケーションが更新されます。
このようにApp Serviceでは、環境構築からデプロイまでの工程がわずかなステップで完了でき、難しいコマンドも必要ありません。
まとめ
Azure App Serviceは、手軽にWebアプリケーションをホストできるサーバーレスサービスです。
Webサービスを迅速に立ち上げたいケースや、マイクロサービス化による柔軟性の向上を図るケースに向いています。また、仮想マシンを提供するサービスに比べて、サーバー管理や運用コストを削減できるため、既存のWebアプリケーションの移行先として検討してみてはいかがでしょうか。