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

AlloyDB 奮闘記

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for hatappi hatappi
March 19, 2026

AlloyDB 奮闘記

Avatar for hatappi

hatappi

March 19, 2026

More Decks by hatappi

Other Decks in Technology

Transcript

  1. 3 1. メルカリ グローバルアプリ / AlloyDB の紹介 2. 運用の中で起きた課題 3.

    どのように解決を試みたか 4. まとめ アジェンダ
  2. 6 AlloyDB for PostgreSQL とは • コンピューティングとストレージが分離 ◦ 独立スケーリング可能。セルフマネージド PostgreSQL

    比で 4 倍以上高速 • 高可用性 ◦ 99.99% の可用性 SLA(メンテナンス含む)。自動フェイルオーバーと復元 • フルマネージド ◦ Backup、Replication、パッチ適用、メモリ・ストレージ管理を自動化 PostgreSQL 互換の Google Cloud フルマネージド DB
  3. 11 モジュール間で AlloyDB Cluster を共有しているため 他の Module の処理にも影響が出てしまった 😢 1.

    障害や一時的な高負荷により、メッセージの ack に失敗 2. ack されなかったメッセージが大量に再送される 3. 処理のために新規コネクションが増加する 4. コネクションが逼迫する Pub/Sub メッセージの Retry Storm 発生 🔥
  4. 17 Read Replica 対応の課題 • Module 数が多いため1つ1つ対応するのには時間がかかる • 開発者がクエリごとにPrimary, Read

    Poolのどちらを使用すべきかを 判断するコストを下げたい ◦ これが実現できるとRead Replicaの対応だけでなく将来的に別のデータベースへ 移行したいとなった時などもスムーズに移行できるようになる
  5. 18 実装の課題 • Primary と Read Pool で接続先が違うため sql.DB は最低2つ必要になるた

    め使い分けクエリ種別で使い分けが必要 • sqlc はクエリ種別でメソッドを分けるが、接続先の選択(Read Replica振 り分け等)は非対応
  6. 22 STEP 1: MCnP を Enable する STEP 2: 各

    Module を徐々に MCnP 経由に移行する Managed Connection Pooling (MCnP) 移行ステップ
  7. 23 Language Connector で自動 IAM 認証をしている場合は MCnP がサポートされていなかった 壁 ①:MCnP

    を Enable できない https://docs.cloud.google.com/alloydb/docs/release-notes#January_21_2026
  8. 27 • Language Connector を使用しない Direct 接続により複数台の Pooler を 活用しつつ

    Module ごとの段階的な 移行を実現 • Pooler は台数やコネクション数の 上限があるため引き続きコネクションの設 計は必要 解決策:Direct 接続
  9. 30 ① Managed サービスは「丸投げ」ではない 内部の挙動(認証方式、Pooler のデプロイ方法、コネクションの経路)を 理解した上で使うことが重要 ② 抽象化レイヤーが移行時には障壁になることも Language

    Connector のような便利な抽象化も、移行・チューニング時には「中で 何が起きているか」が見えなくなるリスクがある ③ スケールの挑戦はこれから 今後より多くの国や地域に展開されていく中でどうスケールさせていくかなど SRE と して腕の見せ所になるので楽しみ まとめ