New RelicのPathpointはビジネスフローに監視データを紐付けて可視化できるパワフルな機能です。サービスのシステム構成が複雑になればなるほど、サービスの全体像を観測することは難しくなっていきます。Pathpointではビジネスを起点としてサービスを俯瞰し、全体を把握することができます。Pathpointそのものの解説は以下の記事で紹介しています。ぜひご覧ください。
今回はこのPathpointを使って動画配信サービスをどのように可視化することができるか、具体例を示しながらご紹介したいと思います。
1. (おさらい)Pathpointの概要
Pathpointは複数のアプリやインフラを横断するビジネスプロセスを、Stageという概念で表現し、さらにそれぞれのビジネスプロセス(つまりPathpointでのStage)を構成する機能群をLevelとして紐付けます。そしてこのLevelに各機能の健全性を監視するためSignalを登録することができて、このSignalひとつひとつの状態によって機能が、またその上位のビジネスプロセスが正常に稼働しているかを観測することができるというものです。
動画配信サービスでは、ユーザー認証、動画視聴のフロントエンドアプリ、CDNでのコンテンツ配信、プレイヤーでの動画再生などといった多層的なコンポーネントが絡み合います。これらを「動画視聴までのジャーニー」として一気通貫で監視することで、どこに問題があり、どんな影響が出ているかを即座に把握可能になります。
2. 今回のサンプルアプリ
Pathpointの具体的な設定に入る前に、今回監視対象にしたサンプルアプリを紹介します。このアプリは超簡易版ではあるものの動画配信を再現したアプリになっています。
このアプリでのユーザーフローは以下のイメージです。
- ユーザー登録: 最初にサンプルアプリを使うためにユーザー登録します。
- ログイン: 登録した情報で認証し、ログインします。
- 動画の選択: ログイン後のホーム画面に2つのサンプル動画が表示されます。どちらかを選択することで再生ページに遷移します。
-
視聴開始: 再生ボタンをクリックするとストリーミング再生が始まります。
この「登録から視聴まで」の流れをPathpointで可視化していきます。
3. ビジネスフローの定義:Stageの設計
先ほどのアプリでのユーザーフローに基づいて、以下の4つのStageを定義してみました。
- Stage 1: 新規加入
- Stage 2: ログイン
- Stage 3: 動画カタログ
- Stage 4: 動画視聴
本番の動画配信サービスの場合は、構成も複雑になり関連する機能もこのサンプルより多くなるので、さらに細分化して表現する方がいいかもしれません。重要なのはStageではビジネスプロセスを定義する必要があるので、システム構成よりもユーザーフローやユースケースがどのようなものであるかを考えましょう。
4. 各StageにおけるLevelとシグナルの設定
次に各Stageを構成する機能や処理をLevelとして定義してみます。そしてそれらが正常に動いていると判断できるように監視データもSignalとして登録します。
今回のサンプルアプリでは以下のように構成してみました。
Stage 1: 新規加入
-
Level: 新規登録操作
Browserエージェントのデータを使用し、Webアプリからのユーザー登録のAjax通信が正常に完了したかを監視しています。今回はこれを監視するためのアラートコンディションを作成してシグナルとしました。
具体的にはapi/registerへのAjax通信のステータスコードが200かを監視しています。 -
Level: ユーザー追加
バックエンド(APM)側で、DBへのユーザー書き込み処理を含むユーザー登録のトランザクションを監視するといいでしょう。 -
Level: サブスク購入
バックエンド側で購入処理のトランザクションが正常に完了したかを監視しましょう。
Stage 2: ログイン
-
Level: ログイン操作
新規登録操作と同じく、Browserエージェントで取得したAjax通信のデータを使っています。api/loginへのAjax通信のステータスコードを監視しています。 -
Level: 認証
認証基盤やセッション発行を行うバックエンドのトランザクションを監視できるといいでしょう。
Stage 3: 動画カタログ
-
Level: 動画選択UI
動画一覧ページのPageViewのパフォーマンスを指標としました。アラートコンディションを作ってここでSignalとして登録できるようにしています。 -
Level: マニフェスト取得
マニフェストファイル(HLS)の取得成否を監視します。これもAjaxでのリクエストの成否を基準にしています。
Stage 4: 動画視聴
-
Level: 動画品質
New Relic Streaming video & adsから得られる、リバッファリングレート、再生エラー、スタートアップエラー、再生前離脱数などの主要指標を監視しました。 -
Level: 配信基盤
CDN(CloudFront/Fastly等)のログやインテグレーションから、正常性をシグナルとして登録します。
もちろん上記以外にも関連する機能や監視データを登録する必要がある場合もあります。本番のサービスであれば、正常性を判断するためにより多くのSignalが必要になるでしょう。上記は例として、どんなものを登録すればいいのか考えるための参考にしてください。いずれにせよ、全てNew Relicの通常の計装で取得してこれるもので賄うことができるので、特別な設定などが必要でないことは理解いただけたかと思います。つまり、とっても簡単です!
5. ビジネスKPIの統合:Pathpointによる関連付け
Pathpointの下部には、ビジネスの状況を示すKPIを表示できます。このKPIはNew Relicで収集しているデータをNRQLを用いてクエリします。今回のサンプルでは動画配信サービスの重要なビジネス指標として以下を集計してみました。
新規加入数
加入数=サブスクリプションでどれだけ稼げたか、ということになるので、これは重要な指標かと思います。
このデータはBrowserエージェントのデータを使ってみました。Ajaxでのリクエスト数をカウントするシンプルなクエリです。
SELECT count(*) FROM `AjaxRequest` WHERE entityGuid = 'hogehoge' AND requestUrl LIKE '%/api/register' AND httpResponseCode = 201
視聴数
こちらも大事な指標でしょう。視聴数はサービスがどのくらい利用されているかを表現するものになります。
これは動画再生セッションの総数をカウントします。クエリはStreaming video & adsで計測しているデータからほぼそのまま持ってきています。
FROM VideoAction SELECT uniqueCount(viewSession) WHERE entity.guid = 'hogehoge' AND elapsedTime > 1000
平均視聴時間
視聴時間も視聴数と同じく、サービス利用状況の目安になります。こちらもStreaming video & adsで計測しているデータからほぼそのまま持ってこれます。
FROM VideoAction SELECT filter(sum(elapsedTime), WHERE actionName = 'CONTENT_HEARTBEAT' AND entity.guid = 'hogehoge') / filter(uniqueCount(viewId) , WHERE entity.guid = 'hogehoge')
アクティブユーザー数
アクティブユーザー数もサービスがちゃんと利用されているかを測る上では大事な指標です。これはBrowserエージェントで取得するPageViewイベントからUserIDのユニーク数をカウントしました
*UserIDはカスタム計装する必要があります。
SELECT uniqueCount(userId) FROM `PageView` WHERE entityGuid = 'hogehoge'
6. まとめ
いかがでしょうか。ご覧の通り、サービスの健全性を一目で認識することができます。この粒度であれば技術的な知識に精通していない上層部の方や、サービスに関わるノンテックな担当者(カスタマーサポートなど)などの人たちでも理解することができます。
「動画視聴」ステージでエラーのシグナルが赤くなった際、同時に「視聴数」や「平均視聴時間」といったビジネスKPIが低下していることが一目で分かれば、その問題の緊急性を即座に判断できます。こういった問題に技術者もそうでない方も、チーム一丸となって対応できるでしょう。
動画配信サービス全体の健全性をビジネスフローという文脈で俯瞰することは、サービスの成長を支える強力な武器となります。Pathpointはそれを実現するための機能です。皆さんも是非活用してみてください!
その他
New Relicでは、新しい機能やその活用方法について、QiitaやXで発信しています!
無料でアカウント作成も可能なのでぜひお試しください!
New Relic株式会社のQiita Organizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!



