Slide 1

Slide 1 text

Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
 ©2022 Yahoo Japan Corporation All rights reserved. 増大を続ける Yahoo! JAPAN Kubernetesクラスタ群 キャパシティ管理のモダン化 ヤフー株式会社 Kubernetes as a Serviceチーム 水落 啓太

Slide 2

Slide 2 text

©2022 Yahoo Japan Corporation All rights reserved. •水落 啓太(みずおち けいた)
 •ヤフー株式会社Kubernetes as a Serviceチーム所属 
 •広告システム開発 → Private PaaS開発/PO/SRE → KaaS SRE •バックエンドSWE → SRE •SREをはじめ、ソフトウェア技術を駆使して課題解決することが好きです 
 
 
 
 自己紹介 0. 自己紹介 2

Slide 3

Slide 3 text

©2022 Yahoo Japan Corporation All rights reserved. アジェンダ 1. Yahoo! JAPAN Kubernetes as a Service 2. SREとキャパシティ管理 3. KaaSキャパシティ管理の課題 4. KaaSキャパシティ管理のモダン化 5. SRE実現ツールとしてのRDB 6. SREって面白い 7. まとめ 3

Slide 4

Slide 4 text

©2022 Yahoo Japan Corporation All rights reserved. 1. Yahoo! JAPAN Kubernetes as a Service 4

Slide 5

Slide 5 text

©2022 Yahoo Japan Corporation All rights reserved. •ヤフー社向けマネージドKubernetesサービス 
 •GCP GKE, AWS EKSに相当
 •インフラ基盤研究開発を専門とするZ Lab株式会社により開発 
 •ヤフーKaaSチームにより運用及び社内インテグレーション 
 
 
 Yahoo! JAPAN Kubernetes as a Service 1. Yahoo! JAPAN Kubernetes as a Service 5 KaaS Team 開発
 運用 for for for ...... 提供・管理
 KaaS

Slide 6

Slide 6 text

©2022 Yahoo Japan Corporation All rights reserved. Kubernetes as a Service規模(2022/4現在) 1. Yahoo! JAPAN Kubernetes as a Service 6 Kubernetesクラスタ数 1,000+ 
 VM数 33,000+
 コンテナ数 550,000+
 利用チーム数 220+


Slide 7

Slide 7 text

©2022 Yahoo Japan Corporation All rights reserved. 2. SREとキャパシティ管理 7

Slide 8

Slide 8 text

©2022 Yahoo Japan Corporation All rights reserved. 
 
 
 
 •キャパシティプランニングはSREの責務のひとつ 
 •本発表では、キャパシティに関する業務一般を指して、キャパシティ管理という言葉も使います 
 SREにおけるキャパシティ管理 2. SREとキャパシティ管理 8 SREチームは、サービスの可用性、レイテンシ、パフォーマンス、効率性、変更管 理、モニタリング、緊急対応、キャパシティプランニングに責任を負います。
 SREサイトリライアビリティエンジニアリング 1.3 SREの信条

Slide 9

Slide 9 text

©2022 Yahoo Japan Corporation All rights reserved. •キャパシティ → システムリソースのキャパシティ(容量) •CPU、メモリ、ディスク、ネットワーク帯域 etc... •キャパシティが不足すると、、、 •システムを拡張できない •システム障害 など致命的な問題が発生 → SREとしてキャパシティを適切に扱い、問題回避に努めたい キャパシティ 2. SREとキャパシティ管理 9

Slide 10

Slide 10 text

©2022 Yahoo Japan Corporation All rights reserved. 3. KaaSキャパシティ管理の課題 10

Slide 11

Slide 11 text

©2022 Yahoo Japan Corporation All rights reserved. •Kubernetes as a Serviceは急激に規模増大している → キャパシティ管理の課題も増大......。 KaaSキャパシティ管理の課題 3. KaaSキャパシティ管理の課題 11

Slide 12

Slide 12 text

©2022 Yahoo Japan Corporation All rights reserved. •KaaSキャパシティプランニング •KaaS利用者の需要を元にシステムの増強・購入計画を立てる •不足すると考えられるリソース増強・購入を IaaSチームに依頼する •6ヶ月ごとに実施 •リソースの購入・投入には3~12ヶ月程度のリードタイムがかかるため事前の計画が大切 課題1. キャパシティプランニングの工数が大きい 3. KaaSキャパシティ管理の課題 12

Slide 13

Slide 13 text

©2022 Yahoo Japan Corporation All rights reserved. 課題1. キャパシティプランニングの工数が大きい 3. KaaSキャパシティ管理の課題 13 KaaSチーム KaaS利用者 IaaSチーム ヒアリングシート
 2022QxまでにCPU,MEM=xx,yy利用 予定 2022Qxまでに利用予定のマシンリ ソース量を教えてください ヒアリングシート
 リソース購入計画書
 2022Qxまでにリソースがyy不足するの で、zz分追加したい IaaSリソース

Slide 14

Slide 14 text

©2022 Yahoo Japan Corporation All rights reserved. •キャパシティプランニングで大事なこと → 需給ギャップの把握(リソース需要に対して供給は十分か?) •今後1~2年にわたる需給ギャップを算出し、不足分に対処する 課題1. キャパシティプランニングの工数が大きい 3. KaaSキャパシティ管理の課題 14

Slide 15

Slide 15 text

©2022 Yahoo Japan Corporation All rights reserved. • 需給内訳図(社内資料抜粋) • 右図のような内訳を 四半期ごとに表計算ソフト により算出する 課題1. キャパシティプランニングの工数が大きい 3. KaaSキャパシティ管理の課題 15

Slide 16

Slide 16 text

©2022 Yahoo Japan Corporation All rights reserved. •需給ギャップ算出に必要なデータ群 課題1. キャパシティプランニングの工数が大きい 3. KaaSキャパシティ管理の課題 16 供給データ 需要データ 投入済み
 CPU, Memory量
 投入予定
 CPU, Memory量
 利用済み
 CPU, Memory量
 利用予定
 CPU, Memory量


Slide 17

Slide 17 text

©2022 Yahoo Japan Corporation All rights reserved. •全てが違うデータソースに......。 課題1. キャパシティプランニングの工数が大きい 3. KaaSキャパシティ管理の課題 17 供給データ 需要データ 投入済み
 CPU, Memory量
 投入予定
 CPU, Memory量
 利用済み
 CPU, Memory量
 利用予定
 CPU, Memory量
 OpenStackメトリクス IaaSチームとの
 調整記録 KaaS API 需要ヒアリングシートetc...

Slide 18

Slide 18 text

©2022 Yahoo Japan Corporation All rights reserved. •リソース需要は常にキャパシティプランニングにて予測した通りに、発生する訳ではない •緊急のビジネスキャンペーンの実施 •リソースヒアリング回答者の見積もりミス 課題2. リソース開放限界の算出が困難 3. KaaSキャパシティ管理の課題 18

Slide 19

Slide 19 text

©2022 Yahoo Japan Corporation All rights reserved. 課題2. リソース開放限界の算出が困難 3. KaaSキャパシティ管理の課題 19 〇〇案件のために K8sクラスタをxxTB増強 したいです! できますか?
 ...... KaaS利用者 KaaSチーム

Slide 20

Slide 20 text

©2022 Yahoo Japan Corporation All rights reserved. •何が困難なのか → 現在のシステム空きリソースを見るだけでは不十分 → その空きリソースは他の利用者や案件のために、確保しているかもしれない → 「真の空きリソース」が分からない 課題2. リソース開放限界の算出が困難 3. KaaSキャパシティ管理の課題 20 KaaSエンジニア とりあえず、現状 xxTBは空いている な。 しかし、、、
 空きリソース情報

Slide 21

Slide 21 text

©2022 Yahoo Japan Corporation All rights reserved. •システムがキャパシティプランニング通りに消化される保証はない •前述の緊急開放による消化多発や、過去開放していたが利用されていなかったリソースがサービス インなど •リソース枯渇把握が遅れ、現実にリソースの枯渇を起こしたことも ......。 •KaaS利用者のビジネスを止める事象 •致命的問題 課題3. システムリソース枯渇を予見しにくい 3. KaaSキャパシティ管理の課題 21

Slide 22

Slide 22 text

©2022 Yahoo Japan Corporation All rights reserved. •キャパシティプランニング表=表計算ファイル •前述の緊急開放の判断のためなどに、アドホックにキャパシティプランニング表が再集計されたりする •いわゆる「最新.xlsx」問題 課題4. キャパシティプランニングのマスタが行方不明になりやすい 3. KaaSキャパシティ管理の課題 22

Slide 23

Slide 23 text

©2022 Yahoo Japan Corporation All rights reserved. 課題4. キャパシティプランニングのマスタが行方不明になりやすい 3. KaaSキャパシティ管理の課題 23 KaaSエンジニア キャパプ ラ.xlsx キャパプラ _2.xlsx 元のファイルを壊すと いけない 念のため コピーしておこう


Slide 24

Slide 24 text

©2022 Yahoo Japan Corporation All rights reserved. •後日...... 課題4. キャパシティプランニングのマスタが行方不明になりやすい 3. KaaSキャパシティ管理の課題 24 他のKaaSエンジニア キャパプラ.xlsx キャパプラ_2.xlsx 
 キャパプラ_マスタ.xlsx キャパプラ_xx修正済み.xlsx

Slide 25

Slide 25 text

©2022 Yahoo Japan Corporation All rights reserved. 1. キャパシティプランニングの工数が大きい 
 2. リソース開放可能量の算出が困難 
 3. システムリソース枯渇を予見しにくい 
 4. キャパシティプランニングマスタが行方不明になりやすい 
 
 → 解決を目指す
 
 
 
 KaaSキャパシティ管理課題まとめ 3. KaaSキャパシティ管理の課題 25

Slide 26

Slide 26 text

©2022 Yahoo Japan Corporation All rights reserved. 4. KaaSキャパシティ管理のモダン化 26

Slide 27

Slide 27 text

©2022 Yahoo Japan Corporation All rights reserved. •キャパシティ課題解決に向けて解決策の方針を考える KaaSキャパシティ管理改善 4. KaaSキャパシティ管理のモダン化 27 キャパプラ工数大 残量算出困難
 枯渇予見困難
 キャパプラマスタ行方不明 
 課題

Slide 28

Slide 28 text

©2022 Yahoo Japan Corporation All rights reserved. •キャパシティ課題解決に向けて解決策の方針を考える KaaSキャパシティ管理改善 4. KaaSキャパシティ管理のモダン化 28 キャパプラ工数大 残量算出困難
 枯渇予見困難
 キャパプラマスタ行方不明 
 課題 解決策
 需給データ統合 需給リアルタイム更新 唯一のダッシュボードに可視化 


Slide 29

Slide 29 text

©2022 Yahoo Japan Corporation All rights reserved. •4つのリソース需給データをRDB(リレーショナルデータベース)に統合 解決方針1. 需給データの統合 4. KaaSキャパシティ管理のモダン化 29

Slide 30

Slide 30 text

©2022 Yahoo Japan Corporation All rights reserved. •需給ギャップ算出に必要なデータ群それぞれにテーブルを定義する 解決方針1. 需給データの統合 4. KaaSキャパシティ管理のモダン化 30 供給データ 需要データ 投入済み
 CPU, Memory量
 投入予定
 CPU, Memory量
 利用済み
 CPU, Memory量
 利用予定
 CPU, Memory量


Slide 31

Slide 31 text

©2022 Yahoo Japan Corporation All rights reserved. •需給ギャップ算出に必要なデータ群それぞれにテーブル定義 解決方針1. 需給データの統合 4. KaaSキャパシティ管理のモダン化 31 供給データ 需要データ 投入済み
 CPU, Memory量
 投入予定
 CPU, Memory量
 利用済み
 CPU, Memory量
 利用予定
 CPU, Memory量
 <> m_current_supply <> m_current_demand <> m_reserved_demand
 <> m_reserved_supply

Slide 32

Slide 32 text

©2022 Yahoo Japan Corporation All rights reserved. 解決方針1. 需給データの統合 4. KaaSキャパシティ管理のモダン化 32 m_current_supply m_current_demand m_reserved_supply m_reserved_demand KaaSエンジニア •データがRDBに完結するので自由に需給ギャップ集計できる •正規化済みのためデータ整形の必要もない mysql> select ....

Slide 33

Slide 33 text

©2022 Yahoo Japan Corporation All rights reserved. •4つのリソース需給データが全てRDBに揃っていれば、いつでも集計ができる → キャパシティプランニング時に、アドホックな表計算ファイルを作る必要がない 解決方針1. 需給データの統合 4. KaaSキャパシティ管理のモダン化 33

Slide 34

Slide 34 text

©2022 Yahoo Japan Corporation All rights reserved. •4種のデータのうち、現在供給量および、現在需要量についてはそれぞれシステムより取得できる値 → 定期バッチでリアルタイムにRDBに投入 
 解決方針2. 需給データのリアルタイム更新 4. KaaSキャパシティ管理のモダン化 34 m_current_supply m_current_demand m_reserved_supply m_reserved_demand KaaS

Slide 35

Slide 35 text

©2022 Yahoo Japan Corporation All rights reserved. •表計算ソフトのファイルがコピーされマスタファイルがどれか分からなくなる → DBに移行したため、これをマスタDBとして活用 → Grafanaでマスタボードとして可視化 解決方針3. 唯一のダッシュボードに可視化 4. KaaSキャパシティ管理のモダン化 35

Slide 36

Slide 36 text

©2022 Yahoo Japan Corporation All rights reserved. • GrafanaダッシュボードはCICDでデプロイされる • KaaSチームとしてPR/コードレビューなどを通して保守される → ダッシュボードが他のメンバーの知らないうちコピーされることはない → キャパシティ管理マスターの所在が明らかになる 解決方針3. 唯一のダッシュボードに可視化 4. KaaSキャパシティ管理のモダン化 36

Slide 37

Slide 37 text

©2022 Yahoo Japan Corporation All rights reserved. KaaSキャパシティ管理改善おさらい 4. KaaSキャパシティ管理のモダン化 37 キャパプラ工数大 残量算出困難
 枯渇予見困難
 キャパプラマスタ行方不明 
 課題 解決策
 需給データ統合 需給リアルタイム更新 唯一のダッシュボードに可視化 


Slide 38

Slide 38 text

©2022 Yahoo Japan Corporation All rights reserved. 完成したダッシュボード 4. KaaSキャパシティ管理のモダン化 38

Slide 39

Slide 39 text

©2022 Yahoo Japan Corporation All rights reserved. • 折線グラフ → 供給予測 • 積み上げグラフ → 需要予測 • 需要については内訳も可視化 • 需要内訳 • 高優先度リソース需要 • ヒアリング対象外リソース • etc... 完成したダッシュボード 4. KaaSキャパシティ管理のモダン化 39

Slide 40

Slide 40 text

©2022 Yahoo Japan Corporation All rights reserved. • 需給ギャップ可視化 • 最も厳しくなる時期と値 • 「真の空きリソース」 完成したダッシュボード 4. KaaSキャパシティ管理のモダン化 40

Slide 41

Slide 41 text

©2022 Yahoo Japan Corporation All rights reserved. • KaaS環境別可視化 • KaaSはデータセンタや 用途毎に分離した環境がある • 環境毎にキャパシティ推移を 可視化 完成したダッシュボード 4. KaaSキャパシティ管理のモダン化 41

Slide 42

Slide 42 text

©2022 Yahoo Japan Corporation All rights reserved. • 更新系はGoプログラムに集約 • CronJobでの自動系の他、人が入力するデータ( e.g. 需要ヒアリングシート)もGoで実装 • Goを通すことでデータ登録時の要件を満たすデータのみを投入できる • RDBの制約機能でカバーしきれない、破損データ混入をバリデーションできる 実装のポイント – 更新系 4. KaaSキャパシティ管理のモダン化 42

Slide 43

Slide 43 text

©2022 Yahoo Japan Corporation All rights reserved. • システムより取得できないデータもプログラムを 通してDB連携 実装のポイント – 更新系 4. KaaSキャパシティ管理のモダン化 43 $ import_reserved_demand_data --reserved-event 2022h1-inteview 2022h1-interview.xlsx m_current_supply m_current_demand m_reserved_supply m_reserved_demand ヒアリングシート.xlsx
 Validation


Slide 44

Slide 44 text

©2022 Yahoo Japan Corporation All rights reserved. • 参照系はRDBのViewを活用 • キャパシティ集計に関する各要件を Viewして実装 例1. 25%の運用バッファを持つ → Viewにバッファ計算を組み込む 例2. 過去の利用実績を線形補完し線形需要とする → Viewにて過去利用実績の平均値を次の期間にも計上 例3. 環境Aと環境Bは区別なくリソースをやりとりできる → Viewにて両環境数値を合計 実装のポイント – 参照系 4. KaaSキャパシティ管理のモダン化 44

Slide 45

Slide 45 text

©2022 Yahoo Japan Corporation All rights reserved. 実装のポイント – 参照系 4. KaaSキャパシティ管理のモダン化 45

Slide 46

Slide 46 text

©2022 Yahoo Japan Corporation All rights reserved. 5. SRE実現ツールとしてのRDB 46

Slide 47

Slide 47 text

©2022 Yahoo Japan Corporation All rights reserved. • 一般にSREチームはPrometheusなどをはじめとしたTSDB(時系列データベース)を保有していると 思います • しかし、システム運用を目的として、 RDBを導入することは多くないのではないでしょうか • KaaSキャパシティ管理改善を通して学んだ、 RDBの特性やSREにとってのRDBの位置付けを振り返 ります RDB 5. SRE実現ツールとしてのRDB 47

Slide 48

Slide 48 text

©2022 Yahoo Japan Corporation All rights reserved. • 異常データの混入を防止しやすい • スキーマおよび制約機能が強力 • SQLにより後から柔軟なデータ取得・加工ができる → 柔軟に可視化できる • テーブル定義やビュー定義をSQLとして管理できる → CICDと組み合わせて定義が勝手に崩れることを防止 (表計算ソフトと比較して) • 自動化システムに組み込みやすい(表計算ソフトと比較して) • 様々な可視化・BIツールと連携できる • 汎用的にデータを保持・演算できる( TSDBと比較して) RDBの特性 5. SRE実現ツールとしてのRDB 48

Slide 49

Slide 49 text

©2022 Yahoo Japan Corporation All rights reserved. • TSDBが得意とするメトリクス系以外で、 SREとして管理し続けたいデータに 対して便利 • 典型的には本事例のように、定期的なデータ集計業務の自動化手段に • 定期的なデータ集計業務=Toil • RDBの前段にAPIサーバーを開発するなどしてMicroServiceとすることも考えられるが、工数がかか る • SRE業務にRDBを用いる場合であれば、直接可視化系に接続などシンプルな構成で十分なこと が多いのでは • 費用対効果の追求 SRE実現ツールとしてのRDB 5. SRE実現ツールとしてのRDB 49

Slide 50

Slide 50 text

©2022 Yahoo Japan Corporation All rights reserved. 6. SREって面白い 50

Slide 51

Slide 51 text

©2022 Yahoo Japan Corporation All rights reserved. • 元々、KaaSにおけるキャパシティ管理業務はあまり面白い仕事ではなかった • 面白いというより「つらい」 • しかし、キャパシティ管理の可視化や自動化に取り組む仕事はクリエイティブで面白い キャパシティ管理モダン化から感じたSREの面白さ 6. SREって面白い 51

Slide 52

Slide 52 text

©2022 Yahoo Japan Corporation All rights reserved. • システムの運用課題をソフトウェアのアイデアと実装で解決 → システム運用が面白くなる → システム運用の向上はシステム利用者の利益に SREの醍醐味 6. SREって面白い 52 おもしろきこともなき世をおもしろく 高杉晋作
 引用: https://ja.wikipedia.org/wiki/高杉晋作#/media/ファイル:Shinsaku_Takasugi.jpg 


Slide 53

Slide 53 text

©2022 Yahoo Japan Corporation All rights reserved. 7. まとめ
 53

Slide 54

Slide 54 text

©2022 Yahoo Japan Corporation All rights reserved. •ヤフーKubernetes as a Serviceにおけるキャパシティ管理事例の紹介 •キャパシティ管理の表計算管理を RDB+Grafana管理に移行 •4つのKaaSキャパシティ管理課題を解決 •GoアプリケーションやSQL Viewにキャパシティ管理要件を実装 •トイル削減の他、確実性の高い運用が可能 •RDBは、SREが管理すべきデータ保管先として便利 •SQL Viewなどを駆使して低コストで実用的なシステムを作れる •SREって面白い •システムの運用課題をソフトウェアのアイデアと実装で解決 まとめ まとめ 54

Slide 55

Slide 55 text

©2022 Yahoo Japan Corporation All rights reserved.