いかにしてサービスの依存関係を可視化し追跡可能にするか
クラウドネイティブでは、モニタリングだけではなくオブザーバビリティ(可観測性)を実現することがシステム運用の要点となる。モニタリングとは問題発生の有無を観測するためのものだ。一方のオブザーバビリティでは、どんな問題が起きているかだけではなく、なぜ問題が起きたのか、どんな影響がシステムに生じるのかを発見することに重きが置かれる。
では、システムはモノリシックな状態からいかにしてクラウドネイティブな状態へと変遷するのか。池山氏は下図を用いて解説した。
「初期の段階は、図の左端にあるRetain & Optimizeです。オンプレミスなインフラとモノリシックなアプリケーションによってシステムが構築されており、ウォーターフォールモデルによる長いスパンの開発が行われます。また、この段階ではDevチームとOpsチームの間に壁が存在している状態です。
クラウド移行の第一段階として、左から二番目のLift & Shiftになります。サービスのスケーラビリティやサーバー調達の容易性を向上させるため、クラウドの導入がスタートします。インフラ環境をオンプレミスからクラウドIaaSへと移行していくのです。
次のフェーズは、右から二番目のRe-Factorです。マネージドサービスやPaaSなどを活用し、より柔軟にスケールできるアーキテクチャへと変革していきます。ですが、まだアプリケーションコンポーネントの相互依存は強い状態です。
最終段階が、図の右端にあるRe-Architect / Cloud-Nativeです。アプリケーション同士が疎結合になり、サービス単位でのスケールやリリースが可能になります。DevチームとOpsチームが緊密に連携し、DevOpsやSRE(Site Reliability Engineering)と呼ばれるチームがサービスのパフォーマンスや運用の自動化に責任を持つようになるのです。アーキテクチャの変遷とともに技術は複雑化し、運用や監視に求められる要件も大きく変化していきます」と池山氏は語った。
クラウドネイティブ化が進むと、インフラはさまざまなクラウド環境へと分散して配置される。採用されるプログラミング言語やフレームワーク、データベースも多様化し、コンテナなどのリソースは非永続的であるため環境は動的に変化していく。かつ、サービス同士の相互の依存関係を可視化し追跡可能にするため、分散トレーシングやリアルタイム分析が重要になる。オブザーバビリティは、こうした多様かつ動的な環境を運用する上での要になる概念なのだ。
オブザーバビリティでは、メトリクス・トレース・ログという性質の異なるデータを取得・分析することが重要となる。メトリクスは異常検知を行い「システムに何が起きているか」を発見するためのもの。トレースは問題への対処をする上で「どこで問題が起きているのか(アプリケーション・サービスの依存関係や深度も含めて)」を見るためのもの。ログは根本原因を探るために「なぜ問題が発生したのか」を確認するためのものである。では、いかにしてこの三本柱のデータを取得すべきなのだろうか。
Splunk社のプラットフォームで実現するオブザーバビリティ
「メトリクス・トレース・ログというデータを取得・活用するために、当社の提供するソリューションを有効利用していただきたい」と池山氏は提唱する。
ログ管理プラットフォームを提供するSplunk社は、2019年にクラウド監視SaaS・SignalFxの開発元であるSignalFx社およびマイクロサービスのアプリケーション監視技術を有するOmnition社を買収した。また、2020年にはSignalFxとOmnitionが統合したSignalFx μAPM 2.0をリリースした。三社の技術を組み合わせることで、オブザーバビリティにおける三本柱のデータを扱うためのソリューションを提供可能になったという。
メトリクスを担うのがSignalFxだ。ストリーミングアーキテクチャによるリアルタイムの可視化・アラートや、AI駆動のリアルタイム解析を実現する。トレースを担うのがSignalFx+Omnitionだ。サンプリング不要でトレース情報を取得でき、かつAI駆動によるトラブルシューティングを実施可能にする。ログ管理を担うのがSplunkだ。ストリーミングプロセッシングによりリアルタイムでの大量ログデータ解析が可能。かつ、機械学習や深層学習などを用いて統合プラットフォームとしての機能を実現している。
複雑化する環境のオブザーバビリティ向上にSignalFxとSplunkが最適である理由を、池山氏は以下のように述べていく。
-
ストリームアーキテクチャによるリアルタイムの可視化とアラート
→秒単位でのアラート通知やダッシュボード表示が可能に -
異常値を捉える100%のトレース
→サンプリングしないため、ごくわずかに発生しているエラーや異常を逃さない -
サービス全体から個別のトレースまで容易なドリルダウン
→マイクロサービスの全体俯瞰から問題箇所の特定までを秒〜分単位で実現 -
3rdパーティーベンダーやオープンソースのソフトウェア・クラウドサービスとの充実したエコシステム
→豊富なクラウドネイティブ製品との連携やオープンソースへの貢献 -
Built-inのダッシュボードやアラートテンプレートによるFast-Time-To-Value
→簡単な設定でデータを入れるだけで即座に利用可能 -
統計や機械学習を用いた多様で柔軟な可視化とアラート
→デフォルト設定で簡潔なアラート作成から詳細な条件指定まで可能
SignalFxとSplunkの連携方法やSignalFx μAPMによるトラブルシューティングのワークフローについて、池山氏はデモンストレーションを交えながら解説していく。直感的な操作を行えることや、問題の検出から原因特定まで極めて短時間で完結できることなどが、デモンストレーションでは示された。
SignalFxは各種オープンソースソフトウェアとの連携も容易だ。かつ、APMデータを格納するためのインスツルメンテーションの方法も、下図のように複数手段が用意されている。
「クラウドネイティブ時代の運用ではスピードが重要です。SignalFxを活用することで、リアルタイムの可視化・アラートにより秒単位での問題対応が可能になります。また、メトリクス・トレース・ログのシームレスな連携によりオブザーバビリティを実現可能です。
複雑な依存関係のあるサービスでも、全体を把握しながら詳細まで追うことができるため、トップダウンアプローチでの原因解析を行えます。また、アプリケーションからインフラまで技術スタックをまたがったトラブルシューティングを実現します。各種オープンソースソフトウェアとの連携も容易です。ぜひSignalFxを導入していただき、より良い運用体制を達成していただければ幸いです」と池山氏は述べ、講演を結んだ。