障害対応をちょっとずつよくしていくための 演習の作りかた
by
heleeen
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ja.mackerel.io 障害対応をちょっとずつよくしていくための 演習の作りかた 2024.04.24 Mackerel チーム SRE テックリード 井口景子
Slide 2
Slide 2 text
井口 景子 (id:heleeen) ● 2019年9月にはてなに SRE として入社 ● 現在は Mackerel の SRE テックリード ● SRE, Serverless が好き ● カメラも好き 自己紹介 2 素敵な色の季節になりました
Slide 3
Slide 3 text
今日はなすこと ● なぜ障害対応演習を行っているか ● 障害対応演習の作りかた ● Mackerel ではどのような演習を実施したか 3
Slide 4
Slide 4 text
なぜ障害対応演習を行っているか ● 本番障害は必ず起こるものだから ○ 不具合やオペレーションのミスを無くすのは難しい ○ 障害防止にとても労力を割けば減らせるが, 開発コストが 増えたり開発スピードは悪化したりする ● 障害が起きたときに影響を抑えるための取り組みが重要 ○ 素早くロールバックできる仕組みを利用する ○ カナリアリリースで影響範囲を小さくする ○ 障害対応フローを理解して, 素早く対応できる体制を作る 4
Slide 5
Slide 5 text
100% SLO から考える障害対応 ● エラーバジェットはプロダクト開発で利用したい ○ エラーバジェット … サービスの信頼性が損なわれる許容度 ○ 本番障害の頻発や復旧が長引いてしまう => 開発ではないところでエラーバジェットを使い切ってしまう => 機能開発や本番リリースができなくなってしまう... ● 本番障害で消費されるエラーバジェットはなるべく抑えたい 5 0% SLO エラーバジェット
Slide 6
Slide 6 text
障害対応をどのように学ぶか ● 本番の障害対応の場ではなかなか難しい ○ 本番の障害対応は本番で障害を収束させるためのものであり, 学びの ためのものではない ■ 得られる学びももちろんあるが, 目的が違う ○ 緊張感のある場で成長する人間ばかりではない ■ 本番障害対応のみでは成長する人が成長するだけの場合が多い ■ ある程度の水準の対応を全員ができるようになるのは難しい 6
Slide 7
Slide 7 text
障害対応を効率的に学ぶ ● Mackerel チームでは定期的な障害対応演習を実施 ○ 練習しておくと安心して対応できる ○ オンボーディングやキャッチアップとしても利用できる 7
Slide 8
Slide 8 text
演習の作りかた ● 演習の目的を定める ○ この演習で何を学んでほしいかを決めておく ■ 例 ● 規模が大きい障害の対応の仕方 ● 障害頻度の低いコンポーネントの学習機会にする ○ 日頃の障害対応を観察して課題に感じるところを扱う ■ 例 ● 対応に慣れた人と不慣れな人の経験の差が開きつつある ● マネージドサービスを利用することでインフラ系の障害発生 頻度が下がったので, 対応経験が少ない人が増えている 8
Slide 9
Slide 9 text
Mackerel チームの場合 ● 目的を定める ○ SRE が日頃クラウドの運用を行っているので, アプリケーション エンジニアはクラウドにふれる頻度が相対的に低い ■ アプリケーションエンジニアにクラウドのオペレーションを ある程度体験してほしい ○ 普段の障害対応で指揮官などの役割に携われていない人が役割を 経験することを優先して, できる人を増やしたい ○ DR 訓練をついでに実施しちゃいたい 9
Slide 10
Slide 10 text
演習の作りかた ● チームの状態に合わせて学習の形式を考える ○ 例 ■ 本番の障害対応が学びの中心となっている ● 基礎的な考えかたや慣れている人の考え方を知るとより スムーズに対応ができるようになるかもしれない ■ 実装上の不具合を見つけるのは得意だが, デプロイ後の調査方法は よくわからない ● リクエストの処理の流れの再確認やクラウド上での調査方法 を知ると, より素早く障害の原因を見つけられるようになるか もしれない 10
Slide 11
Slide 11 text
演習の作りかた ● 手を動かせる形式だとなおよい ○ 聞いたり読んだりだけより手を動かすほうが身につきやすい ● 自分で考えたり調査したりする時間を少し作る ○ 悩んだほうが印象に残りやすい ○ 考える過程で他の学びを得ることもある 11
Slide 12
Slide 12 text
Mackerel チームで実施したパターン ● 5,6人など, 役割に当たる人を増やせる規模にチームをグループ分けする ○ 手を動かす経験を積んだ人を増やせる ○ 大規模なフォーメーションの練習はしづらい ● チーム全体で1つの調査と対応を行う ○ 大きめの障害対応の演習ができる ○ 演習の規模によって, 役割に当たらない出てきてしまうかもしれない 12
Slide 13
Slide 13 text
気をつけていること ● 起こり得て対応できる内容をシナリオにする ○ 例 ■ アクセス数が通常時の10倍になった ■ イメージがライフサイクルによって削除されてしまった ■ 設定ミスで特定の経路のみ不通になってしまった ● 詰め込みすぎない ○ 練習しておきたいオペレーションやシチュエーションはたくさんある ○ すべてを一気に演習しても覚えるのは難しいので, 1回の内容は少なく 定期的に何度も行う ■ 人の入れ替わりにも対応できる 13
Slide 14
Slide 14 text
Mackerel チームの障害対応演習(講義編) ● 基本的なオペレーションの確認 ○ フェイルオーバー, ロールバックなどを手順書を見ながら実行する ■ 経験済みの操作にして, 操作に対する不安感が減る ■ 日常的ではないオペレーションを試すことができる ■ もし障害発生時に演習で行った操作が必要なら, 演習のドキュ メントを見ればよい 14
Slide 15
Slide 15 text
Mackerel チームの障害対応演習(実践編) ● 検証用の環境で障害を発生させ, 調査・対応を行う ○ 障害対応フォーメーションも実施 ○ 学んだことを手を動かして試す機会にする ■ 本番障害ではないので, 学習のチャンスにできる ● 監視設定の検証にもなる ○ 障害が発生したときに適切なアラートが発生するか ○ 素早くアラートで検知することができているか 15
Slide 16
Slide 16 text
演習での学び ● 現在のアーキテクチャでの課題が見つかった ● runbook の不足や不備が見つかった ○ runbook にたどり着きにくいというのも見つかってよかった ● 演習後の障害対応フローに今まで以上のスムーズさがあった 16 Slack での状況共有の わかりやすさもあがった
Slide 17
Slide 17 text
まとめ ● 障害対応も練習すると上手くなる ● チームの状態を観察して, 学習のテーマと手段を定めるのが大事 ● 先日の障害対応演習の実際の内容は, Hatena Developer Blog にて公開予定です 17