Slide 1

Slide 1 text

ja.mackerel.io SRE のはじめ方 / DevOps と SLI/SLO 2024.01.30 Mackerel チーム SRE テックリード 井口景子

Slide 2

Slide 2 text

井口 景子 (id:heleeen) ● 2019年9月に Mackerel に SRE として入社 ● 現在は Mackerel の SRE テックリード ● SRE, Serverless が好き ● カメラも好き 自己紹介 2 あるテラス席でぼんやりしていたら 目の前にカラスが来て綺麗だった→

Slide 3

Slide 3 text

今日はなすこと ● SRE とは ● SLI/SLO 運用のはじめ方 3

Slide 4

Slide 4 text

SRE とは ● “class SRE implements interface DevOps” (SRE workbook 第1章より) ○ 「SRE は DevOps というインタフェースの実装である」 ■ => DevOps (思想) を実現する手段が SRE 4

Slide 5

Slide 5 text

DevOps とは ● 開発者と運用者が協調する開発手法 ●                       SRE workbook 第1章より 5 サイロ化しない 運用と開発を分断しない. コラボレーションが大事 事故は日常にあるもの 絶対壊れないシステムはない. 事故を前提にして, 素早く回復することが大事 変化は小さく頻繁に 変化にはリスクが伴うので, 小さくリリースして 事故の復旧を早める ツールと文化は相互に影響する 優れた文化であれば合わないツールを回避できる が、その逆は難しい. まずは組織文化が大事 測定は大事 客観的に事実を把握し, 議論するための土台を作る

Slide 6

Slide 6 text

DevOps を SLI/SLO で実現する ● “コラボレーション” ○ SRE がアプリケーションを理解し, 開発者がインフラを理解するこ とでオーナーシップを共有し, 効率的な運用や開発を行う ○ => SLI/SLO の共有, SLO 違反しないための迅速な対応 ● “事故を前提にして” ○ 一切のバグなしに新しい機能を開発してリリースするのはとても コストがかかる. 事故を前提にして運用する ○ => エラーバジェット ● “測定は大事” ○ 共通認識を作り, 客観的な指標を持つ ○ => SLI/SLO の策定 6

Slide 7

Slide 7 text

100% SLI/SLO とは ● サービスの信頼性を担保する指標と目標値 ○ 信頼性 ... サービスの挙動に対する期待が実現されること ○ SLI/SLO は SRE の特に中心的なプラクティス ● 用語 ○ SLI (service level indicator) … サービスの信頼性を計測する指標 ○ SLO (service level objective) … SLI の目標値 ○ SLA (service level agreement) … SLO に関するユーザーとの契約 ○ エラーバジェット … サービスの信頼性が損なわれる許容度 7 0% SLO エラーバジェット

Slide 8

Slide 8 text

話しきれない話題はこちらにて... ● SRE 本 ○ https://sre.google/books/ ■ 今回特に触れたのは Site Reliability Engineering, The Site Reliability Workbook ● 信頼性の育て方 / mackerel-meetup-15 8

Slide 9

Slide 9 text

SLI/SLO 運用のはじめ方 ● 信頼性を表す指標を何にするべきか ○ クリティカルユーザージャーニーを利用した SLI/SLO の改善 / #mackerelio の11~19ページあたりのお話です 9

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

SLI はイメージできてきた. その次は... ● とにかく運用を始めてみましょう ○ 始めることでわかることもたくさんある ■ 例: SLI が妥当ではなかった, SLO が厳しすぎた... など ○ 悩みすぎず, 運用してから改善していくことも必要 ● 小さく始めてみましょう ○ 最初から完璧を実現する必要はない ■ 例: 可用性とレイテンシの SLI/SLO だけで始める, SRE だけで 試運転して開発者や責任者を巻き込んでいく 15