Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

「Azure durable functions」の概要

826 Aufrufe

Veröffentlicht am

2017年11月25日 .Net ラボ登壇資料

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

「Azure durable functions」の概要

  1. 1. サーバレスの進化は止まらない Azure Durable Functions 2017年11月25日 .NET ラボ登壇資料
  2. 2. 自己紹介 ・名前 : 木下 裕之 ・HN:kingkino ・Twitter:@kingkinoko ・FaceBook:kino.king.37 ・Azure暦:7年 ・MCSE : Cloud Platform and Infrastructure 2017 ・Microsoft MVP for Microsoft Azure ・Azureもくもく会主催
  3. 3. 注意事項 ※この資料は2017年11月25日時点での情報を元に作成しています ※更新が早いのですぐに古い情報になる可能性がありますが予めご了承 ください
  4. 4. 本日のゴール 1. Serverlessを知ってもらう 2. Azure Functionで出来ることを理解してもらう 3. Azure Durable Functionsを利用することでサーバレスの活用の幅 が広がるのを感じてもらう サーバレスを知り、Azure Functionsを知ってもらい、Durable Functionsを学んでもらうのが目的です。
  5. 5. アジェンダ 1:サーバレスアーキテクチャについて ServerlessとFaasの説明、メリットについて 2:Azure Functionsについて Azure Fucntionsの概要、トリガーや料金プランについて 3:Azure Durable Functionsについて Azure Durable Functionsの各パターンの概要説明 4:デモ Azure Durable Functionsの環境構築と実行(Azure編) 5:まとめ
  6. 6. サーバレスアーキテクチャについて
  7. 7. サーバレスアーキテクチャについて 先に行っておくとServerlessとは 「サーバを管理する必要がない仕組み」 ということでサーバがないという意味ではありません Serverlessには2つの意味あいがあります ・Backend as a Service(BaaS) SPAやモバイルアプリケーションから利用するクラウド上で稼働しているバックエンドサービス ・Function as a Service(FaaS) イベント駆動で実行されるサービス、昨今流行ってるサーバレスはこちらです ※サーバレスアーキテクチャーを詳しく知りたい方はマーティン・ファウラー氏のブログを参照してください。 https://martinfowler.com/articles/serverless.html
  8. 8. サーバレスアーキテクチャについて FaaSはPaaSに似ていますが違いがあります PaaS:リクエストごとにアプリケーション全体を起動・終了させる「リクエストリプライ方式」 FaaS:必要なサービス(関数)毎に起動・終了させる「イベントドリンブン方式」 大きな差としてはスケーリングです。PaaSの場合はスケーリングについて意識して設定しないとい けませんがFaaSの場合は自動でスケーリングするのでコスト面で効率的です。 FaaSを利用するメリット ・イベントドリブン方式でコードを書いて連携させるだけで一連の業務処理を実行できる ・実行に必要なサーバはサービスが自動で割当てを行い必要に応じてスケールしてくれる ・使った分のサーバ使用料が課金されるためコスト削減が期待できる
  9. 9. Azure Functionについて
  10. 10. Azure Functionとは 言わずと知れたMicrosoftがAzureで提供するFaaSサービスです。 Code Events + data Azure Fucntions 特徴としては下記が挙げられます • インフラの管理コストを削減できる • アプリケーションサーバーとしては自由度が低いが、BaaSよりかは自由度が高いコンピューティングが可能 • 常駐型と比較するとアプリケーションのプロセス起動によるオーバーヘッドが大きくなり、速度が遅くなる可 能性がある • Azure WebJobsのサーバレスな進化系
  11. 11. Azure Functionのアーキテクチャ App Service Azure Storage Web Apps / Web Job AzurePortal/AzureFunctionsPortal Input Bindings Output Bindings Trigger Functions ランタイム WebJobs Core SDK Functions
  12. 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. 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. 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. 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は従量課金プラン 自由度が高いがサーバを意識しなくてはいけない為 サーバレスの定義から若干外れていると思う
  16. 16. Azure Durable Functionについて
  17. 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のコンセプトを十分に理解しており、サーバーレス アプリケーションの開発に取り組んでいることを前提としています。
  18. 18. Ochestrator Function Azure Functionのアーキテクチャ App Service Azure Storage Web Apps / Web Job AzurePortal/AzureFunctionsPortal Input Bindings Output Bindings OrchestrationTrigger Functions Functions ランタイム ※Durable Task WebJobs Extension WebJobs Core SDK
  19. 19. オーケストレータについて ・オーケストレータとは(従来) システムやソフトウェアサービスなどの構築や運用管理を自動化することを指します 仮想化環境においては仮想サーバーやアプリケーションの設定を統合的に行ったり、 あるいは運用を自動化するといった意味で利用されることが多い ・Durable Functionsのオーケストレータ オーケストレーターはステートフルなワークフローをコードで表現することができま す。他の関数を同期と非同期のどちらでも呼び出すことができ、呼び出された関数か らの出力をローカル変数に保存することが可能です。 関数が待機状態になるたびに、自動で進行状況にチェックポイントを設定するためプ ロセスがリサイクルされるかVMが再起動された場合でもローカルの状態が失われる ことはないそうです。
  20. 20. Function Chain F1 F2 F3 Function Chainingとは特定の順序で分散している関数を順次実行していくパターン です。上記の図を見るとイメージしやすいかと思いますが1回のトリガーでF1 → F2 → F3と関数を順次実行していくイメージです。 今までは分散している関数をトリガー別に順次呼び出す必要がありました が、 orchestrator Triggerを利用することで関数をまとめて実行することができるよ うになりました。
  21. 21. FanOut/FanIn F1 F2 F3 Fan-In/Fan-Outは複数の関数を同時に呼 び出すOrcehstratorを記述し、その結果 に対して何らかの集計を実行する方法を 示す高度なユースケースです。 左図で説明するとF2のFunctionが並列で 複数同時に実行されるのをイメージして ください。並列で実行されたFunction毎 の処理完了タイミングは別々ですので全 てのFunctionが完了するのを待ってから 次の処理に移行します。 例えばAzure Blob Storageに大量のファ イルアップロードを並列で行う等の処理 にむいていたりします。
  22. 22. Async Http APIs DoWorkStart GetStatus Async Http APIsは長時間実行される関数 に対して現在の状態の確認を行うことので きるパターンです。 長時間実行しているファンクションの状態 がどういう状態にあるのかを確認するため に利用します。
  23. 23. Stateful Singleton(Lightweight Actor) Lightweight Actorは状態を格納し他の関数から長期 的に参照することのできるオーケストレータ関数です。 Service fabricのActorに似ているといわれています。 ステートレスな場合は状態をサーバ側で保持できない ので値の増減はできませんがステートフルな場合は サーバ側で値を保持し続けるので増減することが可能 です。 カウンタのように増減するような操作はatomic(保護 されている状態)である必要があります。操作によっ て互いに上書きする競合状態が発生してしまうため並 行性を管理する必要性があるためです。 オーケストレーションインスタンスは常にシングルス レッドなので、この種の動きは簡単に実装できます。
  24. 24. Human Interaction RequestApproval RequestApproval Escalate Human interaction and timeoutsは人間の所作を介在させるオーケストレーション を利用するパターンです。実際の人物がプロセスに介在し、その人物に通知を送信し、 その人物のアクションを非同期的に応答を受け取り実施します。 SMS認証でモバイルデバイスに送られた認証コードの入力を一定時間待ち、入力され たら認証する、一定時間過ぎたら認証失敗にする等のユースケースが考えられます。
  25. 25. DEMO
  26. 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. 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. 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. 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/
  30. 30. まとめ Functionsは設計とアセスメント(事前評価)が非常に大切です!! ServerlessとAzure Functionsは ※クラウド全体に言えることでもありますが 「用法・容量を検討して正しくご利用下さい」 長時間ご清聴頂きありがとうございました
  31. 31. 告知 12月2日(土)にAzureもくもく会を開催します。よろしければご参加ください。CONNPASSで募集してます。

×