Tracing
背景
GraphQL サーバーのパフォーマンスチューニングする場合には、その Resolver の Tracing が行えると役立つ。
達成したいこと
ビジネス的情報
誰が操作を実行したか?
何がアクセスされ、変更されたか?
どの開発者のどのアプリの機能か?
操作は成功したか?
どのように動作したか?
技術的情報
どのバックエンドサービスが利用されたか?
各サービスはどのようにレイテンシーに影響したか?
キャッシュが利用されたか?
その利用用途として以下が挙げられている。
削除したいフィールドにアクセスがあるか、あれば誰がアクセスしているか確認する
あるクエリのコストを本番データを元に計算する
監視により自動的に問題を発見する
アクセスの監査ログとして利用する
ビジネスに活用する
コストモデルに基づいてコスト計算を行い請求書を発行する
どうするか
何を収集したいか
クエリを実行したユーザ
実行されたクエリの情報
Type
Field
実行されたクエリのパフォーマンス
Resolver 毎
Exception の有無
どう収集するか
例
GitHub
分散トレーシング
Apollo tracing
Apollo の場合、パフォーマンスの Tracing のための拡張しようが存在し、Apollo Tracing として公開されている。これは GraphQL クエリのリクエストに対して、そのレスポンスの一部に計測情報を含めるもののようだ。 Apollo Engine