Upgrade to Pro — share decks privately, control downloads, hide ads and more …

send-push-notification-with-knative.pdf

30f225267161deef6146671e4b118dfb?s=47 Bank, Inc
October 30, 2018
2k

 send-push-notification-with-knative.pdf

30f225267161deef6146671e4b118dfb?s=128

Bank, Inc

October 30, 2018
Tweet

Transcript

  1. Knativeで限界突破 〜Push通知をバラ撒くために〜 Bank,Inc うなすけ

  2. 誰? 名前 : うなすけ 肩書 : エンジニア やってること • CASH

    の API サーバー開発・運用 ◦ Rails をがんばる ◦ Kubernetes をがんばる アカウント • https://twitter.com/yu_suke1994 • https://mstdn.unasuke.com/@unasuke #banknight
  3. 実験 #banknight

  4. 「すべては実験」 光本 勇介

  5. https://bank.co.jp/recruit/ #banknight

  6. #banknight 実験

  7. Push通知を大量に送る • 突然 「こういう属性のユーザーに通知を送りたい」 ◦ データ解析班から渡される大量の User ID ▪ ある施策では

    42 万件の通知を送った ◦ 愚直に 1 件ずつ Firebase の API を叩く ▪ 「送信完了は今晩 23 時頃になりますね」 • ギャー ◦ 存在しない Device Token でエラーになる #banknight
  8. Push通知を大量に送る • FCM の Topic を用いた大量通知配信 ◦ Topic を作成 →

    Topic に配信 ◦ ひとまずこの方式で通知を送ることに • Topic は作成にある程度時間がかかる ◦ 「今、すぐ!」に応えられない #banknight
  9. Push通知を大量に送る #banknight

  10. Push通知を大量に送る • Cloud Functions によって FCM に Request を送信 ◦

    Promise を使用して並列化 • 急な大量通知の要望に応えられるように ◦ https://github.com/bank/baramaki ここまでほぼGoogle Cloud NEXT’18 #banknight
  11. テックブログ書いた https://tech.bank.co.jp/entry/2018/09/18/150000 #banknight

  12. Push通知を大量に送る ここからが今日の本題 #banknight

  13. Push通知を大量に送れなかった #banknight

  14. Push通知を大量に送れなかった • 検証で数万件の Push 通知を送ろうとした ◦ Quota Limit に引っ掛る •

    1 秒あたりの関数呼び出し数に上限 ◦ 初期値 「100 秒あたり 1,000,000」 ◦ 「大量」に送れないじゃん! #banknight
  15. Push通知を大量に送りたい • Quota Limit は緩和申請できる ◦ もちろん申請して上限を上げている • 呼び出し毎にジッタを挿入して凌ぐ ◦

    秒あたりの呼び出し回数を抑える ▪ 送信完了までの時間が伸びる…… 呼び出し回数に制限のない FaaS ってないのかな〜〜〜??? #banknight
  16. ある #banknight

  17. Knative #banknight

  18. Knative とは • Kubernetes 上に構築できる serverless platform ◦ FaaS のようなものを自前で持てる

    ◦ GKE にも Serverless Add-on として登場予定 ▪ 登場「予定」 • early access に申し込み済 ◦ 待てない ▪ 今ほしい #banknight
  19. Knative • ならもう構築するしかない ◦ https://github.com/knative/docs ▪ 全てがここにある • やっていきましょう #banknight

  20. 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
  21. 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
  22. Knative install step 3 (install knative) • Knative 自体のインストール ◦

    これもほぼ 1 command https://github.com/knative/docs/blob/master/install/Knative-with-GKE.md #banknight
  23. Knative demo • 導入の解説よりデモが見たい、そうでしょう? #banknight

  24. Knative まとめ • Cloud Functions の Quota 回避のための Knative ◦

    導入はそんなに難しくない ◦ API Limit がなくなった ▪ 限界突破 ◦ 様々な言語を使用できる • Serverless Add-on が待ち遠しい • 大量の Push 通知が今すぐできる!!! • Any question? #banknight