GREE Tech Conference 2021 で発表された資料です。 https://techcon.gree.jp/2021/session/ShortSession-6
Cloud Spanner をより便利にする運用支援ツールの紹介グリー株式会社 インフラエンジニア 石松佑太
View Slide
2自己紹介名前: 石松 佑太所属:• 開発本部インフラストラクチャ部サービスオペレーショングループサービスオペレーションチーム• RDBMS ユニット一緒にコーディングするぐらいインコが大好きです!
3Cloud Spanner
4Cloud Spanner とはGCP が提供するデータベースのマネージドサービス• RDBMS の特性を持つ• スキーマ• 強整合性• SQL クエリ• NoSQL の特性を持つ• 水平方向のスケーラビリティ( ダウンタイムなしにノード数の増減が可能 )
5Cloud Spanner を利用する上での課題1.ウォームアップリリース前に負荷をかけてスプリットを分割させる必要がある→ ♨ Spanner 温めるくん1.オートスケールスケジュールや負荷状況に合わせてオートスケールしたい→ 🔧 Spanner 上げ下げくん
6Spanner 温めるくん
7Spanner 温めるくんリリース前にウォームアップを行うツール発表の流れ1.ウォームアップの流れ2.Spanner 温めるくんの特徴3.Spanner 温めるくんを使った事例
8Spanner 温めるくん: ウォームアップの流れ準備ダミーデータINSERTダミーデータSELECTダミーデータDELETEダミーデータ生成
9Spanner 温めるくん: ウォームアップの流れ準備ダミーデータINSERTダミーデータSELECTダミーデータDELETEダミーデータ生成事前にスケジュールをスプレッドシートに設定
10Spanner 温めるくん: ウォームアップの流れ準備ダミーデータINSERTダミーデータSELECTダミーデータDELETEダミーデータ生成Scheduler が各機能の CronJob を作成
11Spanner 温めるくん: ウォームアップの流れ準備ダミーデータINSERTダミーデータSELECTダミーデータDELETEダミーデータ生成
12Spanner 温めるくん: ウォームアップの流れ準備ダミーデータINSERTダミーデータSELECTダミーデータDELETEダミーデータ生成
13Spanner 温めるくん: ウォームアップの流れ準備ダミーデータINSERTダミーデータSELECTダミーデータDELETEダミーデータ生成
14Spanner 温めるくん: ウォームアップの流れ準備ダミーデータINSERTダミーデータSELECTダミーデータDELETEダミーデータ生成Spanner からダミーデータを削除
15Spanner 温めるくん: 特徴1 2SELECT だけで負荷をかけることが可能背景リリース後の運用段階でもウォームアップが必要な場合がある• 例: 大規模なスキーマの変更• 例: 2 日以上の長期メンテ• ( スプリットが削除されてしまうため )
16Spanner 温めるくん: 特徴1 2SELECT だけで負荷をかけることが可能問題運用段階でダミーデータを INSERT すると、テーブル内に実データとダミーデータが混在してしまう→ 実データを SELECT することで気軽にウォームアップ可能
17Spanner 温めるくん: 特徴1 2SELECT する Bot を自動で追加→ CPU使用率が上がるように Bot の台数を自動で調整
18事例: プロダクトリリース前のウォームアップINSERTレイテンシ悪化 レイテンシ安定SELECT
19Spanner 上げ下げくん
20Spanner 上げ下げくんSpanner のノード数をオートスケールするツール発表の流れ1.オートスケールの流れ2.Spanner 上げ下げくんの特徴3.Spanner 上げ下げくんを使った事例
21Spanner 上げ下げくん: オートスケールの流れ事前にスケジュールをスプレッドシートに設定準備ノード数調整CloudFunctions定期実行
22Spanner 上げ下げくん: オートスケールの流れノード数を調整する Cloud Functions が定期実行準備ノード数調整CloudFunctions定期実行
23Spanner 上げ下げくん: オートスケールの流れスケジュールと負荷状況に合わせてノード数を調整準備ノード数調整CloudFunctions定期実行
24Spanner 上げ下げくん: 特徴スケジュールに沿ったスケール1 2 3例1: 深夜帯にノード数を減らす → コスト削減
25Spanner 上げ下げくん: 特徴スケジュールに沿ったスケール1 2 3例2: ガチャ更新やイベント前にノード数を増やす → 安定稼働
26Spanner 上げ下げくん: 特徴負荷状況に合わせたスケール1 2 3想定以上のリクエストが来た場合はノード数を自動で調整
27Spanner 上げ下げくん: 特徴ノード数を徐々に下げる1 2 3減らす時は少ない台数を10〜30分かけて徐々に減らすことが推奨自動でやってくれるので便利
28事例: 開発環境におけるノード数の調整→ 深夜に性能を下げてコスト削減深夜は使っていないので性能を下げられる
29まとめ
30まとめ♨ Spanner 温めるくんリリース前に Spanner をウォームアップするツール特徴• SELECT だけで負荷をかけることが可能• SELECT する Bot を自動で追加🔧 Spanner 上げ下げくんSpanner のノード数をオートスケールするツール特徴• スケジュールに沿ったスケール• 負荷状況に合わせたスケール• ノード数を徐々に下げる
31