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

カラーミーショップの改善における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

    View Slide

  2. 技術部 プラットフォームグループ
    2021年 新卒入社
    2
    自己紹介
    新宮 隆太 Shingu Ryuta
    ● あだ名: ほみるん
    ● 社内ではサーバーを担いでる人という認識が定着
    ● 最近、サイトリライアビリティエンジニアなのに自宅
    鯖で運用しているブログを落としてしまった
    ● Twitter : @h0mirun_deux

    View Slide

  3. 3
    アジェンダ
    1. SREとは
    2. カラーミーショップのSREチーム
    3. カラーミーショップにおけるSRE活動
    4. SLI/SLOを用いた改善活動の事例紹介
    5. おわりに

    View Slide

  4. 4
    1. SREとは

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    • 可用性
    • リクエストのエラーレート
    • 決済成功率
    • レスポンスの速度
    • n秒以内に処理を完了したリクエストの割合
    SLIとは
    1. SREとは

    View Slide

  14. 14
    SLO: Service Level Objective
    サービスの稼働目標を値にしたもの

    • 可用性
    • 30日間で正常に処理されたリクエストが99.9%
    • 30日間で決済成功率が99.99%
    • レスポンスの速度
    • 30日間でn秒以内に処理を完了したリクエストの割合が99.95%
    SLOとは
    1. SREとは

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  20. 20
    技術部プラットフォームグループについて
    サービスから独立したSREチーム
    • SLI/SLOの運用
    • ソフトウェア・エンジニアリングを用いたサービス運用効率化
    • メトリクスを元にしたパフォーマンスチューニング
    • インフラ周り
    • オンコール対応
    2. カラーミーショップのSREチーム

    View Slide

  21. 21
    3. カラーミーショップにおけるSRE活動

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  29. 29
    エラーバジェットポリシーの運用 〜バジェットを使い切ったとき〜
    3. カラーミーショップにおけるSRE活動
    • 信頼性回復のためのタスクを最優先とする
    • 原因がアプリケーション起因のとき
    • SREチームとカラーミーショップ担当エンジニアをそれぞれ1人ずつ信頼性
    回復タスクにアサインする
    • 原因がインフラ起因のとき
    • SREチームから1人を信頼性回復タスクにアサインする

    View Slide

  30. カラーミーショップ担当エンジニアとともにサービスを改善をしていく場を設定
    • SREチーム
    • 改善できそうなエンドポイントの洗い出しを実施し共有
    • カラーミーショップ担当エンジニア
    • 洗い出したエンドポイントに関連する実装について説明
    • 実際に手を動かしてサービス改善を実施
    30
    改善もくもく会
    3. カラーミーショップにおけるSRE活動

    View Slide

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

    View Slide

  32. 4. SLI/SLOを用いた改善活動の事例紹介
    32

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  52. 52
    5. おわりに

    View Slide

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

    View Slide

  54. 54
    • SREとは
    • サービスの信頼性を維持・向上することを目的としたアプローチのこと
    • カラーミーショップのSRE活動について
    • SLI/SLOの観測を監視、ダッシュボード、レビュー会などで実施
    • エラーバジェットポリシーの運用を開始
    • カラーミーショップにおけるSLI/SLOを用いた改善活動について
    • 3つの例を取り上げた
    今回話したこと
    5. おわりに

    View Slide

  55. ご清聴ありがとうございました!
    55

    View Slide