Practical Monitoring
モニタリングに関する思考のフレームワークを整理したいと思い、定評のある Practical Monitoring を読んだ。Practical という書名が示す通り、前半部はまずアンチパターンから説明し、続いてデザインパターンを導入した上でアラートの設計について述べるという実践的な構成となっており、読み始めてすぐに引き込まれた。後半は、具体的にビジネスやアプリケーションなど、色々なレイヤーのモニタリングに関する各論となっており、こちらも参考になった。2017 年の出版とやや古いが、特定のツールに依存した説明は少ないため、今読んでも十分に価値があると感じた。ページ数も 170 と短いため、チーム内での最低限の認識合わせのためにさっと読み合わせるのにも適している。
全体的な構成は以下の通り:
- Monitoring Anti-Patterns
- Monitoring Design Patterns
- Alerts, On-Call, and Incident Management
- Statistics Primer
- Monitoring The Business
- Frontend Monitoring
- Application Monitoring
- Server Monitoring
- Network Monitoring
- Security Monitoring
- Conducting A Monitoring Assesment
上述したように、第 1 章から第 4 章までの前半部で、モニタリングに関するアンチパターンやデザインパターンが語られる。アンチパターンの具体的な内容としては、
- Tool Obsession
- Monitoring-as-a-Job
- Checknox Monitoring
- Using Monitoring as a Crutch
- Manual Configuration
となっている。書籍の内容をすべて引用することは避けるが、たとえば最初の Tool Obsession では、特定のツールの導入そのものが目的化してしまうことを戒めており、ファインマンの文章を引いた上で、カーゴカルト信仰に陥らずに状況に応じて適宜ツールを導入し、時には自作の必要性もあることなどを説く。また Monitoring-as-a-Job では、監視を専門のチームに任せるのではなく、ソフトウェアについて最もよく理解しているエンジニアなど、様々なメンバーが主体的に関わっていくべきであると語られる。これらはモニタリングにおけるアンチパターンとして記述されているが、ツールへの過剰な拘りや専門分野へのある種の逃避などは普段の開発業務においてもよく見られることであり、モニタリングに限らず広く通用する考え方だと思う。こういった応用の効くアンチパターンが章を通じて語られており、うんうんと頷きながら読み進めることができた。
続いて、第 2 章においてモニタリングにおけるデザインパターンが説明される。具体的には
- Composable Monitoring
- Monitor from the User Perspective
- Buy, Not Build
- Continual Improvement
が挙げられている。最初の Composable Monitoring では、モニタリングの要素として
- Data collection
- Data storage
- Visualization
- Analytics and reporting
- Alerting
という 5 つがあるとし、
Write programs that do one thing and do it well. Write programs to work together.
という UNIX 哲学と同様に、それぞれに特化したツールを上手く組み合わせてモニタリングのためのプラットフォームを作ろうと述べられている。また、続く Monitor from the User Perspective では、アプリケーションやインフラなど様々なレイヤーのモニタリングが可能ではあるが、まずはユーザーの視点から、実装の詳細を捨象してサービス全体がきちんと動いているかどうかを確認することから始めよう、と解かれている。いずれのパターンも、自分がモニタリングの設計をおこなう際に実践的に役立つであろう内容となっており、今後も折りに触れ参照していくと思う。
以上に述べた内容は第 1 章と第 2 章の一部だけであるが、このあともアラートの設計や各レイヤーのモニタリングにおけるポイントなど、モニタリングに関わる場合には必ず参考になる内容が厳選して並べられている (第 4 章の統計学に関する内容だけは、少し中途半端で不要に感じたが)。さらに Appendix には Runbook (手順書) の具体例まで掲載されており、これをたたき台としてすぐに手を動かすことができるようになっている。ページ数は多くないため、分野全体を広く浅く俯瞰する内容ではあるが、教科書的な事項の羅列ではなく血が通った内容となっているため、自分の経験や問題意識とすり合わせながらモニタリングを学ぶための入門書として最適だと思う。