2022年2月25日
Continuous Delivery
可観測性と監視は密接に関係しており、信頼性の高いシステムを構築するためには、この2つが必要です。なぜ、この2つが重要なのか、その理由をご紹介します。
ソフトウェアデリバリーシステムは、クラウド移行によるデジタルトランスフォーメーションの恩恵を享受するために、非常に複雑で新しい課題、そして圧倒的なデータノイズに悩まされています。このような広大なマルチクラウド環境において、アプリケーションやサービスの数がある種の転換点に達すると、何がどこで実行され、どれくらいのパフォーマンスがあるのかが分からなくなります。このような大量の高速データストリームを継続的に調査し、本番環境における既知および未知の問題を特定することが非常に重要です。このときこそ、可観測性と監視の出番なのです。
まず、この2つの用語の定義から始めましょう。簡単に言うと、監視はデータの収集と分析によって問題を発見する作業であり、可観測性は問題を解決することによって達成されるものです。可観測性は、メトリクス、ログ、トレースを使って、マルチクラウド環境におけるシステムの内部状態を理解するのに役立ちます。監視と可観測性は、ソフトウェア環境の性能と信頼性を維持するために役立つ2つのアプローチを提供します。
ソフトウェアを実稼働させる場合、監視と可観測性は、次のような必要な情報を提供します。
ソフトウェアデリバリーの世界の変化のスピードに関するガートナーの予測によると「2024年までに、分散システムアーキテクチャーを導入している企業の30%が、デジタルビジネスサービスのパフォーマンス向上のために可観測性技術を採用し、2020年の10%未満から増加する」とされています。
しかし、監視の本当の意味は何なのでしょうか?また、可観測性は実際に何を提供できるのでしょうか?
可観測性と監視についてよりよく理解するために、それぞれの用語について詳しく調べてみましょう。これは、あなたがこれらの実践を始めるのに十分な情報を与えてくれるでしょう。
複雑な現代のインフラには、クラウド、コンテナ、マイクロサービス、サーバーレスなどの分散システム、そしてこれらの技術の組み合わせが多く存在します。あまりにも多くのパーツが相互作用してシステムの使い勝手と複雑さが増すと、問題の分析や将来の予測が難しくなります。
そこに可観測性が出てきます。可観測性とは、ログ、メトリクス、トレースなどの外部出力からシステムの内部状態を理解する能力です。制御理論によれば、可観測性は制御可能性と数学的に対をなすものです。可観測性は、インスツルメンテーションを使用して洞察を集め、事前に定義されていないパターンや特性を探索する技術的なソリューションです。ソフトウェアシステムが生成する出力を評価することで得られる実用的な洞察により、システムの健全性について意味のある結論に到達することができます。
可観測性は、可観測性の柱として広く知られている3つの遠隔測定タイプに焦点を当てます。
つまり、可観測性とは、システムに干渉したり、相互作用したりすることなく、システムがどのように動作するかを評価することに主眼を置いたものです。正しく行われた場合、可観測性には一連の利点があります。
問題が発生したときに、それが顧客体験を混乱させる前に発見するための観察可能なシステムが必要です。早期に認識し、先手を打って解決することで、より良い意思決定と迅速なフィードバックループが可能になります。
観測可能なシステムは、開発者が任意の時点でシステムの内部状態を理解することを可能にします。ここでは、優れた可観測性ソリューションが提供するものについて見ていきましょう。
プロアクティブな監視は、新しいリリースを推進する際に、バックグラウンドで監視を実行しているときに見逃していた問題を発見するための方法です。もちろん、組織では予期せぬ出来事によってシステム障害が発生することがあります。しかし、監視は、そのような障害の発生頻度を大幅に減らすことに重点を置いています。
簡単に言えば、優れた監視システムは、DevOpsチームが問題を特定し、それに関するアラートを受信するのを支援します。監視ツールは、本番環境の可視性を向上させるだけでなく、そのような問題に対して迅速な対応を開始し、予定外の停止を回避し、戦略的なビジネス目標やパフォーマンス目標を達成できるようにします。
監視は時代遅れに見えるかもしれませんが、このテクノロジーはDevOpsチームの 成功に欠かせません。アプリケーション開発プロセスを加速するためにDevOpsを導入している企業では、製品の包括的かつリアルタイムの視点を得ることが極めて重要です。監視ツールは、アプリケーションの健全性、パフォーマンス、使用パターンを可視化するとともに、実運用環境からのインプットを提供します。
計画から開発、統合とテスト、デプロイ、運用まで、ソフトウェア開発ライフサイクル全体を通じて、監視ツールは自動化と計測・可視化の拡大を支援します。これにより、脅威の評価、根本原因の分析、インシデント対応、コンピューター、データベースのフォレンジックなど、セキュリティー対策を強化することができます。つまり、タイムリーに対応し、解決することができれば、開発チームが恐れる高価なダウンタイムを最小化することができるのです。
常時監視を行うことで、ITインフラに関する知見を得ることができ、顧 客に対して一流のサービスを提供することができます。ここでは、優れた監視ツールにはどのような機能があるのか見ていきましょう。
可観測性と監視は、何となく似ているように聞こえるかもしれませんが、同じものではありません。一般的に、可観測性と監視は同じ意味で使われていますが、同じではありません。監視は、何かがうまく動作していないときに通知し、可観測性は、その原因を突き止めるのに役立ちます。
監視と可観測性は、表裏一体の共生関係にあるのです。しかし、異常を発見し、その影響を特定するための可視化は、人間の能力をはるかに超えるものであることは事実です。観測せずに監視することは可能ですが、それでは問題を分析し、迅速に解決する能力が著しく低下してしまいます。
システムに変更を加えれば加えるほど、何かが狂ってしまう可能性は高くなります。監視・可観測性ツールは、開発速度が速くなっても、運用の安定性を維持できるようにします。システムの可観測性は、以下の要素に依存します。
これらの洞察は、システム特有の複雑さにも関わらず、システムの内部状態を判断するのに役立ちます。監視ツールは、これらの洞察を利用し、何がうまくいっていないのかを理解するのに役立ちます。一般的に、観測可能か監視可能かという観点で語られることが多いですが、実際には、監視せずに観測可能ということはあり得ません。
あらゆるビジネスの究極の目標は、耐障害性のあるシステムと、高い稼働率で利用可能な最新のアプリケーションを構築することです。モノリスアーキテクチャーの時代とは異なり、複雑な分散システムでは、アプリケーションの完全な可視化を実現することが難しくなっています。
運用中のソフトウェアの異常を発見し、その最終的な影響を特定することは、人間の能力をはるかに超えた作業となり得ます。可観測性と監視は密接に関係しており、信頼性の高いシステムを構築したければ、その両方が必要な のです。可観測性と監視の2つのアプローチにより、困難な状況にも対応することができます。この組み合わせにより、複雑なシステムであっても、内部状態を正確に把握することができます。
ダッシュボードに関するこの記事を読み進めていただければと思います。何を目的にデータを収集すればよいのか、良いアイデアが得られるかもしれません。
この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。