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
EventGridTopicで手軽にイベントドリブンを手に入れる
Search
Yu_ka1984
May 27, 2019
Technology
1.8k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
EventGridTopicで手軽にイベントドリブンを手に入れる
Yu_ka1984
May 27, 2019
More Decks by Yu_ka1984
See All by Yu_ka1984
Durable Functionsを"公式ドキュメントとは違う形で"話して見る
yukaabuno
3
900
Durable Functionsの特徴をふわっと理解してみる
yukaabuno
2
180
Xamarin.Forms 使うべき?
yukaabuno
3
1.2k
Xamarin.Forms とコンソールアプリでモデル層を共通化してみた
yukaabuno
0
2.3k
Other Decks in Technology
See All in Technology
Jetpack Compose で挑む新聞紙面UI ─ 複合ジェスチャー・ポリゴン記事領域・適応的ページ構成という3つの壁/droidkaigi2026
nikkei_engineer_recruiting
0
230
20260906 「AWS運用入門」著者が教える、運用業務への生成AI活用入門
masaruogura
0
240
AIとペアプロを始める。人とのペアプロをやめる。ペアプロの良さを改めて知る。もっと好きになった。 / Rediscovering Pair Programming
honyanya
1
250
その指示、Bobにしっかり伝わってる?初心者でも即実践できる プロンプト/コンテキスト設計のコツ
muehara
1
170
Azure App Service / Container Apps の組み込み認証
kuniteru
0
200
Driving AI Adoption Using In-House GPUs to Serve Qwen
po3rin
2
460
AIに丸投げしないトイル削減 / Eliminating Toil Without Leaving It All to AI
kohbis
2
610
「重なり」は迎える側がつくる ― 人もAIエージェントも歓迎するプロダクトエンジニアリング ―
go0517go
PRO
0
250
From Vanilla Kubernetes to a Batteries-Included Platform: Developer Experience at 1,300+ Clusters
yosshi_
0
570
振り返りこそエンジニアの本領
negima
0
310
作り直せるコードは迅速に 作り直せないDBは慎重に - AI時代のプロダクトエンジニアが「判断の不可逆性」で開発速度を変える話
kinosuke01
0
250
PdMをやめて、 "プロダクトビルダー"という 働き方に変えました / PdM to Product Builder
shikichee
2
720
Featured
See All Featured
Marketing to machines
jonoalderson
1
5.7k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Docker and Python
trallard
47
4.2k
My Coaching Mixtape
mlcsv
0
310
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Typedesign – Prime Four
hannesfritz
42
3.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
490
The Cost Of JavaScript in 2023
addyosmani
55
10k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
So, you think you're a good person
axbom
PRO
2
2.1k
Transcript
Event Grid Topicで手軽にイ ベントドリブンを手に入れる By yuka abuno Serverless meetup Tokyo
#12 2019 / 05 / 27
こんにちは、Azure地方から参りました。 • 所属 : シグマコンサルティング株式会社 • Twitter : @yu_ka1984 •
ブログ書いたりプログラム書いたり • Durable Functions Contributor • C#er(ただしUnityはやってない) • Microsoft MVP for Development Technology (Not Azure) • Webフロントエンド〜スマホ・デスクトップ〜バックエンド・クラウ ド
質問 サーバレスアーキテクチャ利用してますか?
サーバレスアーキテクチャとかイベントドリブンな開 発凄く好きなんだけど・・・・ でも現実ではMVCフレームワークを使ってサービス 立ち上げることが多いよねぇ
そんなMVCフレームワークWebアプリケーションで も「サーバレスアーキテクチャ」を使っていこう!!
こんな事よくありませんか? • その処理の時にユーザにメール投げて欲しいんだけど。 • その処理の時にSlackに通知して欲しいんだけど。 • その処理の時にカスタマーサービスと連携して欲しいんだけど。 • その処理の時にバックエンド基幹と連携して欲しいんだけど。 •
その処理の時にPDFをStorageに作成してほしいんだけど。 • その処理の時にetc • その処理の • その
そんなの全部実装していったら・・・・
じゃあ、どうする?
諦めて同期的に実装する? • 気がついたらなんか重いサービス • 1ロジック内に色々な処理を実行 -> 耐障害性の低下(冪等性、リ トライ、etc
RDBのレコードにフラグを追加して定期バッチ処理で後から実行 • バッチ実行頻度は?(リアルタイム性) • 1回のバッチ実行件数は?(バッチ突き抜け問題) • そもそも「その処理」がRDB更新処理ではなかったら? • 気がついたらフラグ沢山・・・・
メッセージングサービスを使って非同期処理 • 「「これならいける!!」」のだけど・・・
メッセージングサービスを使って非同期処理 • いつのまにか、メッセージングサービスが沢山に・・・
運用開始後のメンテナンスとして 何かの処理の後に何かを追加するのはよくある事。
ならば 始めからアプリケーション全体のアクティビティを1 つのメッセージサービスに集約 あとから自由にアクティビティを購読できると素敵な のでは?
None
メッセージングサービスに欲しい性能 • 1つのメッセージングサービスにアプリケーション全体のアク ティビティを集約 • 1つのメッセージングサービスから欲しいアクティビティのみを 購読 • お手軽に安く。でもスケーラブルに。 •
Subscriberの自由度が欲しい。
Azure Event Grid \ \ \ Topic / / /
Azure Event Grid • イベント ベースのアーキテクチャを備えたアプリケーションを 簡単に作成するためのサービス • Azureの様々なサービスをPublisherとして設定でき、必要なメッ セージのみをフィルタリングして購読できる
• 購読はWebHookで受け取れる。(Push型) • 従量課金なサーバレスメッセージングサービス
None
Azure Event Grid Topic • TopicエンドポイントにメッセージをHttp Postする事で独自イベ ントをPublishできる。 • AzureのサービスでなくてもPublisherになれる
• Pub/Subがプッシュ/プッシュ型 • 通常のEvent Gridはクラウドインフラのレイヤーのイベントを取 り扱うが、Custom Topicを使用する事でアプリケーションレイ ヤーのメッセージングサービスとして機能する
メッセージの中身 { "eventType" : "OrderCreate", "Subject" : "Order/Create/12345", "Data": {
"No": 12345, "Date": "2019/05/27", "Customer": "1302834u" } }
購読時のフィルタリング • EventTypeでフィルター • EventTypeは複数指定可能(OR) • Subjectの StartWith / EndWith
でフィルター可能 • 高度なフィルタリングとして • EventType/Subject以外にもDataなどからフィルタリングが可 能(And)
SLAと料金とリトライと • SLA : 99.95 • 月に500万回Publishして500万回配信した場合 • ¥ 665.280
• MSさんはこのサービスで儲けようとはしていない? • リトライ : 最大1日 / 30回 までリトライする ( WebHook ) • 1日以上はリトライできない / 30回以上はリトライできない • 最終的に失敗したら? • デッドレターとしてAzure Storage Blobにメッセージを保存できる • Storage Blobへの保存をトリガーにして色々組んでおけばOK
悲しい部分( *´Д⊂ グスン… • Custom TopicへのpublishにRate Limitがある(5000/sec) • POST時に429が返ってくるのでリトライする •
アプリケーションの規模が大きくなってきた時にネックにな る可能性がある。 • アクティビティの種類、単位を絞る • より大規模に対応可能なメッセージサービスへの移行 • Microsoftに文句を投げつける
開発者目線 • アプリケーション全体の処理で同期/非同期を明確にする事でパ フォーマンス面の考慮や障害時の復旧処理などの設計が楽に • メッセージサービスが沢山にならなくて管理が楽 • Subscriberの選択幅が広い(FunctionsだけでなくLogic Apps(ノー コーディングワークフロー)などが使える)
• コードを見るだけでは、どのアクティビティに対してどの処理が 発生するかが分からなくなりやすい • ドキュメント類をちゃんと書けば特に問題ない
Event Grid Topicを使って気軽なイベントドリブンな 開発をしましょう。