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
470
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AlloyDB 奮闘記
https://layerx.connpass.com/event/385842
hatappi
March 19, 2026
More Decks by hatappi
See All by hatappi
メルカリのグローバルアプリで挑んだ AlloyDB 運用と課題解決の実践記
hatappi
0
260
Cloudflare を活用して変わったメルカリの開発体験 / How Cloudflare Changed Mercari's Development Experience
hatappi
1
900
RubyではじめるGraphQL
hatappi
0
970
RubyでChainerつくってます!!
hatappi
2
1.5k
TDDな個人開発
hatappi
0
380
できるだけ楽して楽しくRails開発しよう
hatappi
2
380
EKSにRailsをのせた
hatappi
1
1.3k
RubyとApache Arrow
hatappi
0
2.7k
Red Chainerを なぜ作って今後どうするのか
hatappi
2
2.5k
Other Decks in Technology
See All in Technology
巨大気象データと戦う ― サロゲートモデル学習を高速化する圧縮技術
gpuunite_official
0
260
Model Studio CLI × Token Plan
maigo999
0
210
【GCC2026】大規模言語モデルを活用した内製検索サービスの社内展開や業務活用
bandainamcostudios
PRO
0
520
ソフトウェアサプライチェーンの構造的リスクとコンテナ環境の保護
kyohmizu
5
900
LanceDB入門
mocobeta
9
670
Kiro WebとCloud Sessions
nagisa53
2
180
【GCC2026】鉄拳8でのVFX開発事例
bandainamcostudios
PRO
0
290
案件に一番詳しいAIを Amazon Bedrock AgentCore で作る ― 知見が知見を生むチームへ / Compounding Knowledge with AgentCore
yusukeshimizu
1
180
現場回帰したデータエンジニアが考える AI 時代のキャリア開発 / Career Development in the Age of AI Perspectives from a Hands-on Data Engineer
medley
0
320
自宅NWにISR4331を導入してみた話
okaits
0
120
NANDでも描画したい!
nichica906
3
650
도구에서 동료까지: 10년차 AI 스타트업의 AI 적응기
inureyes
PRO
1
340
Featured
See All Featured
Ruling the World: When Life Gets Gamed
codingconduct
0
310
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
The browser strikes back
jonoalderson
0
1.5k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
220
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
500
How to Think Like a Performance Engineer
csswizardry
28
2.7k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Mind Mapping
helmedeiros
PRO
1
330
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.4k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
480
Navigating Team Friction
lara
192
16k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
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 と して腕の見せ所になるので楽しみ まとめ