Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

4 1. SREとは

Slide 5

Slide 5 text

5 1. SREとは SRE = Site Reliability Engineering

Slide 6

Slide 6 text

6 1. SREとは SRE = Site Reliability Engineer

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

14 SLO: Service Level Objective サービスの稼働目標を値にしたもの 例 • 可用性 • 30日間で正常に処理されたリクエストが99.9% • 30日間で決済成功率が99.99% • レスポンスの速度 • 30日間でn秒以内に処理を完了したリクエストの割合が99.95% SLOとは 1. SREとは

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

52 5. おわりに

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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