3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Azure Functions と Azure Automation の違いと使い分け

3
Posted at

1. はじめに

  • 本記事のゴール

    • 「Functions と Automation、どっちを選べばいいか?」を判断できるようになること
  • 結論の先出し(ざっくり)

    • イベントドリブンなアプリロジック → Azure Functions
    • スクリプトベースの運用自動化・ハイブリッド構成 → Azure Automation

2. なぜこの記事を書こうと思ったか(背景)

ある案件で、Logic Apps から Azure Automation の Runbook を呼び出すフローを作っていました。
運用タスクを自動化する目的で、Azure Automation のアクションを使っていたのですが、レビューのタイミングでこんな指摘を受けました。

「これ、Azure Functions じゃダメなんですか?」

たしかに言われてみれば、

  • Logic Apps → Azure Automation で実装するパターン
  • Logic Apps → Azure Functions で実装するパターン

どちらでも実現できそうなケースが多く、「どこからどこまでを Automation に任せて、どこからを Functions にするのが良いのか?」という線引きが、自分の中で言語化しきれていませんでした。

そこで一度、

  • Azure Functions と Azure Automation の違いを整理し直す
  • 「どんなシナリオならどっちを選ぶのか?」を自分なりにパターン化する

という目的でまとめてみることにしました。

3. Azure Functions / Azure Automation のざっくりおさらい

Azure Functions

  • 特徴

    • サーバーレスな「関数」をデプロイして実行
    • HTTP, Timer, Queue, EventHub など、豊富なトリガー
  • 主な用途

    • Web API
    • イベントドリブン処理(Queue, EventHub, Blob トリガー等)

Azure Automation

  • 特徴

    • PowerShell / Python の Runbook をジョブとして実行
    • スケジュール実行・手動実行・Webhook 起動など
  • 主な用途

    • Azure VM の起動/停止、タグ付け、リソース整理
    • ログの定期集計・レポート出力
    • ハイブリッド Worker 経由でオンプレサーバー操作

4. Azure Functions vs Azure Automation 比較表

それぞれの機能を比較してみました。
表中の ⭐ マークは、私が現場で使っていて「ここが強みだな」と感じたポイントです。

観点 Azure Functions Azure Automation
開発言語 C#, JavaScript, Python など PowerShell, Python
主なトリガー ⭐HTTP、Timer、Queue、EventHub、Service Bus など スケジュール、Webhook、他サービスからのジョブ起動
スケーリング ⭐イベント量に応じて自動スケール 不可
実行環境 Azure(App Service基盤) Azure Automation アカウント+(必要なら)ハイブリッド Worker
ハイブリッド実行(オンプレ等) 基本的に不可(工夫は必要) ⭐ハイブリッド Runbook Worker でオンプレ/他クラウドで実行可能
Azure Portal での編集/即時実行 .NET Isolated では不可能 ポータル上で Runbook を直接編集してその場でテスト/実行しやすい
CI/CD ⭐非常にやりやすい(GitHub Actions / Azure Pipelines 等) ソース管理機能にて可能
ジョブ管理/履歴確認 Azure Monitor / Application Insights で確認 ポータルからジョブ履歴・出力を GUI で確認

5. ⭐ を付けたポイントをもう少し詳しく

ここからは、比較表の中で ⭐ を付けたポイントを絞って深掘りしていきます。

  • Functions 側の ⭐

    • 豊富なトリガー(HTTP / Timer / Queue / EventHub など)
    • イベント量に応じたスケール
    • CI/CD
  • Automation 側の ⭐

    • ハイブリッド Runbook Worker によるオンプレ/他クラウド実行

Functions 側の強み

1. 豊富なトリガー
Azure Functions の最大の強みは、豊富なトリガーが準備されているため、あらゆる要件に対応できる点です。

例えば「Blob ストレージに画像がアップロードされたらリサイズする」という要件があった場合、Functions なら BlobTrigger を使うだけで、ファイルが置かれた瞬間に処理が走ります。

一方、Automation で同じことをやろうとすると、

  • 定期的に Blob をポーリングする Runbook を書く
    または
  • Logic Apps → Automation という連携構成を組む

といった形になり、どうしてもリアルタイムでの対応がしづらいのと、構成が複雑になりがちです。

2. イベント量に応じた自動スケール

「1 分間に 1 万件のリクエストが来る」といったスパイクアクセスがある場合、Functions は自動でインスタンスを増やして並列処理してくれます。

Automation は基本的にジョブキューに積んで順次実行していく仕組みなので、

  • 「大量のイベントを一気にさばきたい」
  • 「時間内に処理を終わらせたい」

といった要件に対しては、Functions のほうが圧倒的に向いていると言えます。

3. CI/CD と開発者体験
Functions は VS Code や Visual Studio などのエディタで開発し、GitHub にプッシュしたら GitHub Actions でビルド・デプロイ、という モダンなアプリ開発フローにしっかり乗せられます。

Automation にもソース管理機能で Git 連携はありますが、

  • ローカルでのデバッグ実行
  • 単体テスト
  • ライブラリ管理

といった開発体験の面では、やはり Functions に軍配が上がります。

Automation 側の強み

ネットワークの壁を超える Hybrid Runbook Worker
私が Automation を選ぶ最大の理由が、Hybrid Runbook Worker の存在です。

通常、PaaS からオンプレミスのサーバーや閉域網(VNET 内)のリソースを操作しようとすると、

  • VNET 統合
  • VPN Gateway / ExpressRoute
  • NSG / Firewall の調整

など、ネットワーク設計が必要です。

しかし Hybrid Runbook Worker を使えば、対象のサーバー(またはそのネットワーク内の踏み台)にエージェントを入れるだけで、「そのサーバー上でスクリプトを実行」 できます。

  • オンプレにある AD サーバーで PowerShell を叩きたい
  • 社内ファイルサーバーのログを整理したい
  • 特定サーバー上のサービスを再起動したい

といった要件の場合、Functions からネットワーク越しに頑張るよりも、Automation の Hybrid Worker を使ったほうが、構成もシンプルでセキュアに収まりやすいです。

6. 【結論】Functions と Automation の使い分けパターン

以上より、シンプルに以下の 4 つの観点で「どっちが有利か?」を天秤にかけると決断しやすくなります。

① 柔軟なトリガーが必要か?

  • Yes → Azure Functions
    • 「HTTPリクエスト」「Blobにファイルが置かれた」「Queueにメッセージが入った」など、多様なイベントをリアルタイムに検知したい場合。
  • No (スケジュール実行が主) → Azure Automation
    • 「毎日朝9時に実行」「Webhookで単純起動」程度であれば Automation で十分です。

② 大量処理・スケールは必要か?

  • Yes → Azure Functions
    • 短時間に数千件のアクセスが来るなど、自動でサーバー台数が増えてほしい(オートスケール)場合。
  • No (じっくり順次処理) → Azure Automation
    • ジョブがキューに溜まっても良く、長い時間をかけて一つずつ処理すればいい場合。

③ どのコード(言語)で実行するか?

  • C# / Java / TypeScript / Python (アプリ開発) → Azure Functions
    • アプリケーションロジックとして、クラス設計やライブラリ活用を含んだ開発をする場合。

④ オンプレミスへの接続が必要か?

  • Yes → Azure Automation (Hybrid Runbook Worker)
    • オンプレミスのサーバー内や、閉域網のVM上で直接コマンドを叩きたい場合。これが最も簡単に実現できるのが Automation の強みです。
  • No (クラウド完結) → どちらでもOK
    • 処理内容に応じて ①〜③ で判断します。

7. おわりに

ここまで整理してみると、Functions と Automation の機能差は、サービス自体の設計思想による差であると改めて思いました。
作ろうとしているシステムの要件を改めて整理することで、どちらが最適な選択肢であるかが見えてくると思います。
Azure にはこれら以外にも互いに似た機能を持つサービスがありますが、設計思想を意識した採用判断をすることが大切ですね。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?