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 をより便利に
    する運用支援ツールの紹介
    グリー株式会社 インフラエンジニア 石松佑太

    View Slide

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

    View Slide

  3. 3
    Cloud Spanner

    View Slide

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

    View Slide

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

    View Slide

  6. 6
    Spanner 温めるくん

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  19. 19
    Spanner 上げ下げくん

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  29. 29
    まとめ

    View Slide

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

    View Slide

  31. 31

    View Slide