メインコンテンツまでスキップ
メインコンテンツまでスキップ

可观察性

現代のソフトウェアシステムは複雑です。マイクロサービス、クラウドインフラストラクチャ、分散システムにより、アプリケーション内部で何が起きているのかを理解することがますます難しくなっています。問題が発生したとき、チームは迅速にその場所と理由を知る必要があります。

ここでオブザーバビリティ(可観測性)が重要になります。オブザーバビリティは単なるシステム監視から、システムの動作を理解するための包括的なアプローチへと進化してきました。ただし、効果的なオブザーバビリティを実装することは簡単ではなく、技術的な概念や組織の課題を理解する必要があります。

オブザーバビリティとは何か?

オブザーバビリティとは、出力を検査することによってシステムの内部状態を理解することです。ソフトウェアシステムでは、これはアプリケーションやインフラストラクチャ内部で何が起こっているのかを、それらが生成するデータを通じて理解することを意味します。

この分野は大きく進化しており、2つの明確なオブザーバビリティアプローチの世代を通じて理解することができます。

第一世代は、しばしばオブザーバビリティ 1.0と呼ばれ、メトリクス、ログ、トレースの伝統的な「三本柱」アプローチを中心に構築されました。このアプローチでは、さまざまなタイプのテレメトリーに対して複数のツールやデータストアが必要です。これは、エンジニアが測定したいものを事前に定義することを強要し、多くのシステムを維持することが高コストで複雑になりました。

現代のオブザーバビリティ、すなわちオブザーバビリティ 2.0は、根本的に異なるアプローチを取ります。これは、システム内の各作業単位(例:HTTPリクエストとレスポンス)のために広範で構造化されたイベントを収集することに基づいています。このアプローチでは、ユーザーID、リクエストID、Gitコミットハッシュ、インスタンスID、Kubernetesポッド名、特定のルートパラメータ、ベンダー取引IDなどの高基数データをキャプチャします。基本的なルールは、システムの動作を理解するのに役立つ場合、メタデータを追加することです。

この豊富なデータ収集は、メトリクスを事前に定義することなく、データを動的にスライスしてダイスすることを可能にします。チームは、この基礎データからメトリクス、トレース、およびその他の視覚化を導出できるため、最初に計測器が追加されたときには予想されていなかったシステムの動作に関する複雑な質問に答えることができます。

しかし、現代のオブザーバビリティ機能の実装には課題があります。組織は、さまざまなシステムや技術にわたってこの豊富なテレメトリーデータを収集、処理、エクスポートするための信頼性のある方法が必要です。現代のアプローチは伝統的な境界を超えて進化しましたが、オブザーバビリティの基本的な構成要素を理解することは依然として重要です。

オブザーバビリティの三本柱

オブザーバビリティがどのように進化し、実際に機能するのかをよりよく理解するために、オブザーバビリティの三本柱であるログ、メトリクス、トレースを考察してみましょう。

現代のオブザーバビリティは、これらを別個の懸念として扱うことを超えていますが、それでもシステムの動作のさまざまな側面を理解するための基本的な概念であり続けています。

  1. ログ - システム内で発生した離散的なイベントのテキストベースの記録。これにより、特定の発生、エラー、状態変化に関する詳細なコンテキストが提供されます。
  2. メトリクス - 時間の経過に伴って収集された数値の測定値。カウンター、ゲージ、およびヒストグラムが含まれ、システムのパフォーマンス、リソース使用状況、ビジネスのKPIを追跡するのに役立ちます。
  3. トレース - リクエストが分散システムを流れる経路を追跡する記録。これにより、サービス間の関係を理解し、パフォーマンスのボトルネックを特定するのに役立ちます。

これらの柱は、チームがシステムを監視、トラブルシューティング、および最適化するのを可能にします。ただし、真の力は、すべての三つの柱でデータを効果的に収集、分析、および相関させることによって、システムの動作に関する有意義な洞察を得ることを理解するところにあります。

オブザーバビリティの利点

オブザーバビリティの技術的側面—ログ、メトリクス、トレース—は十分に理解されていますが、ビジネス上の利点も同様に重要です。

著者たちは、『"Observability Engineering"』(O'Reilly, 2022) の中で、業界の研究や経験談から、組織が適切なオブザーバビリティの実践を実装することで期待できる4つの主要なビジネス上の利点を特定しています。これらの利点を見てみましょう:

インクリメンタル収益の向上

著者は、アップタイムとパフォーマンスを改善するのに役立つオブザーバビリティツールが、コードの質の向上を通じてインクリメンタル収益の増加につながる可能性があると述べています。これはいくつかの方法で現れます:

  1. 顧客体験の向上:迅速な問題解決とサービス劣化の防止は、より高い顧客満足度とリテンションにつながります
  2. システムの信頼性の向上:より良いアップタイムは、より多くの成功した取引と失われるビジネスチャンスを減らします
  3. パフォーマンスの向上:パフォーマンスのボトルネックを特定し最適化する能力は、顧客を引き付ける応答性の高いサービスを維持するのに役立ちます
  4. 競争優位性:包括的な監視と迅速な問題解決を通じて高いサービス品質を維持できる組織は、しばしば競合他社に対して優位に立ちます

迅速なインシデント対応によるコスト削減

オブザーバビリティの最も即時的な利点の一つは、迅速な問題の検出と解決を通じて労働コストが削減されることです。これは次のような要因から来ています:

  • 検出までの平均時間(MTTD)と解決までの平均時間(MTTR)の短縮
  • クエリ応答時間の改善により、迅速な調査が可能になる
  • パフォーマンスボトルネックの迅速な特定
  • オンコールの時間の短縮
  • 不必要なロールバックにかかるリソースの削減

この実践例として、[trip.comはClickHouseでオブザーバビリティシステムを構築した](trip.com built their observability system with ClickHouse)ことで、以前のソリューションよりも4-30倍高速のクエリ速度を達成し、90%のクエリが300ms未満で完了し、迅速な問題調査を可能にしました。

避けたインシデントからのコスト削減

オブザーバビリティは問題の解決を速めるだけでなく、問題を完全に防ぐ手助けをします。著者たちは、チームが次のようにして重要な問題を未然に防ぐことができることを強調しています:

  • 重要になる前に潜在的な問題を特定する
  • 繰り返す問題を防ぐためにパターンを分析する
  • 異なる条件下でのシステムの動作を理解する
  • パフォーマンスのボトルネックに proactively 対処する
  • システムの改善に関するデータ駆動の意思決定を行う

ClickHouseの独自のオブザーバビリティプラットフォーム、LogHouseは、これを示しています。このプラットフォームは、コアエンジニアがすべてのクラスタで歴史的パターンを検索し、繰り返される問題を防ぐのに役立っています。

離職率の低下によるコスト削減

最も見落とされている利点の一つは、チームの満足度と保持に対する影響です。著者たちは、オブザーバビリティが次のように向上することを強調しています:

  • より良いツールによる仕事の満足度の向上
  • 未解決の問題が少ないことで開発者の燃え尽き症候群の減少
  • 信号対雑音比の改善によるアラート疲労の低下
  • インシデント管理の改善によるオンコールのストレスの低下
  • システムの信頼性に対するチームの自信の向上

実際の例として、FastlyはClickHouseに移行した際、エンジニアたちはクエリパフォーマンスの改善に驚きました。彼らは次のように述べました:

"信じられなかった。私は実際にいくつかの回数戻る必要がありました。正しくクエリを実行しているか確認するために...これはあまりにも早く戻ってきます。これは意味がありません。"

著者たちが強調するように、これらの利点の具体的な測定はツールや実装によって異なるかもしれませんが、頑丈なオブザーバビリティの実践を採用する組織ではこれらの基本的な改善が期待できます。重要なのは、これらの利点を最大化するために、適切なツールを効果的に選択し実装することです。

これらの利点を達成するには、いくつかの重大なハードルを克服する必要があります。オブザーバビリティの重要性を理解している組織でさえ、実装時に予期しない複雑さや課題に直面することが多く、慎重なナビゲーションが求められます。

オブザーバビリティの実装における課題

組織内でオブザーバビリティを実装することは、システムパフォーマンスと信頼性に関する深い洞察を得るための変革的なステップです。しかし、この旅は決して課題がないわけではありません。組織がオブザーバビリティの可能性を最大限に活用しようとする中で、進捗を妨げるさまざまな障害に遭遇します。それらの一部を見てみましょう。

データ量とスケーラビリティ

オブザーバビリティの実装における主な障害の一つは、現代のシステムが生成するテレメトリーデータの膨大な量とスケーラビリティです。組織が成長するにつれて、監視する必要のあるデータも増加し、効率的に大規模なデータの取り込みとリアルタイム分析を処理できるソリューションが必要になります。

既存システムとの統合

既存のシステムとの統合は、もう一つの重要な課題です。多くの組織は、多様な技術を持つ異種環境で運営しており、オブザーバビリティツールが現在のインフラストラクチャとシームレスに統合できることが重要です。オープンスタンダードはこの統合を促進し、相互運用性を確保し、多様な技術スタックでオブザーバビリティソリューションを展開する際の複雑さを軽減します。

スキルのギャップ

スキルのギャップも、オブザーバビリティの成功した実装を妨げる要因となることがあります。高度なオブザーバビリティソリューションへの移行には、データ分析や特定のツールに関する専門的な知識がしばしば必要です。チームはこれらのギャップを埋め、オブザーバビリティプラットフォームの能力をフルに活用するために、トレーニングや採用に投資する必要があるかもしれません。

コスト管理

コスト管理は重要です。オブザーバビリティソリューションはスケールに応じて高額になる可能性があります。組織は、これらのツールのコストと提供する価値のバランスを取り、従来のアプローチに比べて significativa なコスト削減を提供するコスト効率の良いソリューションを探し求めます。

データ保持とストレージ

データ保持とストレージ管理には追加の課題があります。パフォーマンスや洞察を損なうことなく、オブザーバビリティデータをどのくらいの期間保持するかを決定するには、慎重な計画と、データアクセス可能性を維持しつつストレージ要件を削減する効率的なストレージソリューションが必要です。

標準化とベンダーロックイン

標準化を確保し、ベンダーロックインを避けることは、オブザーバビリティソリューションにおいて柔軟性と適応性を維持するために重要です。オープンスタンダードに従うことで、組織は特定のベンダーに縛られることを防ぎ、オブザーバビリティスタックがニーズに応じて進化できることを確保できます。

セキュリティとコンプライアンス

セキュリティとコンプライアンスの考慮事項は特に重要で、オブザーバビリティシステム内で機密データを扱う場合にはさらに重要です。組織は、オブザーバビリティソリューションが関係する規制を遵守し、機密情報を効果的に保護することを確実にする必要があります。

これらの課題は、組織のニーズを効果的に満たすオブザーバビリティソリューションを実装する上での戦略的計画と情報に基づく意思決定の重要性を強調しています。

これらの課題に対処するには、オブザーバビリティの実装に対する構造化されたアプローチが必要です。標準的なオブザーバビリティパイプラインは、テレメトリーデータを効果的に収集、処理、分析するためのフレームワークを提供するために進化しました。最も初期で影響力のあるこの進化の例の一つは、2013年のTwitterの経験から得られます。