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
500
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.3k
Protocol Buffers Language Server
micnncim
1
3.2k
Build Docker Images with Bazel
micnncim
4
760
How Uber "Go"es Recap
micnncim
2
2.4k
We want AWESOME CLI tool & development
micnncim
9
5.2k
GoReleaser: Release and Distribute Go Application
micnncim
9
1.1k
Other Decks in Programming
See All in Programming
良いユニットテストを書こう
mototakatsu
11
3.6k
20241217 競争力強化とビジネス価値創出への挑戦:モノタロウのシステムモダナイズ、開発組織の進化と今後の展望
monotaro
PRO
0
280
Rubyでつくるパケットキャプチャツール
ydah
0
160
テストコード書いてみませんか?
onopon
2
330
ATDDで素早く安定した デリバリを実現しよう!
tonnsama
1
1.8k
shadcn/uiを使ってReactでの開発を加速させよう!
lef237
0
290
生成AIでGitHubソースコード取得して仕様書を作成
shukob
0
630
AIレシート読み取り機能をRuby on Rails on AWSで実現するLLMにまつわるアレコレ / AI-based receipt reading function powered by LLM on Ruby on Rails on AWS
moznion
3
120
Fixstars高速化コンテスト2024準優勝解法
eijirou
0
190
traP の部内 ISUCON とそれを支えるポータル / PISCON Portal
ikura_hamu
0
180
Stackless и stackful? Корутины и асинхронность в Go
lamodatech
0
1.3k
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
soi013
0
370
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Building Adaptive Systems
keathley
38
2.4k
Designing Experiences People Love
moore
139
23k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.5k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Docker and Python
trallard
43
3.2k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
The Cost Of JavaScript in 2023
addyosmani
46
7.2k
Embracing the Ebb and Flow
colly
84
4.5k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
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 で 様々なリソース・アプリケーションの自動化が可能
まとめ