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
420
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
6.9k
Protocol Buffers Language Server
micnncim
1
3k
Build Docker Images with Bazel
micnncim
4
680
How Uber "Go"es Recap
micnncim
2
2.3k
We want AWESOME CLI tool & development
micnncim
9
4.8k
GoReleaser: Release and Distribute Go Application
micnncim
9
1k
Other Decks in Programming
See All in Programming
FigmaとPHPで作る1ミリたりとも表示崩れしない最強の帳票印刷ソリューション
ttskch
39
18k
今の SmartHR にエンジニアで入社するとどうなるの?
daisukeshinoku
5
4.6k
Ruby GitHub Packages
bkuhlmann
0
620
TYPO3 v13 – The road to LTS: What's new and new APIs
luisasofie_xoxo
0
180
Hanami and htmx
bkuhlmann
0
190
ONE WEDGE_company_guide
1wedge_one
0
380
try! Swift Tokyo 初参加報告LT
hinakko2
0
190
エンターテイメント業界で利用されるAWS
demuyan
0
200
Site Reliability Engineering for GMO
pyama86
6
940
大規模Reactアプリのリアーキテクチャ~8万行のTanStack Query移行の軌跡~
kj455
3
770
PHP8.3の機能を振り返る / Review of PHP 8.3 features
seike460
PRO
1
110
今、知っておきたい! 生成AIエージェントの世界
elith
3
340
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
120
16k
Build The Right Thing And Hit Your Dates
maggiecrowley
23
2k
BBQ
matthewcrist
80
8.7k
Clear Off the Table
cherdarchuk
83
310k
Fantastic passwords and where to find them - at NoRuKo
philnash
36
2.5k
Reflections from 52 weeks, 52 projects
jeffersonlam
344
19k
How to Ace a Technical Interview
jacobian
272
22k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.9k
Making Projects Easy
brettharned
108
5.5k
No one is an island. Learnings from fostering a developers community.
thoeni
14
2.1k
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
The Cult of Friendly URLs
andyhume
74
5.7k
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 で 様々なリソース・アプリケーションの自動化が可能
まとめ