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
2.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
send-push-notification-with-knative.pdf
Bank, Inc
October 30, 2018
More Decks by Bank, Inc
See All by Bank, Inc
BANK「PRの7RULES」
bankinc220
2
5.2k
bank engineer night#02
bankinc220
2
2.8k
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
81
travelnow
bankinc220
0
110
heybanknight
bankinc220
1
140
How CASH works!〜CASHのシステム構成〜
bankinc220
1
1k
Featured
See All Featured
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
220
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
390
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
580
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Site-Speed That Sticks
csswizardry
13
1.2k
Making Projects Easy
brettharned
120
6.7k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
160
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
370
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