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
450
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
710
How Uber "Go"es Recap
micnncim
2
2.3k
We want AWESOME CLI tool & development
micnncim
9
5k
GoReleaser: Release and Distribute Go Application
micnncim
9
1k
Other Decks in Programming
See All in Programming
Google's Recipe for Scaling (Web) Security – LocoMocoSec 2024
lweichselbaum
0
170
Play Billing Library 7.0.0 変更点まとめ@potatotips#88
kako351
0
160
Cloudflare Workers x AWS Lambdaの組み合わせユースケース / Cloudflare Workers x AWS Lambda Combination Use Case
seike460
PRO
2
310
日付と正規化
megmogmog1965
0
140
今こそ始める、CDKコンストラクトライブラリ開発 ― 入門から実践まで
tmokmss
1
930
Webエディタライブラリ 「CodeMirror」から学ぶ Webアプリ開発のテクニック
ryosukeigarashi
0
250
リハビリmruby
kishima
1
160
OpenAI/Gemini APIを使って EPUBを翻訳するCLIツールをつくってみた
tomiyan
0
790
DDDを志して3年経ったら「DDDの皮を被ったクリーンアーキテクチャ」になった話【デブサミ2024夏】
texmeijin
1
620
Advanced App Shrinking Techniques
cbeyls
2
150
開発部に不満を持っていたCSがエンジニアにジョブチェンしてわかった「勝手に諦めない」ことの大切さ
sakuraikotone
28
16k
TiDB Serverless ~理想のServerless DBを考える~
soso_15315
1
160
Featured
See All Featured
Scaling GitHub
holman
458
140k
A Philosophy of Restraint
colly
200
16k
4 Signs Your Business is Dying
shpigford
178
21k
Designing for humans not robots
tammielis
247
25k
Infographics Made Easy
chrislema
238
18k
Producing Creativity
orderedlist
PRO
340
39k
StorybookのUI Testing Handbookを読んだ
zakiyama
15
4.9k
Raft: Consensus for Rubyists
vanstee
134
6.5k
Designing the Hi-DPI Web
ddemaree
276
34k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
353
29k
KATA
mclloyd
20
13k
Building a Scalable Design System with Sketch
lauravandoore
458
32k
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 で 様々なリソース・アプリケーションの自動化が可能
まとめ