AWS DevDay Tokyo 2017 で OPENREC.tv の基盤の話をしてきました
CyberZ OPENREC バックエンドエンジニアの廣瀬 (@uorat) です。
日頃お世話になっております AWSJ 様からお声がけ頂いて、5/31 - 6/2 に開かれた AWS Summit Tokyo 2017 / DevDay Tokyo 2017 での登壇の機会を頂きました。
今年の AWS Summit Tokyo から初めて、本編のいわゆる “Summit” と並行して、 より開発者に寄せたコンテンツを固めた Dev Day という枠が別会場で走るようになっていました。 昨年まで飛天で行われていたトラックがさらに分離されたようなイメージです。
3日間通して、 DevDay はエンジニアリングにより尖ったコンテンツとなっており、明日からすぐに活かせるような実践的なお話ばかりでした。 私含めてメンバー皆 DevDay セッションに入り浸り、他社さんのアーキテクティング事例や Lambda をはじめとしたサーバレスの知見を溜めてきました。 個人的には、ここ数年の AWS Summit の中で最も面白かったです。
私もそんな DevDay で登壇させて頂きました。
DevDay 2017 の登壇内容
OPENREC.tv を支える二つの基盤である「ライブ動画配信基盤」と「リアルタイムメッセージ配信基盤」に焦点を当て、アーキテクチャおよび過去の変遷をお話しました。
写真は @shinodogg さんに撮って頂きました。どやっとしてるように見えますが仕様です。
資料は SpeakerDeck にあげています。
目次はざっとこんな形です。
- OPENREC.tv とは
- 動画配信の基本
- 動画配信基盤のアーキテクチャと変遷
- チャットの基本
- リアルタイムメッセージ配信基盤のアーキテクチャと変遷
- サービスの成長を加速させるために
動画市場がホットになって久しい一方で、動画を扱うサービスに携わる機会は実際にはそこまで多くないと思います。 かつ、VOD ならまだしも、ライブ配信となると馴染みない方も少なくないことと思います。 ですので、本セッションでは OPENREC.tv のアーキテクチャを紹介する前に、まず動画、特にストリーミング配信にフォーカスした基礎知識やポイントを紹介しています。 そのままメンバー受け入れ時に使えるように、わりと綺麗めにまとめていますので、よければ是非ご活用ください。
その後で、OPENREC.tv のアーキテクチャを紹介しています。
現行の基盤の特徴としては、
- GPU Accelerated Instance (g2) を使った動画トランスコーディング
- EC2 API を用いた拡張縮退制御
- Origin から Edge まで AWS ネットワーク網で最適化
- ライブ中の HLS データの抽出と S3 への非同期永続化
このようなことを行って、スケーラビリティ、パフォーマンス、コストの効率化を行っています。
今は、動画配信基盤としては 3度目のリプレース中で、このステートフル接続を終端する基盤を ECS ベースで揮発化しようとしています。 一見 12 Factor App と相反するアーキテクチャですが、うまくハマればメンテナンス業務が大幅に圧縮でき、費用効果や今まで以上のスケーラビリティも期待できます。 これはまだ開発中のプロジェクトですので、今回は設計の話にとどめましたが、また機会があればどこかでご紹介できればと思います。
後半は、チャット機能の基盤となるリアルタイムメッセージ配信基盤のリプレース話を紹介しました。
AWS 導入事例:株式会社CyberZ | AWS でも紹介させて頂いた、 WebSocket ベースのアプリケーションに Application Load Balancer (ALB) と AutoScaling を活用した事例紹介です。 動画配信基盤と同様に、こちらもステートフルな接続を扱うアプリケーションのため、一般的なWebアクセスとは異なるポイントがありますので、実践的な TIPs 含めて紹介させていただきました。
最後は少しエモめのテイストで、この OPENREC.tv というサービスをサンプルに “Grow larger, Start small” というキーワードをあげて、本セッションのまとめとしました。
RUNNING LEAN という書籍でもあげられていますが、成功しているスタートアップの2/3は事業方針を転換していると言われており、リソースを使い切る前に最初のプランからよりベターなプランへと反復的に移行することがスタートアップの成功の鍵だと言われています。 やってみなければわからないことも多く、市場に投入して検証して見なければアプローチが正しいかどうかもわかりません。 ゆえに、最小限の労力と時間で試験を重ね、最大の効果を得られるように、アプローチすることが大事だと思います。
ソリューションアーキテクトやアカウントマネージャーなど非常に頼もしい方々もいらっしゃいますので、人的リソースも含めて使えるものは使い、開発/検証/学習サイクルを高速化すると良いと思います。
登壇準備編 (参考まで)
ちなみに90枚のスライドですが、その前の週に行った社内勉強会でリハッたところ40分枠で2/3も終わらないという時間超過ハンパなく、急いで読み上げ用スクリプトを用意し泣きながらギリギリまで読み上げの練習をしていました。 枚数作り過ぎにはご注意を。
また、この資料の作成にあたり、 AWSJ の北迫さんの資料をかなり参考にさせて頂きました。 この場をお借りして御礼申し上げます。
体系的にまとめられた素敵な資料でしたので、あわせて紹介させて頂きます。
Dev Day Night パネルセッション
また、この日の夜に DevDay の会場で Night Party が開かれたのですが、縁あってパネルセッションにも参加させて頂きました。 モデレータが AWSJ 福井さん、パネリストが スマートニュース 蘭さん、アプトポッド梶田さん、CyberZ 廣瀬というメンバー構成でした。
当日の様子です。どやどやしてるように見えますが仕様です。
蘭さんはスマートニュースの広告システム & 機械学習エンジニア、アプトポット梶田さんは総合格闘技と言われる IoT 事業の CTO、私は動画事業サービスのバックエンドエンジニアと、3人3色 パネルセッション自体はお題に対して3人が順々に答えていくというよくある形式でしたが、それぞれが専門性もロールも異なるということもあり、回答が皆ユニークでした。
ざっとこんなトピックだったと記憶しています。
- 自己紹介
- 関心がある技術分野 / これからやってみたいこと
- 最近発見したTIPs
- プライベートも含めて熱中していること
- クラウドからオンプレミスに戻りたいと思ったことはあるか
私は、Werner の基調講演やソリューションアーキテクトのセッションの影響を受けてFPGA アクセラレーションの熱がちょうど高まっていたので、このパネルセッション中の技術関連のトピックにはこのネタを使わせて頂きました。
F1 インスタンスの東京上陸や Amazon FPGA Image (AFI) の充実化が楽しみです。
総じて、一聴講者としてイベントに出ているよりも、こうしてイベントの中に入り込めるようになると人の繋がりも増えて技術交流も一層深まりますし、とても良い経験となりました。
またの機会があればぜひトライさせて頂ければと思います。
辻本様、成田様、お誘い頂きありがとうございました。