Alternative Architecture DOJO

オルターブースのクラウドネイティブ特化型ブログです。

Azure Functionsを改めて調べた話

オルターブース アドベントカレンダー18日目は知念が担当します。

adventar.org

先日、福岡でもServerlessDays Fukuoka 2019が開催されたので、参加してきました。

fukuoka.serverlessdays.io

弊社の加藤は、KEDAのお話で登壇しました!

ぼうけんにでかけよう Kubernetes KEDA


ということで、私にとって身近なServerlessであるAzure Functionsについて改めて簡易的ではありますが調べてみました。


12/9にAzure Functionsのランタイム3.0がGAされましたとアナウンスがありました。

docs.microsoft.com

・ .NETのバージョンは.NET Core3.1。
2.xのランタイムを使用していて移行を検討されている方は、バージョンにご注意ください。

・その他の対応言語のうち、Node.jsとF#もバージョンが上がっています。

・現時点では、ポータルやCLIから関数を作成するとバージョンは2.xで出来上がるので気を付けましょう。
 12/17現在で、ポータルから.NET Coreで関数アプリを作成した時のランタイムの設定はこのようになっていました。

f:id:sakusakulager:20191217172451p:plain
ポータルから作成

上記のドキュメントに、移行時の注意点なども記載しているので読んでみてください。


バージョンのお話はここまでで、ここからはFunctionsの拡張機能のお話です。
拡張機能?と思われるかもしれませんが、Azure Functionsの拡張機能という位置づけにDurable Functionsというものがあります。

docs.microsoft.com

ドキュメント内に「サーバーレス コンピューティング環境でステートフル関数を記述できる Azure Functions の拡張機能」と記述されています。
サーバーレスコンピューティング環境なのにステートフルなの?と思った方もいらっしゃるかもしれません。

データベースやキューなどプロビジョニングや管理が必要なリソースと組み合わせてAzure Functionsを使用すると、調整や管理が煩雑になりがちです。 そこをカバーする方法として拡張機能のDurable Functionsが用意されています。

Durable Functionsで開発したことがあるのですが、慣れてしまうと使いやすくて便利です!
ただし、使用出来る言語はC#/F#/JavaScriptのみです。

一番使い方をイメージしやすいのは、関数チェーンのパターンだと思います。
Orchestration ClientやOrchestrator、Activity Functionsの使い方がイメージしやすいので、初めて触る時におすすめです。

とてつもなくざっくりとした内容になってしまいましたが、Azure FunctionsやDurable Functionsに興味を持った方は是非こちらを試してみてください!

Azure Functions
Azure Functions を使用したサーバーレス ロジックの作成 - Learn | Microsoft Docs

Durable Functions
Durable Functions を使って実行時間の長いサーバーレス ワークフローを作成する - Learn | Microsoft Docs

ドキュメントを読んで学ぶこともとても大事ですが、手を動かして学ぶとより理解が進むと思います!


参考資料

Durable Functions を始めるときに知っていると幸せになれる7つの Tip - Qiita

持続性のある Azure Functions - サーバーレス アプリ | Microsoft Docs

Azure - 状態の問題: Azure Functions を使用したサーバーレスおよびステートレスのコード実行 | Microsoft Docs