ソフトウェア開発者であれば、誰もがデバッグの煩わしさを経験したことがあるでしょう。複数のウィンドウを行き来したり、膨大なログを精査してバグを追跡したり、ローカル環境で再現を試みたり、DevOpsチームに再デプロイを依頼したり——デバッグ作業は大きな課題となり、リソースを消耗させます。
この問題は、バグが本番環境でのみ不可解に発生する場合にさらに深刻化します。本番環境でのバグは最悪の事態です。顧客体験に影響を与えるだけでなく、特別なアクセス権限が必要となるため、プロセスがはるかに時間のかかるものになります。また、本番サーバーはより多くのリスクに晒される可能性があるため、リアルタイムの本番データが必要となり、プロセスはリスクを伴うものとなります。これには通常、本番サーバーへのアクセスが必要ですが、多くの組織ではその手配は困難です。
このような煩雑なプロセスが常態化すべきではありません。開発者は、問題が発生した時間や場所に関わらず、効果的にトラブルシューティングを行い、コードを迅速に分析して課題を特定できるシームレスな手段を得るに値します。
次のスプリントに向けて急ぐのがあらゆる現場の常であり、迅速な反復と問題解決が極めて重要です。開発者はコードを書くだけでなく、アプリケーションのパフォーマンスと信頼性にも責任を負っています。残念ながら、ローカルデバッグやリモートデバッグといった従来のデバッグ手法は、多くの場合適切ではなく、効果的なトラブルシューティングに必要なリアルタイムの洞察を欠いています。また、デバッガーはローカル開発向けに設計されており、現代の本番環境が持つ大規模性と分散性を想定していません。
このような背景から、当社は革新的なツール「Dynatrace Live Debugger」の提供開始を発表できることを大変嬉しく思います。本ツールは、開発者に稼働中のアプリケーションに対する可視性とデータアクセスを提供します。
Dynatrace Live Debuggerのご紹介
Dynatrace Live Debuggerは、クラウドネイティブのリアルタイム深層可観測性アプリケーションです。開発環境から本番環境まで、ベアメタルからKubernetesまで、あらゆる環境において迅速なトラブルシューティングとデバッグに必要なコードレベルのデータへ即時アクセスを実現します。開発者は新たなコードを追加することなく、ワンクリックで必要かつ関連性の高いデータにアクセスできます。CIや再デプロイを待つ必要もなく、ローカル環境で問題を再現しようと何日も無駄にすることもありません。ノンブレイキングブレークポイントを使用することで、実行中のコードを停止または中断することなく、スタックトレースや変数値など、アプリケーションの完全な状態を即座に確認できます。
Dynatrace Live Debuggerは、トラブルシューティングを効率的かつシームレス、そして非破壊的に行います。開発者は高品質なアプリケーションを維持し、問題をより迅速に解決し、労力を軽減することが可能となります。
仕組み
Dynatrace OneAgent を使用することで、Live Debugger はアプリケーションを停止させることなく、ノンブレイキングブレークポイントを追加し、任意のアプリケーションデータ(デバッグデータのスナップショット)を即座に収集するようアプリケーションに指示します。

その手順は、1、2、3 のように簡単です。
1. コードを閲覧します。
2. ノンブレイキングブレークポイントを設定します。
3. 必要なデバッグデータを取得します。
コードにブレークポイントを設定すると、その行がトリガーされるたびにリアルタイムのスナップショットを取得できます。このスナップショットには、変数、スタックトレース、プロセス情報、トレースなどの要素が含まれます。ブレークポイントは、タイムアウト値やトリガーごとに制限したり、論理パラメータごとに設定したりできます。
サードパーティ製やオープンソースのデバッグデータも対応!
サードパーティ製やオープンソースのコード、さらにはソースコードを入手できない外部ライブラリのデバッグは、非常に複雑な作業となる場合があります。しかし、Dynatrace Live Debugger を使用すれば、簡単かつシームレスに実行できます。
Dynatraceでは、リバースエンジニアリングに奔走したり、オープンソースコードを自動取得したり、推測に頼ったりといった、外部パッケージを扱う際の課題を理解しております。
Dynatrace Live Debuggerは、Apache Tomcat、SpringBoot、ExpressJSなどのクローズドなサードパーティライブラリでも、ソースコードが入手できない場合でも動作します。Dynatraceがデバッグデータを収集するために必要なのは、ファイル名と行番号のみです。
課題:ソースコードがない場合、どこに非破壊ブレークポイントを設定すればよいのでしょうか?
解決策は、スタックトレースに注目し、サードパーティコードが自社コードと相互作用する箇所を特定することです。スタックトレースにブレークポイントを設定することで、ソースコードがなくても実行フローを観察できます。この方法により、ローカル変数や引数といった貴重なデータを収集でき、アプリケーションのパフォーマンスに影響を与えたり、貴重な時間を無駄にしたりすることはありません。

ご自身のスタイルで作業を
開発者がIDEから離れられないという冗談がありますが、良い冗談には一理あるものです。
多くの可観測性ツールは開発者のワークフローを妨げます。Dynatrace
は強力かつ柔軟な作業環境を提供します。リモート環境のライブスナップショットを取得し、お好みのIDEやLive Debuggerウェブアプリで、最適な環境において直接デバッグや修正内容の検証を行えます。


IDE 内で Dynatrace からさらに多くのコンテキストとテレメトリを取得
IDE内でリアルタイムのコードレベルデータを利用できることは、始まりに過ぎません。
あらゆる監視関連データをすぐに利用できる環境を想像してみてください。
まもなく、開発者はワンクリックで追加の関連テレメトリデータをIDEから直接即時アクセスできるようになります。本番コードからライブスナップショットを取得後、関連するすべてのログをIDEまたはLive DebuggerアプリケーションにDynatraceプラットフォームから直接配信されます。
プラットフォームのテレメトリと非破壊的なブレークポイントスナップショットを統合した、統一された可観測性コンテキストは画期的なものです。これにより時間を節約し、開発者はコードの動作を深く理解できるため、プロセスが大幅に効率的かつ効果的になります。
コードと運用におけるエンタープライズレベルの規制
コードからリアルタイムの洞察を得ることは、開発効率と健全性にとって極めて重要です。しかし、コードベースが安全でない場合やデータプライバシーが侵害される場合、その価値は失われてしまいます。
- データプライバシー:Dynatraceでは、データプライバシーに対して積極的な取り組みを行っております。Dynatraceはお客様のデータをエンドツーエンドで保護し、Dynatraceプラットフォームは強力なプライバシー管理機能を備えて構築・運用されております。データマスキング、データアクセス制御、デバッグデータの保持期間、プライバシー権などのプライバシー設定をご利用いただけます。これにより、プラットフォームの価値を最大限に活用し、お客様のプライバシー要件を満たすことが可能となります。
- ソースコードの分離:Live Debuggerはソース管理システムと連携し、正しいソースコードリビジョンを表示するとともに、シームレスなデバッグ体験を提供します。このプロセスは、ソースコードのセキュリティ保護と関連ベンダーが提供するベストプラクティスの遵守を目的として、一から設計されています。ソースコードはエンジニアのワークステーション上でのみ、エンジニアの権限を使用して読み込まれます。Dynatraceサーバーがお客様のソースコードにアクセス、処理、保存することは一切ありません。
- セキュリティとコンプライアンス:Dynatraceは情報セキュリティ管理に強くコミットしております。Dynatraceに実装されたセキュリティおよびプライバシー管理策は、世界中の主要な規制フレームワークの要件を満たすよう設計されています。サポート対象のフレームワーク一覧は、当社のTrust Centerでご確認いただけます。
詳細については、ライブデバッガーのセキュリティとプライバシーに関するホワイトペーパーをご覧ください。
概要と提供状況
Live Debuggerは、IDEから直接、本番環境やあらゆるリモート環境を、これまでにない方法でデバッグすることを可能にします。企業が必要とするレベルの可観測性インサイト、スケーラビリティ、セキュリティを備えています。
Dynatrace Live Debugger は現在プレビュー版であり、今後 90 日以内に一般提供が開始される予定です。
Dynatrace Observability for Developers に関する詳細は、Observability for Developers ブログ記事および Observability for Developers ウェブページでご確認いただけます。
ご質問がおありですか?
Q&A フォーラムで新しいディスカッションを開始するか、ご支援をお求めください。
フォーラムへ移動