Slide 1

Slide 1 text

Cloud Spanner をより便利に する運用支援ツールの紹介 グリー株式会社 インフラエンジニア 石松佑太

Slide 2

Slide 2 text

2 自己紹介 名前: 石松 佑太 所属: • 開発本部 インフラストラクチャ部 サービスオペレーショングループ サービスオペレーションチーム • RDBMS ユニット 一緒にコーディングするぐらい インコが大好きです!

Slide 3

Slide 3 text

3 Cloud Spanner

Slide 4

Slide 4 text

4 Cloud Spanner とは GCP が提供するデータベースのマネージドサービス • RDBMS の特性を持つ • スキーマ • 強整合性 • SQL クエリ • NoSQL の特性を持つ • 水平方向のスケーラビリティ ( ダウンタイムなしにノード数の増減が可能 )

Slide 5

Slide 5 text

5 Cloud Spanner を利用する上での課題 1.ウォームアップ リリース前に負荷をかけてスプリットを分割させる必要がある → ♨ Spanner 温めるくん 1.オートスケール スケジュールや負荷状況に合わせてオートスケールしたい → 🔧 Spanner 上げ下げくん

Slide 6

Slide 6 text

6 Spanner 温めるくん

Slide 7

Slide 7 text

7 Spanner 温めるくん リリース前にウォームアップを行うツール 発表の流れ 1.ウォームアップの流れ 2.Spanner 温めるくんの特徴 3.Spanner 温めるくんを使った事例

Slide 8

Slide 8 text

8 Spanner 温めるくん: ウォームアップの流れ 準備 ダミーデータ INSERT ダミーデータ SELECT ダミーデータ DELETE ダミーデータ 生成

Slide 9

Slide 9 text

9 Spanner 温めるくん: ウォームアップの流れ 準備 ダミーデータ INSERT ダミーデータ SELECT ダミーデータ DELETE ダミーデータ 生成 事前にスケジュールをスプレッドシートに設定

Slide 10

Slide 10 text

10 Spanner 温めるくん: ウォームアップの流れ 準備 ダミーデータ INSERT ダミーデータ SELECT ダミーデータ DELETE ダミーデータ 生成 Scheduler が各機能の CronJob を作成

Slide 11

Slide 11 text

11 Spanner 温めるくん: ウォームアップの流れ 準備 ダミーデータ INSERT ダミーデータ SELECT ダミーデータ DELETE ダミーデータ 生成

Slide 12

Slide 12 text

12 Spanner 温めるくん: ウォームアップの流れ 準備 ダミーデータ INSERT ダミーデータ SELECT ダミーデータ DELETE ダミーデータ 生成

Slide 13

Slide 13 text

13 Spanner 温めるくん: ウォームアップの流れ 準備 ダミーデータ INSERT ダミーデータ SELECT ダミーデータ DELETE ダミーデータ 生成

Slide 14

Slide 14 text

14 Spanner 温めるくん: ウォームアップの流れ 準備 ダミーデータ INSERT ダミーデータ SELECT ダミーデータ DELETE ダミーデータ 生成 Spanner からダミーデータを削除

Slide 15

Slide 15 text

15 Spanner 温めるくん: 特徴 1 2 SELECT だけで負荷をかけることが可能 背景 リリース後の運用段階でもウォームアップが必要な場合がある • 例: 大規模なスキーマの変更 • 例: 2 日以上の長期メンテ • ( スプリットが削除されてしまうため )

Slide 16

Slide 16 text

16 Spanner 温めるくん: 特徴 1 2 SELECT だけで負荷をかけることが可能 問題 運用段階でダミーデータを INSERT すると、 テーブル内に実データとダミーデータが混在してしまう → 実データを SELECT することで気軽にウォームアップ可能

Slide 17

Slide 17 text

17 Spanner 温めるくん: 特徴 1 2 SELECT する Bot を自動で追加 → CPU使用率が上がるように Bot の台数を自動で調整

Slide 18

Slide 18 text

18 事例: プロダクトリリース前のウォームアップ INSERT レイテンシ悪化 レイテンシ安定 SELECT

Slide 19

Slide 19 text

19 Spanner 上げ下げくん

Slide 20

Slide 20 text

20 Spanner 上げ下げくん Spanner のノード数をオートスケールするツール 発表の流れ 1.オートスケールの流れ 2.Spanner 上げ下げくんの特徴 3.Spanner 上げ下げくんを使った事例

Slide 21

Slide 21 text

21 Spanner 上げ下げくん: オートスケールの流れ 事前にスケジュールをスプレッドシートに設定 準備 ノード数 調整 Cloud Functions 定期実行

Slide 22

Slide 22 text

22 Spanner 上げ下げくん: オートスケールの流れ ノード数を調整する Cloud Functions が定期実行 準備 ノード数 調整 Cloud Functions 定期実行

Slide 23

Slide 23 text

23 Spanner 上げ下げくん: オートスケールの流れ スケジュールと負荷状況に合わせてノード数を調整 準備 ノード数 調整 Cloud Functions 定期実行

Slide 24

Slide 24 text

24 Spanner 上げ下げくん: 特徴 スケジュールに沿ったスケール 1 2 3 例1: 深夜帯にノード数を減らす → コスト削減

Slide 25

Slide 25 text

25 Spanner 上げ下げくん: 特徴 スケジュールに沿ったスケール 1 2 3 例2: ガチャ更新やイベント前にノード数を増やす → 安定稼働

Slide 26

Slide 26 text

26 Spanner 上げ下げくん: 特徴 負荷状況に合わせたスケール 1 2 3 想定以上のリクエストが来た場合はノード数を自動で調整

Slide 27

Slide 27 text

27 Spanner 上げ下げくん: 特徴 ノード数を徐々に下げる 1 2 3 減らす時は少ない台数を10〜30分かけて徐々に減らすことが推奨 自動でやってくれるので便利

Slide 28

Slide 28 text

28 事例: 開発環境におけるノード数の調整 → 深夜に性能を下げてコスト削減 深夜は使っていないので 性能を下げられる

Slide 29

Slide 29 text

29 まとめ

Slide 30

Slide 30 text

30 まとめ ♨ Spanner 温めるくん リリース前に Spanner をウォームアップするツール 特徴 • SELECT だけで負荷をかけることが可能 • SELECT する Bot を自動で追加 🔧 Spanner 上げ下げくん Spanner のノード数をオートスケールするツール 特徴 • スケジュールに沿ったスケール • 負荷状況に合わせたスケール • ノード数を徐々に下げる

Slide 31

Slide 31 text

31