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
16k
/fastly-meetup-3
tkuchiki
0
130
/fastly-yamagoya-meetup-2019
tkuchiki
0
260
2年間運用しているソーシャルゲームのサーバ構成の変遷
tkuchiki
3
5.1k
ソーシャルゲームにおける AWS 移行事例
tkuchiki
21
25k
Other Decks in Technology
See All in Technology
DatabricksにおけるMCPソリューション
taka_aki
1
280
SRE Next 2026 何でも屋からの脱却
bto
0
950
2年前に削除したPHPクラスが、 ある日突然決済をエラーにした
ykagano
1
290
Devsumi 2026 Summer 人もAIも使える共通基盤を事業の加速装置にする~デザインシステム運用に学ぶ組織レバレッジ~ 渡辺 凌央
legalontechnologies
PRO
1
240
シンガポールで登壇してきます
yama3133
0
240
人を動かすのは時間ではなく、納得感 〜新任EMが入社3ヶ月、組織を2回変えた話〜
kakehashi
PRO
3
270
タスクの複雑さでモデルを選ぶ ── Thompson Samplingで動かす“トークン/コスト最適化
satohy0323
0
560
「早く出す」より「事業に効く」 ── 顧客の業務サイクルから逆算するAI時代の二重ループ開発と「変化の設計者」 / devsumi2026
rakus_dev
1
380
AI時代の闇と光
tatsuya1970
0
110
End-to-Endで考える信頼性 —LINEアプリにおけるクライアント開発×SRE連携の実践
maruloop
4
4.6k
AI Coding Agent時代のcdk-nagガードレール 〜組織ルールを強制CIで守り抜く設計の挑戦〜
mhrtech
3
420
AI Agent SaaS を支える自社仮想化基盤への挑戦と実運用 / ai-agent-saas-virtualization
flatt_security
3
4.2k
Featured
See All Featured
Designing Experiences People Love
moore
143
24k
Git: the NoSQL Database
bkeepers
PRO
432
67k
A designer walks into a library…
pauljervisheath
211
24k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
2
340
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Designing Powerful Visuals for Engaging Learning
tmiket
1
450
Thoughts on Productivity
jonyablonski
76
5.2k
Documentation Writing (for coders)
carmenintech
77
5.4k
Context Engineering - Making Every Token Count
addyosmani
9
1k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
GitHub's CSS Performance
jonrohan
1033
470k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
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!