@rxpaki
Ryosuke Matsumura
Azure Functionsでサーバーレスアプリケーション構築
2018/02/10
Fukuoka Engineers Day 2018
Intro
• Ryosuke Matsumura
• Fukuoka, Japan
• i3Systems, Inc.
• Microsoft MVP for Microsoft Azure
Intro
Intro
Intro
Agenda
Agenda
• Serverlessって何?
• Azure Functionsって何?
• AWS Lambdaとの違い
• Durable Functionの概要
• Azure Functions Containerの概要
• Visual Studio Codeでの開発
• Azure無料アカウントの紹介
Azure Functions
Serverlessって?
What is Serverless?
• 文字通りサーバーがないわけではない
• 開発者がサーバーを意識する必要がない
• よりコードに注力して開発が出来る
• イベントをトリガーとして関数(Function)を実行する
• Function as a Service(FaaS)
• いわゆるPaaSとは異なる
• イベント毎にプロセスが起動し終了する
Serverless Compute
Manifesto
• Function are the unit of deployment and scaling.
• No machines, VMs, or containers visible in the programming
model.
• Permanent storage lives elsewhere (SLE).
• Scales per request; Users cannot over- or under-provision
capacity.
• Never pay for idle (no cold servers/containers or their
costs).
• Implicitly fault-tolerant because functions can run anywhere.
• Bring Your Own Code (BYOC).
• Metrics and logging are a universal right.
Azure Functionsって?
What is Azure Functions?
• Serverless ArchitectureをMicrosoft Azureで構築可能に
したもの
• イベント/データをトリガーとしたFunction実行プラット
フォーム
What is Azure Functions?
• 多数の言語で実装可能(プレビュー、試験段階含む)
• C#, Javascript, F#
• Java, Python, PHP
• TypeScript, Batch(.cmd, .bat)
• Bash, PowerShell
What is Azure Functions?
• 多数のトリガーを設定可能
• Timer
• Webhooks
• Consmos DB
• Storage(Blob, Queue)
• Azureサービスとの連携が非常にお手軽
• Binding機能により容易に連携が可能
What is Azure Functions?
• 強力なBinding機能
• データの入出力を関数で利用する際に、連携部分を抽象
化したもの
• context.bindings.hoge = (…データ…)
ex)JavascriptでCosmosDBへJSONを保存するコード
What is Azure Functions?
• Visual Studioシリーズとの高い親和性
• VS for MacやVSCodeでも開発が捗る
• 開発だけでなく、デプロイまで可能
• ローカルデバッグも可能
• 2種類のプラン
• Consumption Plan(Batch的な処理におすすめ)
• App Service Plan(WebAPIにおすすめ)
AWS Lambda??
Lambdaとの違い
• 詳しくは次の方が紹介してくれると思います
• 「AWSのサービスを使ったサーバーレスアプリケーション
の構築」
• Goが使えない!!
• けど、Functionsの方が言語サポートは多い…
• 起動が遅い!!
• けど、App Service Planであれば…
Durable Functions
Durable Functions
• Preview
• Azure FunctionsとAzure WebJobsの拡張機能
• サーバーレスでステートフルな処理が出来る
• 関数チェーン
• ファンアウト/ファンイン
• 非同期 HTTP API
• ステートフル シングルトン
• 人による操作
Azure Functions
Container
Azure Functions
Container
• Preview
• 独自のコンテナー内のLinux上で関数をホストする
• 言語バージョン、特定の依存関係、既定で提供されていな
い構成が必要になる場合
• DockerHubからデプロイ可能
• JSやC#からGoを呼び出して…とかも可能かも?(未検証)
Visual Studio Code
Visual Studio Code
• (2017年12月時点での利用環境)
• Visual Studio Code (1.18.1)
• (VSC拡張)Azure Account and Sign-In
• (VSC拡張)Azure Functions for Visual Studio Code
(Preview)
• .NET Core 2.0(2.0.2)
• Azure Core Function Tools 2.0(2.0.1-beta.21)
• Node v8.5.0
Visual Studio Code
• 詳しい手順については、こちらをご覧ください
• 「Azure Functionsでお手軽Slack Bot」
• http://matcu.hatenablog.com/entry/2017/12/17/061717
Azure Free Trial
Azure Free Trial
• https://azure.microsoft.com/ja-jp/free/
• 12ヶ月無料使用可能
• ¥22,500 のクレジット
• 勝手に課金されることはありません
• 是非、無料サインアップ後にAzure Functionsを利用して
みてください
• 1,000,000 / 月 まで無料枠があります
Azure Functions
Agenda
• Serverlessって何?
• Azure Functionsって何?
• AWS Lambdaとの違い
• Durable Functionの概要
• Azure Functions Containerの概要
• Visual Studio Codeでの開発
• Azure無料アカウントの紹介
告知
Event announcement
2018/03/24(土) 13:30〜17:00
Azure Functions ハンズオン
@マイクロソフト九州支店
Appendix
• https://docs.microsoft.com/ja-jp/azure/azure-functions/
functions-overview
• https://docs.microsoft.com/ja-jp/azure/azure-functions/
supported-languages
• https://docs.microsoft.com/ja-jp/azure/azure-functions/
functions-triggers-bindings
• https://docs.microsoft.com/ja-jp/azure/azure-functions/
durable-functions-overview
• https://docs.microsoft.com/ja-jp/azure/azure-functions/
functions-create-function-linux-custom-image
• https://azure.microsoft.com/ja-jp/free/
Thank you :)

Azure Functionsでサーバーレスアプリケーション構築