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

[SRE NEXT 2022]増大を続けるYahoo! JAPAN Kubernetesクラスタ群キャパシティ管理のモダン化

srenext
May 23, 2022

[SRE NEXT 2022]増大を続けるYahoo! JAPAN Kubernetesクラスタ群キャパシティ管理のモダン化

SRE NEXT 2022
https://sre-next.dev/2022/

[Speaker]
ヤフー株式会社 KaaS SRE 水落 啓太

[Description]
増大を続けているヤフーKubernetesクラスタ群(1,000+クラスタ, 400,000+コンテナ)のキャパシティ管理をシステム化し、キャパシティプラニングなどキャパシティに関する運用業務健全化に取り組んだ事例を紹介します。
私たちは、ヤフーの各種サービスを支えるプラットフォームとしてKubernetesクラスタを簡単に利用可能とするKaaS (Kubernetes as a Service) を運用するチームです。
旧来システムのシステム刷新や、ビジネスの伸びやキャンペーンに伴うシステム拡張といったイベントに応じて、ヤフーKaaSには、Kubernetesクラスタ利用の需要が絶えず生じています。私たちは、KaaS利用者の需要に答え続けるために、RDB, Go, Grafanaを活用し、Kubernetesクラスタ提供に必要なキャパシティ情報を的確に把握し、キャパシティに関する各業務を迅速・的確に推進するための仕組みを整えました。
SREの一分野であるキャパシティ管理の課題に、SREチームとして取り組む中で得られた知見を交えながら、SREの幅広さ・面白さに迫ります。

srenext

May 23, 2022
Tweet

More Decks by srenext

Other Decks in Technology

Transcript

  1. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
 ©2022

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

    a Serviceチーム所属 
 •広告システム開発 → Private PaaS開発/PO/SRE → KaaS SRE •バックエンドSWE → SRE •SREをはじめ、ソフトウェア技術を駆使して課題解決することが好きです 
 
 
 
 自己紹介 0. 自己紹介 2
  3. ©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
  4. ©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
  5. ©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+

  6. ©2022 Yahoo Japan Corporation All rights reserved. 
 
 


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

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

    Serviceは急激に規模増大している → キャパシティ管理の課題も増大......。 KaaSキャパシティ管理の課題 3. KaaSキャパシティ管理の課題 11
  9. ©2022 Yahoo Japan Corporation All rights reserved. •KaaSキャパシティプランニング •KaaS利用者の需要を元にシステムの増強・購入計画を立てる •不足すると考えられるリソース増強・購入を

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

    KaaSキャパシティ管理の課題 13 KaaSチーム KaaS利用者 IaaSチーム ヒアリングシート
 2022QxまでにCPU,MEM=xx,yy利用 予定 2022Qxまでに利用予定のマシンリ ソース量を教えてください ヒアリングシート
 リソース購入計画書
 2022Qxまでにリソースがyy不足するの で、zz分追加したい IaaSリソース
  11. ©2022 Yahoo Japan Corporation All rights reserved. •キャパシティプランニングで大事なこと → 需給ギャップの把握(リソース需要に対して供給は十分か?)

    •今後1~2年にわたる需給ギャップを算出し、不足分に対処する 課題1. キャパシティプランニングの工数が大きい 3. KaaSキャパシティ管理の課題 14
  12. ©2022 Yahoo Japan Corporation All rights reserved. • 需給内訳図(社内資料抜粋) •

    右図のような内訳を 四半期ごとに表計算ソフト により算出する 課題1. キャパシティプランニングの工数が大きい 3. KaaSキャパシティ管理の課題 15
  13. ©2022 Yahoo Japan Corporation All rights reserved. •需給ギャップ算出に必要なデータ群 課題1. キャパシティプランニングの工数が大きい

    3. KaaSキャパシティ管理の課題 16 供給データ 需要データ 投入済み
 CPU, Memory量
 投入予定
 CPU, Memory量
 利用済み
 CPU, Memory量
 利用予定
 CPU, Memory量

  14. ©2022 Yahoo Japan Corporation All rights reserved. •全てが違うデータソースに......。 課題1. キャパシティプランニングの工数が大きい

    3. KaaSキャパシティ管理の課題 17 供給データ 需要データ 投入済み
 CPU, Memory量
 投入予定
 CPU, Memory量
 利用済み
 CPU, Memory量
 利用予定
 CPU, Memory量
 OpenStackメトリクス IaaSチームとの
 調整記録 KaaS API 需要ヒアリングシートetc...
  15. ©2022 Yahoo Japan Corporation All rights reserved. 課題2. リソース開放限界の算出が困難 3.

    KaaSキャパシティ管理の課題 19 〇〇案件のために K8sクラスタをxxTB増強 したいです! できますか?
 ...... KaaS利用者 KaaSチーム
  16. ©2022 Yahoo Japan Corporation All rights reserved. •何が困難なのか → 現在のシステム空きリソースを見るだけでは不十分

    → その空きリソースは他の利用者や案件のために、確保しているかもしれない → 「真の空きリソース」が分からない 課題2. リソース開放限界の算出が困難 3. KaaSキャパシティ管理の課題 20 KaaSエンジニア とりあえず、現状 xxTBは空いている な。 しかし、、、
 空きリソース情報
  17. ©2022 Yahoo Japan Corporation All rights reserved. •システムがキャパシティプランニング通りに消化される保証はない •前述の緊急開放による消化多発や、過去開放していたが利用されていなかったリソースがサービス インなど

    •リソース枯渇把握が遅れ、現実にリソースの枯渇を起こしたことも ......。 •KaaS利用者のビジネスを止める事象 •致命的問題 課題3. システムリソース枯渇を予見しにくい 3. KaaSキャパシティ管理の課題 21
  18. ©2022 Yahoo Japan Corporation All rights reserved. 課題4. キャパシティプランニングのマスタが行方不明になりやすい 3.

    KaaSキャパシティ管理の課題 23 KaaSエンジニア キャパプ ラ.xlsx キャパプラ _2.xlsx 元のファイルを壊すと いけない 念のため コピーしておこう

  19. ©2022 Yahoo Japan Corporation All rights reserved. •後日...... 課題4. キャパシティプランニングのマスタが行方不明になりやすい

    3. KaaSキャパシティ管理の課題 24 他のKaaSエンジニア キャパプラ.xlsx キャパプラ_2.xlsx 
 キャパプラ_マスタ.xlsx キャパプラ_xx修正済み.xlsx
  20. ©2022 Yahoo Japan Corporation All rights reserved. 1. キャパシティプランニングの工数が大きい 


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

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

    KaaSキャパシティ管理のモダン化 28 キャパプラ工数大 残量算出困難
 枯渇予見困難
 キャパプラマスタ行方不明 
 課題 解決策
 需給データ統合 需給リアルタイム更新 唯一のダッシュボードに可視化 

  23. ©2022 Yahoo Japan Corporation All rights reserved. •需給ギャップ算出に必要なデータ群それぞれにテーブルを定義する 解決方針1. 需給データの統合

    4. KaaSキャパシティ管理のモダン化 30 供給データ 需要データ 投入済み
 CPU, Memory量
 投入予定
 CPU, Memory量
 利用済み
 CPU, Memory量
 利用予定
 CPU, Memory量

  24. ©2022 Yahoo Japan Corporation All rights reserved. •需給ギャップ算出に必要なデータ群それぞれにテーブル定義 解決方針1. 需給データの統合

    4. KaaSキャパシティ管理のモダン化 31 供給データ 需要データ 投入済み
 CPU, Memory量
 投入予定
 CPU, Memory量
 利用済み
 CPU, Memory量
 利用予定
 CPU, Memory量
 <<Table>> m_current_supply <<Table>> m_current_demand <<Table>> m_reserved_demand
 <<Table>> m_reserved_supply
  25. ©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 ....
  26. ©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
  27. ©2022 Yahoo Japan Corporation All rights reserved. •表計算ソフトのファイルがコピーされマスタファイルがどれか分からなくなる → DBに移行したため、これをマスタDBとして活用

    → Grafanaでマスタボードとして可視化 解決方針3. 唯一のダッシュボードに可視化 4. KaaSキャパシティ管理のモダン化 35
  28. ©2022 Yahoo Japan Corporation All rights reserved. • GrafanaダッシュボードはCICDでデプロイされる •

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

    37 キャパプラ工数大 残量算出困難
 枯渇予見困難
 キャパプラマスタ行方不明 
 課題 解決策
 需給データ統合 需給リアルタイム更新 唯一のダッシュボードに可視化 

  30. ©2022 Yahoo Japan Corporation All rights reserved. • 折線グラフ →

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

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

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

    CronJobでの自動系の他、人が入力するデータ( e.g. 需要ヒアリングシート)もGoで実装 • Goを通すことでデータ登録時の要件を満たすデータのみを投入できる • RDBの制約機能でカバーしきれない、破損データ混入をバリデーションできる 実装のポイント – 更新系 4. KaaSキャパシティ管理のモダン化 42
  34. ©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

  35. ©2022 Yahoo Japan Corporation All rights reserved. • 参照系はRDBのViewを活用 •

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

    • しかし、システム運用を目的として、 RDBを導入することは多くないのではないでしょうか • KaaSキャパシティ管理改善を通して学んだ、 RDBの特性やSREにとってのRDBの位置付けを振り返 ります RDB 5. SRE実現ツールとしてのRDB 47
  37. ©2022 Yahoo Japan Corporation All rights reserved. • 異常データの混入を防止しやすい •

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

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

    面白いというより「つらい」 • しかし、キャパシティ管理の可視化や自動化に取り組む仕事はクリエイティブで面白い キャパシティ管理モダン化から感じたSREの面白さ 6. SREって面白い 51
  40. ©2022 Yahoo Japan Corporation All rights reserved. • システムの運用課題をソフトウェアのアイデアと実装で解決 →

    システム運用が面白くなる → システム運用の向上はシステム利用者の利益に SREの醍醐味 6. SREって面白い 52 おもしろきこともなき世をおもしろく 高杉晋作
 引用: https://ja.wikipedia.org/wiki/高杉晋作#/media/ファイル:Shinsaku_Takasugi.jpg 

  41. ©2022 Yahoo Japan Corporation All rights reserved. •ヤフーKubernetes as a

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