Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

既存の TURN サーバーの置き換え

最終更新 Markdown で表示Agent セットアップ

既存の TURN プロバイダーとして、顧客向けに Cloudflare Realtime TURN へ切り替えたい場合は、いくつか考慮点があります。

メリット

Cloudflare Realtime TURN サービスは、TURN サーバーに伴う有形・無形のコストを下げられます。

  • サーバー費用(AWS EC2 など)
  • 帯域費用(Egress、ロードバランシングなど)
  • TURN プロセスの構築とサーバー保守にかかる時間と工数
  • サーバーのスケールアップ/スケールダウン
  • セキュリティと機能更新による TURN サーバーの維持
  • 高可用性の維持

推奨事項

TURN キーで環境を分ける

Cloudflare Realtime TURN サービスを大規模に使うときは、「testing」「staging」「production」などの環境を TURN キーで分けることを検討してください。アカウントあたり最大 1,000 個の TURN キーを作成でき、エンドユーザー資格情報の生成に使えます。

特定の TURN キーで作成できるエンドユーザー資格情報の数に上限はありません。

カスタム識別子でユーザーをタグ付けする

Cloudflare Realtime TURN サービスでは、次のように資格情報を生成するときに、各資格情報へカスタム識別子を付けられます。

curl https://rtc.live.cloudflare.com/v1/turn/keys/$TURN_KEY_ID/credentials/generate \
--header "Authorization: Bearer $TURN_KEY_API_TOKEN" \
--header "Content-Type: application/json" \
--data '{"ttl": 864000, "customIdentifier": "user4523958"}'

このフィールドで、特定のユーザーまたはユーザーグループの利用量を集計し、分析を取れます。

利用量を監視する

アカウント全体の利用量は GraphQL analytics API で監視できます。請求用の全体把握や、想定外の変化の確認に役立ちます。TURN analytics から、各種フィルタを付けた時系列データを取得できます。

資格情報の不正利用を監視する

TURN 資格情報をエンドユーザーと共有する場合、資格情報の不正利用が起こり得ます。各資格情報にカスタム識別子を付け、GraphQL analytics API でアプリケーション内の上位カスタム識別子を監視すると、不正利用を把握できます。

エンドユーザーの TURN 利用量を請求する方法

アプリケーションで TURN 利用量を請求するときは、TURN analytics の適応型サンプリングを理解し、考慮することが重要です。この仕組みは、大規模データセットを効率よく扱いながら精度を保つために適応型サンプリングを使います。

TURN analytics のサンプリングは次の 2 層で動きます。

  • データ収集時: 利用量データポイントの生成が速すぎると、サンプリングされることがあります。
  • クエリ時: クエリが複雑すぎる、または対象期間が長すぎると、追加のサンプリングがかかることがあります。

正確な請求のため、顧客ごと・期間ごとの TURN 利用量を合計し、単一の値を返すクエリを 1 本書いてください。複数顧客の利用量を同時に列挙するクエリは避けてください。

この指針に沿い、TURN analytics のサンプリングの扱いを理解すると、エンドユーザーの TURN 利用量に基づく請求をより正確にできます。

クエリの例

query{
  viewer {
    usage: accounts(filter: { accountTag: "8846293bd06d1af8c106d89ec1454fe6" }) {
        callsTurnUsageAdaptiveGroups(
          filter: {
          datetimeMinute_gt: "2024-07-15T02:07:07Z"
          datetimeMinute_lt: "2024-08-10T02:07:05Z"
        }
          limit: 100
          orderBy: [customIdentifier_ASC]
        ) {
          dimensions {
            customIdentifier
          }
          sum {
            egressBytes
          }
        }
      }
    }
  }

次は、1 顧客の利用量だけを取得するクエリです。

query{
  viewer {
    usage: accounts(filter: { accountTag: "8846293bd06d1af8c106d89ec1454fe6" }) {
        callsTurnUsageAdaptiveGroups(
          filter: {
          datetimeMinute_gt: "2024-07-15T02:07:07Z"
          datetimeMinute_lt: "2024-08-10T02:07:05Z"
          customIdentifier: "myCustomer1111"
        }
          limit: 1
          orderBy: [customIdentifier_ASC]
        ) {
          dimensions {
            customIdentifier
          }
          sum {
            egressBytes
          }
        }
      }
    }
  }

役に立ちましたか?