2022年2月25日

Continuous Delivery

可観測性と監視。その違いとは?

可観測性と監視は密接に関係しており、信頼性の高いシステムを構築するためには、この2つが必要です。なぜ、この2つが重要なのか、その理由をご紹介します。

observability vs monitoring - 1.webp

ソフトウェアデリバリーシステムは、クラウド移行によるデジタルトランスフォーメーションの恩恵を享受するために、非常に複雑で新しい課題、そして圧倒的なデータノイズに悩まされています。このような広大なマルチクラウド環境において、アプリケーションやサービスの数がある種の転換点に達すると、何がどこで実行され、どれくらいのパフォーマンスがあるのかが分からなくなります。このような大量の高速データストリームを継続的に調査し、本番環境における既知および未知の問題を特定することが非常に重要です。このときこそ、可観測性と監視の出番なのです。

まず、この2つの用語の定義から始めましょう。簡単に言うと、監視はデータの収集と分析によって問題を発見する作業であり、可観測性は問題を解決することによって達成されるものです。可観測性は、メトリクス、ログ、トレースを使って、マルチクラウド環境におけるシステムの内部状態を理解するのに役立ちます。監視と可観測性は、ソフトウェア環境の性能と信頼性を維持するために役立つ2つのアプローチを提供します。

ソフトウェアを実稼働させる場合、監視と可観測性は、次のような必要な情報を提供します。

  • カスタマーエクスペリエンスを向上させる。
  • 平均修理時間(MTTR)を短縮する。
  • MTBF(Mean Time Between Failures)を改善する。
  • 顧客が期待する信頼性と可用性を提供する。

ソフトウェアデリバリーの世界の変化のスピードに関するガートナーの予測によると「2024年までに、分散システムアーキテクチャーを導入している企業の30%が、デジタルビジネスサービスのパフォーマンス向上のために可観測性技術を採用し、2020年の10%未満から増加する」とされています。

observability vs monitoring - 2.png

しかし、監視の本当の意味は何なのでしょうか?また、可観測性は実際に何を提供できるのでしょうか?

可観測性と監視についてよりよく理解するために、それぞれの用語について詳しく調べてみましょう。これは、あなたがこれらの実践を始めるのに十分な情報を与えてくれるでしょう。

DevOpsにおけるObservabilityとは

複雑な現代のインフラには、クラウド、コンテナ、マイクロサービス、サーバーレスなどの分散システム、そしてこれらの技術の組み合わせが多く存在します。あまりにも多くのパーツが相互作用してシステムの使い勝手と複雑さが増すと、問題の分析や将来の予測が難しくなります。

そこに可観測性が出てきます。可観測性とは、ログ、メトリクス、トレースなどの外部出力からシステムの内部状態を理解する能力です。制御理論によれば、可観測性は制御可能性と数学的に対をなすものです。可観測性は、インスツルメンテーションを使用して洞察を集め、事前に定義されていないパターンや特性を探索する技術的なソリューションです。ソフトウェアシステムが生成する出力を評価することで得られる実用的な洞察により、システムの健全性について意味のある結論に到達することができます。

可観測性は、可観測性の柱として広く知られている3つの遠隔測定タイプに焦点を当てます。

  • メトリクス:システムメトリクスとは、一定期間ごとに測定される数値のことで、アプリケーションイベントの記録は、粒状でタイムスタンプ付き、かつ不変であるなどの属性がある。システムメトリクスはクエリーが容易で、より長い期間保持することができる。
  • ログ:特定の時刻に発生したイベントのタイムスタンプ付きテキスト記録。3つの形式がある。プレーンテキスト、構造化、バイナリーの3つの形式がある。エラーログは、基本的に、システムで何か異常が発生したときに最初に探すものである。
  • トレース:これらは、分散アーキテクチャー全体を通して、ユーザーリクエストのエンドツーエンドの「旅」を表し、ユーザーに戻ってくる。分散トレースを使用することで、システムを通してのリクエストの経過を追跡し、あらゆる故障の原因を特定できる。

つまり、可観測性とは、システムに干渉したり、相互作用したりすることなく、システムがどのように動作するかを評価することに主眼を置いたものです。正しく行われた場合、可観測性には一連の利点があります。

  • システムのパフォーマンスと健全性の可視性を強化。
  • 正確な洞察による、未知の問題の発見と対処。
  • ワークフローが最適化された結果、問題やブラックアウトが減少。
  • 可観測性とAIOpsの機械学習および自動化機能を組み合わせることで、システムの動作/アウトに基づく問題を予測。
  • ソフトウェア開発プロセスの初期段階で問題を捕捉・解決。
  • ログを深く掘り下げ、スタックトレースエラーを検査。

問題が発生したときに、それが顧客体験を混乱させる前に発見するための観察可能なシステムが必要です。早期に認識し、先手を打って解決することで、より良い意思決定と迅速なフィードバックループが可能になります。

良い観測ツールとは

観測可能なシステムは、開発者が任意の時点でシステムの内部状態を理解することを可能にします。ここでは、優れた可観測性ソリューションが提供するものについて見ていきましょう。

  • ユーザーフレンドリー。優れた可観測性プラットフォームは、ビジネスの複数の領域を一目で見渡すことができるため、最も複雑なデータでも読みやすく、解釈しやすくなる。
  • システムの完全な可視化。例えばダッシュボードのような消化しやすい形式のインサイトにより、ビジネスで何が起こっているのかを常に正確に把握することができる。このようにして、変化する市場環境に対応できるようになる。
  • ビジネス価値を提供。ビジネスにとって重要なデータを収集し、主要な指標を迅速かつ詳細に分析できれば、どこに時間をかければ成果が上がるかが分かる。
  • リアルタイムの実用的なデータ。問題やそれが顧客に与える影響、解決方法についてリアルタイムで把握することで、定着率の向上や収益の増加を達成できる可能性が高くなる。
  • 最新のテクニックをサポート。効果的なツールは、運用環境、スタック、技術全体から観測可能なデータを収集し、チームが対応するために必要なコンテキストを提供する。

DevOpsにおける監視とは

プロアクティブな監視は、新しいリリースを推進する際に、バックグラウンドで監視を実行しているときに見逃していた問題を発見するための方法です。もちろん、組織では予期せぬ出来事によってシステム障害が発生することがあります。しかし、監視は、そのような障害の発生頻度を大幅に減らすことに重点を置いています。

簡単に言えば、優れた監視システムは、DevOpsチームが問題を特定し、それに関するアラートを受信するのを支援します。監視ツールは、本番環境の可視性を向上させるだけでなく、そのような問題に対して迅速な対応を開始し、予定外の停止を回避し、戦略的なビジネス目標やパフォーマンス目標を達成できるようにします。

監視は時代遅れに見えるかもしれませんが、このテクノロジーはDevOpsチームの成功に欠かせません。アプリケーション開発プロセスを加速するためにDevOpsを導入している企業では、製品の包括的かつリアルタイムの視点を得ることが極めて重要です。監視ツールは、アプリケーションの健全性、パフォーマンス、使用パターンを可視化するとともに、実運用環境からのインプットを提供します。

observability vs monitoring - 4.png

計画から開発、統合とテスト、デプロイ、運用まで、ソフトウェア開発ライフサイクル全体を通じて、監視ツールは自動化と計測・可視化の拡大を支援します。これにより、脅威の評価、根本原因の分析、インシデント対応、コンピューター、データベースのフォレンジックなど、セキュリティー対策を強化することができます。つまり、タイムリーに対応し、解決することができれば、開発チームが恐れる高価なダウンタイムを最小化することができるのです。

優れた監視ツールとは

常時監視を行うことで、ITインフラに関する知見を得ることができ、顧客に対して一流のサービスを提供することができます。ここでは、優れた監視ツールにはどのような機能があるのか見ていきましょう。

  • 早期発見。定期的かつ最新のスキャンと監視により、システム内のあらゆる種類の異常や矛盾を事前に修正できる。アプリケーションとインフラのパフォーマンスを明確に把握することで、大きな問題に発展する前に問題を発見できる。
  • リアルタイムのアラート。ライブ警告は、パフォーマンスの問題をチームに警告するだけでなく、信頼性の問題を迅速に解決できる。
  • 脅威の特定。システムを継続的に監視することは、データ損失、セキュリティ侵害、その他の脆弱性につながる可能性のあるセキュリティー上の脅威を特定するために非常に重要。
  • 信頼性の向上。システムのどの部分にアップグレードや交換が必要なのかを把握できる。
  • 費用対効果の向上。適切な監視を行うことで、今後発生する問題を予測し、ビジネスのダウンタイムを予測できる。問題を事前に発見し、修正することで、顧客の不幸を防ぎ、企業の評判を保つことができる。

可観測性と監視

可観測性と監視は、何となく似ているように聞こえるかもしれませんが、同じものではありません。一般的に、可観測性と監視は同じ意味で使われていますが、同じではありません。監視は、何かがうまく動作していないときに通知し、可観測性は、その原因を突き止めるのに役立ちます。

監視と可観測性は、表裏一体の共生関係にあるのです。しかし、異常を発見し、その影響を特定するための可視化は、人間の能力をはるかに超えるものであることは事実です。観測せずに監視することは可能ですが、それでは問題を分析し、迅速に解決する能力が著しく低下してしまいます。

システムに変更を加えれば加えるほど、何かが狂ってしまう可能性は高くなります。監視・可観測性ツールは、開発速度が速くなっても、運用の安定性を維持できるようにします。システムの可観測性は、以下の要素に依存します。

  • システムの簡素化
  • パフォーマンスメトリクスの表現
  • 正しい測定基準を特定する監視ツールの能力

これらの洞察は、システム特有の複雑さにも関わらず、システムの内部状態を判断するのに役立ちます。監視ツールは、これらの洞察を利用し、何がうまくいっていないのかを理解するのに役立ちます。一般的に、観測可能か監視可能かという観点で語られることが多いですが、実際には、監視せずに観測可能ということはあり得ません。

まとめ

あらゆるビジネスの究極の目標は、耐障害性のあるシステムと、高い稼働率で利用可能な最新のアプリケーションを構築することです。モノリスアーキテクチャーの時代とは異なり、複雑な分散システムでは、アプリケーションの完全な可視化を実現することが難しくなっています。

運用中のソフトウェアの異常を発見し、その最終的な影響を特定することは、人間の能力をはるかに超えた作業となり得ます。可観測性と監視は密接に関係しており、信頼性の高いシステムを構築したければ、その両方が必要なのです。可観測性と監視の2つのアプローチにより、困難な状況にも対応することができます。この組み合わせにより、複雑なシステムであっても、内部状態を正確に把握することができます。

ダッシュボードに関するこの記事を読み進めていただければと思います。何を目的にデータを収集すればよいのか、良いアイデアが得られるかもしれません。


この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。

Harnessに関するお問い合わせはお気軽にお寄せください。

お問い合わせ