send-push-notification-with-knative.pdf
by
Bank, Inc
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Knativeで限界突破 〜Push通知をバラ撒くために〜 Bank,Inc うなすけ
Slide 2
Slide 2 text
誰? 名前 : うなすけ 肩書 : エンジニア やってること ● CASH の API サーバー開発・運用 ○ Rails をがんばる ○ Kubernetes をがんばる アカウント ● https://twitter.com/yu_suke1994 ● https://mstdn.unasuke.com/@unasuke #banknight
Slide 3
Slide 3 text
実験 #banknight
Slide 4
Slide 4 text
「すべては実験」 光本 勇介
Slide 5
Slide 5 text
https://bank.co.jp/recruit/ #banknight
Slide 6
Slide 6 text
#banknight 実験
Slide 7
Slide 7 text
Push通知を大量に送る ● 突然 「こういう属性のユーザーに通知を送りたい」 ○ データ解析班から渡される大量の User ID ■ ある施策では 42 万件の通知を送った ○ 愚直に 1 件ずつ Firebase の API を叩く ■ 「送信完了は今晩 23 時頃になりますね」 ● ギャー ○ 存在しない Device Token でエラーになる #banknight
Slide 8
Slide 8 text
Push通知を大量に送る ● FCM の Topic を用いた大量通知配信 ○ Topic を作成 → Topic に配信 ○ ひとまずこの方式で通知を送ることに ● Topic は作成にある程度時間がかかる ○ 「今、すぐ!」に応えられない #banknight
Slide 9
Slide 9 text
Push通知を大量に送る #banknight
Slide 10
Slide 10 text
Push通知を大量に送る ● Cloud Functions によって FCM に Request を送信 ○ Promise を使用して並列化 ● 急な大量通知の要望に応えられるように ○ https://github.com/bank/baramaki ここまでほぼGoogle Cloud NEXT’18 #banknight
Slide 11
Slide 11 text
テックブログ書いた https://tech.bank.co.jp/entry/2018/09/18/150000 #banknight
Slide 12
Slide 12 text
Push通知を大量に送る ここからが今日の本題 #banknight
Slide 13
Slide 13 text
Push通知を大量に送れなかった #banknight
Slide 14
Slide 14 text
Push通知を大量に送れなかった ● 検証で数万件の Push 通知を送ろうとした ○ Quota Limit に引っ掛る ● 1 秒あたりの関数呼び出し数に上限 ○ 初期値 「100 秒あたり 1,000,000」 ○ 「大量」に送れないじゃん! #banknight
Slide 15
Slide 15 text
Push通知を大量に送りたい ● Quota Limit は緩和申請できる ○ もちろん申請して上限を上げている ● 呼び出し毎にジッタを挿入して凌ぐ ○ 秒あたりの呼び出し回数を抑える ■ 送信完了までの時間が伸びる…… 呼び出し回数に制限のない FaaS ってないのかな〜〜〜??? #banknight
Slide 16
Slide 16 text
ある #banknight
Slide 17
Slide 17 text
Knative #banknight
Slide 18
Slide 18 text
Knative とは ● Kubernetes 上に構築できる serverless platform ○ FaaS のようなものを自前で持てる ○ GKE にも Serverless Add-on として登場予定 ■ 登場「予定」 ● early access に申し込み済 ○ 待てない ■ 今ほしい #banknight
Slide 19
Slide 19 text
Knative ● ならもう構築するしかない ○ https://github.com/knative/docs ■ 全てがここにある ● やっていきましょう #banknight
Slide 20
Slide 20 text
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
Slide 21
Slide 21 text
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
Slide 22
Slide 22 text
Knative install step 3 (install knative) ● Knative 自体のインストール ○ これもほぼ 1 command https://github.com/knative/docs/blob/master/install/Knative-with-GKE.md #banknight
Slide 23
Slide 23 text
Knative demo ● 導入の解説よりデモが見たい、そうでしょう? #banknight
Slide 24
Slide 24 text
Knative まとめ ● Cloud Functions の Quota 回避のための Knative ○ 導入はそんなに難しくない ○ API Limit がなくなった ■ 限界突破 ○ 様々な言語を使用できる ● Serverless Add-on が待ち遠しい ● 大量の Push 通知が今すぐできる!!! ● Any question? #banknight