【後編】モニタリングはもう古い?-Tanzu Observabilityのご紹介-
【前編】モニタリングはもう古い?-Tanzu Observabilityのご紹介-
【中編】モニタリングはもう古い?-Tanzu Observabilityのご紹介-
【後編】モニタリングはもう古い?-Tanzu Observabilityのご紹介- ←本記事です
はじめに
第1回および、第2回の記事でTanzu Observabilityを紹介させていただきました。このシリーズ最後の記事では、Tanzu Observabilityでアプリケーション観測を実現する「分散トレーシング」を紹介させていただきます。
なお、この記事では初回から引き続き、意図的に「監視」ではなく「観測」(Observe)という表現を使います。
分散トレーシングとは
「分散トレーシング」という言葉に馴染みがない方々にこれがどういった機能か解説します。
分散トレーシングとは、アプリケーション可視化の手法の一つであり、Tanzu Observabilityだけでなく、他のベンダー製品やオープンソース(ZipkinやJaegerが代表格)でも使われています。分散トレーシングのキーとなる用語がTraceとSpanです。
これをより理解するために、あるREST APIを想像してください。このREST APIがリクエストを受け取り、なんらかの出力を出すまでに流れ、これを分散トレーシングではTraceと呼びます。その一つのTraceが実行される間の個別の処理(e.g. DBへのクエリ、演算、外部サービスの連携)をSpanと呼びます。分散トレーシングとは平たく言えば、このTraceとSpanを見える化して、問題箇所を特定するという技術です。
(TraceとSpanの例)
分散トレーシングが注目されるようになった背景が、昨今のマイクロサービスの流れです。マイクロサービスでは、小さな単位のアプリケーションがネットワークで相互に通信を行い、一つの大きなサービスを形成していくことを目指していきます。この際の通信の見える化およびボトルネックの特定に期待されているのが、分散トレーシング技術です。
Tanzu Observabilityの分散トレーシング機能
Tanzu Obserabilityで使われている分散トレーシングの主な3つの機能を紹介させていただきます。
トレースビュー
トレースビューでは前述の分散トレーシングで説明したTraceとSpanの流れを以下のように図式化された状態でみることがことができます。こうすることにより、どの処理にどれくらいの時間がかかったのかなどがみることができるようになっています。またスパンログとよばれる特定のエラーメッセージを保管し、このビューから確認することができます。
(トレースビュー)
マップビュー
マップビューは、2020年の最後のアップデートで正式リリース(GA)された機能です。トレースビューでは時系列でTraceとSpanの流れを表示することができますが、マップビューでは複数のアプリケーションがどのように連携しているかを図式化されるようになります。またExternal Service機能を使うことにより、データベースやSaaSの通信を可視化することもできようになっており、それらのトラブルシュートにも役立てることができます。
(マップビュー)
オフライントレース
オフライントレースとは、分散トレーシングの情報を一度ローカルに保存し、後に参照することができます。Traceは非常に高速に大量のデータが転送されるため、重要なものが流れてしまう危険性があります。これをつかうことのよって、データが流れきってしまう前に、ローカルにトレーシング情報を保管できます。そして後に参照することで問題判別に役立てることができます。
(オフライントレース)
Tanzu ObservabilityとSpring Boot:分散トレーシングをより手ごろに
分散トレーシングは、アプリケーション観測を行うための様々なメリットを提供します。しかし、分散トレーシングを始める上での懸念点の一つが、敷居の高さです。
まず、最初の悩みが、アプリケーションのコードの改変が必要な点です。ここまで説明してきたTraceやSpanですが、自動的に付与されません。そのため、アプリケーション開発者がSpanの開始点を見極めコーディングすることが要求されます。Tanzu Observabilityの場合は、マニュアルにも紹介されていますが、専用のSDKを使いコードのアップデートが必要です。
もう一点悩ませるのが環境の用意です。アプリケーション開発の初期段階、検証フェーズの際にTanzu Observabilityのような有償製品を利用は躊躇するかもしれません。そして検証もできず、本番環境の利用も躊躇するという悪循環が起きるかもしれません。
この懸念点はTanzu Observability固有のものではなく分散トレーシングをサポートする他の製品でも同様に存在します。そのため、分散トレーシングは多くの企業で着手ができていない観測項目の一つだと思われます。Tanzu Observabilityでは、この懸念に対し他社と比較し独特かつ一線を画すソリューションを提供しています。それはSpring Bootとの強力な連携です。
Spring Bootとは、開発者の中でもっとも支持されているJavaのフレームワークです。そして、VMwareではこのSpring Bootを強力に推し進めています。
Tanzu Observabilityでは、Spring Boot開発者達が即座に分散トレーシングを開始できるよう以下の機能を提供しています。
Tanzu Observabilityの機能をライブラリとして組み込み
2020年の5月にSpring BootとTanzu Observabilityの連携機能がアナウンスされました。この連携と同時にSpring Bootのアプリケーションの雛形を作るサイト、start.spring.ioにて、Tanzu Observabilityの依存関係追加が可能となりました。これによりベンダーロックインなSDKでの開発や専用のエージェントのインストールをすることなく、アプリケーションの標準ライブラリとしてTanzu Observabilityと連携できるようになりました。
(Spring Bootとの連携)
さらにポイントなのが、追加のコーディングがほぼなく、分散トレーシングが使えるようになった点です。Spring Bootではもともと、Spring Cloud Sluethとよばれる分散トレーシングを自動で追加するモジュールが提供されていました。Tanzu Observabilityはこれと連携し、アプリケーションのコードを改変せずとも分散トレーシングを実現できる技術を提供しています。
サインアップ不要の無料ライセンス
上記に加えSpring Bootを使う全てのユーザーがアクセス可能な、Tanzu ObservabilityのFreemium(無料)ライセンスが提供されています。このFreemiumライセンスはメールアドレスすら必要としない、サインアップ不要なものです。
利用には、先ほど紹介したTanzu Observabilityの依存関係の追加をするだけです。Spring Bootアプリケーション起動時に以下のようなメッセージがコンソールに出力されます。内容にあるよう、自動的にアカウントが作成され、そして専用のログインURLも提供されます。
Connect to your Wavefront instance using this one-time use link:
https://wavefront.surf/us/example
それを使ってTanzu Observabilityにログインすることができ、かつここまで紹介した分散トレーシング機能も全て使えます。
このFreemiumライセンス自体は様々な制約が設けられていますが、検証段階のアプリケーションを試験的にテストするためには最適な方法です。これにより、環境の用意のハードルの敷居がさがります。
以上、Tanzu ObservabiityとSpring Bootを使ったアプリケーション観測について紹介しました。なお、この機能に関するより詳細および実機で試したい場合、公式のチュートリアルや個人のブログを参照ください。
Spring Bootについても記事を連載していきますのでぜひご覧ください!
まとめ
今回は分散トレーシングの概要、Tanzu Observabiityの機能そして、SpringBootの関係を紹介させていただきました。
また、このシリーズも計3回に渡り、Tanzu Observabilityを紹介させていただきました。監視ではなく「観測」を実現するため役立てられれば幸いです。
本製品についてご興味がございましたらぜひお問い合わせください!
関連リンク
この記事の著者:星野真知
Tanzu 事業部、プリンシパルプラットフォームアーキテクト
10年以上のオープンソースを中心としたITソリューションにか
Tanzuを中心とするモダンアプリケーション開発の支援をおこ
DevOps Hubのアカウントをフォローして
更新情報を受け取る
-
Like on Facebook
-
Like on Feedly