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

30万人が利用するチャットをFirebase Realtime DatabaseからActio...

ryosk7
October 28, 2024

30万人が利用するチャットをFirebase Realtime DatabaseからActionCableへ移行する方法

【Kaigi on Rails 2024 登壇資料】
https://kaigionrails.org/2024/talks/ryosk7/

エンタメマッチングアプリ「pato」は、長らくFirebase Reailtime Databaseを使ってチャット機能を提供してきました。
しかしユーザー数増加に伴い、一斉送信への負荷が高まってきました。全ユーザーに送信するのに、時には1日以上かかることも。
そこで私はFirebase Realtime DatabaseからMySQLに移行し、Firebaseの制約を乗り越えつつ、ActionCableを使ってリアルタイム通信を実現しました。
本トークではRuby on RailsからFirebase Realtime Databaseを使う上での苦労と、乗り換えるに至った背景、実際にどのように移行作業を行なったのかをお話しし、
リアルタイムチャットアプリケーションを実装する上での知見を共有できると幸いです。

ryosk7

October 28, 2024
Tweet

More Decks by ryosk7

Other Decks in Technology

Transcript

  1. ©Kineca & Co.,Inc. All rights reserved. 今日お話すること • Firebase Realtime

    Databaseからの移行理由と課題 • Action Cableの選定と導入プロセス • 移行後の成果と学び
  2. ©Kineca & Co.,Inc. All rights reserved. 自己紹介 @ryosk7 Ryosuke Uchida

    株式会社KINECA エンタメマッチングアプリ「pato」で開発しています 普段はOmotesando.rbでLTしています 技術書典で本を出しています Roppongi.rbのオーガナイザーをしています ✌
  3. ©Kineca & Co.,Inc. All rights reserved. 1 2 3 4

    5 アジェンダ ボトルネックと技術選定 patoのチャット機能について リリースまでのロードマップ 残された課題 まとめ
  4. ©Kineca & Co.,Inc. All rights reserved. ©Kineca & Co.,Inc. All

    rights reserved. patoのチャット機能について 8 01
  5. ©Kineca & Co.,Inc. All rights reserved. patoのチャット機能について このエリアは自由に図や画像などを貼ってください 10 Datastream

    GKE Nodes Cloud Load Balancing Cloud DNS Master Cloud SQL BigQuery Rails アプリケー ションログ Redis Master Memorystore MySQL チャットデータの読 み込み GCP application server GKE/Kubernetes ※ 米国(us-central1)
  6. ©Kineca & Co.,Inc. All rights reserved. ©Kineca & Co.,Inc. All

    rights reserved. ボトルネックと技術選定 14 02
  7. ©Kineca & Co.,Inc. All rights reserved. • Firestore • Cloud

    Pub/Sub • Action Cable ボトルネックと技術選定 代替案
  8. ©Kineca & Co.,Inc. All rights reserved. ボトルネックと技術選定 Action Cableよさそう •

    複数DBからの開放 • ベンダーロックからの開放 • I/O面でのボトルネックからの開放
  9. ©Kineca & Co.,Inc. All rights reserved. ©Kineca & Co.,Inc. All

    rights reserved. リリースまでのロードマップ 32 03
  10. ©Kineca & Co.,Inc. All rights reserved. リリースまでのロードマップ データ移行 Firebase Realtime

    Databaseの全データを 一度Bigqueryに吐き出して、どんなKeyがある のか調査した
  11. ©Kineca & Co.,Inc. All rights reserved. リリースまでのロードマップ Thread Web Concurrency

    Pumaのプロセスが処理できる並列リクエストの数。 Pumaのプロセス数(ワーカー数)。各プロセスは独立しており、 それぞれがスレッドプールを持っている。
  12. ©Kineca & Co.,Inc. All rights reserved. 残された課題 • talksテーブルに関連するカラムを追加 •

    MariaDBに乗り換え (GCPはサポートしてないので、AWSに乗り換え?)
  13. ©Kineca & Co.,Inc. All rights reserved. ©Kineca & Co.,Inc. All

    rights reserved. ご清聴ありがとうございました 78