さわっても熱くない花火

ちょっとした驚きを食べながら生きています

DMM動画配信基盤のこれまでとこれからの話

当記事はDMM.com Advent Calendar 2018の23日担当分です。
優秀な後輩な記事が前日で( AWS AmplifyのAnalytics導入 - Qiita )、私の翌日も弊チームの誇る優秀なチームメンバー( @tinoji )の記事だったりするので、恐縮している今日このごろです。(ポエム枠としてお楽しみ頂ければ幸いです。)


どうもこんにちは。色々有りまして何故か急遽実家に帰ることになったyanoshiです。いま実家のこたつに入りながらこの記事を書いています。こたつ is 神。
久しぶりに実家に帰ったので、学生時代によく行っていたつけ麺を父親と一緒にドライブがてら食べてきました。
https://www.instagram.com/p/BrrbQDQgVVU/
やはり無心のつけ麺は最高ですね。


久しぶりに帰った地元は何も変わっておらず、「あぁそうか、まだ就職してから3年も経ってないんだなぁ」と感傷に浸っていました。



そんな変わらないものもあれば、一方で変化し続けるものもあったりします。特に弊社のようなIT企業ですとまさに「常に変わり続けている」というような一面があったりします。
「そういえばうちのチームに来てから、だいぶ色々と変化したなぁ…」とエモい気持ちになってきたので、今回はそんなお話を書いていきたいなと思います。
こういう「振り返り文」って退職エントリーにありがちじゃないですかー退職時くらいしか振り返り文が社会に露見しないのも寂しいなぁ…と前々から思ってたので、それに対するアンチテーゼだったりもします。


ちなみにこの記事の内容はyanoshi一個人としての感想文ですので、会社やチームの総意というわけではありません。まぁネタとして読んで頂ければ幸いです。アドベントカレンダーってことですし願わくばDMMの雰囲気や弊チームの雰囲気が何となく伝われば良いなぁって。




会社の話

え?私の勤めている会社ですか?
ご存知でしょうか?DMMっていうんですけどね。なんか色々なことをやっているのですが、どうやら20周年らしいですよ。
デジタルコンテンツをたくさん扱っている弊社でして。1ヶ月くらい半額キャンペーンをやっているので、ほしい物がある方はポチると良いと思います。
DMM.com20周年記念半額キャンペーン
【DMM.com 20周年】 約1ヶ月にわたる冬の大規模半額キャンペーンを開催!|合同会社DMM.comのプレスリリース
www.youtube.com



私の話

さて、そんなこんなで、2年半ほど前から弊社で働いています。

入社後はCTO室という部署に配属されたのですが、1年ほど経ったある日、当時の上司が異動する際に「一緒に来ない?(意訳)」と声を掛けられて、気がつけば動画配信な部署の配信基盤を司るチームに居ました。
2017年の6月くらいにチームジョインしたのですが、数カ月後にスクラムマスターの役目を拝命し、その1年後ぐらいに今度はプロダクトオーナーの役目を頂戴し現在に至っています。
入社当初はオフィスは恵比寿だったのですが、気がつけば六本木に移転していました。

f:id:yanoshi:20181217160118j:plain
オフィスからの風景
田舎者なので「気がつきゃ大変なところに来ちまったでー」と思いながら窓の外を眺めていたりします。


そうそう、最近はこんな感じでVRゴーグルかぶっていたりもします。まるで業務をしているように見えませんね…(白目

f:id:yanoshi:20181223041554p:plain
HTC Vive Proと私


思い返すと出張でアメリカに行ったり、中国に行ったりもしたなぁ…
yanoshi.hatenablog.jp



いやぁ…よくわかんないけどいろいろなことがあるなぁ…と入社後の日々を振り返る今日このごろです。


事業の話

皆さんご存知かわかりませんが、弊社の動画事業って結構国内でも大きなトラフィックが出ている動画配信事業らしいです。
inside.dmm.com
弊社のオンプレで捌いているトラフィック量がこんな感じで公式情報として出ているのですが、このトラフィックの結構な割合が動画配信事業分だったりします。近頃上記の情報に関する最新版をまとめていたのですが、2018年2月に259Gbpsを記録しておりそれが現状の最高値みたいですね。(本キャンペーンでその値を更新するかが個人的な楽しみだったり)
コンテンツ数も数十万本にも及びます。すごいですね。


配信基盤スクラムチームの話

そんな動画の配信を支えるのが私が所属する「配信基盤スクラムチーム」です。
当たり前の話なのですが、動画配信サービスで動画の配信が停止してしまったら一大事です。そんな事にならないように支えているのが私達のチームと言ったところでしょうか。
私が入る1ヶ月ほど前にできたチームで、当時の動画配信周りの研究開発を行っていたメンバーと実運用を行っていたメンバーの混合チームとして組成された組織でした。

その後メンバーの入れ替えはあったもののやることはあまり変わらず、大量にトラフィックの出る基盤のキャッシュアーキテクチャとか、DRMとか、エンコードとか、プレイヤーとか、そういうようなシステムの開発運用を行っています。


ここからそんな弊チームの周りに転がる小話を少し紹介したいと思います。

近頃あったエモ話

※さも自分でやったことのように書いていきますが、全てチームみんなの成果です。プロダクトオーナーなのでプロダクトを我が子のように捉え書いてしまうわけですね!!11

2005年頃から存在する単一障害点DBに引導を渡す

先日、問題視していたとある単一障害点を抱えていたシステムをリプレイスしまして。
それの中核となっていたDBがあったのですが、それにまつわるソースコードを調べていると2005年にはすでにこのシステムが稼働していた痕跡が発掘されました。
2005年といえば私が自分専用のPCを手に入れた前後でして…その頃から動くシステムを改善したというのはなかなかエモい体験でしたね。

各デバイスに最適な画質を配信する「VR HQ画質」

11月にVR HQ画質というのがリリースされました。*1
www.dmm.com


VRってまだまだ普及していないイメージですが、そんな中で弊サービスは良い感じに売上を伸ばしておりまして。
こんな感じで雑誌に弊事業部長やCTOが登場する特集記事を組んで頂けたりもしています。

月刊BOSS_ゲッカンボス_2019年_1月号[雑誌]

月刊BOSS_ゲッカンボス_2019年_1月号[雑誌]


そんな中で「画質向上を伴うアップセールでさらなる売上増」ってのを目指して動いたのが今回のリリースでした。
「画質を向上させる」…と聞くと簡単そうに聞こえますが、実は結構大変なのです。
まず一番最初に立ちはだかる壁は「デコーダー」です。普段意識することはありませんが、動画のデコーダーってデバイス(グラボ, Oculus Go, iPhone 8, Xperia XZ, etc...)に応じてデコードできる最大解像度が違っていたりします。
FullHD動画を見ている時にその限界を感じることはなかなかありませんが、VR(4Kとか5Kとか動画)を扱うと途端にその辺りを意識する必要があるのですよね。
とりあえず同じ動画ファイルがすべてのデバイスで再生できるわけではない…ということです。


これまでの弊サービスVR動画では「全デバイスで再生できそうな動画を作って配信する」という形で動画配信を行っていました。
しかしHQではそうも行きません。


デバイスに合わせて自動で最適な解像度を判断して配信するというような手段で、今回のリリースは実現されていたりします。
あなたがなにげに押した再生ボタン…その裏側では結構大変なことをやっています。もしよろしければボタンを押す時に一瞬でもいいので「色々この裏ですごいことが起きているんだなぁ」って思い出して頂けると幸いです()


コンテンツに応じてキャッシュ密度を動的に可変させるキャッシュアーキテクチャと某舞台ライブ配信

今年の初旬頃からキャッシュアーキテクチャの刷新を行ってきました。
これまでは「全コンテンツ決まった台数のキャッシュサーバーで捌く。キャンペーン対象作品等は事前に手動でCDNに振り分けてしのぐ」というようなアーキテクチャでしたが、これを「コンテンツ毎に動的にキャッシュサーバーの密度を可変し、それでも捌き切れなさそうなユーザー数の場合はCDNに逃がす」というアーキテクチャに変更しました。
これによりCDNコストの大幅減とキャッシュヒット率の倍増を実現しました。とってもいい話。


ちなみにこのシステムの管理画面をインターン生が作ってくれたりしました。その記事が上がっていたりします。
inside.dmm.com


そして近頃、紅白出演な例の方々の舞台配信におけるディレイ配信でその効果を大きく発揮しました。
実は結構とんでもないトラフィックだったのですが、事前準備無くしれっと捌いていてかっこいいですね!


弊社配信のこれまでとこれから

これまで

なんせ20年近く動画配信を行っているので、所々で古い伝説のような話が語り継がれていたりします。どこまでがホントかはまぁよく知らないのですが、ここにそんな話の一部を紹介したいと思います。

  • その昔はRealPlayerな動画配信をしていた
    • RealPlayerって聞くと中学生の頃に訪れていたアングラな動画サイトを思い出しまして。「そんな頃からWebで動画配信をしていた事業に居るんだなぁ」と感傷に浸ってしまいます。
  • 最初期のシステム開発にはあの堀江貴文氏が参加していた
    • ホントなのかなぁ?なんなら現在に脈々と続いている一部DBに堀江氏の設計が残っているとかなんとか
  • サーバーのストレージの冗長構成が上手く行って無くて、動画が吹き飛び、民生品HDDに取っていたバックアップデータから復旧するという事があった
    • これもホントかどうかよくわかんないですけどね。今はそんなことは起きる余地が無いのでいい話ですが。昔は大変だったんだろうなぁと言うエピソードです

さて、このような今からは想像も出来ないような伝説から、如何にうちのサービスが変化してきたかがわかると思います。



しかし、伝説もなかなかですが、私がチームにやってきた時からも大きな変容を遂げていたりします。以下に一部を紹介。

  • AnsibleによるInfrastructure as Codeの推進
    • やってきた当初は構成管理コード的な物は殆ど無かったのでとても良い話です
  • Consulを利用したノードマネージメント
  • いくつもの単一障害点の排除
    • 様々な理由から手を付けられていなかった単一障害点を幾つか取り除く動きができました
  • GitHub Enterpriseへの移行とCircleCI EnterpriseやSonarQubeによるCI/CDの実現
    • IaCと合わせて安心かつ簡単にデプロイできる仕組みが着実に構築できてきているように思います
  • ライブ配信アーキテクチャの冗長性向上
    • ライブはどうしてもエンコーダや現場機材があらぶりがちなのですが、それらをサーバーサイドで吸収する仕組みが導入できました。昨年導入され始めたのですが導入前の混沌っぷりを思い出すと今の平和が嘘のようです。
  • VRコンテンツの高画質化
    • HQ画質、最高なんでみんな見てほしい!
  • 動的キャッシュアーキテクチャの実現
    • CDNにほぼ頼らずにVOD配信を行うことが出来ていたりします。安価!最高!巨大なオンプレインフラに感謝!

こういったやっていきをチーム一丸となって取り組めているのは本当に良い話ですよね。チームみんなで頑張った(もちろん私もがんばった。)
最高。

これから

さて、今後の配信基盤にもまだまだやりたいことがたくさんあります。

直近に横たわる課題の一つは、「ダウンロード再生用の動画コンテンツの見直し」だったりします。現在はSilverlightを軸としたシステム構成となっているのですが、そろそろSilverlightの死期が迫っており(もごもご
絶賛エンコードシステムを含めた基盤刷新を行っている真っ最中だったりします。

またバックグラウンドですと、ログの取得と活用に関してまだまだ足りていない部分が多く。それらを改善する取り組みを現在行っていたり。

各配信の画質に関するコミットもまだまだやりようがあるので色々とやっていきたいですね。

最後に

システム規模、ユーザー規模、稼いでいる量、どれをとっても大規模で、「コンテンツ」という概念が好きな私にとってはエモがいっぱいな日々を過ごしています。
エンジニア冥利に尽きますね。いい話。
まだまだ手を入れる余地(いわゆる伸びしろ?)がいっぱいあるサービスだなぁとつくづく感じているので、やっていきをやっていきたいなぁと思う今日このごろです。
(そのうち上記の小ネタたちをもう少しまとめて、会社のブログにでも投稿しないとなぁ)


来年もがんばるぞい。

余談

お決まりの話ですが、弊社や弊サービスでは無限に優秀なエンジニアを募集しています。
リファラル採用にも力を入れていて、紹介した人にもされた人にもwin-winなしくみが色々とあるので、興味のある人はお気軽にお声掛け頂ければと思います!!!
特にVRの強い人とか!!!!
dmm-corp.com

*1:これのリリースが原因で10月~12月前半くらいにかけて色々と大変じゃった…