目次

目次

CDN事業者破産による緊急移管対応とEMの意思決定・学び

曽利田貴士
曽利田貴士
最終更新日2025/11/25 投稿日2025/06/20

はじめに

システム開発推進部第2Gの曽利田です。 株式会社レコチョクでエンジニアリングマネージャーをしています。 Switch2の抽選結果メールが届くたび、「また落選か…」と肩を落とす日々が続いています。 ちなみに、CDN移管対応をしていたのは、Switch2の当選を夢見始めるよりも約6ヶ月も前のこと。 Switch2はまだ手に入りませんが、 CDNの安定配信はしっかり手に入れました! ※つい最近のことですが、半年経って時限爆弾的問題が発生したので上記取り消します。。。詳細は別途

ということで、

要約

2024年末、突如として約1ヶ月後のサービス終了を告げられたCDNからの移行プロジェクト。 30万件以上の動画ファイルを対象に、年末年始を返上して技術検証から実装、リリースまでを完遂した取り組みを紹介します。

背景

2024年9月頃、弊社で利用していたCDN事業者がChapter 11(米連邦破産法第11条)を申請し、裁判所管理下で再建を進める状況となりました。

当初は「すぐにサービスが停止することはない」との見解でしたが、今後の安定性を懸念し、CDN移行の検討を開始しました。

CDNの利用形態は大きく以下に分類されます:

  • 一般的なキャッシュ機能+URL保護
  • 音楽配信・動画配信における特殊な配信機能(on-the-fly(リアルタイム)変換)

特に音楽・動画配信では、以下のような特殊処理をCDN上で行っていました:

  • 音楽再生(PCブラウザ):m4a形式の音源をon-the-flyでm3u8へ変換し、HLS形式で配信
  • DRM付き動画再生(アプリ/PCブラウザ):mp4動画をon-the-flyでDRM付与、ライセンス認証もCDN側でラップして対応

緊急対応の必要性

2024年12月初旬、事業者より 2025年1月16日でのCDNサービス終了 が発表され、急遽移管の準備を本格化させることとなりました。

移行対象と対応方針

以下の3機能について、AWSを中心とした自前対応にて移行を実施:

対象機能 対応内容
CDNの基本機能(キャッシュ+URL保護) CloudFront への移行
音楽配信のon-the-fly HLS変換 AWS MediaConvert を使用
DRM付き動画の配信 AWS MediaPackage + SPEKE 対応DRM事業者と連携

以降、3部に分けて記載していきます。

第1部:DRM付き動画の配信 AWS MediaPackage + SPEKE 対応DRM事業者と連携

※本記事

第2部:音楽配信のon-the-fly HLS変換 AWS MediaConvert

https://blog.tools.product.recochoku.net/11925

第3部:AWS MediaPackage のその後の対応について

https://blog.tools.product.recochoku.net/11945

まずは「DRM付き動画の配信(AWS MediaPackage + SPEKE対応DRM事業者連携)」について、詳細を解説します。

最初に、移行前と同様に、on-the-fly変換機能を有するCDN事業者・サービス提供会社を探しましたが、日本国内では見つからず、代替候補の中で AWS MediaServicesによる自前構成 が最も機能面・サポート面で優れていたため、採用を決定しました。

旧CDNでのDRM再生フロー

旧CDNでのDRM再生フローは以下の通りでした。CDN上でon-the-fly変換とDRM事業者連携を行い、簡潔な構成でDRM保護された動画配信を実現していました。

drm_diagram.png

AWS構成での実現概要

spekev2-mediapackage002-1024x437.png

使用サービス

  • MediaPackage:配信用のエンコーダ+パッケージャ
  • CloudFront:エッジ配信
  • SPEKE:DRMライセンス連携プロトコル → SPEKE対応のDRM事業者を選定する必要あり

参考: SPEKEとは

ポイント:複数のDRM事業社にヒアリングをしましたが、最終的な決め手は、サポート対応の速さでした。 A社:サポートはメールなので、とのこと。緊急時でも同じ B社:すぐにでもSlackで対応可能なので、緊急時でも対応可能  → サポート対応の速さを最重視し、B社を選定しました。

実装ステップ

MediaPackage構築

AWSコンソールからPackaging Group、Packaging Configuration、Assetを登録するのですが、構成は以下の図のイメージになります。

               +----------------------+
               |   Packaging Group    |
               +----------+-----------+
                          |
         +----------------+----------------+
         |                                 |
 +--------------+                 +----------------+
 | Packaging    |                 | Packaging      |
 | Config (HLS) |                 | Config (DASH)  |
 +--------------+                 +----------------+
         ↑                                 ↑
         |                                 |
         +---------------+----------------+
                         |
                   +-----+-----+
                   |   Asset   |
                   +-----------+
  1. Packaging Groupの作成
    packaging_group.png
    ※最大Packaging Group数:10
  2. Packaging Configurationの作成

    packaging_group_detail.png

    • Apple HLS(iOS用)
    • DASH-ISO(Android/PC用)
  3. Assetの作成
    assets.png
    • 事前に作成したPackaging Group(最大10のうち1つ)を指定してAssetを作成
    • 1Packaging Groupあたりの最大Asset数:10000
    • smil ファイルに動画情報を記載し登録
      <br><br><br>   <video src="xxx.mp4" />
      
      
      ※smilファイルとは… SMIL(Synchronized Multimedia Integration Language)は、音声・動画・テキスト・画像などのメディアを同期させて再生するためのXMLベースの記述言語です。 動画配信などにおいて、複数のメディアファイル(例:音声・映像・字幕)を組み合わせて再生する制御を行う際に使用されます。

    Assetとして登録するsmilファイルは、SMIL3.0の仕様に従っていればOK https://www.w3.org/TR/SMIL3/

  4. 再生URLの保存 Asset登録後にMediaPackageから発行される再生URLをDBに保存。 アプリ・PC側は再生時にこのURLを参照してストリームを取得する構成。

まとめると、

曽利田貴士

目次