はじめに
システム開発推進部第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保護された動画配信を実現していました。

AWS構成での実現概要
使用サービス
- 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 |
+-----------+
- Packaging Groupの作成
※最大Packaging Group数:10
Packaging Configurationの作成

- Apple HLS(iOS用)
- DASH-ISO(Android/PC用)
- Assetの作成

- 事前に作成したPackaging Group(最大10のうち1つ)を指定してAssetを作成
- 1Packaging Groupあたりの最大Asset数:10000
smilファイルに動画情報を記載し登録
※smilファイルとは… SMIL(Synchronized Multimedia Integration Language)は、音声・動画・テキスト・画像などのメディアを同期させて再生するためのXMLベースの記述言語です。 動画配信などにおいて、複数のメディアファイル(例:音声・映像・字幕)を組み合わせて再生する制御を行う際に使用されます。<br><br><br> <video src="xxx.mp4" />
Assetとして登録するsmilファイルは、SMIL3.0の仕様に従っていればOK https://www.w3.org/TR/SMIL3/
再生URLの保存 Asset登録後にMediaPackageから発行される再生URLをDBに保存。 アプリ・PC側は再生時にこのURLを参照してストリームを取得する構成。
まとめると、
曽利田貴士