@hihihiroroのLog

ダラダラと。本ブログは、個人の意見であり、所属会社とは関係がありません。

「オブザーバビリティ・エンジニアリング」を読んだ

オブザーバビリティって何か分からなかったので、読んで見るかと思って買っていた本をようやく読めた。

第Ⅰ部 オブザーバビリティへの道
 1章 オブザーバビリティとは?
 2章 オブザーバビリティとモニタリングにおけるデバッグ方法の違い
 3章 オブザーバビリティを用いないスケーリングからの教訓
 4章 オブザーバビリティとDevOps、SRE、クラウドネイティブとの関連性
第Ⅱ部 オブザーバビリティの基礎
 5章 構造化イベントはオブザーバビリティの構成要素である
 6章 イベントをトレースにつなぐ
 7章 OpenTelemetryを使った計装
 8章 オブザーバビリティを実現するためのイベント解析
 9章 オブザーバビリティとモニタリングの関係
第Ⅲ部 チームのためのオブザーバビリティ
 10章 オブザーバビリティへの取り組みをチームへ適用する
 11章 オブザーバビリティ駆動開発
 12章 サービスレベル目標の信頼性向上への活用
 13章 SLOベースのアラートへの対応とデバッグ
 14章 オブザーバビリティとソフトウェアサプライチェーン
第Ⅳ部 大規模なオブザーバビリティ
 15章 投資収益性: 作るか、それとも買うか
 16章 効率的なデータストア
 17章 安価で十分な精度にするためのサンプリング戦略
 18章 パイプラインによるテレメトリー管理
第Ⅴ部 オブザーバビリティの文化を拡大する
 19章 オブザーバビリティのビジネス事例
 20章 オブザーバビリティの利害関係者と協力者
 21章 オブザーバビリティ成熟度モデル
 22章 ここからどこへ

最初にはモニタリングとオブザーバビリティの違いが説明されていた。
モニタリングは想定される値をメトリクスとして監視し、閾値を超えた際にアラートを出す仕組み。モニタリングはあらかじめ決められている指標を監視するため、起こりうる事象を予測することになる。そのため未知の事象については監視することができず、既知の未知を検出するために設定するものと説明されていた。
それに対して、オブザーバビリティはシステムがどのような状態になったとしても、それがどんなに斬新で奇妙なものであっても、理解し説明できるかを示す尺度と紹介されているが、いまいちよく分からなかった。モニタリングが既知の未知を検出するものに対して、オブザーバビリティは未知の未知について対応できるようにしておくということらしい。やるべきことは必要なデータとしてのログを出すようにしておくなどなのだろうかというくらいの理解。
何かが起きてからダッシュボードを作ったり調べたり、足りてなかったらアプリの改修をすることで調べるためのデータを出すようにするのではなく、開発時点から必要となるものを考え仕込んでおくということが大切そう。

モニタリングのところで思ったのは、自分がトラブルに気がついたり対応したりすることは完全に経験に頼っているが他の人にどううまく引き継げるんだろうと思っていた。モニタリングは関わっている量が大事で、そこから得られた知識や対応方法によっての作業が多い気がしてきた。現在起きていることを見ることで対応しているわけではないため、新しいものについてはすぐに対応ができないのだろうと思った。まずは、出ているログやシグナルを読み取れるようになりたい。

オブザーバビリティの実装についてもいろいろ書かれている。
人向けの非構造化ログではなく、システムが読める構造化ログを処理イベントごとに構造化イベントとして残すや、構造化イベントをつなぎ合わせるためのトレースの仕組みなどについて説明されている。点通しではなく線としてイベントを追えるようにしておくことが説明されているなと思った。
そして、大量の構造化イベントログを残すことに対するコスト緩和手法としてサンプリングの説明や効果的に保存、取得するためのデータストアの説明もされていて面白かった。たしかに出せるようにしても貯めるのや取り出すのに時間がかかったら意味がない。ただ、実装するだけではなく使用するための説明があるのは嬉しかった。
また、個人的にデータストアの話は他にも使えそうだなと思って面白く読んだ。

新しく作っていくときはオブザーバビリティを考えて実装を設計していくのが良いのだろう。そのためのオブザーバビリティ駆動開発の説明箇所もあるくらいだ。
しかし、現在できていなく古くから動いているアプリケーションに対してはどのようなことから手を付けていくのだろうなぁ。。。

まとめ

  • 読んだがまずはできてないモニタリングを入れるところから始めようと思った
  • 足りてないと思っているログはどんどん追加していかないといけないな
  • 開発の時点からモニタリングなどについて考える必要がある用に思ったので面白い考えだな