Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Spanner Autoscaler
micnncim
November 13, 2019
Programming
1
340
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
5k
Protocol Buffers Language Server
micnncim
1
2.7k
Build Docker Images with Bazel
micnncim
4
510
How Uber "Go"es Recap
micnncim
2
1.9k
We want AWESOME CLI tool & development
micnncim
9
4.2k
GoReleaser: Release and Distribute Go Application
micnncim
9
820
Other Decks in Programming
See All in Programming
JetPackComposeは宣言型プログラミングパラダイムって実はよくわかってないんですが、別に使ってもいいんですよね、
conigashima
0
190
Cybozu GoogleI/O 2022 LT会 - Input for all screens
jaewgwon
0
370
Client-Side Field-Level Encryption for Apache Kafka Connect @ VoxxedDays Luxembourg 2022
hpgrahsl
0
120
engineer
spacemarket
0
3.8k
ゴーファーくんと辿るプログラミング言語の歴史/history-of-programming-languages-with-gopher
iwasiman
4
1.9k
GoogleI/O2022 LT報告会資料
shinsukefujita1126
0
380
Chart実装が楽になりました。
keisukeyamagishi
0
120
Managing Error Messages with your Oracle Database REST APIs
thatjeffsmith
0
150
Deep Dive Into Google Zanzibar and its Concepts for Authorization Scenarios
dschenkelman
1
140
模組化的Swift架構(二) DDD速成
haifengkao
0
390
Running Laravel/PHP on AWS (AWS Builders Day Taiwan 2022)
dwchiang
0
150
BASE BANKチームの技術選定と歴史 / how to decide technology selection for startup
budougumi0617
0
1.3k
Featured
See All Featured
Gamification - CAS2011
davidbonilla
75
3.9k
Bash Introduction
62gerente
597
210k
The Straight Up "How To Draw Better" Workshop
denniskardys
225
120k
Product Roadmaps are Hard
iamctodd
34
6.5k
GraphQLとの向き合い方2022年版
quramy
16
8.3k
Happy Clients
brianwarren
89
5.6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
39
13k
Music & Morning Musume
bryan
35
4.2k
Building Adaptive Systems
keathley
25
1.1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
37
3.3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
638
52k
Facilitating Awesome Meetings
lara
29
4k
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 で 様々なリソース・アプリケーションの自動化が可能
まとめ