$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
send-push-notification-with-knative.pdf
Search
Bank, Inc
October 30, 2018
0
2.2k
send-push-notification-with-knative.pdf
Bank, Inc
October 30, 2018
Tweet
Share
More Decks by Bank, Inc
See All by Bank, Inc
BANK「PRの7RULES」
bankinc220
2
5.2k
bank engineer night#02
bankinc220
2
2.7k
bank engineer night#02
bankinc220
0
2.1k
bank engineer night#02
bankinc220
1
2.6k
CASH を支える Google Kubernetes Engine
bankinc220
0
2.7k
PRLT
bankinc220
1
67
travelnow
bankinc220
0
100
heybanknight
bankinc220
1
120
How CASH works!〜CASHのシステム構成〜
bankinc220
1
990
Featured
See All Featured
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
94
Being A Developer After 40
akosma
91
590k
Unsuck your backbone
ammeep
671
58k
Rails Girls Zürich Keynote
gr2m
95
14k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
How STYLIGHT went responsive
nonsquared
100
6k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
700
[SF Ruby Conf 2025] Rails X
palkan
0
500
KATA
mclloyd
PRO
32
15k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Transcript
Knativeで限界突破 〜Push通知をバラ撒くために〜 Bank,Inc うなすけ
誰? 名前 : うなすけ 肩書 : エンジニア やってること • CASH
の API サーバー開発・運用 ◦ Rails をがんばる ◦ Kubernetes をがんばる アカウント • https://twitter.com/yu_suke1994 • https://mstdn.unasuke.com/@unasuke #banknight
実験 #banknight
「すべては実験」 光本 勇介
https://bank.co.jp/recruit/ #banknight
#banknight 実験
Push通知を大量に送る • 突然 「こういう属性のユーザーに通知を送りたい」 ◦ データ解析班から渡される大量の User ID ▪ ある施策では
42 万件の通知を送った ◦ 愚直に 1 件ずつ Firebase の API を叩く ▪ 「送信完了は今晩 23 時頃になりますね」 • ギャー ◦ 存在しない Device Token でエラーになる #banknight
Push通知を大量に送る • FCM の Topic を用いた大量通知配信 ◦ Topic を作成 →
Topic に配信 ◦ ひとまずこの方式で通知を送ることに • Topic は作成にある程度時間がかかる ◦ 「今、すぐ!」に応えられない #banknight
Push通知を大量に送る #banknight
Push通知を大量に送る • Cloud Functions によって FCM に Request を送信 ◦
Promise を使用して並列化 • 急な大量通知の要望に応えられるように ◦ https://github.com/bank/baramaki ここまでほぼGoogle Cloud NEXT’18 #banknight
テックブログ書いた https://tech.bank.co.jp/entry/2018/09/18/150000 #banknight
Push通知を大量に送る ここからが今日の本題 #banknight
Push通知を大量に送れなかった #banknight
Push通知を大量に送れなかった • 検証で数万件の Push 通知を送ろうとした ◦ Quota Limit に引っ掛る •
1 秒あたりの関数呼び出し数に上限 ◦ 初期値 「100 秒あたり 1,000,000」 ◦ 「大量」に送れないじゃん! #banknight
Push通知を大量に送りたい • Quota Limit は緩和申請できる ◦ もちろん申請して上限を上げている • 呼び出し毎にジッタを挿入して凌ぐ ◦
秒あたりの呼び出し回数を抑える ▪ 送信完了までの時間が伸びる…… 呼び出し回数に制限のない FaaS ってないのかな〜〜〜??? #banknight
ある #banknight
Knative #banknight
Knative とは • Kubernetes 上に構築できる serverless platform ◦ FaaS のようなものを自前で持てる
◦ GKE にも Serverless Add-on として登場予定 ▪ 登場「予定」 • early access に申し込み済 ◦ 待てない ▪ 今ほしい #banknight
Knative • ならもう構築するしかない ◦ https://github.com/knative/docs ▪ 全てがここにある • やっていきましょう #banknight
Knative install step 1 (cleate cluster) • クラスタを作成する ◦ k8s
v1.10 以上 ◦ 4 vCPU (n1-standard-4) ◦ 10 nodes までの autoscale ◦ とかの recommended な要件がある https://github.com/knative/docs/blob/master/install/Knative-with-GKE.md #banknight
Knative install step 2 (install istio) • Istio を入れる ◦
サービスメッシュを実現させるもの ◦ 導入は 1 command でできる ◦ 現在は istio-statsd-prom-bridge が起動できない ▪ deployment を手動で編集 https://github.com/knative/docs/blob/master/install/Knative-with-GKE.md #banknight
Knative install step 3 (install knative) • Knative 自体のインストール ◦
これもほぼ 1 command https://github.com/knative/docs/blob/master/install/Knative-with-GKE.md #banknight
Knative demo • 導入の解説よりデモが見たい、そうでしょう? #banknight
Knative まとめ • Cloud Functions の Quota 回避のための Knative ◦
導入はそんなに難しくない ◦ API Limit がなくなった ▪ 限界突破 ◦ 様々な言語を使用できる • Serverless Add-on が待ち遠しい • 大量の Push 通知が今すぐできる!!! • Any question? #banknight