Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AlloyDB 奮闘記
Search
hatappi
March 19, 2026
Technology
410
0
Share
AlloyDB 奮闘記
https://layerx.connpass.com/event/385842
hatappi
March 19, 2026
More Decks by hatappi
See All by hatappi
Cloudflare を活用して変わったメルカリの開発体験 / How Cloudflare Changed Mercari's Development Experience
hatappi
1
830
RubyではじめるGraphQL
hatappi
0
940
RubyでChainerつくってます!!
hatappi
2
1.5k
TDDな個人開発
hatappi
0
360
できるだけ楽して楽しくRails開発しよう
hatappi
2
360
EKSにRailsをのせた
hatappi
1
1.3k
RubyとApache Arrow
hatappi
0
2.6k
Red Chainerを なぜ作って今後どうするのか
hatappi
2
2.5k
Fargateで夢は見られるのか
hatappi
1
2.3k
Other Decks in Technology
See All in Technology
【2026年版】プロジェクトマネジメント実践論|現役エンジニアが語る!~チームでモノづくりをする時のコツとは?~
mixi_engineers
PRO
1
120
AIのために、AIを使った、Effect-TSからの脱却 〜テストを活用した安全なリファクタリングの進め方〜
bitkey
PRO
1
180
サプライチェーン攻撃への備えについて考えている #湘なんか
stefafafan
2
2k
React Compiler導入の効果と運用の工夫
kakehashi
PRO
3
300
その英語学習、AWSで代替できませんか?
suzutatsu
1
180
The Making of AI Chips
pfn
PRO
0
560
AI全盛の今だからこそ、あえてもう一度振り返るAPIの基礎
smt7174
3
140
ジュニアエンジニアはSREとどう向き合うべきか
nrinetcom
PRO
0
100
DI コンテナ自動生成ツールを実装してみた / intro-autodi
uhzz
0
720
業務に残された「良くない型」で考える「TypeScriptの難しさ」
sajikix
3
900
Loadbalancing exporter internals
ymotongpoo
1
120
ラズパイ & Picoで入門:Zephyr(RTOS)の環境構築からビルドまでの紹介
iotengineer22
0
150
Featured
See All Featured
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
440
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
120
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
Un-Boring Meetings
codingconduct
0
290
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
370
30 Presentation Tips
portentint
PRO
1
300
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.6k
Speed Design
sergeychernyshev
33
1.7k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
310
How to make the Groovebox
asonas
2
2.2k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
63
The Language of Interfaces
destraynor
162
26k
Transcript
1 AlloyDB 奮闘記 ふかぼりSRE ー現場の深淵ー @hatappi
2 • 株式会社メルカリ • 2019年入社 • Cross-Border SRE & Enabling
チーム @hatappi
3 1. メルカリ グローバルアプリ / AlloyDB の紹介 2. 運用の中で起きた課題 3.
どのように解決を試みたか 4. まとめ アジェンダ
4 メルカリ グローバルアプリ / AlloyDB の紹介
5 世界共通アプリ「メルカリ グローバルアプリ」 2025年9月に台湾・香港で提供開始、3年以内に50以上の国や地域への拡大を目指す 海外の購入者と日本国内の事業者の双方の体験を向上し、よりかんたんかつ安心・安全な取引環境構築を実現に向けて 越境取引における購入者・事業者双方の課題を解決し、グローバルでの事業拡大を目指す。 5
6 AlloyDB for PostgreSQL とは • コンピューティングとストレージが分離 ◦ 独立スケーリング可能。セルフマネージド PostgreSQL
比で 4 倍以上高速 • 高可用性 ◦ 99.99% の可用性 SLA(メンテナンス含む)。自動フェイルオーバーと復元 • フルマネージド ◦ Backup、Replication、パッチ適用、メモリ・ストレージ管理を自動化 PostgreSQL 互換の Google Cloud フルマネージド DB
7 運用の中で起きた課題
8 https://speakerdeck.com/mercari/mercari-gears-2025-building-foundation-for-mercaris-global-expansion?slide=56
9 https://speakerdeck.com/mercari/mercari-gears-2025-building-foundation-for-mercaris-global-expansion?slide=59
10 商品情報の同期フロー
11 モジュール間で AlloyDB Cluster を共有しているため 他の Module の処理にも影響が出てしまった 😢 1.
障害や一時的な高負荷により、メッセージの ack に失敗 2. ack されなかったメッセージが大量に再送される 3. 処理のために新規コネクションが増加する 4. コネクションが逼迫する Pub/Sub メッセージの Retry Storm 発生 🔥
12 どのように解決を試みたか
13 • アプリケーションの改善 • Dead Letter Queue 導入 • データベース周りの改善
改善策の全体
14 コネクション管理の最適化 読み込み負荷の分散 データベース周りの改善 Read Replica Managed Connection Pooling
15 改善 Before / After Before After
16 コネクション管理の最適化 読み込み負荷の分散 データベース周りの改善 Read Replica Managed Connection Pooling
17 Read Replica 対応の課題 • Module 数が多いため1つ1つ対応するのには時間がかかる • 開発者がクエリごとにPrimary, Read
Poolのどちらを使用すべきかを 判断するコストを下げたい ◦ これが実現できるとRead Replicaの対応だけでなく将来的に別のデータベースへ 移行したいとなった時などもスムーズに移行できるようになる
18 実装の課題 • Primary と Read Pool で接続先が違うため sql.DB は最低2つ必要になるた
め使い分けクエリ種別で使い分けが必要 • sqlc はクエリ種別でメソッドを分けるが、接続先の選択(Read Replica振 り分け等)は非対応
19 sqlc が生成する DBTX インターフェースを満たす PrimaryとRead Pool へのルー ティング機能をもったクライアントを実装する 解決策
透過的にクエリを振り分ける
20 Read Replica: 解決策 実装イメージ
21 コネクション管理の最適化 読み込み負荷の分散 データベース周りの改善 Read Replica Managed Connection Pooling
22 STEP 1: MCnP を Enable する STEP 2: 各
Module を徐々に MCnP 経由に移行する Managed Connection Pooling (MCnP) 移行ステップ
23 Language Connector で自動 IAM 認証をしている場合は MCnP がサポートされていなかった 壁 ①:MCnP
を Enable できない https://docs.cloud.google.com/alloydb/docs/release-notes#January_21_2026
24 解決策: Manual IAM Authへの切り替え
25 壁 ②:段階的移行ができない Language Connector を使っていると、自動的に MCnP 経由に切り替わる 想定 実際
26 壁 ②:段階的移行ができない Language Connector と Direct Connect で Pooler
の数が違う
27 • Language Connector を使用しない Direct 接続により複数台の Pooler を 活用しつつ
Module ごとの段階的な 移行を実現 • Pooler は台数やコネクション数の 上限があるため引き続きコネクションの設 計は必要 解決策:Direct 接続
28 結果 データベースごとのコネクション数も落ち着いた 🎉
29 まとめ
30 ① Managed サービスは「丸投げ」ではない 内部の挙動(認証方式、Pooler のデプロイ方法、コネクションの経路)を 理解した上で使うことが重要 ② 抽象化レイヤーが移行時には障壁になることも Language
Connector のような便利な抽象化も、移行・チューニング時には「中で 何が起きているか」が見えなくなるリスクがある ③ スケールの挑戦はこれから 今後より多くの国や地域に展開されていく中でどうスケールさせていくかなど SRE と して腕の見せ所になるので楽しみ まとめ