SREとしてObservabilityと向き合う機会が増えたので、体系的に学びたいと思いこの本を手に取った。
Observabilityとはなにか
第1章では、「Observabilityとは何か」というテーマと、「従来のMonitoringとの違い」について主に述べられている。
以下は本文の一部を意訳したものである。
現代のモダンな分散システムでは、Observabilityは不可欠である。Observabilityを備えたアプリケーションは、以下の能力を備えている必要がある。
- アプリケーションの内部挙動が分かること
- 初見でもアプリケーションの状態が理解できること
- 外部ツールのみを用いて内部挙動と状態を理解できること
- 新たにコードを追加することなく内部の状態を理解できること
これだけ読んでも意味は分かりにくいかもしれないが、
要するに、どのようなログを出すべきか、どのようなメトリクスを収集すべきかを事前に定義したり予測することなく観測できる状態こそがObservabilityである、ということのようだ。
人間と分散システム
現代の複雑なシステムは、技術的な複雑さだけでなく社会的な複雑さも内包していると述べられている。
この社会的な要素が見落とされがちなのかなと思うが、複数の人間によって構築されるものだからこそ社会的・組織的・文化的な部分にも光があたることが多そうである。大学時代社会学部にいた自分にとっては過去の学びを呼び起こすいい機会になるかもしれない。
マイクロサービスや分散システムなどのモダンで複雑なシステムを開発・運用する人であれば理解に時間をかけて損はない内容になると感じた。
今年輪読会で読んだ『Designing Data-Intensive Application』とは複雑な分散システムをいかにコントロールしていくか、という点で似たような問題に向き合っているが、全く違う切り口だから飽きることはなさそうだ。
さいごに
まだ第1章しか読んでいないが、私が「Observability」という概念は一朝一夕では理解できないものということが理解できた。
「Observabilityとは何か」という質問に答えられるエンジニア、またはSREはどれくらいいるのだろうか。自分のチームでもObservabilityという言葉を使ってシステムを監視しているが、実際はこの本で書かれていMonitoringの域をどの程度抜けられているだろうか、と比べながら読んでいくと面白そうだなと思った。
また、Observabilityが達成されると従来のMonitoringは必要なくなるのか、もしくはObservabilityと併用されるべきものなのかも気になった。
Observabilityで鍵となるのは一般的に3本柱といわれるMetrics, Log, Traceではなく、高いCardinality、高いDimensionality、そしてExplorabilityの三つのようだ。
とはいえこの章だけでは具体的にどうしたらいいのかはまだ分からないから、続きが楽しみだ。
あとがき
著者の一人のCharity MajorsがCEOのHoneycombのWebサイトから英語版をダウンロードして読んでいます。日本語や読み取りがおかしいところがあったら教えてください
English blog is here