Slide 1

Slide 1 text

AWSを使ったカンファレンスの 配信アーキテクチャ 髙石 諒 / @r_takaishi 吉祥寺.pm37

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

自己紹介 ● 髙石 諒 / @r_takaishi ● ソフトウェア エンジニア / ポッドキャスター ● 現所属は株式会社フライル ○ クラウドインフラ中心にいろいろ ● 副業でスタートアップのクラウドインフラ・基盤整備 ● CloudNative Daysのシステム開発

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

こういうの作ってます ● tfclean (https://github.com/takaishi/tfclean) ○ terraformの import/moved/removed ブロックを削除するツール ● terraform-j2md (https://github.com/reproio/terraform-j2md) ○ terraform planの結果をMarkdownとして整形するツール ● batron (https://github.com/takaishi/batron) ○ AWS Batchのジョブ定義をデプロイするツール

Slide 6

Slide 6 text

時はコロナ禍

Slide 7

Slide 7 text

カンファレンスも 「密」回避が求められ た

Slide 8

Slide 8 text

オンライン開催

Slide 9

Slide 9 text

オンラインカンファレンスで 快適な視聴環境を提供する

Slide 10

Slide 10 text

アーキテクチャの 試行錯誤を紹介します

Slide 11

Slide 11 text

CloudNativeDaysが目指した体験 ● 前提として、複数トラック開催 ● シームレスにセッションを切り替えられる体験 ● セッション終了後のアーカイブ公開

Slide 12

Slide 12 text

第一世代

Slide 13

Slide 13 text

第一世代アーキテクチャ ● Vimeoを使用 ○ 記憶が曖昧なので割愛 ● ライブ配信用のリソースをVimeoに作ったりするのが大変だった気がする

Slide 14

Slide 14 text

第二世代

Slide 15

Slide 15 text

AWSが配信・動画系サービスを提供している ● Amazon Interactive Video Service (Amazon IVS) ○ 低レイテンシー配信のためのマネージドサービス ○ RubyKaigiでも使用された ● AWS Elemental MediaLive ○ ライブストリーミングのエンコードサービス ○ 変換して複数の宛先に送ることも可能 ● AWS Elemental MediaPackage ○ エンコードされたデータの動画配信及びVODパッケージングサービス

Slide 16

Slide 16 text

第二世代アーキテクチャ MediaLive IVS Channel S3 Bucket CloudFront Rails React OBS オペレーター 参加者 RTMP(push) RTMP(Pull) トラック毎にリソースを用意 ライブ配信を視聴 アーカイブ配信を視聴 アーカイブを保存 起動・停止

Slide 17

Slide 17 text

第二世代の課題 ● 高コスト ○ IVSを複数トラック分、複数日使うのはかなりお金がかかる ● アーカイブの作成が大変 ○ MediaLiveチャンネルの起動・停止が職人技 ○ タイムラグ問題

Slide 18

Slide 18 text

第三世代

Slide 19

Slide 19 text

AWSが配信・動画系サービスを提供している ● Amazon Interactive Video Service (Amazon IVS) ○ 低レイテンシー配信のためのマネージドサービス ○ RubyKaigiでも使用された ● AWS Elemental MediaLive ○ ライブストリーミングのエンコードサービス ○ 変換して複数の宛先に送ることも可能 ● AWS Elemental MediaPackage ○ エンコードされたデータの動画配信及びVODパッケージングサービス

Slide 20

Slide 20 text

第三世代アーキテクチャ MediaLive IVS Channel MediaPackageChannel Endpoint S3 Bucket CloudFront Rails MediaPackage HarvestJob React OBS オペレーター 参加者 RTMP(push) RTMPS HLS トラック毎にリソースを用意 ライブ配信を視聴 アーカイブ配信を視聴 アーカイブを保存 アーカイブ作成 HarvestJob作成

Slide 21

Slide 21 text

第三世代アーキテクチャ ● アーカイブ作成にMediaPackageを使用 ● HarvestJob ○ VOD用の機能 ○ バッファされたストリーミングデータの任意の範囲を切り出してS3バケットに保存 ● Rails上で範囲指定・プレビューしてHarvestJobを作成する機能を実装

Slide 22

Slide 22 text

第三世代の課題 ● 高コスト ○ IVSを複数トラック分、複数日使うのはかなりお金がかかる

Slide 23

Slide 23 text

第四世代

Slide 24

Slide 24 text

第四世代アーキテクチャ ● MediaPackage V2登場 ○ 低レイテンシーに対応 [速報] low-latency HLSにも対応したMediaPackage v2がリリースされました![NEW] | DevelopersIO https://dev.classmethod.jp/articles/aws-elemental-mediapackage-v2/

Slide 25

Slide 25 text

第四世代アーキテクチャ MediaLive MediaPackage v2 Channel Endpoint MediaPackageChannel Endpoint S3 Bucket CloudFront Rails MediaPackage HarvestJob React OBS オペレーター 参加者 RTMP(push) RTMP HLS トラック毎にリソースを用意 ライブ配信を視聴 アーカイブ配信を視聴 アーカイブを保存 アーカイブ作成 HarvestJob作成

Slide 26

Slide 26 text

第四世代アーキテクチャ ● IVSを止めて大幅にコストダウンに成功 ● MediaPackageのHarvestJobを使い、セッション終了後数十分でアーカイブ 作成・公開

Slide 27

Slide 27 text

第四世代アーキテクチャの課題 ● MediaPackageとMediaPackageV2の両方を使っている ○ MediaPackage V2がHarvestJobに対応していなかった

Slide 28

Slide 28 text

まとめ

Slide 29

Slide 29 text

まとめ ● 2020年以降のコロナ禍で、CloudNativeDaysはオンライン配信をかなり作 り込んだ ○ シームレスなトラック切り替え、迅速なアーカイブ公開 ● インパーソン開催に戻った2025年以降、このノウハウをどう活用するか ○ オンライン開催のイベントもあるけど大規模じゃないとペイしない ● 全然分からない領域について試行錯誤するのは楽しい

Slide 30

Slide 30 text

コロナ禍の 知見忘れず 活用したい