Slide 1

Slide 1 text

ja.mackerel.io クリティカルユーザージャーニーを利用した SLI/SLO の改善 2023.12.19 Mackerel チーム SRE テックリード 井口景子

Slide 2

Slide 2 text

井口 景子 (id:heleeen) ● 2019年9月に Mackerel に SRE として入社 ● 現在は Mackerel の SRE テックリード ● SRE, Serverless が好き ● カメラも好き 自己紹介 2 由緒あるスポットのはずが, 諸々噛み合わさって 怖い雰囲気になってしまった →

Slide 3

Slide 3 text

今日はなすこと ● Mackerel の SLI/SLO の改善 ● クリティカルユーザージャーニーとは 3

Slide 4

Slide 4 text

Mackerel の SLI/SLO ● 誕生(2019年) ○ Mackerel の SRE チーム reboot ○ CloudNative への移行 4

Slide 5

Slide 5 text

Mackerel の SLI/SLO の誕生 ● まずは SLI/SLO をとにかく定めた ○ SRE Workbook¹ の実装例がとても参考になる ● 詳しくは Mackerel開発チームのリードSREが考える働き方と組織作り にて ○ 他にも... ■ 定期的に見直すフローを組み込む ● SLO を割っていないか, 定義した SLI/SLO は適切か... ■ チーム全体(ステークホルダー全員)で SRE の理解を深める ● SRE は運用チームだけで達成するものではない 1... https://sre.google/workbook/implementing-slos/ 5

Slide 6

Slide 6 text

(余談) 意思決定者を巻き込むのは大変かもしれない ● チーム, プロダクト, 会社によって状況はさまざま... ● アプローチ ○ 小さくシンプルにまずは作ってみる ■ 最小限の定義 ■ 仮の目標値にする ● 組織としての SRE への取り組みについては SRE の文化と組織 がおす すめです 6

Slide 7

Slide 7 text

Mackerel の SLI/SLO ● ざっくり構成 ○ Mackerel 全体 (ここから始まった) ■ Availability, Latency ○ 時系列データベース ■ Availability, Latency, Coverage... ○ バッチ ■ Availability, Coverage, Correctness... ○ プロキシ ■ Availability, Latency ○ ラベル付きメトリック ■ ... ○ ... 7

Slide 8

Slide 8 text

SLI/SLO で何が変わったか ● MackerelにおけるEC2からFargate移行の軌跡とFargateのメリットデ メリットについて ○ 移行の意思判断が SLO でできるようになった ○ 担当者の精神的負担にも好影響 ● プロダクトオーナーとしてSLOに向き合う 〜Mackerelチームの事例〜 / SRE NEXT 2023 ○ 判断と改善がチームで回るようになった ○ 特に PO としては判断の負荷が下がる 8

Slide 9

Slide 9 text

SLO 策定から数年... ● 本当にユーザーの体験を測れているのか? ○ Yes とは言い切れない ○ ユーザーの目線より実装に沿っている定義がある ○ => 信頼性を量る指標になれていない 9

Slide 10

Slide 10 text

Mackerel の SLI/SLO の不全 ● 信頼性に影響のある障害が SLI に現れなかった ○ デプロイフローの改善により開発体験・速度は改善した ■ その分, 障害頻度は上がるはず ○ ユーザー体験に影響のある障害検知があまりできていない... ○ => SLI の定義か実装が適切ではない? 10

Slide 11

Slide 11 text

Mackerel の SLI/SLO の再編 ● ユーザー目線を理解したい ○ ユーザー体験をモデリング ■ どんなユーザーがサービスを利用するのか ■ このサービスはどんな体験をユーザーに提供するのか, など ● クリティカルユーザージャーニー(CUJ)を採用 ○ ユーザーがサービスを利用して, 目的を達成するために行う 作業の一覧を作り, ステークホルダーと重要な顧客体験の認識を揃える ○ SRE workbook の Modeling User Journeys¹ に出てくる 1... https://sre.google/workbook/implementing-slos/#modeling-user-journeys 11

Slide 12

Slide 12 text

クリティカルユーザージャーニー ● 特に重要な顧客体験に着目して, ユーザーの体験とタスクを整理する ● オンラインショッピングサイトの場合 12 目標(ゴール) 達成するためのタスク 検索して商品を見つける ■ 検索ワードを入力する ■ 目的を満たす商品を選択し詳細を確認する カートに追加する ■ 個数を選択してカートへ追加する 決済を行う ■ 配送先の指定 ■ クレジットカード情報の入力

Slide 13

Slide 13 text

ユーザーの期待を特定する ● このタスクを進める中で, ユーザーにとって何が重要なのか? ● オンラインショッピングサイトの場合 13 目標(ゴール) ユーザーにとって重要なこと 検索して商品を見つける ■ショッピングサイトを使いたいときに使えること ■条件通りの商品が表示されること ■素早く結果が表示されること カートに追加する ■指定の個数でカートに追加されること ■素早く結果が表示されること 決済を行う ■決済の処理が成功すること ■商品が届くこと

Slide 14

Slide 14 text

ユーザーの期待を指標にする ● ユーザーにとって重要なことを測る指標はなにか? ● オンラインショッピングサイトの場合 14 目標(ゴール) ユーザーにとって重要なことを測る指標 検索して商品を見つける ■ショッピングサイトを使いたいときに使えること ●=> 可用性 ■条件通りの商品が表示されること ●=> 正確さ, 新鮮さ ■素早く結果が返ってくること ●=> レイテンシ 決済を行う ■決済の処理が成功すること ●=> 正確さ

Slide 15

Slide 15 text

Mackerel のクリティカルユーザージャーニー ● 特に重要な顧客体験に着目して, ユーザーの体験とタスクを整理する ● 例: Mackerel でホストを監視できる 1... 厳密にはアカウント作成やログインもインタラクションに含まれますが, ここではスライドに 収まらないため省略しています 15 目標(ゴール)¹ 達成するためのタスク ホストを登録する ■ VM を用意する ■ mackerel-agent をインストールする 監視ルールを追加する ■ 監視条件を入力し保存する 通知を設定する ■ 通知先を用意する ■ 通知チャンネルを作成する ■ 通知が届くか検証する

Slide 16

Slide 16 text

クリティカルユーザージャーニー ● 指標として表すことができる体験を選択する ○ 例 ■ 安定して結果が返却される ■ 正しく表示される ○ SLI では表しにくい例 ■ 手軽に監視運用できる ■ よりコストを抑えて監視できる ■ => 他の手法かブレイクダウンが必要 16

Slide 17

Slide 17 text

Mackerel の CUJ から期待を特定する ● このタスクを達成する上で, ユーザーにとって何が重要なのか? ● 例: Mackerel でホストを監視したいときに重要なことはなにか? 17 目標(ゴール) ユーザーにとって重要なこと ホストを登録する ■ ホストが登録できること ■ ブラウザでメトリックが確認できること 監視ルールを追加する ■ 監視が登録できること ■ 条件に従ってアラートが発生すること 通知を設定する ■ 通知が届くこと

Slide 18

Slide 18 text

Mackerel への期待を指標にする ● ユーザーにとって重要なことを測る指標はなにか? ● 例: Mackerel でホストを監視したいユーザーにとって重要なことを測る 指標はなにか? 18 目標(ゴール) ユーザーにとって重要なことを測る指標 ホストを登録する ■ ホストが登録できること ■ => API の可用性 ■ ブラウザでメトリックが確認できること ■ => Web コンソールの可用性 監視ルールを追加する ■ 監視が登録できること ■ => API, Web コンソールの可用性 ■ 条件に従ってアラートが発生すること ■ => バッチの可用性, 正確さ, 処理時間

Slide 19

Slide 19 text

クリティカルユーザージャーニーで見えないもの ● ユーザージャーニーに現れにくいものも存在する ○ 例: データお掃除のバッチ ■ ユーザー体験にはほぼ影響しないけど, システム的には必要な機能 ○ CUJ から決めた SLI/SLO とはわけて管理している = エラーバジェット ポリシーの適応範囲・内容を分けている 19

Slide 20

Slide 20 text

指標を実装する ● 信頼性に関連していそうな指標を計測する ● 機能のアーキテクチャごとの実装例が SRE Workbook で公開されている¹ ○ Request Driven ■ Availability, Latency, Quality ○ Pipeline ■ Freshness, Correctness, Coverage ○ Storage ■ Durability 1... https://sre.google/workbook/implementing-slos/ 20

Slide 21

Slide 21 text

SLI/SLO を再編して ● SLI からユーザー影響が想定しやすくなった ○ コンポーネント単位ではなくユーザー目線にした ○ とはいえまだ大絶賛実装中... そう感じているのは自分だけかもしれない ● SRE workbook の実装例はとても参考になる ○ 初版から参考にしていて, 指標の実装に大きな変化はない ○ 実装に悩んだらまずは真似てみるのがよさそう ● SLI/SLO は見直して育てていくもの ○ 始めていなかったら課題感に気づいていなかったかもしれない ○ とりあえず始めていてよかった ○ 最初から完璧を求めない 21