scent-yのブログ

学んだことや感じたことの備忘録

オブザーバビリティ・エンジニアリングを読み出した

本を読んで学んだことのメモ。序文から一章まで。深い見識がないと、単純なトピックでラベル化されカプセル化され、本質を理解できないと書いてあった(耳が痛い。。) だからこそ、ソフトウェアシステムにおけるオブザーバビリティに対する正しい理解が大事。 遭遇するシステムの不具合が、過去に発生した不具合の類型であるならば、従来のモニタリングといったアプローチで充分だった。システムが複雑化してきて従来のアプローチでは不十分になり、オブザーバビリティが注目されるようになったのだなと読み取った。 システムが単純でありどこに問題があるか推測しやすいものであれば、モニタリングで充分と書いてあった。

  • オブザーバビリティをモニタリングやシステムテレメトリーの同義語として扱うのは誤認。継続的な開発を支援する手法を採用した場合にのみ効果的に利用できるので、オブザーバビリティのシステムへの導入は技術的課題であり文化的課題
  • 一章の内容
    • オブザーバビリティの意味
    • オブザーバビリティを備えているか判断する方法
    • オブザーバビリティが必要な理由
    • 他のアプローチでは対処が不可能だった問題に関してオブザーバビリティが対応できるか
  • ソフトウェアシステムのオブザーバビリティ
    • オブザーバビリティという単語は昔から存在するが、ソフトウェアシステムへの適用は比較的新たな用例
    • システムがどのような状態になったとしても、どれだけ理解し説明できるかを示す尺度
  • オブザーバビリティがある状態
    • 新しいコードのデプロイの必要が発生せずに、どんな状態になっても理解できる
  • オブザーバビリティを実現するには
    • 効果的なデバッグに必要なデータを収集するための考え方を、進化させる必要がある
  • なぜオブザーバビリティが重要?
    • 従来のモニタリングによるアプローチが不十分になってきた
      • モニタリングで見ることができるのは既知の障害
      • モニタリングは過去に異常と判断したしきい値を上回るか下回るかを検知するのに役立つが、そのような異常が起こりうるか分からない状態では活用するのが難しい
    • メトリクスとモニタリングで不十分な理由
      • メトリクスやモニタリングベースのツールはある前提に基づいて構築されているため
        • アプリケーションはモノリス
        • データベースは一つ
        • CPUロードアベレージなど、多くの低レベルのシステムメトリクスが利用可能
        • エンジニアがシステムを調べるのは、問題発生後
    • 上記の前提が、現代のシステムには不十分である
      • 多くのサービスがある
      • 複数のデータベースやストレージシステムがある
      • インフラストラクチャは動的であり、キャパシティが増減する
      • 遠く離れた疎結合のサービスが複数管理されており、自分の管理下にない
      • 問題が発生する前に早期に発見する必要がある
  • 現代のシステムの例
    • コンテナ化
    • コンテナ・オーケストレーション・プラットフォームの台頭
    • マイクロサービスへのシフト
    • さまざまなデータ永続化方式の普及
    • サービスメッシュの導入
  • レジリエンシーとは
    • システムが障害の影響を最小限に抑え、いかに元の状態に素早く戻るかという能力のこと
  • オブザーバビリティを用いたデバッグ
    • そのアクションが起こった時に何が起きていたかという深いコンテキストからスタートする
    • オブザーバビリティを用いたデバッグでは与えられたリクエストの周りのコンテキストをできるだけ多く保持し、未知の障害に繋がったバグを起こした環境や状況を再構築できるようになる。モニタリングは既知の未知を扱うが、オブザーバビリティは未知の未知を扱う
  • 改めてオブザーバビリティとは
    • システムの任意の状態に対して、未知の事象だったとしても、新たなコードのリリースなしにシステムの内部状態を理解して説明できることを意味する
  • データベースにおけるカーディナリティ
    • データの値の一意性を表す
    • 高いカーディナリティは、ユニークな値を多く含んでいることを意味する
    • メトリクスベースのツールはカーディナリティの低いディメンションしか扱えない
  • ディメンション
    • データ内のキーの数を意味する
    • データのディメンションが高ければ高いほど、システムの隠れた動作や捉えづらいパターンを認識できる可能性が高まる
  • 制約の無いやり方でシステムを探索できる能力は、オブザーバビリティを備えるシステムの重要な機能

Charity Majors、Liz Fong-Jones、George Miranda 著、大谷 和紀、山口 能迪 訳 オブザーバビリティ・エンジニアリング (オライリー・ジャパン発行 978-4-8144-0012-6)