♾️

Cloud Spanner 組み込みのオートスケーラー、Managed autoscaler が登場!

2023/11/14に公開

こんにちは、クラウドエースの SRE チームに所属している妹尾です。

今回は Cloud Spanner の運用が劇的に楽になるアップデートがあったのでご紹介します!

概要

2023/11/14 に Cloud Spanner に組み込みのオートスケーリング機能が実装されました![1]
この機能を使うと今まで外部プログラムに依存していたオートスケール機能を Cloud Spanner の設定だけで実現することが可能になります。

利用方法

利用方法は作成時にコンソールから指定するだけでとても簡単です。

alt

コマンドにオプションを付与して指定もできます。
クラスタを新規作成する場合は gcloud spanner cluster create に、
既存のクラスタの構成変更をしたい場合は gcloud spanner cluster update に以下のフラグを追加するだけです。

--autoscaling-min-nodes
--autoscaling-max-nodes
--autoscaling-min-processing-units
--autoscaling-max-processing-units
--autoscaling-high-priority-cpu-target
--autoscaling-storage-target

オプションの付け方にはいくつかルールが存在します

  • ノード(nodes)と処理ユニット(processing-units)はどちらか片方を使う
  • ノード(もしくは処理ユニット)と、ストレージ容量の設定は両方指定する
    の2つを満たす必要があるようですので注意しましょう。

実際にこれらのフラグを利用したインスタンスを作成してdescribeコマンドで確認してみると、
セットされた値が確認できます。

seno:~$ gcloud spanner instances create autoscale-instance --config=PROVISIONED \
  --autoscaling-max-nodes=3 \
  --autoscaling-min-nodes=1 \
  --autoscaling-high-priority-cpu-target=80 \
  --autoscaling-storage-target=80

seno:~$ gcloud spanner instances describe autoscale-instance
autoscalingConfig:
  autoscalingLimits:
    maxNodes: 3
    minNodes: 1
  autoscalingTargets:
    highPriorityCpuUtilizationPercent: 80
    storageUtilizationPercent: 80
config: projects/ca-seno-test/instanceConfigs/regional-asia-northeast1
createTime: '2023-10-27T22:31:06.337485Z'
displayName: autoscale
instanceType: PROVISIONED
name: projects/ca-seno-test/instances/autoscale
nodeCount: 1
processingUnits: 1000
state: READY
updateTime: '2023-10-27T22:31:06.337485Z'
seno:~$

検証

どのような挙動をするのか、実際に構築して確認してみました!

オートスケールをONにしたインスタンスを建てて、そこへ ComputeEngine で負荷をかけます。
簡単のために、閾値はかなり低めの 20% を指定してみました。
負荷の生成は、Golang で簡単な INSERT クエリを発行するプログラムを書いて go test -benchmark で回す事で負荷を生成してみました。

https://github.com/cloud-ace/zenn-spanner-native-autoscaler

結果は以下のようになりました!
alt
alt

負荷が閾値を越えてから5分も経たずにスケールする事ができています。
スケールインは、負荷が下がってから15分程度で実行されている事がわかりますね。

念のため書いておきますが、 この間僕はクラスタに対して一切の操作をしていません!
完全自動でインスタンスのスケールを行なってくれています。

これはSpannerの特徴で皆様ご存じかもしれませんが、この間全てのクエリは成功しております。
無限にスケールする最大 SLA 99.999% のデータベース これが Spanner の真価です。

まとめ

今回は新しく登場した Spanner の自動スケーリング機能について検証してみました。
元々強力なデータベースでしたが、この機能の登場でさらに簡単かつ気軽に使えるデータベースとなりました。
コスト面でもかなり有用な機能ですので、皆様ぜひとも導入してみましょう!

紹介が最後になってしまいましたが、この機能は Preview 段階となっています。
Spanner が利用されるシステムはミッションクリティカルで、Prewiew な機能はできるだけ避けたいシステムが多い印象です。
一日も早い GA が待たれますね!

脚注
  1. (実は 10/24 にフラグだけひっそりと追加されていたようです) ↩︎

Discussion