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
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
65
travelnow
bankinc220
0
100
heybanknight
bankinc220
1
120
How CASH works!〜CASHのシステム構成〜
bankinc220
1
990
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
GitHub's CSS Performance
jonrohan
1032
470k
For a Future-Friendly Web
brad_frost
180
10k
Building an army of robots
kneath
306
46k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Six Lessons from altMBA
skipperchong
29
4k
The Language of Interfaces
destraynor
162
25k
Building a Modern Day E-commerce SEO Strategy
aleyda
44
7.8k
Why Our Code Smells
bkeepers
PRO
340
57k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
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