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
/cloud-spanner-operation-on-merpay
Search
tkuchiki
June 21, 2019
Technology
1.5k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
/cloud-spanner-operation-on-merpay
https://mercari.connpass.com/event/134959/
の発表資料です。
tkuchiki
June 21, 2019
More Decks by tkuchiki
See All by tkuchiki
Kubernetesの上に作る、統一されたマイクロサービス運用体験
tkuchiki
1
8.3k
メルペイSREチームのオンコール/oncall-merpay-sre
tkuchiki
0
310
/sre-next-2020
tkuchiki
5
15k
/fastly-meetup-3
tkuchiki
0
120
/fastly-yamagoya-meetup-2019
tkuchiki
0
250
2年間運用しているソーシャルゲームのサーバ構成の変遷
tkuchiki
3
5.1k
ソーシャルゲームにおける AWS 移行事例
tkuchiki
21
25k
Other Decks in Technology
See All in Technology
やさしいA2A入門
minorun365
PRO
12
1.8k
2026TECHFRESH畢業分享會 - Lightning Talk - E起 See See : 電商推薦讀心術? 數據說了算
line_developers_tw
PRO
0
940
脆弱性対応、どこで線を引くか
rymiyamoto
1
380
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
130
エラーバジェットのアラートのタイミングを考える.pdf
kairim0
0
140
AIのReact習熟度を測る
uhyo
2
360
AIはどのように 組織のアジリティを変えるのか?
junki
2
670
20260619 私の日常業務での生成 AI 活用
masaruogura
1
180
Disciplined Vibes: Scaling AI-Assisted Engineering
sheharyar
0
140
AIっぽい文章を採点して人間らしく直すアプリを作ってみた
yama3133
2
140
MCP Appsを作ってみよう
iwamot
PRO
4
600
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
940
Featured
See All Featured
Technical Leadership for Architectural Decision Making
baasie
3
400
AI: The stuff that nobody shows you
jnunemaker
PRO
8
710
Measuring & Analyzing Core Web Vitals
bluesmoon
9
860
Done Done
chrislema
186
16k
The Curse of the Amulet
leimatthew05
1
13k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
390
Un-Boring Meetings
codingconduct
0
310
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
230
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
840
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2k
Transcript
Merpay における Cloud Spanner の オペレーション Merpay SRE @tkuchiki
WHOAMI(1) • @tkuchiki • Merpay SRE 2
Agenda • Cloud Spanner の監視 • Cloud Spanner の backup
• Cloud Spanner の node 数を定期的に変更する 3
Cloud Spanner の 監視
監視 • Metrics は Datadog の GCP Integration で収集 ◦
CPU 使用率 ◦ ディスク使用量 ◦ Spanner API のレイテンシ ◦ Spanner API のステータス ◦ QPS ◦ Session数 ◦ Network I/O • 監視で主に見ているのはCPU 使用率 ◦ その他の metrics は朝会でグラフを見て、予兆がないか確認 • その他の監視は調整中 ◦ e.g. QPS の急激な上昇・減少、 Spanner API ステータス OK の急激な減少、など 5 https://cloud.google.com/monitoring/api/metrics_gcp#gcp-spanner https://www.datadoghq.com/abo ut/press/resources/
CPU metrics • Cloud Spanner の CPU metrics には合計、優先度(low、high)、移動平均24時間 がある
◦ 合計は 優先度 low + high • アプリケーションから実行するクエリは基本的に優先度 high ◦ バッチ読み取りやバッチクエリは優先度 low になるとドキュメントに記載されている ▪ BatchReadOnlyTransaction、ExecuteBatchDml ? 6 https://cloud.google.com/spanner/docs/cpu-utilization
CPU metrics • CPU 使用率の推奨最大値がドキュメントに記載されており、その値を超えた場合は アラートを出すべきとされている ◦ 優先度 high: シングルリージョン
65%、マルチリージョン 45% ◦ 移動平均24時間: 90% • 優先度 low が一定期間高いのも問題とされているので監視が必要 ◦ 一定期間 = 数時間から1日程度 7 https://cloud.google.com/spanner/docs/cpu-utilization
8 合計
9 low priority
10 high priority
11 移動平均24時間
12
13
14
Cloud Spanner の backup
Backup • Cloud Spanner には database を export する機能がある ◦
https://cloud.google.com/spanner/docs/export ◦ Cloud Dataflow を使用して、Cloud Storage に export ◦ Avro & JSON • ただし、定期的に export する機能はない • App Engine cron で export をスケジュール実行している • フルバックアップなので時間がかかる & 容量が大きい 16
17 Cloud Dataflow Cloud Storage Cloud Spanner App Engine cron
& task queue 3.Run Cloud Dataflow 4.Get template 2. Get database names 1.Run Job 6.Export database 5.Run Job 7.Upload Avro & JSON files
Restore • Console から restore 可能 ◦ GCS の path
を指定する • https://cloud.google.com/spanner/docs/import 18
19
Cloud Spanner の node 数を 定期的に変更する
Node 数を変更したいケース • キャンペーン開始や Push 通知、TV 放映などのスパイクアクセスが見込まれる ケース ◦ 事前に
node 数を増やしておくことで対応 • バッチ処理で一時的に Cloud Spanner の CPU 使用率が上昇するケース ◦ 開始時間が明確で、終了時間も予測可能 ◦ Cloud Spanner は 簡単に node 数を増やせるので、定期的に Node 数を増減させたい • Cloud Scheduler の cron ジョブで Cloud Spanner のノード数を変更する方法 ◦ https://tech.mercari.com/entry/2019/05/29/120000 • ※検証段階で未導入 21
22 Cloud Scheduler Cloud Spanner Increase/Decrease NodeCount
Cloud Scheduler から API を実行 • プログラムを書かなくても動かせる • Node 数を絶対値で指定するため、べき等になる
◦ Cloud Scheduler は1回のスケジュールで複数回実行される可能性がある • Node 数を相対値で増減させたい場合はプログラムを書く必要がある ◦ e.g. 3 nodes 増やしたい, + 30% したい 23 https://cloud.google.com/scheduler/docs/creating
24 Cloud Pub/Sub Cloud Scheduler Cloud Spanner Cloud Functions 1.Publish
(increase/decrease) NodeCount 2. Subscribe (increase/decrease) NodeCount 3. (Increase / Decrease) NodeCount
Cloud Scheduler + Cloud Pub/Sub + Cloud Functions • 複数回実行されても問題ないような工夫が必要
◦ (再掲) Cloud Scheduler は1回のスケジュールで複数回実行される可能性がある ◦ Node を増やす分には多少費用が発生するだけなので問題ないが、減らすのが複数回実行される のは危険 ▪ e.g. 現在の node 数から3 node 減らす処理が2回実行されてしまう • Cloud Scheduler を使うのであればこの構成になるが、App Engine cron を使った ほうが一つのサービスで完結するので良さそう 25 https://cloud.google.com/scheduler/docs/creating
26 Cloud Spanner Increase/Decrease NodeCount App Engine cron
今後の展望 • Auto Scaling 対応 • e.g. Datadog Webhooks ->
App Engine / Cloud Functions -> Cloud Spanner API ◦ Datadog の IP ranges が公開されているので制限をかけられそう ◦ `$ curl -s https://ip-ranges.datadoghq.com/ | jq .webhooks.prefixes_ipv4` ◦ Alert 契機の Scaling は考慮することが多そうなので要検証 27
Thank you!