Knativeで限界突破〜Push通知をバラ撒くために〜Bank,Incうなすけ
View Slide
誰?名前 : うなすけ肩書 : エンジニアやってること● 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 commandhttps://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