Azure VMとAzure Functionsの違いとは?初心者向けに特徴・使い分け・選び方をわかりやすく解説
結論として、Azure VMは仮想サーバーを利用するサービス、Azure Functionsはイベントをきっかけにプログラムを実行するサーバーレスサービスです。
どちらもMicrosoft Azureでアプリケーションを実行できますが、管理方法や用途が大きく異なります。IT業務では「業務システムを動かしたい」「ファイルがアップロードされたら自動処理したい」といった場面で利用されるため、それぞれの特徴を理解しておくことが重要です。
Azure VMとAzure Functionsとは
Azure VMとは
Azure VM(Azure Virtual Machines)は、Microsoft Azure上でWindows ServerやLinuxの仮想サーバーを作成できるIaaS(Infrastructure as a Service)です。
オンプレミスの物理サーバーと同じようにOSへログインし、アプリケーションのインストールや設定変更、Windows Updateなどを自由に行えます。
サーバーの管理権限を持つため自由度は高い一方、OSの保守やセキュリティ対策も利用者が実施する必要があります。
Azure Functionsとは
Azure Functionsは、イベントをトリガーとしてプログラムを実行するFaaS(Function as a Service)です。
サーバーを構築・管理する必要がなく、コードだけをデプロイすれば実行できます。
例えば、次のようなイベントで利用されます。
- HTTPリクエストを受信した
- Blob Storageへファイルが保存された
- Timer Triggerで定期実行する
- Queue Storageへメッセージが追加された
- Event Gridからイベントを受信した
Azure VMとAzure Functionsの違い
| 比較項目 | Azure VM | Azure Functions |
|---|---|---|
| サービス形態 | 仮想サーバー(IaaS) | サーバーレス(FaaS) |
| OS管理 | 必要 | 不要 |
| サーバー構築 | 必要 | 不要 |
| 利用単位 | 仮想マシン | 関数(Function) |
| スケーリング | 手動または設定が必要 | 自動 |
| 課金 | VM稼働時間が中心 | 実行回数・実行時間が中心 |
| 自由度 | 非常に高い | 高いが制約あり |
| 初心者向け | サーバー知識が必要 | 比較的始めやすい |
どんな場面で使われるのか
Azure VMが向いているケース
- 業務システムを稼働させる
- Active Directoryを構築する
- SQL Serverを運用する
- 社内Webサーバーを構築する
- 既存のWindows Serverをクラウドへ移行する
Azure Functionsが向いているケース
- ファイルアップロード時の自動処理
- 定期バックアップ処理
- Webhookの受信
- メール通知
- APIの一部機能を実装する
なぜ違いを理解することが重要なのか
Azure VMはサーバーそのものを提供するサービスであり、Azure Functionsは処理だけを実行するサービスです。
例えば、24時間稼働する社内システムをAzure Functionsだけで構築することは適していません。一方、毎日数分だけ実行するバッチ処理をAzure VMで運用すると、不要なサーバーコストが発生する可能性があります。
用途に応じて適切なサービスを選択することで、運用負荷やコストを抑えられます。
初心者が混乱しやすいポイント
- どちらもAzure上で動作する
- どちらもプログラムを実行できる
- どちらもWebサービスを提供できる
最も大きな違いは管理対象です。
- Azure VMはサーバーを管理する
- Azure Functionsはコードだけを管理する
実際のIT現場での利用例
| 業務 | 利用サービス |
|---|---|
| Active Directory | Azure VM |
| SQL Server | Azure VM |
| 社内業務システム | Azure VM |
| ファイル変換 | Azure Functions |
| 定期通知 | Azure Functions |
| 画像加工 | Azure Functions |
現場でよくあるトラブル
Azure VM
- RDP接続できない
- CPU・メモリ不足
- Windows Update後に再起動が必要
- NSG(Network Security Group)の設定ミス
- ディスク容量不足
Azure Functions
- トリガーが動作しない
- タイムアウト
- 権限不足
- ストレージアカウントとの接続エラー
- 実行回数の急増による想定外の課金
原因の切り分け
| 確認項目 | 確認内容 |
|---|---|
| アプリケーション | エラーが発生していないか |
| Azure Monitor | アラートやメトリックを確認する |
| ログ | Application Insightsやログを確認する |
| ネットワーク | NSGやファイアウォールを確認する |
| 権限 | Managed IdentityやRBACを確認する |
確認する順番
- Azure Monitorでアラートを確認する
- ログを確認する
- アプリケーションエラーを確認する
- ネットワーク設定を確認する
- 権限設定を確認する
ログの確認方法
Azure Portalから確認できます。
- Azure Portalへログインする
- 対象のAzure VMまたはAzure Functionsを開く
- Monitoringを選択する
- LogsまたはApplication Insightsを開く
- エラー内容を確認する
GUIでの確認方法
- Azure Portal
- Azure Monitor
- Application Insights
- Virtual Machines
- Function App
- Network Security Group
CUI(Azure CLI)での確認方法
Azure VM一覧
az vm list -o table
Azure Functions一覧
az functionapp list -o table
Azure VMの詳細
az vm show --name VM名 --resource-group リソースグループ名
Azure Functionsの詳細
az functionapp show --name FunctionApp名 --resource-group リソースグループ名
確認結果の見方
- VMがRunning状態か
- Function Appが正常に起動しているか
- HTTPステータスコードが200番台か
- エラーログが出力されていないか
- CPU・メモリ使用率が高すぎないか
初心者がやりがちなミス
- Azure VMなのにWindows Updateを実施しない
- Azure VMのバックアップを設定していない
- Azure Functionsを長時間実行する処理に利用する
- ログを確認せず設定変更する
- NSGやRBACを確認せず障害調査を進める
影響範囲を確認するポイント
- 対象VMのみか複数VMか
- 対象FunctionのみかFunction App全体か
- 利用者全員へ影響しているか
- Azureサービス全体の障害ではないか
上司へ報告するポイント
- 障害発生時刻
- 対象リソース名
- Azure VMかAzure Functionsか
- エラーメッセージ
- 影響範囲
- 確認した内容
- 暫定対応の有無
エスカレーションするタイミング
- 本番環境へ影響がある
- OS障害やディスク障害が発生している
- ネットワーク設定変更が必要
- 権限変更が必要
- 原因を特定できない
現場で評価される確認手順
- 影響範囲を把握する
- Azure Monitorで状態を確認する
- ログを確認する
- ネットワークと権限を確認する
- 必要に応じて上司へ報告・エスカレーションする
筆者の経験談
実際の業務では、定期実行するCSV集計処理をAzure VM上のタスクスケジューラで運用していましたが、OSのメンテナンスや更新管理に手間がかかっていました。後にAzure Functionsへ移行したところ、サーバー管理が不要になり、運用負荷とコストを削減できました。一方で、24時間稼働する業務システムはAzure VMのほうが柔軟に設定でき、既存システムの移行もスムーズでした。用途に応じて使い分けることが重要だと感じています。
応用知識
Azure VMはIaaS、Azure FunctionsはFaaSに分類されます。Azureにはこのほか、Webアプリケーション向けのAzure App Serviceや、コンテナ向けのAzure Container Apps、Azure Kubernetes Service(AKS)などもあり、システム要件に応じて最適なサービスを選択します。
関連するIT用語
- Azure App Service
- Azure Container Apps
- Azure Kubernetes Service(AKS)
- IaaS(Infrastructure as a Service)
- FaaS(Function as a Service)
- Application Insights
- Azure Monitor
- Network Security Group(NSG)
- Managed Identity
- RBAC(Role-Based Access Control)
よくある質問(FAQ)
Azure VMとAzure Functionsはどちらがおすすめですか?
既存のサーバーや業務システムを運用するならAzure VM、自動化処理やイベント駆動の処理を実装するならAzure Functionsがおすすめです。
Azure Functionsだけでシステムを構築できますか?
小規模なAPIやイベント処理であれば可能ですが、大規模な業務システムではAzure VMやAzure App Serviceなどと組み合わせるケースが一般的です。
Azure VMは停止すると料金は発生しませんか?
Azure Portalから「停止(割り当て解除)」した場合はコンピューティング料金を抑えられますが、OSディスクやデータディスクなどのストレージ料金は継続して発生します。
Azure Functionsは常時起動していますか?
従量課金プランでは必要なときだけ実行されます。そのためコストを抑えやすい一方、初回実行時にコールドスタートが発生する場合があります。
まとめ
Azure VMとAzure Functionsは、どちらもAzureでアプリケーションを実行するサービスですが、役割は大きく異なります。
- Azure VMは仮想サーバーを提供するIaaS
- Azure Functionsはイベント処理を実行するサーバーレスサービス
- サーバー管理が必要ならAzure VM
- 自動化や短時間の処理ならAzure Functions
- 障害時はAzure Monitor、Application Insights、ネットワーク、権限の順に確認すると効率的
IT業務では「サーバーを管理したいのか」「コードだけを実行したいのか」を基準にサービスを選択することが重要です。まずはAzure VM=仮想サーバー、Azure Functions=サーバーレス関数という基本を押さえ、要件に応じて適切に使い分けられるようになりましょう。
