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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Bank, Inc
October 30, 2018
2.2k
0
Share
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
73
travelnow
bankinc220
0
110
heybanknight
bankinc220
1
130
How CASH works!〜CASHのシステム構成〜
bankinc220
1
990
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
304
21k
The Cost Of JavaScript in 2023
addyosmani
55
9.8k
How STYLIGHT went responsive
nonsquared
100
6.1k
The Curse of the Amulet
leimatthew05
1
11k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
260
Exploring anti-patterns in Rails
aemeredith
3
320
The agentic SEO stack - context over prompts
schlessera
0
760
A Soul's Torment
seathinner
6
2.7k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
190
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
220
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
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