Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Durable Functionsで作るモバイルアプリのサーバーレスなバックエンド for 承...
Search
Toshinori Sugita
April 20, 2018
Technology
0
8k
Durable Functionsで作るモバイルアプリのサーバーレスなバックエンド for 承認フロー / Serverless Mobile Backend using Durable Functions for approval flow
Global Azure Bootcamp 2018@TokyoのLT資料です
https://jazug.connpass.com/event/81865/
Toshinori Sugita
April 20, 2018
Tweet
Share
More Decks by Toshinori Sugita
See All by Toshinori Sugita
OPA and cloud resources
toshi0607
0
13k
KompalWeather: Serverless Sauna Service with Cloud Run
toshi0607
0
12k
Knativeで作るDIY FaaS / serverless days fukuoka 2019 knative workshop
toshi0607
0
4.8k
Knativeで作るDIY FaaS / serverless days tokyo 2019 knative workshop
toshi0607
4
11k
Knativeへの誘い / Go Go Knative!
toshi0607
3
5.3k
Build serverless application on top of Kubernetes #sdmel19
toshi0607
1
6k
Knativeで実現するKubernetes上のサーバーレスアーキテクチャ #CNDT2019 #1E3 / serverless architecture on the top of K8s with Knative
toshi0607
9
14k
技術書典で高めるせんとう力 #エンジニア銭湯 / Tech book fest loves sauna
toshi0607
1
6.7k
Goで学ぶKnative #mercarigo / learning Knative with Go
toshi0607
5
24k
Other Decks in Technology
See All in Technology
マルチモーダル / AI Agent / LLMOps 3つの技術トレンドで理解するLLMの今後の展望
hirosatogamo
37
12k
Can We Measure Developer Productivity?
ewolff
1
150
いざ、BSC討伐の旅
nikinusu
2
780
TypeScript、上達の瞬間
sadnessojisan
46
13k
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
380
Platform Engineering for Software Developers and Architects
syntasso
1
520
複雑なState管理からの脱却
sansantech
PRO
1
140
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
7
800
The Rise of LLMOps
asei
7
1.4k
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
2
300
スクラム成熟度セルフチェックツールを作って得た学びとその活用法
coincheck_recruit
1
140
EventHub Startup CTO of the year 2024 ピッチ資料
eventhub
0
110
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
The Invisible Side of Design
smashingmag
298
50k
Designing for humans not robots
tammielis
250
25k
Side Projects
sachag
452
42k
Agile that works and the tools we love
rasmusluckow
327
21k
How to train your dragon (web standard)
notwaldorf
88
5.7k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
A Tale of Four Properties
chriscoyier
156
23k
Faster Mobile Websites
deanohume
305
30k
Transcript
Durable Functionsでつくるモバイル アプリのサーバーレスなバックエンド for 承認フロー 2018/4/21 Global Azure Bootcamp 2018@Tokyo
自己紹介 • 杉田 寿憲 ◦ Toshinori Sugita ◦ toshi0607 ◦
toshi0607 ◦ toshi0607 • Software Engineer@freee ◦ 好評の Windows 版に続いて急遽リリースを決めた Mac 版アプリの開発に、Xamarin.Mac を採用し て大幅な開発効率のアップと機能の標準化を実現。 • 最近の様子 ◦ Ruby > JavaScript >>> Go >>>>>> C# • 『Extensive Xamarin』(共著)発売中!
今日のお話 • Durable Functionsが面白そうなので調べてみた • Xamarin.FormsとDurable Functionsでサンプルアプリをつくって みた • 触ってみる上で知っておくと捗りそうなポイント
今日のお話 • Durable Functionsが面白そうなので調べてみた • Xamarin.FormsとDurable Functionsでサンプルアプリをつくって みた • 触ってみる上で知っておくと捗りそうなポイント
Durable Functionsとは? • Azure Functions(、Azure WebJobs)のステートを管理する拡張機能 • コードでワークフロー(チェーン、並列実行、非同期管理などなど) を実装 •
役割の異なる3つのバインド(orchestrationClient、orchestrationTrigger、 activityTrigger)とAzure Storage(Queue、Table、BLOB)でワークフローを 制御 ※https://docs.microsoft.com/ja-jp/azure/azure-functions/durable-functions-overview
Durable Functionsとは? ※https://docs.microsoft.com/ja-jp/azure/azure-functions/durable-functions-sequence
Durable Functionsとは? GAの日も遠くなさそう
AWS(AWS Lambda)では? • AWS Step Functionsがある(Azure Logic Appsぽい?) • Amazonステートメント言語(json形式)でステートマシンを記述
• ステートにはLambda、アクティビティ(ワーカースクリプト)、エラー処 理、反復処理などを記述し、ワークフローを組み立てる ※https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/welcome.html
今日のお話 • Durable Functionsが面白そうなので調べてみた • Xamarin.FormsとDurable Functionsでサンプルアプリをつくって みた • 触ってみる上で知っておくと捗りそうなポイント
つくったアプリ • スタンプカードアプリ。ただし、スタンプ を押すのにはメールでの承認が必要 • クライアントはXamarin.Forms製のモ バイルアプリ • バックエンドはDurable Functions製
※https://github.com/toshi0607/StampCard
つくったアプリ Backend • Microsoft.NET.Sdk.Functions • Microsoft.Azure.WebJobs.Extensions.DurableTask • Microsoft.Azure.WebJobs.Extensions.SendGrid •
Microsoft.Azure.Mobile.Client ※https://github.com/toshi0607/StampCard MobileClient • Xamarin.Forms • Syncfusion.SfCalendar.XForms • Microsoft.Azure.Mobile.Client
承認フロー • CalendarDate ◦ Type: 申請ステータス ▪ Status: Reviewing、Approved、Rejected ◦
StampAt: カレンダー1日分の日付
今日のお話 • Durable Functionsが面白そうなので調べてみた • Xamarin.FormsとDurable Functionsでサンプルアプリをつくって みた • 触ってみる上で知っておくと捗りそうなポイント
各関数・バインドの役割 • オーケストレーションクライアント ◦ HttpTriggerやQueue Triggerなどで起動 ◦ オーケストレーターを操作(開始、強制終了) ◦ オーケストレーターの状態(実行中、完了など)をクエリ
◦ オーケストレーターにイベントを送信 • オーケストレーション関数 ◦ OrchestrationTriggerで起動 ◦ Table Strotageを使いながらオーケストレーションの履歴を管理する ◦ 実行履歴をチェックしながら定期的にループしている ◦ 様々な制約がある ◦ 外部イベントで実行の中断(見かけ上)を再開できる • アクティビティ関数 ◦ ActivityTriggerで起動 ◦ 標準仕様に近いFunction ※https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/welcome.html
デバッグのポイント • オーケストレーターは定期的に再実行される ◦ activityやイベント待受のawaitごとに状態をTable Storageに保存 ◦ 次回実行時にactivityが完了していたり、イベントを受信したりしていたら先に進める オーケストレーターのブレークポイントは条件付きに ログの吐き出しは条件付きに
デバッグのポイント • オーケストレーションの履歴はTable Storageに保存される • オーケストレーターのアクティビティ呼び出し、クライアントからの 呼び出しはQueue Storageを経由する • ログの保存はAzure
Functionに準ずるので、Application Insights の有効・無効に注意する Azure Storage Emulator(azurite for Mac)とAzure Storage Explorerを フル活用
外部イベントの待ち受け ※https://docs.microsoft.com/ja-jp/azure/azure-functions/durable-functions-external-events ※https://docs.microsoft.com/ja-jp/azure/azure-functions/durable-functions-timers とはいえ必要な時はタイムアウトも忘れずに (DurableOrchestrationContextのCreateTimer使用)
ふりかえり(Good) • Durable Functionsを使うのは便利で楽しいけど、実現するための 仕組みや制約を学ぶことはそれ以上に楽しかった • C#でasync/awaitを書く感覚をもたらしつつ、複雑なアーキテク チャ、ステート・実行環境の制御を隠ぺいしてくれているのは最高 にcool •
クライアントもセットで作ることでより「人の通常操作内でデータの 整合性を保つにはどうすればいいか?」という視点が持てて実感 がわいてよかった
ふりかえり(Challenge) • モバイルからも制御が複雑なバックエンドからも同じデータを触る にあたりトランザクションほしいとか思ったらデータ更新のフロー 見直した方がよいかも • サンプルなのでクライアントはコードビハインドにもりもり書いてみ ようと思って書いてみたらそれなりに後悔した • ステータス変更はプッシュ通知やポーリングなどでスタンプリクエ
ストする人の「更新」クリックに頼らないようにしたい
良質な学習リソース • [Advent Calendar 2017 Day1] Durable Functions ことはじめ ◦
まずはポータルでひととおり動かすのが楽でした ◦ プレビューかつ日々開発が進んでいるのですでに雰囲気違うかもしれません • Durable Functions の概要 (プレビュー) ◦ 公式ドキュメントの整備され具合がすごいです ◦ パターンごとのサンプル実装を動かすのもよかったです • Azure/azure-functions-durable-extension ◦ OSSなのでコードは読み放題です ◦ issueへの回答もめちゃくちゃ速かったです • Azure Serverless Computing Cookbook ◦ 2017年8月発売ながら(申し訳程度に)Durable Functionsにも言及 ◦ FunctionsのHttpTriggerしか触ったことがなかったので一からやる分にはユース ケースのイメージがつきやすくよかったです
ご清聴ありがとうございました! Durable Functionsでつくる モバイルアプリのサーバーレスなバックエンド for 承認フロー