Mais conteúdo relacionado Semelhante a 「Azure durable functions」の概要 (20) 「Azure durable functions」の概要2. 自己紹介
・名前 : 木下 裕之
・HN:kingkino
・Twitter:@kingkinoko
・FaceBook:kino.king.37
・Azure暦:7年
・MCSE : Cloud Platform and Infrastructure 2017
・Microsoft MVP for Microsoft Azure
・Azureもくもく会主催
4. 本日のゴール
1. Serverlessを知ってもらう
2. Azure Functionで出来ることを理解してもらう
3. Azure Durable Functionsを利用することでサーバレスの活用の幅
が広がるのを感じてもらう
サーバレスを知り、Azure Functionsを知ってもらい、Durable
Functionsを学んでもらうのが目的です。
12. Azure Functionのロードマップ
日付 リリース内容 日付 リリース内容
2016年4月 PP:Azure Functions 2017年7月 PP:Visual Studio 2017 tools for Azure Functions
2016年11月 GA:Azure Functions
2017年9月
PP:Azure Functions support for Graph bindings and custom bindings
2017年1月 PP:Azure Functions deprecating Native integration between Azure Cosmos DB and Azure Functions
2017年2月 PP:Azure Functions Proxies Azure Functions support for .NET Core
2017年3月 PP:Azure Functions Open API (Swagger) support 2017年10月 Java support for Azure Functions
2017年4月
Azure Functions integration with Application Insights 2017年11月 GA:Azure Functions Proxies
New integrated portal for Azure Functions
2016年11月15日にGAしてから1年が経ちました。
進化が早く,この1年間のうちにも17を超えるPublic Preview(PP)とGeneral
Avalavility(GA)をしています。2017年5月
PP:Azure Functions with Common Data Service
PP:Direct export of Azure Functions for PowerApps
PP:Azure Functions and App Insights integration
PP:Azure Functions Runtime for Windows
13. Triggerと対応言語の種類
利用可能な言語は今のところC#、F#、Node.js、PHP、PowerShell、Python、Bash等々です。
型 サービス トリガー 入力 出力
スケジュール Azure Functions 〇
HTTP (REST または Webhook) Azure Functions 〇 〇
Blob Storage Azure Storage (Azure Storage) 〇 〇 〇
イベント Azure Event Hubs 〇 〇
キュー Azure Storage (Azure Storage) 〇 〇
キューとトピック Azure Service Bus 〇 〇
Storage テーブル Azure Storage (Azure Storage) 〇 〇
SQL テーブル Azure Mobile Apps 〇 〇
NoSQL DB Azure Cosmos DB 〇 〇 〇
プッシュ通知 Azure 通知ハブ 〇
Twilio SMS テキスト Twilio 〇
SendGrid 電子メール SendGrid 〇
Excel テーブル Microsoft Graph 〇 〇
OneDrive ファイル Microsoft Graph 〇 〇
Outlook メール Microsoft Graph 〇
Microsoft Graph イベント Microsoft Graph 〇 〇 〇
認証トークン Microsoft Graph 〇
14. Azure Functions プランの比較
App Service Planを利用する場合のケース
• App Serviceにインスタンスを実行している使用率の低いインスタンスがある場合
• 従量課金プランで提供されるよりも多くの CPU またはメモリを利用する場合
• 従量課金プランで許可されている最大実行時間 (10 分) よりも長く実行する場合
• VNET/VPN接続などのApp Service プランでのみ使用できる機能が必要である場合
Consumption(従量課金プラン)を使用するケース
• 費用をなるべく安く済ませたい場合
• 処理自体が軽く実行コストが低い場合(必ず10分以内に終わるような処理)
• サーバメンテナンスや設定をする必要がない場合
課金の考え方
観測されたリソース使用量と実行時間で計算されます
使用されたリソース(メモリ)は最小128Mに丸められ、最大1536Mに切り上げられます
例:観測されたメモリ消費量が512MBで500万回実行され実行時間は3秒とします
①リソース使用量(秒) 500万回実行数 × 3秒 = 1500万秒
②リソース使用量(GB秒) 512MB / 1024MB × 1500万秒 = 750万GB-s
③課金対象のリソース使用量 750万GB-s – 400000GB秒(無料分) = 710万GB-s
④月あたりのリソース使用量の料金 710万GB-s × 0.001632/GB秒 = 11,582円
15. Azure Functions プランの比較
項目 従量課金プラン App Serviceプラン
課金体系
実行した時間分と利用したリソース分で課金が発生
します、夢の0円運用もやりようによっては可能
選択したインスタンスのプランに応じて課金が発生
します (例:A2 16.31/時間
スケーリング
必要に応じて自動的にスケーリングを行うため意識
する必要ない
手動・自動を選択可能、またスケーリングする量や
閾値を柔軟に選択できるため自由度が高い
但し手動で設定する必要あり
実行環境
(スペック)
128M~1,536Mの間で変動し課金に影響する
CPUについては不明
選択したインスタンスのプランに応じてスペックが
変動する
(例:A2 CPU2コア RAM 3.50GB TempHDD 490GB
実行時間
~5分(初期値)~10分(最大)
設定時間を越えると強制的にプロセスが終了します
10分以上の実行が可能
常時接族
自動でアクティブ化されるため意識する必要なし
※トリガーに応じて問題あり
手動で常時接続の設定を施す必要あり
※Standardプラン以上にする必要あり
その他
本当の意味でのFaaSは従量課金プラン 自由度が高いがサーバを意識しなくてはいけない為
サーバレスの定義から若干外れていると思う
17. Azure Durable Fucntionsとは
Azure Durable FunctionsはAzure WebJobを拡張したもので、サーバレス環境で長
時間実行可能でステートフルなコードを記述することができます。
Azure FunctionsはAzure Webjobsのサーバレスな進化系ですがAzure Durable
FunctionsはDurable Task FrameWorkのサーバレスな進化系ともいえます。
既にMicrosoft内ではミッションクリティカルなプロセスを自動化するために利用さ
れているようです。
※まだプレビューです
注意(MSDN抜粋)
Durable FunctionsはAzure Functionsの高度な拡張機能ですが、すべてのアプリケーションに適しているわ
けではありません。この記事は開発者がAzure Functionsのコンセプトを十分に理解しており、サーバーレス
アプリケーションの開発に取り組んでいることを前提としています。
20. Function Chain
F1 F2 F3
Function Chainingとは特定の順序で分散している関数を順次実行していくパターン
です。上記の図を見るとイメージしやすいかと思いますが1回のトリガーでF1 →
F2 → F3と関数を順次実行していくイメージです。
今までは分散している関数をトリガー別に順次呼び出す必要がありました
が、 orchestrator Triggerを利用することで関数をまとめて実行することができるよ
うになりました。
23. Stateful Singleton(Lightweight Actor)
Lightweight Actorは状態を格納し他の関数から長期
的に参照することのできるオーケストレータ関数です。
Service fabricのActorに似ているといわれています。
ステートレスな場合は状態をサーバ側で保持できない
ので値の増減はできませんがステートフルな場合は
サーバ側で値を保持し続けるので増減することが可能
です。
カウンタのように増減するような操作はatomic(保護
されている状態)である必要があります。操作によっ
て互いに上書きする競合状態が発生してしまうため並
行性を管理する必要性があるためです。
オーケストレーションインスタンスは常にシングルス
レッドなので、この種の動きは簡単に実装できます。
26. おまけ:各クラウドのサーバレスサービス比較表
特徴 AWS lambda Google Cloud Functions Azure Functions
スケーラビリティと可用性 自動スケーリング 自動スケーリング
手動スケーリングまたは計量スケーリング
(App Service Plan)
自動スケーリング(Consumption Plan)
関数の最大数 無制限 プロジェクトごとに1000 無制限
同時実行 アカウント・地域ごとに1000回の並列実行 制限なし 制限なし
最大実行 300秒(5分) 540秒(9分)
無制限(App Servie Plan)
300秒~600秒(5分~10分)(Consumpiton Plan)
サポート言語 JavaScript、Java、C#、Python JavaScriptのみ
C#、JavaScript、F#、Python、バッチ、PHP、
PowerShell、Bash
デプロイ方法
ZIPアップロードのみ
(LambdaまたはS3へのアップロード)
ZIPアップロード、クラウドストレージ、クラウド
ソースリポジトリ
Visual Studio Team Services、OneDrive、ローカ
ルGitリポジトリ、GitHub、Bitbucket、Dropbox、
外部リポジトリ
イベント駆動型
S3、SNS、SES、DynamoDB、Kinesis、
CloudWatch、Cognito、API Gateway、
CodeCommitなど
クラウドパブリケーション/サブまたはクラウドスト
レージオブジェクトの変更通知
Blob、EventHub、汎用WebHook、GitHub
WebHook、キュー、Http、ServiceBusキュー、
サービスバストピック、タイマートリガー
ロギング CloudWatchログ スタックドライバロギング App Servicesの監視
モニタリング CloudWatch&X-Ray スタックドライバーの監視 アプリケーションの分析
価格設定
無料から$ 0.20/1Mの呼び出し、$ 0.00001667/GB-
secの1M要求
1M要求を無料、次に$ 0.40 / 1M呼び出しに加えて
$ 0.00000231 / GB-sec
100万回の無料リクエスト、0.20ドル/ 1Mコール、
0.000016 / GB-s
出典:https://cloudacademy.com/blog/microsoft-azure-functions-vs-google-cloud-functions-fight-for-serverless-cloud-domination-continues/
27. おまけ:参考資料等々
• Azure Functions公式ドキュメント
https://docs.microsoft.com/ja-jp/azure/azure-functions/
• 環境構築公式ドキュメント
https://docs.microsoft.com/ja-jp/azure/azure-functions/durable-functions-install
• Functions Chain公式ドキュメント
https://docs.microsoft.com/ja-jp/azure/azure-functions/durable-functions-sequence
• FanOut/FanIn公式ドキュメント
https://docs.microsoft.com/ja-jp/azure/azure-functions/durable-functions-cloud-backup
• Stateful Singleton公式ドキュメント
https://docs.microsoft.com/ja-jp/azure/azure-functions/durable-functions-counter
• Human Interaction公式ドキュメント
https://docs.microsoft.com/ja-jp/azure/azure-functions/durable-functions-phone-verification
28. おまけ:参考資料等々
• Azure Functions の 超イケてる Durable Functions を使ってみる
https://qiita.com/TsuyoshiUshio@github/items/3e8acb1b0388b6045fdb
• Azure Durable Functionsを弄ってみた(環境構築編&Function Chaining実行編)
https://goo.gl/5qpVXu
• Azure Durable Functionsの「Function Chaining」を試してみた
https://goo.gl/QK576h
• Azure Durable Functionsの「Fan-In/Fan-Out」を試してみた
https://goo.gl/mDoDRe
• Azure Durable Functionsの「Lightweight Actor」を試してみた
https://goo.gl/hyxZVh
• Azure Durable Functionsの「 Human interaction and timeouts」を試してみた
https://goo.gl/ekw52W
29. おまけ:参考資料等々
• Azure Functions Get Started Site
https://functions.azure.com/signin
• Azure Functions quickly with a premade(Functionを1時間だけ利用できるサイト)
https://functions.azure.com/ng-min/try?trial=true
• GitHub:azure-functions-durable-extension durabletask
https://github.com/Azure/azure-functions-durable-extension
https://github.com/Azure/durabletask
• Visual Studio 2017
https://www.visualstudio.com/ja/
• POSTMAN
https://www.getpostman.com/
• Azure Storage Explore
https://azure.microsoft.com/ja-jp/features/storage-explorer/