Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cloud Spanner をより便利にする運用支援ツールの紹介

gree_tech
PRO
November 11, 2021

Cloud Spanner をより便利にする運用支援ツールの紹介

GREE Tech Conference 2021 で発表された資料です。
https://techcon.gree.jp/2021/session/ShortSession-6

gree_tech
PRO

November 11, 2021
Tweet

More Decks by gree_tech

Other Decks in Technology

Transcript

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

  2. 2 自己紹介 名前: 石松 佑太 所属: • 開発本部 インフラストラクチャ部 サービスオペレーショングループ

    サービスオペレーションチーム • RDBMS ユニット 一緒にコーディングするぐらい インコが大好きです!
  3. 3 Cloud Spanner

  4. 4 Cloud Spanner とは GCP が提供するデータベースのマネージドサービス • RDBMS の特性を持つ •

    スキーマ • 強整合性 • SQL クエリ • NoSQL の特性を持つ • 水平方向のスケーラビリティ ( ダウンタイムなしにノード数の増減が可能 )
  5. 5 Cloud Spanner を利用する上での課題 1.ウォームアップ リリース前に負荷をかけてスプリットを分割させる必要がある → ♨ Spanner 温めるくん

    1.オートスケール スケジュールや負荷状況に合わせてオートスケールしたい → 🔧 Spanner 上げ下げくん
  6. 6 Spanner 温めるくん

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

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

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

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

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

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

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

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

    DELETE ダミーデータ 生成 Spanner からダミーデータを削除
  15. 15 Spanner 温めるくん: 特徴 1 2 SELECT だけで負荷をかけることが可能 背景 リリース後の運用段階でもウォームアップが必要な場合がある

    • 例: 大規模なスキーマの変更 • 例: 2 日以上の長期メンテ • ( スプリットが削除されてしまうため )
  16. 16 Spanner 温めるくん: 特徴 1 2 SELECT だけで負荷をかけることが可能 問題 運用段階でダミーデータを

    INSERT すると、 テーブル内に実データとダミーデータが混在してしまう → 実データを SELECT することで気軽にウォームアップ可能
  17. 17 Spanner 温めるくん: 特徴 1 2 SELECT する Bot を自動で追加

    → CPU使用率が上がるように Bot の台数を自動で調整
  18. 18 事例: プロダクトリリース前のウォームアップ INSERT レイテンシ悪化 レイテンシ安定 SELECT

  19. 19 Spanner 上げ下げくん

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

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

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

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

    定期実行
  24. 24 Spanner 上げ下げくん: 特徴 スケジュールに沿ったスケール 1 2 3 例1: 深夜帯にノード数を減らす

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

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

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

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

  29. 29 まとめ

  30. 30 まとめ ♨ Spanner 温めるくん リリース前に Spanner をウォームアップするツール 特徴 •

    SELECT だけで負荷をかけることが可能 • SELECT する Bot を自動で追加 🔧 Spanner 上げ下げくん Spanner のノード数をオートスケールするツール 特徴 • スケジュールに沿ったスケール • 負荷状況に合わせたスケール • ノード数を徐々に下げる
  31. 31