Observability of Your Application
VMware(Spring Observability Team)のJonatan Ivanov氏、Tommy Ludwig氏、Marcin Grzejszczak氏による本セッションではSpringアプリケーションのオブザーバビリティについて紹介されました。なお、昨年度のSpringOneでもオブザーバビリティに関する同様のセッションがありました。昨今注目を浴びているオブザーバビリティですが、Springにおいても重要なトピックであることが窺い知れます。
オブザーバビリティとは、システムが出力する情報からその内部の状態を推測する能力のことです。これが保たれると、システムのあるべき状態と現状とのギャップ(問題)が捉えやすくなります。このオブザーバビリティを支える要素が、メトリクス、トレース、ログの3種のデータです。本セッションの前半に行われたデモでは、この3種のデータを駆使することで、アプリケーションのバグやレイテンシの問題を特定する様子が見られました。この一連の解析をアシストしたのが、オブザーバビリティ機能です。本機能によって3種のデータが相互に関連付けされ、不具合事象の洞察を引き出したのです。
Spring Framework 6のオブザーバビリティ機能は、Micrometerに依存する形で提供されています。Spring MVCやSpring WebFluxなどのモジュールがMicrometerへデータを提供するAPIを内包しているのです。本セッションの後半では、このMicrometer 1.9.0と1.10.0の新機能について解説されました。以下に要点を示します。
-
Micrometer 1.9.0
- OpenTelemetry Protocol(OTLP)をサポート。OpenTelemetryのフォーマットでメトリクスを扱える。
- HighCardinalityTagsDetectorを提供。パフォーマンスに悪影響を与える可能性のある、カーディナリティの高いタグを検出する検出する機能。
- Exemplarsをサポート。メトリクスに付加できるメタデータの一種で、これを活用することでメトリクスからトレースに飛ぶことができる。現時点ではPrometheusデータソースのみで利用可能。
-
Micrometer 1.10.0
- Micrometer Tracingによるトレーシング機能を提供。Spring Cloud Sleuthの後継プロジェクトという位置づけで、Micrometer側でリパッケージ。
- Observation APIをサポート。これを用いることでメトリクス、トレース、ログなどが同時に計測できる。ObservationHandlerにてインスツルメンテーションのロジックを定義し、それらをObservationRegistryにアタッチして計測を行う。カーディナリティの高いタグや低いタグの明示的な指定もできる。また、@Observedアノテーションによる計測も可能。
- その他、ドキュメント生成を支援するMicrometer Docs Generatorやトレースコンテキストの伝播を支援するMicrometer Context Propagationについても言及。
複雑化するシステムを効率的・安定的に運用していくためには、オブザーバビリティの仕組みは不可欠となるでしょう。引き続き、Springのオブザーバビリティ機能に注目していくと同時に、より広くオブザーバビリティの技術動向を追っていきたいと思わせる意義深いセッションでした。
What's on TAP? Refining Modern Spring Application Developer
SpringOneでは例年アプリケーション関連のセッションに加えてプラットフォームに関するセッションが用意されています。SpringOne Essentialsも例に漏れず、VMwareの開発プラットフォームであるTanzu Application Platform(TAP)に関するセッションがありました。
TAPについて語る上で、VMwareのCora Iberkleid氏はまずInternal Developer Platform(IDP)という概念を紹介しました。この十数年の間に、Infrastructure as Code、PaaS、Docker、Kubernetesの普及といった要因で、アプリケーションを動作させるためのプラットフォームに関する多くのことが容易に再現可能な形で自動化できるようになってきました。一方で、関心事が増加の一途をたどる現在のソフトウェア開発において、プラットフォームのすべてをアプリケーションエンジニアが把握し、正しく管理することは極めて困難です。
究極的には、アプリケーションエンジニアがコードをリポジトリにプッシュするだけで、自律・自動的に信頼性、耐障害性、セキュリティ、スケーラビリティを備えた形でデプロイされるのが理想であり、さらにはデプロイ後の状態の観測、ドキュメント、依存性管理などのアプリケーションについてのあらゆる情報へ必要に応じて簡単にアクセスできるようになっていることが望ましいです。IDPとはこの理想を実現するために種々のツールを統合したプラットフォームを指し、TAPもKubernetesやBackstage等を統合したIDPであると言えます。
Ryan Baxter氏によるデモでは、IDE上からTAPの強力な機能の一つであるTanzu Application Acceleratorを使用したテンプレートから、シンプルなSpringアプリケーションを実装した後、Kubernetes上にデプロイする様子が披露されました。テンプレートに従うことでデプロイに至る過程についての複雑な設定は必要なく、かつすべての操作がIDE上で完結しており、TAPの開発者フレンドリさを感じました。
続くGreg Meyer氏の話の中ではこの他、セキュリティスキャンの結果やリソースの消費状況、APIの一覧などアプリケーションの情報が一元的に取得できる様子が紹介され、全体を通して開発者プラットフォームの進歩が感じられるセッションとなっていました。