本を読んで学んだことのメモ。序文から一章まで。深い見識がないと、単純なトピックでラベル化されカプセル化され、本質を理解できないと書いてあった(耳が痛い。。) だからこそ、ソフトウェアシステムにおけるオブザーバビリティに対する正しい理解が大事。 遭遇するシステムの不具合が、過去に発生した不具合の類型であるならば、従来のモニタリングといったアプローチで充分だった。システムが複雑化してきて従来のアプローチでは不十分になり、オブザーバビリティが注目されるようになったのだなと読み取った。 システムが単純でありどこに問題があるか推測しやすいものであれば、モニタリングで充分と書いてあった。
- オブザーバビリティをモニタリングやシステムテレメトリーの同義語として扱うのは誤認。継続的な開発を支援する手法を採用した場合にのみ効果的に利用できるので、オブザーバビリティのシステムへの導入は技術的課題であり文化的課題
- 一章の内容
- オブザーバビリティの意味
- オブザーバビリティを備えているか判断する方法
- オブザーバビリティが必要な理由
- 他のアプローチでは対処が不可能だった問題に関してオブザーバビリティが対応できるか
- ソフトウェアシステムのオブザーバビリティ
- オブザーバビリティという単語は昔から存在するが、ソフトウェアシステムへの適用は比較的新たな用例
- システムがどのような状態になったとしても、どれだけ理解し説明できるかを示す尺度
- オブザーバビリティがある状態
- 新しいコードのデプロイの必要が発生せずに、どんな状態になっても理解できる
- オブザーバビリティを実現するには
- 効果的なデバッグに必要なデータを収集するための考え方を、進化させる必要がある
- なぜオブザーバビリティが重要?
- 従来のモニタリングによるアプローチが不十分になってきた
- モニタリングで見ることができるのは既知の障害
- モニタリングは過去に異常と判断したしきい値を上回るか下回るかを検知するのに役立つが、そのような異常が起こりうるか分からない状態では活用するのが難しい
- メトリクスとモニタリングで不十分な理由
- 上記の前提が、現代のシステムには不十分である
- 従来のモニタリングによるアプローチが不十分になってきた
- 現代のシステムの例
- コンテナ化
- コンテナ・オーケストレーション・プラットフォームの台頭
- マイクロサービスへのシフト
- さまざまなデータ永続化方式の普及
- サービスメッシュの導入
- レジリエンシーとは
- システムが障害の影響を最小限に抑え、いかに元の状態に素早く戻るかという能力のこと
- オブザーバビリティを用いたデバッグ
- 改めてオブザーバビリティとは
- システムの任意の状態に対して、未知の事象だったとしても、新たなコードのリリースなしにシステムの内部状態を理解して説明できることを意味する
- データベースにおけるカーディナリティ
- データの値の一意性を表す
- 高いカーディナリティは、ユニークな値を多く含んでいることを意味する
- メトリクスベースのツールはカーディナリティの低いディメンションしか扱えない
- ディメンション
- データ内のキーの数を意味する
- データのディメンションが高ければ高いほど、システムの隠れた動作や捉えづらいパターンを認識できる可能性が高まる
- 制約の無いやり方でシステムを探索できる能力は、オブザーバビリティを備えるシステムの重要な機能
Charity Majors、Liz Fong-Jones、George Miranda 著、大谷 和紀、山口 能迪 訳 オブザーバビリティ・エンジニアリング (オライリー・ジャパン発行 978-4-8144-0012-6)