re:annkara

日々学んだことを書き留めておく。

【読書メモ】入門 監視

入門 監視 ―モダンなモニタリングのためのデザインパターン

入門 監視 ―モダンなモニタリングのためのデザインパターン

だいぶ前に一読していたので、簡単にまとめておく。

ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE)を読んだ時に、監視とはアラート発砲をすることでモニタリングはメトリクスを収集することで異なる概念だ、みたいな記述を読んでからずっと別物だと考えていたのだけど、そうでは無いことに気づかされた。

本書から言葉を借りるとすると監視とは以下の定義となる。

監視とは、あるシステムやそのコンポーネントの振る舞いや出力を監視し、チェックし続ける行為のことである。

メトリクスやログを収集し、閾値や特定のメッセージ、メトリクスの変化などを監視し、何かエラーが発生したりこれから障害が発生しそうである場合にアラートを発砲する、こういった複合的なシステムの健全性を確認し続ける行為のことを監視というのだと本書を読んで気づくことができた。

システムの監視というと、アプリケーション開発者というよりはシステム運用者の役割であるという認識が一般的であると思われているが、監視というのは特定の誰かがやるべきことではなく、そのサービスに関わる全ての人が監視に対して責務を持つべきである。

サーバ側のシステムメトリクスに問題が無い状態であろうと、あるページが絶えずHTTPのステータスコード500を返している状態は健全な状態であるとは言えず、そういった場合にはアプリケーション開発者も監視に対して責務を負うべきなのだ。

しかし、開発側も運用側もサービスの監視に対して責務を持つとなると、縦割り組織(開発は開発チーム、運用は運用チームみたいな)だとそういった意識を持ちづらいような気がする。この解決策としてDevOpsといった考え方を取り入れることもできる気がするけど、自分の周りを見てみるとなんだか難しそうな気がする。

エンジニアのスキルというか学習意欲だとかそういったものに依存する部分が大きいと思うからだ。また、SRE(Site Reliability Engineerの方)といった役割にしても、システムの健全性・監視をSREという新しい役割に負ってもらっているという感じがするので、本書が目指すような監視像とはちょっと違う気もしている。

個人的な理想は、開発も運用も同一のサービスを提供する同一のチームで協調していくことなのかなと思っているのだけど、実際にそういった働き方をしている人から話を聞いたわけでは無いのでちょっと聞いてみたい。

本書の感想からだいぶ逸れてしまったけど、開発者だろうと運用者だろうとシステムの健全性を保つという行為自体はエンジニアであれば誰しもが意識すべきことだと思うので、是非とも一読して欲しい本です。