$30 off During Our Annual Pro Sale. View Details »

カラーミーショップの改善におけるSRE活動について

homirun
September 26, 2022

 カラーミーショップの改善におけるSRE活動について

PHP Conference Japan 2022 スポンサーセッション Track1 9/24 10:00-11:00

社内横断SRE組織が、カラーミーショップのエンジニアとともにWebサービスを改善するために行っている施策について紹介します。

homirun

September 26, 2022
Tweet

More Decks by homirun

Other Decks in Technology

Transcript

  1. 1 カラーミーショップの改善における SRE活動について 新宮 隆太(a.k.a ほみるん) / GMO PEPABO inc.

    2022.09.24 PHP Conference Japan 2022
  2. 技術部 プラットフォームグループ 2021年 新卒入社 2 自己紹介 新宮 隆太 Shingu Ryuta •

    あだ名: ほみるん • 社内ではサーバーを担いでる人という認識が定着 • 最近、サイトリライアビリティエンジニアなのに自宅 鯖で運用しているブログを落としてしまった • Twitter : @h0mirun_deux
  3. 3 アジェンダ 1. SREとは 2. カラーミーショップのSREチーム 3. カラーミーショップにおけるSRE活動 4. SLI/SLOを用いた改善活動の事例紹介

    5. おわりに
  4. 4 1. SREとは

  5. 5 1. SREとは SRE = Site Reliability Engineering

  6. 6 1. SREとは SRE = Site Reliability Engineer

  7. 7 1. SREとは どっちの略称もSREじゃん

  8. 8 1. SREとは 今回はEngineeringのことを指す ということにします

  9. 9 Googleが提唱した、サービスの信頼性を維持・向上することを目的としたアプローチ 信頼性に関する指標を元にファクトベースで意思決定をする Site Reliability Engineering 1. SREとは

  10. 10 Site Relaiability Engineeringを実践する人たちのことを指す サービスの信頼性に関すること全てに関わる サイトリライアビリティエンジニア 1. SREとは

  11. 11 サービスがどれだけユーザーの期待通りに利用できる状態かどうかを指し示す言葉 信頼性が高い = ユーザーが期待通りに利用できる時間が長い • 満足な速度で応答する • サービスが障害で止まって使えなくなることが少ない 信頼性とは

    1. SREとは
  12. • ユーザー体験の維持・向上 • リリースのたびにサービスが不安定になれば、ユーザーが離れていく • 機会損失を防ぐ 12 信頼性の維持・向上をすると何が嬉しいのか 1. SREとは

  13. 13 SLI: Service Level Indicator サービスの稼働状況を値にしたもの 例 • 可用性 •

    リクエストのエラーレート • 決済成功率 • レスポンスの速度 • n秒以内に処理を完了したリクエストの割合 SLIとは 1. SREとは
  14. 14 SLO: Service Level Objective サービスの稼働目標を値にしたもの 例 • 可用性 •

    30日間で正常に処理されたリクエストが99.9% • 30日間で決済成功率が99.99% • レスポンスの速度 • 30日間でn秒以内に処理を完了したリクエストの割合が99.95% SLOとは 1. SREとは
  15. 15 • SLI/SLOの運用 • メトリクスを元にしたパフォーマンスチューニング • 運用の手順化・構造化 • ソフトウェアエンジニアリングを用いた運用効率化 サイトリライアビリティエンジニアのやること

    1. SREとは
  16. 16 • SLI/SLOの運用 • メトリクスを元にしたパフォーマンスチューニング • 運用の手順化・構造化 • ソフトウェアエンジニアリングを用いた運用効率化 サイトリライアビリティエンジニアのやること

    1. SREとは
  17. 17 2. カラーミーショップのSREチーム

  18. 18 カラーミーショップはEC事業部の人々が開発をしている GMOペパボのエンジニア組織 2. カラーミーショップのSREチーム 採用目的2021 技術部編 https://tech.pepabo.com/2021/06/25/hiring-tech-division-2021/

  19. 19 SREチームはEC事業部ではなくサービス横断組織である技術部 GMOペパボのエンジニア組織 2. カラーミーショップのSREチーム Pepabo Tech Talk -入社1年以内のメンバーが語る、ペパボの SREチームの取り組み

    - ペパボのSREについて https://tech.pepabo.com/pdf/pepabo-sre-202104.pdf
  20. 20 技術部プラットフォームグループについて サービスから独立したSREチーム • SLI/SLOの運用 • ソフトウェア・エンジニアリングを用いたサービス運用効率化 • メトリクスを元にしたパフォーマンスチューニング •

    インフラ周り • オンコール対応 2. カラーミーショップのSREチーム
  21. 21 3. カラーミーショップにおけるSRE活動

  22. 22 カラーミーショップのサイトリライアビリティエンジニアは、SLIの悪化がないかを様々 な方法で観測している • SLIの監視・通知 • ダッシュボード • SLI/SLOレビュー会 SLI/SLOの観測

    3. カラーミーショップにおけるSRE活動
  23. 23 SLIが閾値を超えるとチャットツールにメッセージが飛ぶように SLI/SLOの観測 〜SLIの監視と通知〜 3. カラーミーショップにおけるSRE活動

  24. 24 視覚的にわかりやすいようにSLIをグラフ化 SLI/SLOの観測 〜ダッシュボード〜 3. カラーミーショップにおけるSRE活動 Grafanaで作られた商品ページのダッシュボード 閾値

  25. SLI/SLOを確認して現在のサービスの状態の認識共有をする場 主にカラーミーショップ担当エンジニアとSREチームが参加 • 直前1週間のSLIを確認 • SREチームがSLOに違反しそうな項目について、事前に調査をしておき説明 • 次回のSLI/SLOレビュー会までに実施するアクションアイテムの設定 25 SLI/SLOの観測

    〜SLI/SLOレビュー会〜 3. カラーミーショップにおけるSRE活動
  26. 26 エラーバジェット サービスの信頼性が、どの程度損なわれても許容できるかを示す値 例: SLOを「30日間で99.99%正しいリクエストを返す」とする場合 30日間で約4.3分間はエラーを返しても良いということになる 3. カラーミーショップにおけるSRE活動 43200 *

    0.0001 = 4.32 分 分
  27. 27 エラーバジェットポリシーの運用 3. カラーミーショップにおけるSRE活動 エラーバジェットを使い切ったときのルールをドキュメント化したもの カラーミーショップでは運用を開始するところ • エラーバジェットポリシーの目的 • サービスの機能開発と信頼性のバランスを取る

    • エラーバジェットポリシーの目的ではないこと • ポリシーをSLO未達に対する罰として運用
  28. 28 エラーバジェットポリシーの運用 3. カラーミーショップにおけるSRE活動 エラーバジェットを使い切ったときのルールをドキュメント化したもの カラーミーショップではちょうど導入を開始するところ • エラーバジェットポリシーの目的 • サービスの機能開発と信頼性のバランスを取る

    • エラーバジェットポリシーの目的ではないこと • ポリシーをSLO未達に対する罰として運用 信頼性回復を目的としてアプリケーションエンジニアと サイトリライアビリティエンジニアが 協力するためのポリシー
  29. 29 エラーバジェットポリシーの運用 〜バジェットを使い切ったとき〜 3. カラーミーショップにおけるSRE活動 • 信頼性回復のためのタスクを最優先とする • 原因がアプリケーション起因のとき •

    SREチームとカラーミーショップ担当エンジニアをそれぞれ1人ずつ信頼性 回復タスクにアサインする • 原因がインフラ起因のとき • SREチームから1人を信頼性回復タスクにアサインする
  30. カラーミーショップ担当エンジニアとともにサービスを改善をしていく場を設定 • SREチーム • 改善できそうなエンドポイントの洗い出しを実施し共有 • カラーミーショップ担当エンジニア • 洗い出したエンドポイントに関連する実装について説明 •

    実際に手を動かしてサービス改善を実施 30 改善もくもく会 3. カラーミーショップにおけるSRE活動
  31. • インフラの最適化 • 需要の予測とキャパシティプランニング • Webサーバーの設定値変更 • アプリケーションの改修 • クエリチューニング

    31 改善活動 3. カラーミーショップにおけるSRE活動
  32. 4. SLI/SLOを用いた改善活動の事例紹介 32

  33. • 一部GMOペパボのプライベートクラウド基盤であるNyah上でVMとして稼働 • もちろんコンテナ化されているものもある • GMOペパボが提供している別サービスも含めてVMが共存している 33 カラーミーショップのアーキテクチャ 4. SLI/SLOを用いた改善活動の事例紹介

  34. あるエンドポイントのレイテンシが悪化し、閾値を超えていた例 34 インフラの最適化による改善活動の例 〜その1〜 4. SLI/SLOを用いた改善活動の事例紹介 SLOを違反しているグラフ

  35. 1. 一部のインスタンスのみレスポンスが悪化していることがメトリクスから分かった 2. CPUのstealの値が増加している事が判明 3. ノイジーネイバーを疑い、インスタンスのライブマイグレーションを実施 35 インフラの最適化による改善活動の例 〜その1〜 4.

    SLI/SLOを用いた改善活動の事例紹介
  36. 1. 一部のインスタンスのみレスポンスが悪化していることがメトリクスから分かった 2. CPUのstealの値が増加している事が判明 3. ノイジーネイバーを疑い、インスタンスのライブマイグレーションを実施 36 インフラの最適化による改善活動の例 〜その1〜 4.

    SLI/SLOを用いた改善活動の事例紹介
  37. 1. 一部のインスタンスのみレスポンスが悪化していることがメトリクスから分かった 2. CPUのstealの値が増加している事が判明 3. ノイジーネイバーを疑い、インスタンスのライブマイグレーションを実施 37 インフラの最適化による改善活動の例 〜その1〜 4.

    SLI/SLOを用いた改善活動の事例紹介
  38. CPU Steal • ハイパーバイザー型VMにおいて仮想CPUが実CPUを待っている時間のこと • 同じホストにいる別VMと実CPUのCPU時間を奪い合うことで発生する 38 インフラの最適化による改善活動の例 〜その1〜 4.

    SLI/SLOを用いた改善活動の事例紹介 ノイジーネイバーによってstealが増加しているグラフ
  39. 1. 一部のインスタンスのみレスポンスが悪化していることがメトリクスから分かった 2. CPUのstealの値が増加している事が判明 3. ノイジーネイバーを疑い、インスタンスのライブマイグレーションを実施 39 インフラの最適化による改善活動の例 〜その1〜 4.

    SLI/SLOを用いた改善活動の事例紹介
  40. ノイジーネイバー • 日本語だと「うるさい隣人」 • 同じホストに存在する他のVMがホストのマシンリソースを大量に利用すること で、十分なリソースを利用できない状態のこと ライブマイグレーション • 仮想マシンを無停止で別のホストへ移動すること •

    メモリの状態を丸々移動することで実現している 40 インフラの最適化による改善活動の例 〜その1〜 4. SLI/SLOを用いた改善活動の事例紹介
  41. 1. 一部のインスタンスのみレスポンスが悪化していることがメトリクスから分かった 2. CPUのstealの値が増加している事が判明 3. ノイジーネイバーを疑い、インスタンスのライブマイグレーションを実施 4. ライブマイグレーション対応の自動化 41 インフラの最適化による改善活動の例

    〜その1〜 4. SLI/SLOを用いた改善活動の事例紹介 https://tech.pepabo.com/2022/04/18/instance-migrator/
  42. アプリケーションのデプロイを行うたびにエラーレートが上がっていた例 42 インフラの最適化による改善活動の例 〜その2〜 4. SLI/SLOを用いた改善活動の事例紹介 SLOを違反しているグラフ

  43. 1. デプロイ時に、PHP-FPMがリスタートしているタイミングで502エラーが発生し ていた 2. PHP-FPMはデフォルトでGraceful Restartするのを期待していたが、実際 には違った 3. process_control_timeout をレスポンスの95%タイルを元に算出し設定した

    43 インフラの最適化による改善活動の例 〜その2〜 4. SLI/SLOを用いた改善活動の事例紹介
  44. 1. デプロイ時に、PHP-FPMがリスタートしているタイミングで502エラーが発生し ていた 2. PHP-FPMはデフォルトでGraceful Restartするのを期待していたが、実際 には違った 3. process_control_timeout をレスポンスの95%タイルを元に算出し設定した

    44 インフラの最適化による改善活動の例 〜その2〜 4. SLI/SLOを用いた改善活動の事例紹介
  45. 1. デプロイ時に、PHP-FPMがリスタートしているタイミングで502エラーが発生し ていた 2. PHP-FPMはデフォルトでGraceful Restartするのを期待していたが、実際 には違った 3. process_control_timeout をレスポンスの95%タイルを元に算出し設定した

    45 インフラの最適化による改善活動の例 〜その2〜 4. SLI/SLOを用いた改善活動の事例紹介
  46. Graceful Restart • プロセスを再起動する際に、古い子プロセスへ新しいリクエストを受け付けない 状態で、すでに受け付けているリクエストを処理し新しい子プロセスと入れ替わ ること。 • GracefulではないRestartをすると、すでに受け付けているリクエストの処理 を終わらせずに新しい子プロセスと入れ替わってしまう 46

    インフラの最適化による改善活動の例 〜その2〜 4. SLI/SLOを用いた改善活動の事例紹介
  47. 1. デプロイ時に、PHP-FPMがリスタートしているタイミングで502エラーが発生し ていた 2. PHP-FPMはデフォルトでGracefulRestartするのを期待していたが、実際に は違った 3. process_control_timeout をレスポンスの95%タイルを元に算出し設定した 47

    インフラの最適化による改善活動の例 〜その2〜 4. SLI/SLOを用いた改善活動の事例紹介
  48. SLO違反の調査から特定エンドポイントの処理が意図したよりも長いことが判明した 1. 複数のインスタンスにおいて、レイテンシが悪化していることがSLIから判明 2. N+1クエリが存在していた 3. カラーミーショップ担当エンジニアにレビューを貰いつつクエリを修正 48 アプリケーション改修による改善活動の例 4.

    SLI/SLOを用いた改善活動の事例紹介
  49. SLO違反の調査から特定エンドポイントの処理が意図したよりも長いことが判明した 1. 複数のインスタンスにおいて、レイテンシが悪化しているのがメトリクスより判明 2. N+1クエリが存在していた 3. カラーミーショップ担当エンジニアにレビューを貰いつつクエリを修正 49 アプリケーション改修による改善活動の例 4.

    SLI/SLOを用いた改善活動の事例紹介
  50. SLO違反の調査から特定エンドポイントの処理が意図したよりも長いことが判明した 1. 複数のインスタンスにおいて、レイテンシが悪化しているのがメトリクスより判明 2. N+1クエリが存在していた 3. カラーミーショップ担当エンジニアにレビューを貰いつつクエリを修正 50 アプリケーション改修による改善活動の例 4.

    SLI/SLOを用いた改善活動の事例紹介
  51. SLO違反の調査から特定エンドポイントの処理が意図せず長いことが判明した 1. 複数のインスタンスにおいて、レイテンシが悪化しているのがメトリクスより判明 2. N+1クエリが存在していた 3. カラーミーショップ担当エンジニアにレビューを貰いつつクエリを修正 51 アプリケーション改修による改善活動の例 4.

    SLI/SLOを用いた改善活動の事例紹介
  52. 52 5. おわりに

  53. 53 配属から1年経って変わったこと • SLI/SLOをベースとして物事を考えられるようになってきた • 行動や優先順位付けに大きく影響している • 何事も手順化するようになった • 自分が困ったところはドキュメントに書き出す

    新卒2年目として... 5. おわりに
  54. 54 • SREとは • サービスの信頼性を維持・向上することを目的としたアプローチのこと • カラーミーショップのSRE活動について • SLI/SLOの観測を監視、ダッシュボード、レビュー会などで実施 •

    エラーバジェットポリシーの運用を開始 • カラーミーショップにおけるSLI/SLOを用いた改善活動について • 3つの例を取り上げた 今回話したこと 5. おわりに
  55. ご清聴ありがとうございました! 55