DMMグループの一番深くておもしろいトコロ。
働く人々

DMM史に残る!「DMM TV」&「DMMプレミアム」開発秘話〜SREとバックエンドエンジニア編〜

DMMグループの一番深くておもしろいトコロ。

DMMが新たにリリースした「DMMプレミアム」と「DMM TV」。開発に携わった関係者に話を聞き、リリースまでの裏側を連載でお届けしています。今回は新技術にチャレンジし続けるSREとバックエンドエンジニアにフォーカスして、「DMM TV」の開発を支えた動画配信事業部の菅野と小林、テックリード室の山本に、それぞれどのようにしてこの大規模プロジェクトを乗り切ったのかを伺いました。

  • 菅野 滉介デジタルコンテンツ本部 動画配信事業部 配信インフラグループ 配信インフラチーム

    新卒で2017年にDMM.comに入社し、インフラ部に配属され、Private Cloudを用いたインフラの設計・構築・運用・保守に携わる。動画配信事業部に異動し、オンプレミス環境で物理サーバを用いた大規模トラフィックを捌くチームにてエンジニアを経験した後、同チームにてリーダーを担当。現在は、DMM TVのSREチームのリーダーとして業務全体の統括を行いながら、エンジニアとして実務も担う。

  • 小林 辰彰デジタルコンテンツ本部 動画配信事業部 配信インフラグループ 配信インフラチーム

    新卒で2019年にDMM.comに入社し、インフラ部の配信基盤グループに配属。インフラエンジニアとしてオンプレ関係の業務に携わる。エンコーダーサーバーやストレージサーバーの選定、保守、運用を行う。後に動画配信事業部に異動。DMM TVのプロジェクト立ち上げに伴いSREを担当し、Google Cloudを用いたインフラ設計や運用に携わる。

  • 山本 将貴テックリード室 第1グループ

    新卒で2020年にDMM.comに入社し、レース事業部に配属。バックエンドエンジニアとしてDMM百万長者(現在は事業クローズ)の開発やDMM競輪のフルリプレースといった業務に携わり、DMM TVのプロジェクトが立ち上がったタイミングでテックリード室に異動。主にバックエンドの開発を担当している。

SREが果たした大きな役割

まずDMM TVのプロジェクトにおいてSREはどのような役割を担っていたんでしょうか?

菅野:ユーザー体験を向上させるインフラ環境を実現すること。ごく簡単に説明すると、これが我々のミッションです。もちろん開発段階ではインフラ設計、構築、運用なども行いましたが、単にサーバーの面倒を見るだけが仕事ではありません。

そもそもどういったインフラ構成だったら障害が起きにくいのか。もし障害が起こってしまった場合どのような構成ならすぐに復旧できるのか。今回のプロジェクトではそういった観点でバランスを見ながら全体の開発を調整していきました。

DMM TV はDMMの歴史のなかでも特に大きな開発。SREとしてはどのあたりが大変でしたか?

菅野:リリース後にどのくらいのユーザーが利用するのか未知数だったので、スケーラビリティの点は苦労しましたね。もともとDMMには「DMM動画(現在はDMM TVに統合)」というサービスがあったんですが、2.5次元などの大きなライブ配信があると同時視聴者が10万人を超えることがありました。当然、今回求められていたのもそういった大量のアクセスに耐えることができるシステムです。

そのあたりの事前調査や技術検証を丁寧に行ってくれたのが、ここにいる小林くんでした。

小林:DMM TVの立ち上げにおいてリリース日が迫る中、開発速度が求められていたため、動画事業部で既に導入実績のあったGoogle Cloudを採用することにしました。その上で多くのリクエストにも耐えうる拡張性と運用の容易性を実現するために、Google Kubernetes Engine(以下、GKE)を導入。これまでは大規模なライブ配信があった際、エンジニアが手作業でサーバーの数を増やす対応をしていましたが、GKEを導入したことでスケーリングが容易に行えるようになりました。

データベース周りで言うと、今回はCloud Spannerを採用しています。もともと「DMM動画」ではMySQLが使われており、DMM TVにおいても初期の段階ではCloud SQLを使う設計となっていました。しかし、Cloud SQLを採用するにはメンテナンスタイムを想定したインフラ設計や運用のコストなど様々な課題がありました。 

Cloud Spannerを採用したことで、メンテナンスタイムを考慮しなくてもよくなり、複雑なインフラ設計をする必要がなくなりました。また、水平スケールの機能を持つため将来的に負荷が高くなった際にも柔軟に対応できることは非常に大きなメリットであると考えたんです。 

山本:それこそ最初は高負荷の処理にはCloud Spannerを使って、それ以外はCloud SQLを使うといった話も出ていましたよね。でも、やっぱり小林さんの提案通り、Cloud Spannerに一本化して良かったと思います。実装を切り分けるのもなかなか大変ですからね。

菅野:チーム発足時にはGKEやCloud Spannerに強いエンジニアがいなかったこともあり、メンバーにナレッジがほとんどない状態でスタートしています。そんななかで自ら学習と技術検証を重ねながら知見を深め、実装まで行うことができました

モダンな構成で効率的に進めたバックエンド開発

一方で、バックエンド側はどのように開発を進めていったのでしょうか?

山本:アーキテクチャの話をすると、今回はフロントエンドとのやり取りで生じる複雑性を吸収するため、バックエンドとフロントエンドのあいだにBackend For Frontend(以下、BFF)を設けて開発を行いました。バックエンド、BFFは共にGo言語で実装を統一しています。

バックエンドとBFFのやり取りにはgRPC、BFFとフロントエンドのやり取りにはGraphQLといった技術を採用しています。チーム内に知見を持っている人が少なかったのですが、新たなチャレンジとして、そこは1から勉強をしながら取り組んでいきました。結果的にはスキーマ駆動開発の環境を整えることもできましたし、そのおかげで一部開発の修正が生じた際もとてもスムーズに対応することができました。

菅野:Pub/Subを使った非同期処理のアーキテクチャも実現しているんですが、それも山本さんを始めとしたバックエンド側が頑張ってくれたからこそだと思っています。

山本:DMM TVはDMMのプラットフォーム基盤や配信基盤と連携してサービスを提供しており、レスポンスに時間が掛かるケースやリトライが必要なケースも多かったので非同期処理は不可欠でしたね。Pub/Subを使って、非同期で商品データの更新や視聴履歴への登録などをおこなうことで、ユーザー体験を損なわないサービスを実現できました。

SRE側もそうですが、バックエンド側も、より良い技術や考え方はどんどん取り入れるスタンス。今回はモダンな構成ということもあって、バックエンド側の開発はかなり効率的に進められたと思います。

DMMでエンジニアとして働くことの醍醐味

SREとバックエンド。それぞれDMMで働く醍醐味はどこにあると感じていますか?

菅野:無事にDMM TVのサービスはリリースされましたが、SREとしてはむしろこれからの取り組みこそが重要です。つまり、今後の成長フェーズにおいて、サービスの信頼性を高めるためやるべきことが山ほどある。1から作り上げていく経験もまだまだできるので、エンジニアにとってはすごく貴重なキャリアになると思います

小林:DMMプレミアム会員はサービス開始後約4ヶ月で累計70万人を超えており、非常に勢いのあるサービスになっています。その中でもメインコンテンツといえるDMM TVには特に多くのアクセスがあり、そのインフラを支えているのが私たちSREです。

サービスを安定的に提供する取り組みとして、可用性の高いシステムアーキテクチャを考えたり、大規模なアクセスを想定した負荷試験を行い、その結果をもとにシステムチューニングやキャパシティプランニングをできるのがやりがいだと思います。現在、私たちのSREチームでは一緒に働いてくれる仲間を募集しています。インフラエンジニア出身の私の感覚からするとSREと聞くと経験がないと少しハードルを感じてしまうかもしれませんが、SREとしての経験の有無はあまり重要視していないので、インフラに関心があってサービスの改善に興味を持っていただけた方はぜひ採用の方にご応募いただけますと嬉しいです。

山本:DMM TVはサービスの規模が大きいですし、今後さらなる成長を実現させるための リソースもあります。ほかを見渡してみても、この規模の動画配信サービスの初期グロースに携わることができる機会は少ないんじゃないかなと思います。

そんな恵まれた環境のなかで、バックエンドとしてはユーザーに求められている新機能をどんどん開発していく予定です。DMM TVをより良くしていきたいというマインドをお持ちのバックエンドエンジニアの方々。ぜひお待ちしています。

付録

DMM TVのアーキテクチャはこのような形になっております。

DMM史に残る!「DMM TV」&「DMMプレミアム」開発秘話の連載はこちら

Google Cloud様に弊社で活躍するエンジニアが取材されました。Google Cloudを活用した狙いと成果について話していますので、ぜひご覧ください。DMM.com:これからのビジネスを担う動画配信サービスの提供と、データ分析基盤のモダナイズを Google Cloud で実施

  • 動画
  • インフラ
  • VR
  • アプリ
  • DMM TV
  • サーバサイド
  • 配信基盤
  • iOS
  • Android
  • SRE
  • VR
  • UX
  • UI
  • 3DCG
  • プロダクトデザイン

シェア

一緒に働く仲間を募集しています!

関連する記事

関連する求人