オブザーバビリティとは?
オブザーバビリティは、メトリクス、イベント、ログ、トレースすべてを能動的に収集、可視化し、インテリジェンスを適用して、複雑なデジタルシステムの動態を把握できるようにします。
オブザーバビリティを簡単に説明すると、システムそのものを、動態からどれだけ理解できるかということです。制御理論では、オブザーバビリティとはシステムが外部出力する情報から、そのシステム内部の状態についてエンジニアが推測する方法として定義されています。IT、ソフトウェア、クラウドコンピューティングにまで拡大したオブザーバビリティは、生成したデータからシステムの現状についてエンジニアに可視性を提供します。理解を深めるためには、正しいデータを能動的に収集し、可視化し、インテリジェンスを適用する必要があります。
オブザーバビリティの一般的な略語は、o11yです。数字の11が、oとyの間にある11文字の代わりとなっています。(同様に、Kubernetesはk8sと表します)
オブザーバビリティによって、エンジニアはシステムの最適化に向けて能動的なプローチを取ることができます。ソフトウェアシステムのすべての運用データを関連付けたリアルタイムビューを提供するだけでなく、アプリケーションやインフラストラクチャについて浮かんだ疑問点の答えがすぐに得られるという柔軟性も持ち合わせています。
なぜオブザーバビリティが重要なのか?
今日のシステムは、Kubernetesクラスターで実行されるオープンソースでクラウドネイティブの複雑なマイクロサービスへと変わりつつあります。開発チームのメンバーは世界各地に分散し、かつてないほどのペースで開発とデプロイが進められています。DevOps、継続的デリバリー、アジャイルな開発という状況では、ソフトウェアのデリバリープロセス全体がかつてない速さで進行し、そのため問題の発生時に検知するのがますます難しくなる可能性があります。
メインフレームと静的オペレーションの時代は、問題が発生してもその原因を突き止めることは非常に簡単でした。事前設定された静的ダッシュボードがオペレータに問題を警告してくれたからです。こうしたシステムには、何度も同じような障害が発生します。
システムが複雑になるにつれて、ソフトウェアのパフォーマンスに何が起こっているのかを明らかにする試みがモニタリングツールで行われました。モニタリングデータと時系列解析により、アプリケーションのパフォーマンスを追跡できたのです。それは、管理可能なプロセスでした。
考えられる障害の原因は無数にあり、イライラしながら画面を凝視していると、時間ばかりがただ過ぎていくのを感じます。サーバーがダウンしているのか?クラウドプロバイダのサービスが停止しているのか?エンドユーザーの利用に影響を与えるような新しいコードを誰かがプッシュしたのか?
こういった複雑な分散型システムで作業をしている場合、オブザーバビリティが無ければ、チェーン内の壊れたリンクの特定はほぼ不可能になります。現在、マイクロサービスアーキテクチャーは一般的となり、責任はチーム全体に分散されています。単独のアプリ担当者はおらず、多くのチームによる関与が必要となります。自分がオーナーでないアプリケーション領域も理解して分析し、トラブルシューティングする必要があります。分散型システム全体を通じて、リクエストを追跡できるディストリビューティッド(分散)トレーシングが必要です。
モニタリングとオブザーバビリティの比較
マイクロサービスと分散型システムが共存する複雑な世界では、従来のモニタリングで成功するのは難しいものです。なぜなら、顕在化している問題しか追跡できないからです。顕在化している、つまり何を確認したら良いかが事前にわかっているということです(たとえば、「アプリケーションのスループットは?」、「計算容量はどのくらい?」「特定のエラーバジェットを超えたらアラートしてほしい」など)。オブザーバビリティは、何が異常であるのかだけではなくなぜそうであるのか把握する能力を与えてくれます。それまで考えたことさえないパターン、未知の問題を理解する柔軟性を与えてくれます。
このように考えてみてください。オブザーバビリティ(名詞)は、複雑なシステムをどれだけよく理解できるかというアプローチです。モニタリング(動詞)は、そのアプローチを支援するための行動です。オブザーバビリティは、モニタリングの必要性を排除するものではなく、モニタリングはオブザーバビリティを実現するために利用される手法の1つにすぎません。
アプリケーションパフォーマンスモニタリング(APM)は、ダッシュボードとアラート使用して既知または想定される障害を監視するもので、包括的なオブザーバビリティを実現するステップの1つです。オブザーバビリティの実践においてAPMを使用することが重要である理由については、APMとオブザーバビリティをご覧ください。
オブザーバビリティの構成とは?
デジタルシステムのオブザーバビリティには、基本的な部分が4つあります。
- オープンインストゥルメンテーションインストゥルメンテーションは、コード(エージェント)を使用して、ソフトウェアアプリケーションを通過するデータを追跡、測定します。オープンインストゥルメンテーションとは、テレメトリデータをオープンソースまたはデータを生成するベンダー固有のエンティティから収集することです。テレメトリデータの例には、メトリクス、イベント、ログ、トレースが含まれ、MELTと呼ばれます。エンティティの例にはサービス、ホスト、アプリケーション、コンテナが含まれます。
- 相関性とコンテキスト。俯瞰で捉えることは不可欠であり、それはとりわけ、大量の未処理のテレメトリデータを持つ大企業のアプリケーションであればなおさらです。収集されたテレメトリデータは、相関性とコンテキストについて解析される必要があり、その結果浮かび上がるパターンや異常性を理解することができます。
- プログラマビリティ。企業は、固有のビジネス目標に基づき、カスタムアプリケーションを利用して独自のコンテキストとキュレーションを作成する柔軟性を必要とします。
- AIOpsツール。最新のインフラストラクチャを常に利用可能な状態に保つには、インシデント対応を加速させる必要があります。AIOpsソリューションは、機械学習モデルを利用して、インシデントデータの関連づけ、集約、優先順位付などのIT運用プロセスを自動化します。これらのツールが、誤警報を無くし、問題を早期に検知し、平均解決時間(MTTR)を加速するのに役立ちます。
オブザーバビリティのメリットは何か?
オブザーバビリティツールは、デジタルを使ったビジネスの複雑さが増大する中で、より良い顧客体験を創出する力をエンジニアや開発者に与えてくれます。オブザーバビリティを利用して、すべてのテレメトリデータタイプを収集、調査、アラート、および関連づけることができます。
オブザーバビリティは、運用効率を高め、イノベーションと成長を加速させることを容易にします。たとえば、オブザーバビリティプラットフォームを利用して、発生した重要なインシデントについて理解し、再発を未然に防止するためにチームで取り組むことができます。これによって、ダウンタイムが短縮され、MTTRが改善します。
新しいビルドをプッシュしたら、アプリケーションのパフォーマンスを観察し、エラー率が急上昇したり、アプリケーションのレイテンシが長くなる理由を突き止めることができます。どのノードに問題があるのか知ることができます。その他の例は「オブザーバビリティ: 21世紀のマニフェスト」でオブザーバビリティの10原則にまとめてありますので、ぜひご覧ください。
以下は、オブザーバビリティの主なメリットです。
- 運用データについて信頼できる唯一のソース
- 稼働時間とパフォーマンスの把握
- デジタルビジネスのパフォーマンスのリアルタイムな変化を可視化
- チーム間のコラボレーションを強化し、問題をトラブルシューティングして迅速に解決
- イノベーション文化の実現
- 進化した運用効率性により、高品質のソフトウェアを大規模に作成し、市場投入までの時間を加速化
- ビジネスに関するデータドリブンの意思決定を改善し、投資を最適化するための具体的な情報を提供
2021 オブザーバビリティ予測では、回答者の90%が、オブザーバビリティはビジネスにとって重要であり、戦略的であると回答しましたが、「組織のオブザーバビリティが成熟している」と回答したのはわずか26%でした。調査対象の1,300名近くのソフトウェアエンジニア、開発者、ITリーダーのうち、オブザーバビリティを導入していると回答したのは半数だけでした。
オブザーバビリティは不可欠とはいえ、大半のビジネスでは改善の余地が多く残されているのが現状です。
誰がオブザーバビリティを使うのか?
SREおよびIT運用チームは、複雑なシステム(人々が毎日使うアプリ)を稼働させ続ける責任があります。しかしオブザーバビリティは、ソフトウェア開発のライフサイクルを通じて、誰もが関心を寄せていることです。
ソフトウェアエンジニアリングのチームは、エラーがいつ、なぜ発生するのかなど、ソフトウェアシステムの健全性、パフォーマンス、ステータスを把握するためにオブザーバビリティを使用します。システムの出力(イベント、メトリクス、ログ、トレースなど)を調べて、そのシステムのパフォーマンス状況を判断できます。
オブザーバビリティとDevOps
マイクロサービスにより、デプロイの頻度が劇的に増加しました。あまりにも多くのことが変化しているため、各チームにそれぞれの環境で起こりうるあらゆる故障モードを事前定義させることは現実的に期待できません。アプリケーションコードだけではなく、それをサポートしているインフラストラクチャ、また消費者の行動や要求についても同様です。
オブザーバビリティは、本番環境のシステムをテストし、質問し、あらかじめ予測できなかった問題について調査するために必要な柔軟性をDevOpsチームに与えてくれます。
オブザーバビリティは、次のようにDevOpsチームを支援します。
- 明確なサービスレベル目標(SLO)を確立し、インストゥルメンテーションを実装し、測定可能な成功に向けて準備し、力を合わせます。
- チームのダッシュボードを確立し、応答を調整し、すべての変更の効果を測定することでDevOpsのプラクティスを強化します。
- 進捗を確認し、アプリケーションの依存関係とインフラストラクチャリソースを分析し、ソフトウェアユーザーのエクスペリエンスを継続的に向上させる方法を見つけます。
DevOpsのベストプラクティスについては、eBook「DevOps Done Right」をご覧ください。
オブザーバビリティをぜひ使い始めましょう。New Relicをお試しください。
最新のオブザーバビリティによって、ソフトウェアエンジニアや開発者はソフトウェアライフサイクル全体を通してデータドリブンなアプローチを採用できます。パワフルなフルスタック分析ツールを備えた統合データプラットフォームに、イベント、メトリクス、ログ、トレースなどすべてのテレメトリを取り込み、優れたソフトウェアを計画、構築、デプロイ、実行して、イノベーションと成長を促進する優れたデジタルエクスペリエンスを提供することができます。
オブザーバビリティについてさらに詳しく学ぶには、統合型オブザーバビリティプラットフォームを実際に体験するのが最良の方法です。
本ブログに掲載されている見解は著者に所属するものであり、必ずしも New Relic 株式会社の公式見解であるわけではありません。また、本ブログには、外部サイトにアクセスするリンクが含まれる場合があります。それらリンク先の内容について、New Relic がいかなる保証も提供することはありません。