Skip to main content

10万コールへのスケーリング:運用のベストプラクティス

米国・インド間の回線で、レイテンシやキャリア側の切断を招くことなく、1日10万件の同時セッションまで大量コール処理をスケールさせる方法を解説します。

Digvijay Singh Shekhawat
Digvijay Singh Shekhawat
June 26, 2026
1 min read
10万コールへのスケーリング:運用のベストプラクティス

1日10万件の同時通話を国境をまたいで処理するスケーリングが失敗するのは、LLMの知能のせいではなく、SIPトランキングのボトルネック、WebRTC上のパケットロス、キャリアレベルのSTIR/SHAKENアテステーションの低下が原因です。運用責任者は、音声インフラをカスタマーサービスの研修課題ではなく、分散システムの課題として扱う必要があります。自動コール処理をスケールさせる際、ボトルネックとなるのはほぼ常に、プロンプト設計やLLMの推論能力ではなく、物理的なネットワークトポロジーとシグナリング上の制約です。

音声の物理法則:従来型IVRとLLMラッパーが大規模環境で通用しない理由

GPT-4上に構築された標準的なAPIラッパーは、許容できない1.8秒のレイテンシ下限をもたらします。このレイテンシは、TCPハンドシェイクのオーバーヘッド、APIのシリアライゼーション、LLMの最初のトークンまでの時間(TTFT)、そして音声合成(TTS)の処理から構成されます。大量の会話が発生する環境では、1.8秒の遅延は即座に会話の重なりを引き起こし、ユーザーに言い直しを強い、カスタマーサポートの品質を低下させます。

大量のコールを処理し応答時間を改善するには、パケットロスがMean Opinion Score(MOS)を3.0未満まで劣化させる公衆インターネットを、音声インフラが迂回する必要があります。標準的なインターネット経路では、米国とインドのゲートウェイ間で予測不能なルーティングホップが発生します。これに対し、専用ファイバー網を用いた直接のSIP-PSTNブリッジングでは、メディアゲートウェイの配置が通話品質を決定づけ、パケットロスを0.5%未満に抑えられます。

Android Mのランタイム権限モデル、特に「今後表示しない」オプションは、エージェント介在の引き継ぎ時にWebRTCブラウザのマイク権限で見られるサイレント障害と同じ構図です。音声セッションが自動AIエージェントからWebRTCソフトフォンで対応する人間のエージェントへ移行する際、ローカルのハードウェアオーディオインターフェースへのアクセスに遅延が生じると、音声パケットの欠落が発生します。これにより転送開始時に3〜5秒の無音区間が生まれ、顧客の即時離脱を招きます。

これを防ぐには、音声プラットフォームがSIP転送コマンドの実行前にWebRTCのPeerConnectionを初期化し、オーディオコンテキストを取得しておくプリウォーミング処理を実装する必要があります。

大量コール処理におけるセッション管理と状態の保持

標準的なHTTPセッションcookieに依存すると、キャリア主導の基地局ハンドオフ時に破綻します。モバイルユーザーが移動するとIPアドレスが動的に変化し、セッションcookieが無効化されて通話中の音声セッションが切断されます。スケーラブルな顧客通話を実現するには、運用面でネットワークのトランスポート層とセッション状態を切り離す必要があります。

SIPのUser-to-User Information(UUI)ヘッダー内にJWTベースのステートレス認証を実装することで、安全なマルチリージョンSIPセッションをキャリアのハンドオフをまたいで維持できます。セッション状態はシグナリングパケット自体に載るため、パケット転送のたびに中央データベースへ問い合わせる必要がなくなります。

{
  "sip_headers": {
    "User-to-User": "003a2b4f9e8d7c6b5a4f;encoding=hex",
    "X-Session-ID": "session_us_east_99824",
    "X-Routing-Token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYXRld2F5X2lkIjoiaW4tZGVsLTAxIiwiY29uY3VycmVudF9pZCI6MTU0MDB9"
  }
} 

1万件の同時書き込み下でデータベースロックを起こさずに音声・SMS・WhatsAppをまたいだ状態を維持するには、米国とインドのリージョン間でアクティブ-アクティブレプリケーションを構成したRedisのようなインメモリ分散キーバリューストアが必要です。同時通話数が多い状況でリアルタイムのセッション状態書き込みにリレーショナルデータベースを使うと、行レベルロックが発生し、APIの応答時間が急激に悪化します。

エージェントが通話中の画面とCRM画面をホットスワップする必要がある場合、Single Page Application(SPA)のセッション永続性は、常駐するローカルWebSocketワーカーを動かすことで維持されます。このワーカーは、重いCRMページの読み込みでブラウザのメインUIスレッドが一時的にブロックされても、バックグラウンドで音声ストリームの処理を継続します。

規制対応アーキテクチャ:STIR/SHAKENとTRAIコンプライアンス

インドのオフショアゲートウェイ経由でルーティングしながら米国向け発信通話でアテステーションレベルAを維持するには、発信元での厳格な本人確認が必要です。発信者の身元を検証できない中継キャリアを経由して発信通話がルーティングされると、通話はアテステーションレベルBまたはCに格下げされ、米国キャリアによって直ちにスパム判定されます。

アテステーションレベルAでは、プロバイダーが顧客と直接の関係を確立しており、その顧客が当該電話番号を使用する権限を有していることを検証できることが求められます。それを満たさない場合、米国の主要ネットワークでキャリアレベルのブロッキングが発動します。

商用の音声・SMSでは、インド電気通信規制庁(TRAI)の分散型台帳技術(DLT)登録ルールへの対応が必須です。すべてのメッセージテンプレートと音声ヘッダーは、DLTポータルで事前登録しなければなりません。キャリアレベルのスパム判定を防ぐには、CLI(発信者番号通知)の自動ローテーションとレピュテーション監視を、ダイヤラーのロジックに直接組み込む必要があります。

ユーザーによる明示的なオプトアウトおよび「Do Not Disturb」(DND)登録簿のプログラム的な処理は、SIP INVITEが生成される前にダイヤラー層で行わなければなりません。ダイヤラーは、インドのNational Customer Preference Register(NCPR)または米国のDo Not Call Registryのローカルインメモリキャッシュに問い合わせ、発信キューの遅延を避けるためこのチェックを5ms未満で実行する必要があります。

ロギングのアンチパターン:java.util.loggingと標準ファイルシステムが1,000万コールで破綻する理由

java.util.loggingなどの同期型ロギングフレームワークを使うと、同時通話数が多い状況で深刻なスレッドロックのボトルネックが発生します。同期ロギングでは、実行スレッドが次のネットワークパケットを処理する前に物理ディスクへの書き込み完了を待たされるため、高スループットの音声ゲートウェイがシングルスレッドのキューと化します。

代わりに、LogbackまたはLog4j2を用いて非同期の構造化JSONロギングをKafkaパイプラインへ直接出力する構成にします。これによりディスクI/O処理をアクティブな通話処理スレッドから切り離し、ロギングがコール処理のベストプラクティスを損なわないようにできます。

# Example: Verifying Kafka logging pipeline throughput under simulated call load
kafka-producer-perf-test.sh \
  --topic voice-logs-prod \
  --num-records 10000000 \
  --record-size 512 \
  --throughput 50000 \
  --producer-props bootstrap.servers=kafka-cluster:9092 acks=1

リアルタイムの音声ストリームにおける個人識別情報(PII)を永続ストレージへの書き込み前にマスキングすることは、コンプライアンス上不可欠です。これは、メディアサーバー上でローカルの低レイテンシ深層学習モデルを動かし、オーディオバッファがロギングや文字起こしのストレージバケットへ送られる前に、RTPストリーム内で数字列(クレジットカード番号や社会保障番号など)を検出・秘匿することで実現します。

分散型の音声アプリケーションをデバッグするには、SIP INVITEヘッダーと下流のLLM生成ログを直接ひも付ける一意のトレースIDを設計します。これにより、エンジニアは1つの音声パケットの障害を、キャリアネットワークからAIモデル内の特定のトークン生成ステップまで追跡できます。

コストエンジニアリング:米国・インド間回線でのSIP終端の最適化

アグリゲーターのマークアップを回避することが、大量コールをコスト効率よく処理する最短の方法です。Twilioのようなアグリゲーターは発信終端に平均$0.013/分を課金しますが、Tata Communications、Airtel、Verizonといったティア1キャリアとの直接SIPトランキングであれば、このコストは$0.004/分未満まで下がります。1日10万件の同時セッションでは、この差額は年間の運用費で数百万ドルに相当します。

リアルタイムのキャリア料金の変動と品質指標に基づいてトラフィックを動的に振り分けるよう、最小コストルーティング(LCR)エンジンを設定します。LCRエンジンは10秒ごとにキャリアのパフォーマンスを評価し、ポストダイヤル遅延(PDD)やパケットロスが増大しているキャリアから自動的に通話を迂回させる必要があります。

+-----------------------+      +----------------------+
|   Tata Comm SIP       |      |    Airtel SIP        |
|   Cost: $0.0039/min   |      |    Cost: $0.0041/min |
|   MOS: 4.2 | P99: 120ms|      |    MOS: 3.9 | P99: 180ms|
+-----------+-----------+      +-----------+----------+
            ^                              ^
            |                              |
            +--------------+---------------+
                           |
             [Least-Cost Routing Engine]
                           |
                 (Incoming SIP INVITE)

メディアアンカリングは、大きな不要コストを生みます。すべての音声ストリームを中央のメディアサーバー経由でルーティングするのではなく、キャリアと着信先の間で直接RTPストリーミング(re-INVITE)を行うようSession Border Controller(SBC)を設定します。これにより、通話確立後はメディアサーバーを完全にバイパスし、帯域コストを最大70%削減できます。

運用指標:ソフトなCSATからハードなネットワークテレメトリーへ

CSATやNet Promoter Scoreといった従来のカスタマーサポート指標は遅行指標であり、リアルタイムのインフラ劣化を捉えられません。カスタマーサポートの品質を維持するには、運用チームはネットワークの生のテレメトリを監視する必要があります。音声アプリケーションのP99応答時間は最も重要な単一の指標であり、250msを超える応答時間は顧客による通話切断の14%増加と直接相関します。

ジッターとパケットロスは、Real-time Transport Control Protocol(RTCP)の受信レポートからプログラム的に算出する必要があります。パケットロスが1.5%を超える、またはジッターが30msを上回った場合、システムは自動サーキットブレーカーを作動させ、500ms以内にアクティブなトラフィックを代替ネットワーク経路へ再ルーティングしなければなりません。

最後に、ネットワークレベルのテレメトリをLLMのtoken-to-speech(TTS)生成速度と直接相関させます。キャリアネットワークで一時的なルーティング遅延が発生した場合、TTSエンジンは音声バッファのサイズを自動的に調整し、聞き取れるレベルの途切れを防ぎ、ネットワーク状態が劣化した場合でもユーザー体験を維持しなければなりません。

音声ネットワークが完全にIPベースかつAI主導のルーティングへ移行するなかで、運用面の勝者を決めるのはプロンプトエンジニアリングではなく、インフラの耐障害性です。今日のうちにキャリアレベルの統合と低遅延のセッション状態管理を使いこなす運用リーダーは、今後10年にわたって構造的なコストと品質の優位性を維持することになります。

よくある質問

同時通話数を実際に制限しているものは何ですか? 単一の要因であることはまれです。メディア処理、音声プロバイダーのクォータ、キャリアのチャネル上限、データベース接続がそれぞれ上限を課しており、その中で最も低いものが実際のキャパシティになります。

水平スケーリングで解決しますか? ステートレスな部分についてのみ解決します。通話状態はどこかに保持しなければならず、その保持先が制約になります。

10万件の実通話なしに、これをどうテストしますか? APIではなくメディアパスに対して負荷を生成してください。キャパシティに関する予期せぬ問題のほとんどは音声処理にあり、APIレベルのテストではそこに一切触れられません。

Digvijay Singh Shekhawat
Digvijay Singh Shekhawat

創業者、Finn AI

Digvijayは Finn を開発しています。通話の内容を推論し、データを抽出し、システムをリアルタイムで更新する、エンタープライズ向けの音声オーケストレーション層です。音声AI、市場開拓(Go-to-Market)、そして自律型エージェントを大規模に提供するために必要なことについて執筆しています。