August 5, 2021

可観測性とは何ですか?

可観測性とは

1930年にハンガリーで生まれたルドルフ・エミル・カルマンは、さまざまな基本的なシステム概念の作成者と見なされています。 エンジニアリングシステムの構造的側面に関する彼の研究には、制御理論が含まれていました。これは、可観測性の概念を含む、特定のデータストリームの出力を調整するための数学の使用です。 可観測性とは、純粋に出力を調べることによってシステムの内部状態を測定することです。 

この歴史の断片から、可観測性が新しい概念でも技術的な流行語でもないことは明らかです。 これは、ソフトウェア業界によって、テレメトリのXNUMXつの主要な形式(可観測性のXNUMXつの柱)およびその他の要素を使用してシステム内の問題を監視および特定するための重要な方法として適切に採用されています。

Contents [show]

可観測性とは何ですか?

システムの現在の状態を知ることができれば、何かが観察可能です 外部で処理されたデータから。 技術用語では、可観測性(多くの場合o11yと略される)は、純粋に収集された既存のデータストリームから、技術スタックやアプリケーション全体の複雑なシステム、プロセス、マイクロサービス内で何が起こっているかを伝えることができることを意味します。 

観察できないシステムでは、何が起こっているのかを評価および分析するために、追加のコーディングとサービスが必要です。 問題が発生した場合、特にこれらのシステムの問題がダウンタイムやユーザーエクスペリエンス(UX)の低下を引き起こしている場合、これは不便なものから悲惨なものまでさまざまです。

O11yは可観測性の短縮形であり、11つの用語は同義語です。 とは言うものの、oXNUMXyはカルマンによって正確に造られたものではなく、現在、より監視固有の可観測性の定義を指します。 

可観測性と監視

可観測性はモニタリングと同じですか? いいえ。ただし、可観測性を実現する機能は、効果的な監視ツールとプラットフォームにいくらか依存している可能性があります。 効果的な監視ツールは、システムの可観測性を高めると言えます。

監視は、誰かが行うアクションです。手動で、またはさまざまな形式の自動化を使用して、システムの有効性またはパフォーマンスを監視します。 監視用のツールは、XNUMXつまたは複数のシステムからのデータを照合および分析し、洞察を提供し、必要に応じてアクションまたは調整を提案します。 一部の監視ツールは、システムがダウンしたとき、または逆にシステムが再び稼働したときにシステム管理者に警告するなど、基本的で重要な情報を提供できます。 他の監視ツールは、全体的なユーザーエクスペリエンスに影響を与える可能性のある、システムの遅延、トラフィック、またはその他の側面を測定する場合があります。 より高度なツールは、数十、数百、さらには数千ものデータストリームにリンクして、複雑なシステムに幅広いデータと分析を提供する場合があります。

可観測性は監視の一形態ではありません。 むしろ、それはシステム全体の説明です。 誰かがシステムの機能について話すのと同じように、全体として考えることができるシステムの側面。 システムの可観測性は、オブザーバーが出力を監視するだけでシステムの内部状態をどれだけうまく評価できるかを決定します。 開発者がシステムの出力(たとえば、APMによって提供される出力)を使用して、システムの全体的なパフォーマンスを正確に推測できる場合、それは可観測性です。

要約すると、監視は可観測性の同義語ではなく、その逆も同様です。 システムを監視しても、監視が効果的でない場合やシステムの出力が適切なデータを提供しない場合は、可観測性を達成できない可能性があります。 適切な監視ツールまたはプラットフォームは、システムが可観測性を実現するのに役立ちます。

可観測性のXNUMXつの柱は何ですか?

可観測性を議論する一般的な方法は、それをXNUMXつのタイプに分解することです。 テレメトリー: メトリック、トレース、およびログ。 これらのXNUMXつの重要なデータポイントは、多くの場合、可観測性のXNUMXつの柱と呼ばれます。 これらの柱は可観測性を達成するための鍵ですが、それらはテレメトリであり、最終結果ではないことを覚えておくことが重要です。

ログ

船の船長のログと同じように、テクノロジーと開発の世界のログは、システム内のイベントの記録を書面で提供します。 ログにはタイムスタンプが付けられており、バイナリテキストやプレーンテキストなど、さまざまな形式で提供される場合があります。 テキストとメタデータを組み合わせた構造化されたログもあり、多くの場合、クエリが簡単です。 ログは、システム内で問題が発生したことにアクセスするための最も簡単な方法です。

メトリック

メトリックは、一定期間にわたって監視されるさまざまな値です。 メトリックは、主要業績評価指標(KPI)、CPU容量、メモリ、またはシステムの状態とパフォーマンスのその他の測定値である可能性があります。 時間の経過に伴うパフォーマンスの変動を理解することは、ITチームがユーザーエクスペリエンスをよりよく理解するのに役立ち、それがユーザーエクスペリエンスの向上に役立ちます。

形跡

トレースは、システム全体のユーザーインターフェイスから、要求が処理されたという確認を受け取ったときにユーザーに戻るまでの過程で、ユーザー要求を記録する方法です。 要求に応じて実行されたすべての操作は、トレースの一部として記録されます。 複雑なシステムでは、XNUMXつのリクエストが数十のマイクロサービスを通過する場合があります。 これらの個別の操作またはスパンのそれぞれには、トレースの一部となる重要なデータが含まれています。 トレースは、システムのボトルネックを特定したり、プロセスがどこで故障したかを確認したりするために重要です。

可観測性に到達するためのその他の考慮事項

このテレメトリを使用しても、可観測性は保証されません。 ただし、詳細なメトリック、ログ、およびトレースを取得することは、可観測性にアプローチするための優れた方法です。 これらの異なるタイプのテレメトリの間には、特にそれらが提供するデータにおいて、いくらかのクロスオーバーがあります。 

たとえば、レイテンシーに関するメトリックは、システム内のどこでレイテンシーが発生するかを示すことにより、レイテンシーに関する情報も提供するユーザー要求のトレースセットと同様の情報を提供する場合があります。 そのため、可観測性を全体的なソリューションとして表示することが重要です。システム全体のビューですが、さまざまなタイプのテレメトリを使用して作成されています。

イベントは、可観測性を実現するために使用できる別のタイプのテレメトリです。 多くの場合、ログ、メトリック、およびトレースは、システムイベントのまとまりのあるビューを提供するために使用されるため、システム内のさまざまなイベントによって提供される元のデータのより詳細なテレメトリと見なすことができます。

依存関係または依存関係マップにより、システムの各コンポーネントが他のコンポーネントにどのように依存しているかを視聴者が理解できます。 ITOpsは、システム内でどのアプリケーションと環境がどのITリソースを使用しているかを明確に理解できるため、これはリソース管理に役立ちます。

どのテレメトリの正確なタイプが使用されているかに関係なく、可観測性は、さまざまな形式のデータを組み合わせてこの「全体像」ビューを作成することによってのみ達成できます。 可観測性の柱のXNUMXつだけでは、システムの可視性と保守の点でほとんど価値がありません。

なぜ可観測性がそれほど重要なのか、そしてなぜ多くの企業が可観測性を求めているのか?

しかし 概念としての可観測性 工学と制御理論の領域から来て、それは技術の世界によって広く採用されています。 テクノロジーは急速に進歩しているため、開発者はシステムを絶えず更新および進化させる必要があります。そのため、急速に変化するシステムの内部で何が起こっているのかを理解することがこれまで以上に重要になっています。 

可観測性を実現することで、ユーザーは、エンドユーザーエクスペリエンスに悪影響を与えることなく、ソフトウェアとアプリを安全に更新および展開できます。 言い換えれば、o11yは、ITチームに必要に応じてアプリやソフトウェアを革新する自信を与えます。

可観測性により、開発者と運用チームは、システムをはるかに高いレベルで制御できます。 これは、本質的にさまざまなコンポーネントのコレクションである分散システム、またはネットワーク化された他のより小さなシステムにも当てはまります。 これらのさまざまなシステムからのデータストリームは非常に多いため、このデータを手動で照合することは不可能です。そこでは、膨大な量のデータを処理するために、自動化と高度な、理想的にはクラウドベースの監視ソリューションが不可欠です。 ただし、可観測性を実現するには、これらのデータストリームの品質により、可用性とパフォーマンスに関する質問に効率的に回答して処理できるレベルの深い可視性を提供する必要があります。

最新の開発手法には、継続的デプロイと継続的インテグレーション、DockerやKubernetesなどのコンテナーベースの環境、サーバーレス機能、さまざまなアジャイル開発ツールが含まれます。 APMのみのソリューションでは、チームが今日のアプリ、サービス、インフラストラクチャを稼働させ、デジタル的に要求の厳しい消費者ベースに関連させるために必要な洞察を提供するために必要なリアルタイムデータを提供できません。 可観測性は、コンテキストが豊富なデータの忠実度の高いレコードを示し、より深く、より有用な洞察を可能にします。

可観測性のXNUMXつの柱を超えて

可観測性のXNUMXつの柱だけでは、システムの内部状態を検討するときに望ましい全体的なビューが提供されないことに注意することが重要です。 について考えるより良い方法 統一された可観測性 個々のコンポーネントに焦点を合わせるのではなく、XNUMXつの柱と上記の他の考慮事項をまとめて組み合わせて、テクノロジーエコシステム全体の全体的な詳細なイメージを確認することもできます。 

トレーシングペーパーの複数の葉で作られたそれらの写真のXNUMXつを想像してみてください。 最初の葉には背景があります。 次の葉を置くと、いくつかの木、おそらくいくつかの家が見えます。 次の葉にはいくつかの文字があり、最後の葉には吹き出しがあり、誰もが言っていることやしていることを示しています。 それぞれの葉はそれ自体で絵の正確な部分ですが、それ自体ではほとんど意味がありません。 それは完全に文脈から外れています。

すべてのコンポーネントを組み合わせると、誰もが理解できる詳細な画像が作成されます。 これは効果的な可観測性であり、すべてのコンポーネントをシステムのXNUMXつの全体像として慎重に検討することによってのみ達成できます。 各データポイントはテレメトリの形式であり、テレメトリを効果的に組み合わせることで可観測性が実現されます。 可観測性ベースのソリューションは、ユーザーがその詳細なテレメトリを利用して開発の機会を最大化できるプラットフォームとダッシュボードを提供します。

ITチームは、可観測性のXNUMXつの柱を提供するために、XNUMXつの異なるベンダーに支払う必要があると考える傾向があります。これは、コストがかかる可能性のある作業になります。 もう一度、可観測性が非常に重要なポイントに戻ります 包括的なつまり、このテレメトリをすべて個別に使用することは、可観測性を実現するための鍵ではありません。 テレメトリは連携して機能する必要があります。つまり、XNUMXつの柱は良い出発点ですが、エンドポイントではなく、効果的に保守可能なシステムを保証するものでもありません。

可観測性の主な利点

もちろん、システムの保守と改善の容易さという点で開発者だけでなく、ビジネス全体に測定可能なメリットがない限り、システムの可観測性の改善に焦点を当てる意味はありません。

費用削減

あらゆるビジネスにおける意思決定の大部分は、コストまたは利益に関する懸念によって推進されます。 アプリやシステムの開発、運用、更新にかかる費用が高ければ高いほど、その費用を消費者に転嫁しなければならない可能性が高くなります。 これにより、システムの見かけの価値が低下する可能性があるため、コストを抑えて利益を増やすものなら何でも歓迎します。 ITOpsとDevOpsのコストは、システムの内部状態をより正確に理解することで削減できます。 データ分析と適切な監視プラットフォームを組み合わせた効果的なデータストリームは、手動による監視が少なくてすむことを意味し、さらに更新をより速く、より自信を持って行うことができます。 これにより、システムを最高のパフォーマンスに保つために必要な従業員の時間数が削減され、さらに高速で効果的な更新により、システム全体の価値が高まります。

DevOpsはUXに集中できます

開発者と運用チームがシステムの内部動作を深く掘り下げるのに何時間も費やす必要がない場合、より生産的な時間を利用できます。 これは、ユーザーが重要な指標に取り組むためのより良い方法を作成し、全体的なユーザーエクスペリエンスを向上させるために費やすことができる時間です。 繰り返しになりますが、これには経済的な影響があります。システムがうまく機能すればするほど、消費者にとってより望ましいものになります。 無料のソフトウェアやアプリでさえ、問題の開発チームの評判が高まるため、シームレスに機能することで企業の価値が高まります。

ダウンタイムやその他の危機の回避

ビジネスのシステムが完全に内部にあるか、消費者にサービスを提供するために使用されているかにかかわらず、ダウンタイムは壊滅的なものになる可能性があります。 IT危機が発生した場合に備えて緊急時対応計画を立てることは素晴らしいことですが、システムをほとんどの時間オンラインに保つことができる可観測性ソリューションを用意することはさらに良いことです。 システムの状態を詳細かつ全体的に理解することで、システムが完全にダウンする原因となる可能性のある問題に対処するために、変更と更新を迅速に行うことができます。 可観測性は安定性を促進します。これは、消費者が日常的に使用するアプリやソフトウェアにますます期待するものです。

将来のためのより良い計画

豊富なデータとイベント分析を組み合わせたシステムの内部動作の深い可視性は、DevOpsが現在起こっていることに対処するのに役立つだけでなく、将来のイベントを予測し、将来に向けて効果的に計画するのに役立ちます。 これは、潜在的なピーク時間と容量の変動を理解することで実現でき、リソースの効果的な再割り当てが可能になります。 これにより、新しいサービスのテストがより適切な場合に、DevOpsに静かな時間を警告することもできます。 さらに、観察可能なシステムがあるということは、それらのテストがさらに効果的になり、システムのクラッシュやダウンタイムを引き起こす可能性が低くなることを意味します。

可観測性を達成する上での主な課題

可観測性を達成しようとするときに発生するいくつかの課題については、すでに説明しました。 重要なのは、個々のベンダーにこれらを提供するために支払うという点で、最高のメトリックデータまたは最も完全なトレースを持つことに固執するようになっています。 これは、このテレメトリを照合および結合することをいとわない企業にとっては効果的なソリューションですが、これらすべての情報をXNUMXか所にまとめることは可観測性にはるかに近くなります。

もうXNUMXつの頻繁に発生する課題は、可観測性のXNUMXつの柱にとらわれることではなく、記事でさらに詳しく調べたように、それらを超えて進んで検討することです。 その他の課題は次のとおりです。

  • スケーラビリティ–ソフトウェア、アプリ、およびシステムがどのように成長(または縮小)しても、同じレベルの可観測性を実現します。
  • ますます複雑になるクラウド環境。
  • 動的コンテナとマイクロサービス。
  • さまざまなソースからのデータとアラートの量と種類の増加。
  • 必ずしも相互に同期するとは限らない複数の監視ツールまたは分析ツールを使用するDevOpsおよびその他のチーム。

一部の企業がこれらの障害を克服するのは困難に思えるかもしれませんが、これらの課題に正面から対処するための賢明で効率的な方法を検討することで、良好な可観測性を実現できます。

観察可能な未来をどのように構築しますか?

可観測性のスケーラビリティに対処することは、これらの他の課題のいくつかに最初に対処することを意味します。 システムがさまざまなクラウドベースの環境を扱う場合、クラウドまたはハイブリッド環境のいずれかでのみ機能する高度な監視ツールについて検討する価値があります。 最新のクラウドを処理するために構築されたツールは、クラウド環境内の変更に適応する可能性が高く、ユーザーにデータ分析の安定性と一貫性を提供します。

のような主要ベンダー Amazon Webサービス (AWS)、GCP、Azureはすべて、 OTelまたは OpenTelemetryプロジェクト。 このプロジェクトは、「高品質のテレメトリをクラウドネイティブソフトウェアの組み込み機能にする」ことを目的としています。 これは、アプリとソフトウェアのクラウドベースの未来に投資しているDevOpsチームにとって素晴らしいニュースです。 OTelは、純粋にシステムのパフォーマンスと動作を分析するためのツール、SDK、およびAPIを提供する、「可観測性フレームワーク」と自称しています。 目的は、企業がどのサードパーティベンダーを選択するかに関係なく、ある程度の可観測性を提供し、可観測性のためのローコードまたはノーコードソリューションを提供することです。

可観測性ソリューションのスケーラビリティを確保するもうXNUMXつの方法は、適切なタイプのデータストアが使用されていることを確認することです。 データストアとデータウェアハウスは、増加するデータ量とさまざまなソースからのさまざまなタイプのデータストリーミングに対処するために、指数関数的に拡張および多様化で​​きる必要があります。 ETLおよびELTソリューションは、データを単一の使用可能な形式で単一の宛先にまとめるのに役立ちます。 繰り返しになりますが、それはシステムが全体としてどのように機能するかを見て、システムまたはソフトウェアのようにシステムのあらゆる側面が成長できることを確認することです。

完全な可観測性にどれだけ近づいていますか?

完全な可観測性にどれだけ近いかを理解するには、次の質問について考える必要があります。

  • ログ、トレース、メトリックなどの主要なテレメトリを取得するのはどのくらい簡単ですか?
  • このテレメトリからどのレベルの分析が得られますか?つまり、それはあなたにとってどれほど有用ですか?
  • システムの内部状態を理解するために、追加のコーディングと開発を行う必要がありますか?
  • システム全体の全体像をリアルタイムで分析できますか?

「非常に簡単」、「非常に詳細」、「いいえ」、「はい」の順に答えた場合、システムとソフトウェア内で完全な可観測性を達成するのに近い可能性があります。 詳細な分析によりこれが予測され、システムの既存のリソースを浪費することなく簡単に実装できるソリューションが提供されるため、スケーリングの突然の急増は問題にはなりません。 レイテンシーやインフラストラクチャの問題は、正確なログとメトリックを組み合わせた効果的なトレースのおかげで簡単に特定でき、正面から取り組むために効果的に表示されます。 ダウンタイムが発生することはめったにありません。ダウンタイムが発生した場合は、関連するシステムの詳細でまとまりのあるビューと理解により、可能な限り最小限の時間で済みます。

それでもこのような問題に対処できない場合は、システムの全体的な可観測性と、システムの復元力を高めるために必要なツールや変更を調べる価値があるかもしれません。

要約すると、可観測性のXNUMXつの柱は重要ですが、最終目標自体ではなく、可観測性を達成するためのテレメトリのソースとして重要です。 さらに、他の有用なデータソースを使用して、可観測性を実現できます。 複雑なシステムは、クラウドベースの環境を念頭に置いて構築された効果的な監視ツールに依存していますが、可観測性はシステム自体に関する全体的な概念であるため、これらのツールを利用しても可観測性は保証されません。 そして最後に、投資している可観測性ソリューションはすべて、ビジネスとともに成長するために適応可能でスケーラブルである必要があります。