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
72
travelnow
bankinc220
0
110
heybanknight
bankinc220
1
130
How CASH works!〜CASHのシステム構成〜
bankinc220
1
990
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.5k
How GitHub (no longer) Works
holman
316
150k
Building the Perfect Custom Keyboard
takai
2
720
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
390
Darren the Foodie - Storyboard
khoart
PRO
3
3.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
The Pragmatic Product Professional
lauravandoore
37
7.2k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
64
54k
Skip the Path - Find Your Career Trail
mkilby
1
93
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
10k
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