天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

Hatena Engineer Seminar #29 障害対応編に参加してきた

hatena.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

会の概要

以下、イベントページから引用です。

Hatena Engineer Seminar #29 では、はてなに所属するエンジニア3名が「障害対応」をテーマに、これまでの取り組みやそこでの学びについて発表します。

会の様子

小さく始めるチームでのセキュリティインシデント対応演習

最初にFurutsukiさんから発表がありました。

サービスを利用する/してもらう上でのセキュリティ要求の高まりを機運にして、セキュリティインシデント発生時に即座に対応できるチームを目指して、あまり実践機会がない演習機会を目的でセキュリティ演習を実施したということです。

セキュリティ演習では、最初に対応フローのテンプレート*1を用意し、チーム単位で机上演習形式で対応フローに馴染んでもらったということです。
演習の具体的な内容としては、「全ブログが公開状態になってしまう」という馴染み深い&インパクトが大きい状態をシナリオとして定義したそうです。また、原因はオペレーションミスとすることで、原因究明よりも問題解消にフォーカスが向くように工夫したということでした。

演習後はふりかえりをしたそうで、対応フローの改善案が出たり、複数の役割の人から意見や感想が出た点は非常に良かったと思うということです。今後は、頻度を上げたり組織にスコープを広げるとともに、演習で分かった難しさにアプローチしていきたいというお話がありました。

障害対応をちょっとずつよくしていくための演習の作りかた

続いてheleeenさんからお話がありました。

heleeenさんが所属しているMackerelチームでは、本番障害は必ず起こるものだという前提を持っているということで、障害が起きた際に影響を抑えるための取り組みを重要視しているということです。また、障害対応を考える際の一観点であるSLOでは、エラーバジェットを利用したいと考えているということでした。

障害対応を学ぶ際は、本番が一番という考え方もありますが、本番は緊張感がある場である上に、何よりも障害の収束が重要であるため、障害対応演習を設けているということでした。

障害対応演習では、日頃の課題感や演習を通して学んでほしいことをインプットにして目的を定めたうえで、チームの状態に合わせて学習形式を考える*2ようにしているということです。
他にも、実際に手を動かせる形式を用意するのと、自分で考えたり調査したりする時間を少し作るようにしたりといった工夫もしているということでした。

演習を作成する際には、起こり得て対応できる内容をシナリオにすることと、内容を詰め込みすぎないことには注意しているそうで、一つの演習ででたくさんのことを学ぶのではなく、一度に一つの内容を定期的に何度も行うようにしているということです。

Mackerelチームでは講義編と実践編に分けて障害演習を実施しており、あまり普段馴染がないオペレーションを講義で学び、実践編でなるべく手を動かして設定を検証するようにしているということでした。

障害対応を起点としたもっといい開発と運用のサイクル作りのためにできること

最後にpolamjagさんから発表がありました。

障害が起こった際はなるべく早く復旧することが重要になってきますが、原因や解決策を高速に特定できてしまうと、早押しクイズで暗黙知に閉じた解決策になってしまうのが気になっているということです。(もちろん暗黙知は常に悪いわけではない)

SECiモデルでは暗黙知の対応概念として形式知*3がありますが、これをはてなでの取り組みにマッピングすると、

  • 障害対応演習→内面化
  • 連結化→ドキュメントを書く時間をチームで定期的に確保
  • 表出化→障害対応後のふりかえり会実施、ポストモーテムを社内共有してチーム横断社内勉強会で眺める
  • チームごとにインフラを見る会で話題にする

となるというお話がありました。障害対応演習は、ただ実施することが大切なのではなく、演習で得たことを個々人がどこまで内面化できるのか?ということが重要だと考えているそうです。

暗黙知を共有する仕掛けとしては、Mackerelを使用しているということで、具体的には、

  • カスタムダッシュボードに注釈を書きまくる
  • 監視ルールのメモ書き機能で、監視の意図や敬意、アラート発報時の対応情報を記載
  • 障害対応後のふりかえりやチームでインフラを見る会などでガンガン追加+編集する

といった工夫をしているそうです。

また、ナレッジ管理したその先として、unknown unknownへの対応を見据えているそうで、Observabilityの世界で未知の状況に対して早押しクイズをするためのヒントや仮説を考えているということでした。

会全体を通した感想

Furutsukiさんとheleeenさんの話で実際に現場でやられている活動の紹介があり、最後にpolamjagさんの話で少しメタ的に俯瞰してイベントが閉じられるという構成がよかったです。

当たり前になってきている考え方ではありますが、全員が障害は起こるものと想定して障害対応に向き合っていることが伺えたのが非常に印象的でした。

*1:対応の優先順位や一次対応完了の判断基準などを記載

*2:チームに慣れた人が一人いる状態ならその人の技術を盗めるようにしておくなど

*3:本発表では、Runbookやポストモーテムドキュメントなどが具体例