Azure Functionsは、2016年11月に一般提供されるようになったイベント駆動型コード実行サービスです。トリガーとして、RESTやWebhookが使えるのに加え、制約や特性の異なる2つのプランを提供されており、汎用性が高くなっています。
実行するコードとしては、Node.js、Python、PHP、C#、PowerShellなどが利用できます。Functionsにおいてコードを読み込んだ仮想マシンをFunctions Appと呼びます。ユーザは仮想マシンを意識する必要がなく、メモリー容量はコードに合わせて自動で割り当てられます。またCPU使用率などの条件に応じて、自動でFunctions Appがスケールアウト/スケールインします。
!ポイント AWS Lambdaの特徴
特徴 | 概要 |
さまざまな言語 | C#、F#、Node.js、Python、PHP、Batch、Bash、その他実行可能な言語を使って関数を記述できます。 |
従量課金制の価格モデル | コードの実行に要した時間に対してのみ課金されます。 |
セキュリティの統合 | Azure Active Directory、Facebook、Google、Twitter、Microsoft アカウントなどの OAuth プロバイダーにより、HTTP によってトリガーされる関数を保護できます。 |
Azure Functionsのすぐ使える3つの構成パターン
パターン1:DBへのログ投入
アプリケーションサーバなどのログをリレーショナルデータベースを投入するのに、QueueStorageからFunction Appがメッセージが入ったことを受け取り、それをトリガーにQueueStorageからログを取得し、リレーショナルデータベースにログを投入する役割をFunction Appが行います。
パターン2:定時バッチ処理
バッチ処理コードをFunctions用に改修することで、実行時間のみに課金されるので、仮想マシンを使うよりコストが抑えられるケースが多いと考えられます。
パターン3:異常時のチェック
Zabbixからネットワーク異常通知をFunctionsが受け取り、これをトリガーとして、画面遷移テストを実行し、それが終わると運用担当者にSlackで結果を通知します。
ひと言コメント
アプリケーションすべてをFunctionsへ移行するのではなく、効果が高いと思われる、一部機能のみFunctionsに移行することで、コストや運用負荷を低下させることも可能となります。