【読書メモ】オブザーバビリティ・エンジニアリング
原題 | 「Observability Engineering」 |
訳題 | オブザーバビリティ・エンジニアリング |
リリース年月 | 2022/5 |
カテゴリ | 監視・可観測性 |
おすすめ度(5段階) | ⭐⭐⭐⭐☆ |
要点 | ● マイクロサービス等、近年の複雑なシステムではメトリクスベースのログによる監視は限界を迎えつつある ● メトリクスは既知のエラーにしか対応できないが、マイクロサービスでは未知のエラーが発生する ● 構造化イベントにより可観測性を高め、探索的な問題解析に対応する必要がある ● 問題を適切に切り分けるためにも高カーディナリティ性が必要 |
※今回読んだのはオライリーのサブスクで提供されている原著です。訳本と内容が異なっているかもしれません
パートⅠ 可観測性への道
第1章 可観測性とは何ですか?
まずはじめに、「可観測性」と「監視」は別物です。
「監視」は既知の問題に対処します。
メトリックを設定して特定の問題が発生したときに検知します。
「可観測性」は未知の問題に対処します。
カーディナリティが高く高次元の構造化されたテレメトリデータにより、探索的に問題の発生地点にたどり着くことができます。
ではどちらが良いのでしょうか?
クラウドベンダー/コンテナ/オーケストレーションツール/プロビジョニングツール等の進化のおかげで複雑なクラウドシステムをデプロイする閾値はこれまでになく下がっています。
一方で運用・保守の難易度はシステムの複雑さに応じて上がってきています。
複雑になればなるほどこれまでにないタイプのエラーが発生します。
そのようなバグのデバッグで最も難しいのは、コードがどのように実行されるかを理解することではなく、システム内のどこに問題のあるコードが存在するかを見つけることなのです。
というわけで初めて出会うエラーに対処できる可観測性の重要性が高まってきているのです。
可観測性には3つの柱があります。
「高カーディナリティ」「高次元性」「探索可能性」 です
可観測性の3大要素①「カーディナリティ」
カーディナリティとは、データセットに含まれるデータ値の一意性です。
言い換えるとデータベースの同一列内におけるデータの重複度合いです。
カーディナリティが高いということはデータが重複していないという事です。
高カーディナリティの代表はIDです。すべての項目が異なるため最もカーディナリティが高くなります。
カーディナリティが高いことによるメリットはデバッグ製のしやすさです。
たくさんのデータの中から特定のデータをピンポイントに抽出することができます。
可観測性システムにおいてはカーディナリティが非常に重要になります
メトリックの場合は、既知の問題に対してメトリックを設計する必要があり、
対応する問題が増えれば増えるほどコストがかさみます。
可観測性の3大要素②「次元」
可観測性においては高いカーディナリティつまりキーに相当するものの数を次元として定義します。
次元が高ければ高いほど詳細な絞り込みが行えるので、非常に好ましいです。
現代の複雑なシステムにおいては高い次元が必要になります。
可観測性の3大要素③「探索可能性」
可観測性が高いシステムは高カーディナリティのデータと高次元のテレメトリーデータにより探索的にシステムを解析することができます
このような探索を行えることを探索可能性と呼びます。