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

カスタムコントローラを利用したスパイクに耐えるオートスケーリングの仕組みを構築

 カスタムコントローラを利用したスパイクに耐えるオートスケーリングの仕組みを構築

ユーザベースのSaaS事業におけるSREチームの位置付けと責務を紹介し、SREの業務で行われている事例を紹介する。事例の内容は、サービスの信頼性を担保する上で必要なスケーラビリティについて取り上げる。特に、Kubernetes環境を題材としており、特定のPodに対する一時的な負荷に対してどのような対策をすべきか、SREの視点で検討した内容を記載している。

TomoyukiSugiyama

September 06, 2023
Tweet

Other Decks in Technology

Transcript

  1. 技術力で、ビジネスをリードする 7 SaaS事業の開発組織について 規模・在籍メンバー属性 約100名 ※2022年4月時点 ソフトウェアエンジニア SRE テストエンジニア データサイエンティスト

    開発チーム構成 各プロダクト・機能ごとに開発チームを作り ペアプロ、TDDで開発 A チーム (4 ~ 5 名) B チーム (4 ~ 5 名) C チーム (4 ~ 5 名) and more …
  2. 開発チーム 8 開発組織におけるSREの位置付け SREチーム 在籍メンバー・責務 責務 各開発チーム (4~5 名) が

    機能の開発・運用する 7 名 各開発チームが機能の開発・運用 できるようにサポートする 各開発チームにSREの考え方を 伝承する 各開発チームが自律的に信頼性の高いサービスを開発・運用できることを目指す
  3. サービスの構成 マイクロサービスアーキテクチャを採用 9 マイクロ サービス Kubernetes 環境 (以下、K8s) マイクロ サービス

    マイクロ サービス マイクロ サービス マイクロ サービス マイクロ サービス 安定運用のために導入する仕組み GitOps :Argo CD B/Gデプロイ :Istio 監視 :Prometheus、Grafana SLO/SLI :Datadog IaC :Terraform 上記の構成により、開発チームの運用負荷を抑え、サービスの成長を加速する ただし、信頼できるサービスの実現には、多くの要求を満たす必要がある
  4. 改善方法による違い 13 制限なく必要十分なキャパシティを確保するためには • 速いアプリケーションに書換え • キャッシュ • スケールアウト(、スケールアップ) 改善効果

    効率 スケールアウト(水平スケーリング)は、 改善効果が得にくい ものの、簡単に導入できる K8s標準のHPAを例に、説明する
  5. 水平スケーリング (HPA : Horizontal Pod Autoscaler ) HPA は、PodのメモリやCPUのリソース、リクエスト数を指標として、 実際のリソースの使用量に合わせて、Podの台数を動的に変更する仕組み

    14 K8s標準のHPAの利用(1/2) 急激なリクエストの増加に合わせてスケールすることは困難 → リクエストが増加する前に、事前にスケールしておくことで解決 pods minReplicas maxReplicas 時間
  6. 実装を通して得たもの • 10ヶ月のエンジニア ( Webエンジニア歴 , SRE歴 , K8s歴 )

    がカスタムコントローラを実装 K8sの基本的な仕組みを少し学ぶことができた • SREの位置付けや責務を学ぶきっかけになった 23 最後に