Observability Conference 2022におけるライブ・アーカイブ配信を支える技術 AWS・アプリケーション編 #o11y2022

本投稿では、2022年3月11日に開催されたObservability Conference 2022 (以後、o11y2022)におけるライブ配信・アーカイブ配信をどのように実現したのか、主にRailsアプリケーションとAWSサービスについて紹介します。なお、OBSなどの配信基盤についてはこの投稿では触れません。

実現したいこと

o11y2022の配信アーキテクチャでは以下の3点の実現を目指しました。

  • ライブセッションをできるだけ低遅延で配信する
  • 事前録画セッションを配信する
  • ライブセッション終了後にできるだけ早く、簡単にアーカイブ動画を配信する

アーキテクチャ

主にAWSとRails、Reactを用いています。

  • AWS
    • AWS Elemental MediaLive:配信チームからの配信データを受け取り、IVSやMediaPackageに流す
    • AWS Elemental MediaPackage:MediaLiveから受け取った配信データを一定期間保持し、アーカイブ動画の作成を行う
    • Amazon IVS:MediaLiveから受け取ったデータをカンファレンス参加者向けに配信する
    • S3:事前録画セッション動画、アーカイブ動画を置く
    • CloudFront:S3に置いた動画を配信する
  • Dreamkast (Rails)
    • MediaLive、MediaPackage、IVSリソースを作成する
    • MediaPackage HarvestJobを作成する
  • Dreamkast-UI (React)
    • 配信視聴ページを提供する

ライブセッションをできるだけ低遅延で配信する

ライブセッションはMediaLiveとIVSを使用して配信します。OBSでMediaLiveに対してRTMP Pushすると、MediaLiveは受け取ったデータをIVSに流し、イベント参加者はIVSの配信データをDreamkast-UI経由で視聴します。

事前録画セッションを配信する

ライブセッションとは別に、事前に録画した動画を提出してもらい、それを流す形式の事前録画セッションもあります。事前録画セッションについてはあらかじめS3上に動画データを置き、CloudFront経由で配信します。イベント参加者はライブセッションと同様、Dreamkast-UI経由で視聴します。

ライブセッション終了後にできるだけ早く、簡単にアーカイブ動画を配信する

o11y2022に限らず、CloudNativeDaysではライブセッションをできるだけ早くアーカイブ動画として公開し、後からイベント参加者が視聴できることを目指しています。o11y2022ではアーカイブの作成にMediaPackageを利用しました。

MediaPackageは受け取った配信データを指定した期間保持し、タイムシフト再生を行うことのできるサービスです。また、MediaPackage HarvestJobというリソースを作ることで、保持された配信データからVODクリップを作成できます。これらの機能を活用することで、セッション終了後数十分程度でアーカイブ動画の公開を実現しました。

MediaPackageはMediaLiveから配信データを受け取っています。MediaLiveを使うことでIVSとMediaPackageに同じソースから配信データを送ることができ、便利です。

MediaPackage HarvestJobを作る際にはアーカイブ動画の開始時刻と終了時刻を指定する必要があります。これらの時刻をどう決めるのかがHarvestJobを使う時の難しさの一つです。Dreamkastでは、切り出し開始時刻と切り出し終了時刻を指定するとプレビューする機能を実装し、微調整できるようにしました。

タイムテーブル上はセッションの開始・終了時刻は決まっているのでその時刻を使ってHarvestJobを自動的に作れそうですが、実際には開始も終了も変わる可能性があります。なので、セッションの開始時刻と終了時刻を切り出し開始時刻と切り出し終了時刻の初期値とするだけにとどめておき、後は人が微調整するという方式としています。

HarvestJobのステータスはDreamkastの管理画面から確認できます。また、定期的にHarvestJobのステータスをポーリングし、ジョブが成功していた場合は切り出されたアーカイブ動画を視聴するためのURLをDreamkastのDBに登録し、イベント参加者がアーカイブ視聴できるようになっています。

過去のイベントでもアーカイブ動画の作成機能はあったのですが、オペレーターの職人芸的作業が必要でした。一発勝負でミスができない方法で非常にオペレーターに負担を強いることになっていました。o11y2022のMediaPackageを使った方法だと、事前にプレビューすることでミスしにくくなっていること、後でミスに気づいても再度HarvestJobを作ることでアーカイブ動画を作り直せることからオペレーターへの負担は小さくなっています。

しかし、実際にオペレーションしてもらった結果、切り出し開始時刻と切り出し終了時刻の微調整が意外と大変ということもわかりました。アーカイブ動画作成に限らず、オペレーションの省力化は今後も取り組みたいと考えています。

本投稿で紹介した仕組みを作っているDreamkastチームでは、開発に興味のある方を探しています。利用技術はRails・React・AWS各種サービスです。現在は基本的にRails上で開発していますが、別サービスに切り出せそうな機能についてはRuby以外の言語を使うことも可能です。関心がある方はご連絡ください。

csvファイルをMarkdownのテーブルに変換するためのコマンド csv2tbl

最近いろんな場所でクエリを実行して結果をesaに貼るために整形する作業が多い。csv形式のテキストデータをGoogle SpreadSheetに貼り付けてコピーするとMarkdown形式のテーブルに変換できるのだけど、それも面倒なのでファイルを渡すと変換するだけのCLIツールを作った。

https://github.com/takaishi/csv2tbl

使い方は説明するほどでもなく、引数にファイルを渡すだけ。

$ cat ./sample.csv
column1,column2,column3
1,2,3
foo,bar,baz

$ ./csv2tbl ./sample.csv
| column1 | column2 | column3 |
|---------|---------|---------|
|       1 |       2 |       3 |
| foo     | bar     | baz     |

こういうほんとにちょっとしたものもツールにしていくのを心がけたい。

2021年ふりかえり

大きなイベントとしては転職と結婚。2020年に転職したのだが、2021年も転職した年になった。転職があると仕事も私生活もしばらくバタバタするが、年末になってまあ落ち着いてきたかなというところ。結婚については書類周りに手こずったのが印象的だった。

Output

特に下半期以降、技術系のブログはあまり書いていない。その一方、CloudNativeDaysの運営の一環でオンラインカンファレンスのプラットフォーム開発をほぼ1年間継続していた。常に利用される性質のサービスではないとしても、仕事以外で一つのサービスを継続して開発・運用した経験は大きい。アーキテクチャや機能デザイン、データ構造などを考えることも多く良かった。

Presentation

2021年は登壇なし。2022年は今やっていることをまとめて外に出せるといいなとは思っている。

Writing

毎日Scrapboxに日記をつける習慣がついた。と言っても大したことは書いてないのだが。とりあえずその日のページを作って、それまではTwitterに書いていたようなことを書いている。ブログに書いたテック系の記事は以下。少ない…。

Community

CloudNativeDaysの実行委員会に関わり、以下3つのオンラインカンファレンスの開催を手伝った。

  • CloudNativeDays OnlineSpring 2021
  • CI/CD Conference 2021
  • CloudNativeDays Tokyo 2021

Input

漫画はかなり読んだけど書籍はほとんど読めなかった気がする。あまり記録も取れていない。

英語の学習はLINEを退職してから止まってしまった。

新しい技術としてはTypeScriptを少し使えるようになった。また、Kafka・Cassandra・Presto・Hive・BigQueryなど、データ寄りの技術に触れたのは大きい。ECSも触ってKubernetesもECSもそれなりに使えるマンになった。

Podcast

1年間、キマグレエフエムの収録を継続した。これはすごくうれしいことだなあ。

Health

72kgくらいまで増量した後、減量を開始した。年末時点で62〜63kg位まで下がっていて、やれば減量できるなという実感を得た。上半期は割と自宅トレーニングをやっていたが、下半期はジムの契約をしてそちらに週4で通っている。習慣化されてきていていい感じ。

2020年〜2021年前半は睡眠の質があまり良くなかったが、2022年後半に結構改善されてきたように思う。

その他

年末の話になるが、カーシェアを契約した。買い物に使ったりしたが、もっと早く契約して使えば良かったな〜と思った。後、副業案件が増えてきたので個人事業主の届け出を出した。

2021年買ってよかったもの

毎年恒例の買ってよかったもの2021年番。年末にまとめて書くと下半期に買ったものの印象が強くなりがち。

OuraRing

2021年3月に購入。ほぼ毎日、風呂に入るときやトレーニングでバーベルを扱う時など以外はずっとつけている。睡眠トラッキング機能が特に気に入っている。精度も高いと感じるし、僕はAppleWatchのような時計型のセンサーを手首につけて寝ると気になっていたのだが、指輪型だと全然気にならなくて快適なのもよい。難点としては指輪としてはやや大きいこと、トレーニングでバーベルやダンベルを持つとリングが当たって傷がついたり指輪内側のセンサーが肌に食い込んで痛かったりするところ。とはいえ難点より圧倒的に利点が大きいので今後も使い続けたい。11月に3世代目が登場したのだが、それも購入した。50ドル値引きと6ヶ月サブスクが無料になるクーポンが後1つ残っているので、知人で買おうと思っている人は連絡ください。

https://ouraring.com/

ROTOTO WASHI PILE CREW SOCKS

2021年の秋冬用靴下はこれで決定。3月に靴下を何種類か買って試していて、これが一番よかったので買い足してローテーションできるようにした。この靴下のいいところとしては、まず生地がやや厚めにもかかわらず蒸れにくいところがある。てきとうな靴下だと少し歩くだけで蒸れて不快なのだが、ROTOTOのWASHI PILE SOCKSはそれがないところがよい。次に、つま先の縫い目がフラットで履き心地がよい。適当に靴下を買うと大抵つま先の縫い目がフラットではなく、靴を履いた時に気になってしまう。この靴下はそれがない。縫い目に使われている糸が靴下全体の色とは違っていて、アクセントになっているのもよい。靴を履いていると見えない箇所だが、そういう箇所にこだわっているところが粋じゃないか。靴下全体の生地はベースカラーに白色が差し込まれていて、柄物とまではいかないが単色でもなく、ほどよくカジュアルなところもよい。派手な柄が入っている靴下はあまり好みではないのだが、全くの単色も面白みに欠ける。まさにちょうどいい具合だと思う。最後に、履き口が締め付けてこないところが素晴らしい。脱いだときにあまり跡がつかず、履いていて気持ちいい。まだまだ家にいる時間が長いので、こういうゆったりした靴下がとてもあう。

https://www.rototo.jp/

https://www.rototo.jp/products/r1066

Roborock S6 MaxV

水拭きできるロボット掃除機。結構古いルンバから買い換えたのだが、水拭きがとにかくよい。ブラシでゴミを集めるだけだと微細なホコリやチリが残っていることが多く、素足で歩いたり床に座ると気になっていた。しかし水拭きは非常に面倒で、正直あまりやりたくない・やらない家事の一つ。Roborock S6 MaxVを買ってからは毎日水拭きできて、とても床が気持ちよくなった。新モデルのS7+/S7が水拭き機能が強化されていて気になっているのはないしょ。

https://www.roborock.jp/products/s6-maxv

BODY WILD AIRS WARM BOAT NECK

今シーズンは冬用のインナーとしてヒートテックではなくBODY WILD AIRS WARMにした。ヒートテックだとカットソーの襟から見えることがあるのだが、今回買ったこれはボートネックタイプなので見えないのがよい。また、ヒートテックは家の中で動かないでいるとあまり暖かくない木がするのだが、AIRS WARMは暖かいと思う。肌触りもよい。これの上に無印のフランネルシャツを着ていると、アウターはそこまで厚くなくても今の時期なら夜でもそこそこ暖かい。

https://amzn.to/3oJyY2w

掃除用ブラシセット

これまでは1本だけ買って掃除のたびにどこにおいたっけ?って探したり、使い古した歯ブラシ使ったりしていた。ふと思い立って何本かセットで買ってみたのだが、大正解だった。よく使うところに1本ずつ置いておけば掃除したいときにすぐ掃除できて非常によい。PROIDEA 大津式 お掃除ブラシ J と まめいた アマゾンオリジナル 先っぽブラシセット を買ったのだが、一番よく使うのはまめいたの先っぽまで毛があるブラシ。棒の先にぐるっとブラシがついているので、シンクの排水口を掃除しやすい。お掃除ブラシJはブラシの幅が非常に狭いので、溝の掃除に重宝している。お掃除ブラシJは正直ちょっと高いと思うのだが、まめいたはリーズナブルだと思う。たぶん100均にも似たようなブラシはあるだろうから、次は100均でまとめ買いするかも。何にせよ、使うところに常備しておくことで掃除のハードルを下げられる、ということが重要です。

https://amzn.to/3rVtvrf

肉体改造のピラミッド 栄養編

今年減量した(今もしている)のだが、減量ペースや摂取カロリー量の決定をどのように行うかにおいて非常に参考にした本。おかげで順調に減量が進んでいる。

https://amzn.to/3GAXrNs

Mammut Ayako Pro HS Hooded Jacket AF Men

山に行くわけではないけどアウトトアジャケットがほしくて、黒いものをいろいろ探していて見つけたものがこれ。見つけたのは2021年の頭頃で、購入は秋頃。基本は黒ベースでデザインされていて、ほんの少しだけオレンジのワンポイントが入っていて非常にシンプルなのがよい。ブランドロゴも黒ベースで目立たない。ゴアテックス素材なのだが、内側はメッシュ生地なので着心地もよい。ゴアテックス単体のジャケットに比べると蒸れにくい気もする。黒ベースのアウトドアジャケットだとアークテリクスがあるけど、結構高いしファスナーが左差しでちょっと使いにくい。記事書いてる時に調べたら、黒のモデルがなくなっているように見える…


結婚した

今日、婚姻届を提出して結婚した。5年前は自分が結婚するとは想像もしていなかったけど、人生何があるかわからないものだ。

戸籍謄本の取得はマイナンバーカードを使って割と楽にできたが、証人欄へのサインのために郵送が必要でそこは少し大変だった。どちらかというと大変なのは姓が変わったパートナーで、変更の手続きあれこれもそうだし、旧姓併記のための手続きを聞いてピタゴラスイッチぶりに眩暈がした。

特に生活面で変わることはないですが、今後ともよろしくお願いします。アドバイスなどあれば是非ご教授ください。Twitterなりメールなりまたは下記のリスト経由でも大丈夫です。

https://www.amazon.jp/hz/wishlist/ls/Z4S7GXB6QH5S?ref_=wl_share