本記事はWhat is observability? Not just logs, metrics and tracesの抄訳になります。
動的なシステム・アーキテクチャは複雑化し、規模が大きくなるにつれ、ITチームは、マルチクラウド環境の状況や問題を追跡し、対応しなければならないというプレッシャーに直面しています。その結果、ITオペレーション、DevOps、SREの各チームは、多様化・複雑化するコンピューティング環境のObservabilityの向上を求めています。
しかし、Observabilityとは何でしょうか。なぜそれが重要なのか、そして実際に組織が達成できることは何でしょう?
Observabilityとは何か?
ITおよびクラウドコンピューティングにおいて、Observabilityとは、ログ、メトリクス、トレースなど、システムが生成するデータに基づいて、システムの現在の状態を測定する能力のことです。
Observabilityは、マルチクラウド・コンピューティング環境のエンドポイントやサービスから得られる計測器からのTelemetryデータに依存します。このような最新の環境では、すべてのハードウェア、ソフトウェア、クラウド・インフラストラクチャ・コンポーネント、すべてのコンテナ、オープンソース・ツール、およびマイクロサービスが、すべてのアクティビティの記録を生成します。Observabilityの目的は、これらすべての環境やテクノロジー間で何が起こっているかを理解し、問題を検出して解決することで、システムの効率性と信頼性を維持し、顧客の満足度を高めることです。
組織は通常、OpenTelemetryなどのオープンソースの計装ツールを含む計装方法を組み合わせてObservabilityを実装しています。
また、運用、ソフトウェア開発ライフサイクル、アプリケーションセキュリティ、エンドユーザーエクスペリエンスに対するイベントの重要性を検出・分析するために、Observabilityソリューションを採用している企業も少なくありません。
近年、クラウドネイティブ環境がより複雑になり、障害や異常の潜在的な根本原因を特定することが難しくなってきたため、Observabilityはより重要になってきています。また、Observabilityのデータを収集して活用することで、IT部門だけでなく、ビジネス部門にもメリットがあることがわかってきました。
クラウドサービスは独自の分散型ダイナミック・アーキテクチャを採用しているため、Observabilityとは、クラウドのパフォーマンス・データを解釈するために企業が使用する特定のソフトウェア・ツールや手法を指すこともあります。Observabilityは、高度なアプリケーション・パフォーマンス・モニタリング(APM)のバズワードのように思われているかもしれませんが、Observabilityとモニタリングを比較する際には、いくつかの重要な違いがあります。
モニタリングとObservabilityの違いは何か?
Observabilityとは、モニタリングの別名なのでしょうか?一言で言えば、そうではありません。Observabilityとモニタリングには関連性があり、相互に補完し合うことができますが、実際には異なる概念です。
モニタリングのシナリオでは、一般的にダッシュボードを作成し、発生するであろうパフォーマンス上の問題を警告するように設定します。しかし、これらのダッシュボードは、問題が発生する前にどのような種類の問題が発生するかを予測できるという大前提に基づいています。
クラウドネイティブ環境は、動的で複雑なため、どのような種類の問題が発生するかを事前に知ることができず、この種の監視には適していません。
Observabilityシナリオでは、環境が完全に計測され、完全なObservabilityデータが提供されるため、何が起こっているのかを柔軟に調査し、予測できなかった問題の根本原因を迅速に解明することができます。
なぜオブザーバビリティが重要なのか?
エンタープライズ環境では、高度に分散されたシステムで何が起こっているのか、機能横断的なチームが具体的な問題を理解し、それに答えるために、Observabilityが役立ちます。Observabilityにより、何が遅いのか、何が壊れているのか、パフォーマンスを向上させるために何をすべきかを理解することができます。Observabilityソリューションを導入することで、チームは問題に関するアラートを受け取り、ユーザーに影響が及ぶ前に積極的に解決することができます。
現代のクラウド環境は動的で、規模や複雑さが常に変化しているため、ほとんどの問題は把握も監視もできません。Observabilityは、この「未知の未知」という共通の問題に対処し、新しいタイプの問題が発生したときに、継続的かつ自動的に理解することを可能にします。
また、Observabilityは、IT運用のための人工知能(AIOps)の重要な機能でもあります。クラウドネイティブなアーキテクチャを採用する企業が増えるにつれ、AIOpsを導入する方法も模索されており、DevSecOpsのライフサイクル全体でより多くのプロセスを自動化する方法としてAIを活用しています。Telemetryデータの収集からテクノロジースタック全体で起きていることの分析まで、あらゆることにAIを導入することで、アプリケーションのモニタリング、テスト、継続的デリバリー、アプリケーションセキュリティ、インシデント対応の自動化に欠かせない信頼性の高い答えを得ることができます。
Observabilityの価値は、ITユースケースだけではありません。Observabilityデータの収集と分析を開始すると、デジタルサービスのビジネスへの影響に関する貴重な情報を得ることができます。この可視性により、コンバージョンの最適化、ソフトウェアリリースがビジネス目標を達成しているかどうかの検証、ユーザーエクスペリエンスSLOの結果の測定、最も重要なことに基づいたビジネス上の意思決定の優先順位付けなどが可能になります。
また、Observabilityソリューションでは、合成およびリアルユーザー・モニタリングを用いてユーザー・エクスペリエンス・データを分析することで、ユーザーが問題に遭遇する前に問題を発見し、実際の即時フィードバックに基づいてより良いユーザー・エクスペリエンスを設計することができます。
Observabilityの利点
Observabilityは、ITチーム、組織、そしてエンドユーザに強力なメリットをもたらします。ここでは、オブザーバビリティによって促進されるユースケースをご紹介します。
- **アプリケーションパフォーマンスの監視。**完全なエンド・ツー・エンドのObservabilityにより、クラウド・ネイティブ環境やマイクロサービス環境で発生する問題を含め、アプリケーション・パフォーマンスの問題をより迅速に把握することができます。また、先進的なObservabilityソリューションを使用することで、より多くのプロセスを自動化し、運用チームとアプリケーション・チームの効率とイノベーションを高めることができます。
- **DevSecOpsとSRE。**Observabilityとは、高度なツールを導入した結果として得られるものではなく、アプリケーションとそれを支えるインフラの基本的な特性です。ソフトウェアを作成するアーキテクトや開発者は、観察できるように設計しなければなりません。そして、DevSecOpsとSREのチームは、ソフトウェア・デリバリー・ライフサイクルの中で観測可能なデータを活用し、解釈することで、より優れた、より安全で、より弾力性のあるアプリケーションを構築することができます。
- **インフラ、クラウド、Kubernetesのモニタリング。**インフラストラクチャおよびオペレーション(I&O)チームは、Observabilityソリューションが提供する強化されたコンテキストを活用することで、アプリケーションのアップタイムとパフォーマンスの向上、問題の特定と解決に要する時間の短縮、クラウドの遅延問題の検出とクラウドのリソース利用の最適化、Kubernetes環境と最新のクラウドアーキテクチャの管理の改善を図ることができます。
- **エンドユーザーの体験。**優れたユーザー・エクスペリエンスは、企業の評判を高め、収益を増加させ、競合他社との差別化を図ることができます。エンドユーザーが気づく前に問題を発見して解決し、要求される前に改善することで、企業は顧客満足度と定着率を高めることができます。また、リアルタイムに再生することで、ユーザー体験を最適化することができます。これにより、エンドユーザーが見たままの体験を直接見ることができ、誰もがどこを改善すべきかをすぐに合意することができます。
- **ビジネスアナリティクス。**企業は、ビジネスコンテキストとフルスタックアプリケーション分析およびパフォーマンスを組み合わせることで、リアルタイムのビジネスインパクトの理解、コンバージョンの最適化の向上、ソフトウェアリリースが期待されるビジネス目標を達成しているかどうかの確認、組織が内部および外部のSLAを遵守しているかどうかの確認を行うことができます。
DevSecOpsチームは、Observabilityを活用することで、開発中のアプリケーションに関するより多くの情報を得ることができ、テストやCI/CDプロセスを自動化することで、より品質の高いコードをより早くリリースすることができます。また、テストやCI-CDプロセスを自動化することで、品質の高いコードをより早くリリースすることができます。これは、生産性の面でメリットがあるだけでなく、効果的なコラボレーションに欠かせない良好な人間関係の強化にもつながります。
こうした組織の改善は、さらなるイノベーションとデジタルトランスフォーメーションへの道を開きます。そしてさらに重要なことは、エンドユーザーが高品質なユーザーエクスペリエンスという形で最終的に恩恵を受けることです。
システムを観測可能にするには?
Observabilityについて読んだことがある方は、ログ、メトリクス、分散型トレースの測定値を収集することが成功を収めるための3つの重要な柱であることをご存知だと思います。しかし、バックエンド・アプリケーションからの生のテレメトリを観察するだけでは、システムがどのように動作しているかの全体像を把握することはできません。
また、フロントエンドの視点を無視すると、アプリケーションやインフラが実際のユーザーにとってどのように機能しているかの全体像が歪んだり、誤って表現されたりする可能性があります。三本柱のアプローチを拡張すると、ITチームは、盲点をなくすために、遠隔測定の収集にユーザー体験データを加えなければなりません。
- **ログ。**特定の時間に発生した個別のイベントを構造化または非構造化されたテキストで記録したもの。
- **メトリクス。**一定期間に渡って計算または集計された、数や尺度として表される値。メトリクスは、インフラ、ホスト、サービス、クラウドプラットフォーム、外部ソースなど、さまざまなソースから得られる。
- **分散トレーシング。**トランザクションやリクエストがアプリケーションを流れる際のアクティビティを表示し、コードレベルの詳細を含めてサービスの接続方法を示します。
- **ユーザーエクスペリエンス。**従来のObservabilityを拡張し、アプリケーション上の特定のデジタル・エクスペリエンスに関するアウトサイド・インのユーザー視点を、プリプロダクション環境においても追加します。
Observabilityの3本柱が十分でない理由
もちろん、データ収集はスタートに過ぎません。適切なログ、メトリクス、トレースにアクセスするだけでは、環境の真のObservabilityを得るには不十分です。遠隔測定データを利用して、エンドユーザーの体験やビジネスの成果を向上させるという最終的な目標を達成して初めて、Observabilityの目的を達成したと言えるのではないでしょうか。
企業が自社の環境を観察するために使用できるObservability機能は他にもあります。OpenTelemetryなどのオープンソースのソリューションは、クラウド環境で遠隔測定データを収集するためのデファクトスタンダードとなっています。これらのオープンソースのソリューションは、クラウド・ネイティブ・アプリケーションのObservabilityを向上させ、開発者や運用チームが複数の環境におけるアプリケーションの健全性を一貫して理解することを容易にします。
また、リアルユーザーモニタリングを利用することで、ユーザーエクスペリエンスをリアルタイムに把握することができます。1つのリクエストの経路を追跡し、その経路上のすべてのサービスとのやり取りを把握することができます。このような体験は、合成モニタリングや、実際のセッションの記録によって観察することができます。これらの機能は、API、サードパーティサービス、ブラウザで発生したエラー、ユーザーの属性、ユーザー視点でのアプリケーションパフォーマンスなどのデータを追加することで、遠隔測定を拡張します。これにより、ITチーム、DevSecOpsチーム、SREチームは、リクエストのエンド・ツー・エンドの全行程を確認できるだけでなく、システムの健全性に関するリアルタイムの洞察にもアクセスできるようになります。これにより、アプリケーションのパフォーマンスに影響を与える前に、システムの健全性が低下している部分をプロアクティブにトラブルシューティングすることができます。また、障害からの復旧も容易になり、ユーザーエクスペリエンスをより詳細に把握することができます。
IT組織は、最善の意図と戦略を持っていますが、すでに過重な負担を強いられているチームが、膨大な量のデータとインサイトを常に観察し、理解し、行動する能力を過大評価していることがよくあります。観察可能性には複雑な課題が数多くありますが、これらの課題を克服した組織には、その価値が認められるでしょう。
Observabilityの課題とは?
Observabilityは常に課題となっていましたが、クラウドの複雑さと変化の速さにより、組織にとって緊急に取り組むべき課題となっています。クラウド環境では、特にマイクロサービスやコンテナ化されたアプリケーションを使用する場合、はるかに大量の遠隔測定データが生成されます。また、これまでにチームが解釈しなければならなかったものよりも、はるかに多様な遠隔測定データが生成されます。さらに、これらのデータが到着する速度が速いため、情報の流れに追いつくことはもちろん、パフォーマンス問題のトラブルシューティングに間に合うように正確に解釈することも難しくなります。
また、Observabilityに関しては、以下のような課題があります。
- データのサイロ化:複数のエージェント、異種のデータソース、サイロ化したモニタリングツールにより、アプリケーション、複数のクラウド、Web、モバイル、IoTなどのデジタルチャネル間の相互依存関係を把握することが困難になっています。
- 量、速度、多様性、複雑性:AWS、Azure、Google Cloud Platform(GCP)など、刻々と変化する最新のクラウド環境において、あらゆるコンポーネントから収集される膨大な量の生データから答えを導き出すことはほぼ不可能です。これは、数秒でスピンアップ、ダウンできるKubernetesやコンテナにも当てはまります。
- 手動でのインストルメントと設定:新しいタイプのコンポーネントやエージェントが登場するたびに、ITリソースが手動でインスツルメンテーションやコード変更を行わなければならない場合、ITリソースは、Observabilityデータから得られるインサイトに基づいてイノベーションを起こすのではなく、Observabilityを設定するために大半の時間を費やしてしまいます。
- プレプロダクションの欠如:本番前に負荷テストを実施しても、開発者はコードを本番環境に投入する前に、実際のユーザーがアプリケーションやインフラにどのような影響を与えるかを観察したり理解したりする方法がありません。
- トラブルシューティングの時間浪費:アプリケーション、運用、インフラ、開発、およびデジタルエクスペリエンスの各チームがトラブルシューティングに巻き込まれ、問題の根本原因を特定しようとするため、貴重な時間を費やして推測したり、Telemetryデータの意味を理解して答えを導き出そうとする。
また、複数のツールやベンダーの問題もあります。1つのツールでアプリケーション・アーキテクチャのある特定の領域を観察できるかもしれませんが、その1つのツールが、アプリケーション・パフォーマンスに影響を与える可能性のあるすべてのアプリケーションとシステムを完全に観察できるとは限りません。
また、問題の根本的な原因を特定したり、ユーザー・エクスペリエンスへの影響を理解したりするのに、すべての種類のTelemetryデータが同じように役立つわけではありません。その結果、チームは、複数のソリューションの中から答えを探し出し、Telemetryデータを丹念に解釈するという時間のかかる作業に追われることになり、本来ならば問題の解決に向けて専門知識を活かすことができるはずです。しかし、単一の真実の情報源があれば、チームは答えを得て、問題の解決をより迅速に行うことができます。
単一の情報源の重要性
アプリケーション・インフラを完全に監視し、パフォーマンス問題の根本原因を正確に特定するためには、単一の情報源が必要です。クラウドの複雑性を抑制し、関連するすべてのデータを取得し、AIで分析できる単一のプラットフォームがあれば、問題の原因がアプリケーション自体にあるのか、サポートするアーキテクチャにあるのかを問わず、チームは問題の根本原因を即座に特定することができます。
単一の真実の情報源により、チームは以下のことが可能になります。
- 何テラバイトものtelemetryデータを真の答えに変えることができます。これまでは、ITチームがバラバラのソースから断片的なデータを集めて何が起こったのかを理解していました。
- 他の方法では見ることができなかったインフラストラクチャの領域について、重要なコンテクストに基づいた洞察を得ることができます。
- 可視性の向上により、従来の監視ツールを使用した場合よりも迅速な対応が可能となり、トラブルシューティングのプロセスがさらに加速します。
ITチームにとって実用的でスケーラブルなObservabilityの実現
ビジネスに影響を与える問題がさらに拡大したり、そもそも発生しないようにするためには、リソースに制約のあるチームがリアルタイムで収集した無数の遠隔測定データに基づいて行動できるような方法で、Observabilityを実現する必要があります。ここでは、Observabilityを実用的でスケーラブルなものにするための方法をいくつか紹介します。
- コンテキストとトポロジーの理解:これは、何十億ものコンポーネントが相互に接続されている可能性のある、高度にダイナミックなマルチクラウド環境において、あらゆる相互依存関係を理解できるような方法でインスツルメンテーションを行うことを意味します。豊富なコンテキストメタデータは、リアルタイムのトポロジーマップを可能にし、スタックの垂直方向およびサービス、プロセス、ホストの水平方向の因果関係を理解することができます。
- 継続的な自動化の実現:すべてのシステムコンポーネントの自動検出、インスツルメンテーション、およびベースライン化を継続的に行うことで、IT部門の労力を手動による設定作業から、重要な事柄の理解を優先させる付加価値の高いイノベーションプロジェクトへとシフトさせます。また、観測機能は「常時接続」で拡張性があるため、制約のあるチームでも少ない労力でより多くのことができるようになります。
- 真のAIOpsの確立:AIによる徹底的なフォールトツリー分析とコードレベルの可視性を組み合わせることで、時間のかかる人間の試行錯誤や推測、相関関係に頼ることなく、異常の根本原因を自動的に突き止めることができます。さらに、原因究明ベースのAIは、異常な変化点を自動的に検出し、理解されていない、あるいは監視されていない「未知の未知」を発見することができます。これらの実用的な洞察は、DevOpsやSREチームが必要とするより迅速で正確な対応を可能にします。
- オープンなエコシステムの構築:Dynatrace、Google、Microsoftなどのベンダーが主導するオープンソースプロジェクトであるOpenTelemetryのように、外部のデータソースを含めて観測性を拡張します。OpenTelemetryは、トポロジーマッピング、自動検出、インスツルメンテーション、そして大規模なオブザーバビリティに必要なアクション可能な回答を提供するプラットフォームのために、テレメトリの収集と取り込みを拡大します。
AIを活用したソリューションベースのアプローチにより、クラウドの複雑さに伴う課題を解決し、オブザベーションを真に実用的なものにします。Observabilityソリューションは、複数のソースからますます速いスピードで発生する膨大なテレメトリ・データの解釈を容易にします。単一の情報源があれば、アプリケーションのパフォーマンスが低下する前に、問題の根本原因を迅速かつ正確に特定することができ、また、すでに障害が発生している場合には、復旧までの時間を短縮することができます。
高度なObservability。サーバーレスプラットフォーム、Kubernetes環境、マイクロサービス、オープンソースソリューションなど、エンドツーエンドで分散トレースを行うことで、アプリケーションの可用性を向上させます。リクエストの最初から最後までの完全なジャーニーを可視化することで、チームはアプリケーションパフォーマンスの問題をプロアクティブに特定し、エンドユーザーエクスペリエンスに関する重要な洞察を得ることができます。このようにして、ITチームは、将来の成長をサポートするためにアプリケーション・インフラストラクチャを拡張する場合でも、懸念される問題に迅速に対処することができます。
すべてにObservabilityを
独自のツールを構築したり、複数のベンダーの製品を試したりしても、Observabilityパズルの一部分を解決するだけで、数ヶ月も数年も無駄にすることはできません。それよりも、すべてのシステムとアプリケーションをobservableにして、実用的な答えを出し、技術的価値とビジネス的価値をできるだけ早く提供できるソリューションが必要です。
Dynatraceの先進的なObservabilityは、単一のプラットフォームでこれらすべての機能を提供し、現代のクラウドの複雑性を制御して、より早く変革することを可能にします。