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
Spanner Autoscaler
Search
micnncim
November 13, 2019
Programming
1
470
Spanner Autoscaler
merpay インフラ Talk #5:
https://mercari.connpass.com/event/150728/
micnncim
November 13, 2019
Tweet
Share
More Decks by micnncim
See All by micnncim
Accelerate Go development with Bazel
micnncim
9
7.1k
Protocol Buffers Language Server
micnncim
1
3.1k
Build Docker Images with Bazel
micnncim
4
720
How Uber "Go"es Recap
micnncim
2
2.4k
We want AWESOME CLI tool & development
micnncim
9
5.1k
GoReleaser: Release and Distribute Go Application
micnncim
9
1.1k
Other Decks in Programming
See All in Programming
o1モデルのプロンプトエンジニアリングって?
ktc_wada
0
260
エンジニア1年目で複雑なコードの改善に取り組んだ話
mtnmr
3
2k
あなたのアプリ、ログはでてますか?あるいはログをだしてますか? (Funabashi.dev用 軽量版)
uzulla
2
120
Debugging: All you need to know (for simultaneous interpreting)
jmatsu
2
800
Android開発以外のAndroid開発経験の活かしどころ
konifar
2
1k
From Idea to IDE: Developing Plugins for Android Studio
thisaay
1
220
Modular Monolith Go Server with GraphQL Federation + gRPC
110y
1
580
メモリ最適化を究める!iOSアプリ開発における5つの重要なポイント
yhirakawa333
0
420
Kotlin 2.0が与えるAndroid開発の進化
masayukisuda
1
410
REXML改善のその後
naitoh
0
190
Ebitengineの1vs1ゲーム WebRTCの活用
ponyo877
0
380
いまから追い上げる、Jetpack Compose トレーニング
nyafunta9858
0
590
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
31
6.2k
Git: the NoSQL Database
bkeepers
PRO
425
64k
Imperfection Machines: The Place of Print at Facebook
scottboms
263
13k
The Invisible Side of Design
smashingmag
296
50k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
225
22k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
248
20k
No one is an island. Learnings from fostering a developers community.
thoeni
18
2.9k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
0
120
Writing Fast Ruby
sferik
623
60k
Build your cross-platform service in a week with App Engine
jlugia
228
18k
Happy Clients
brianwarren
96
6.6k
A designer walks into a library…
pauljervisheath
201
24k
Transcript
@micnncim Spanner Autoscaler merpay infra talk #5
@micnncim Expert Team Intern
Spanner オートスケールしない問題 Kubernetes Operator とは Spanner Autoscaler の紹介 01 02
03
Spanner オートスケールしない問題 4
トラフィックに応じたノード数を設定できない 突発的な高トラフィックに対応できない オートスケールしないと何が困るか 高トラフィック対策にノード数を余分に多く設定すると トラフィックが小さいときにコストが余分に発生する
https://medium.com/google-cloud-jp/cloud-spanner-のハイレベルアーキテクチャ解説-fee62c17f7ed Spanner ハイレベルアーキテクチャ
R/W を実行するコンピュートリソース ノードには直接ローカルストレージはアタッチされない Spanner における Node の役割 データ自体は分散ファイルシステムに保存される
Kubernetes Operator とは 8
Kubernetes では多数の Controller が動いている Controller は Deployment, Service など Resource
が 宣言された Desired State になるように動く = Reconciliation Loop Kubernetes Controller 101 Controller は自作してデプロイすることが出来る = Custom Controller Resource も独自に作ることが出来る = CRD (Custom Resource Definition) Custom Controller と CRD で Stateful なアプリケーションを自動化 = Operator
Kubernetes Controller 101
Kubernetes Operator
kubernetes/client-go, kubernetes/code-generator kubernetes-sigs/kubebuilder Custom Controller を開発するには? operator-framework/operator-sdk GoogleCloudPlatform/metacontroller
Spanner Autoscaler の紹介 13
Spanner のオートスケールを行う Kubernetes Operator Horizontal Pod Autoscaler に影響を受けている Spanner Autoscaler
kubebuilder を利用 本番 Microservices に導入予定 & OSS 化予定
宣言的に設定を記述したい Reconciliation Loop がオートスケールの用途に合う Why use Kubernetes Operator?
Spanner Autoscaler: CRD ❖ spec.scaleTargetRef.instanceId スケール対象の Instance ID ❖ spec.minNodes
スケール時の最小 Node 数 ❖ spec.maxNodes: スケール時の最大 Node 数 ❖ targetCPUUtilization.highPriority スケール後の目標となる 優先度の高いユーザータスクと 優先度の高いシステムタスクの 合計 CPU 使用率
ARCHITECURE
Reconciler: Resource に対して最適な Node 数を計算し Reconciliation Loop を実行 Syncer: 各
Resource を Google Cloud API で取得した Spanner Instance の状態と同期 Spanner Autoscaler: Inside
Spanner Autoscaler を使えば Spanner でもオートスケールできる! Kubernetes Custom Controller で 様々なリソース・アプリケーションの自動化が可能
まとめ