急拡大するエンタメテックを加速させるバックエンド開発とDevOps、インナーソースのあり方

技術・デザイン

サイバーエージェントが展開するエンタメテック事業。「ABEMA」をはじめとするインターネットサービスの提供で培ったノウハウや最新技術をエンターテインメント領域へ活用し、ペイパービュー配信や収益化支援の他、ファンコミュニティアプリの開発・提供などを行っています。エンタメテックにおける7つのプロダクトの開発責任者の前田に、加速するエンタメテックを支えるバックエンド開発のリアルを聞きました。

Profile

  • 前田 拓 (FANTECH本部 FanTech Studio)
    2020年にサイバーエージェントに新卒入社し、サーバーサイドエンジニアとしてABEMAの開発に1年携わる。その後、WRESTLE UNIVERSEの開発責任者を担当し、2022年よりFanTech領域のサービスであるFANBASE ARENAの開発責任者を兼任。

バックエンド開発が加速させるエンタメテックの可能性

── 現在のお仕事や役割について教えて下さい。

私が所属するFANTECH本部は「ABEMA」等で培ったライブ配信のノウハウや技術を活かし、新たなエンターテインメント体験を提供するサービスを展開しています。

日本をはじめとしたアジアのエンターテインメントを海外からでも楽しめるグローバル向けオンラインライブプラットフォーム「ABEMA Live」、LDHのコンテンツを楽しめるコミュニケーションサービス「CL」、定額音楽配信サービス「AWA」、芸能プロダクション・IPホルダー向けアプリを提供する「FANBASE ARENA」、そしてプロレス動画配信サービス「WRESTLE UNIVERSE」など、多彩なプロダクトの開発・運用をしています。

特に、音楽ライブやスポーツ分野においては、デジタル配信、ペイパービュー、多言語対応のファンコミュニティといったニーズが急速に拡大しています。

私は、FANTECH本部における開発組織FanTech Studioで「FANBASE ARENA」が提供する複数の協業プロダクトに加え、「ABEMA Live」と「WRESTLE UNIVERSE」を合わせた7プロダクトの開発責任者をしています。

FanTech Studioの特徴の1つに、複数のサービスを運用することを前提とした、柔軟性の高いバックエンド開発が挙げられます。現在、FanTech Studioでは計7つのプロダクトのバックエンドを3人で同時に開発・運用しています。

── サイバーエージェントのエンタメテックにおいて、バックエンド開発に求められる要素は何だと思いますか?

ライブ・エンターテインメントをとりまく市場規模は、 コロナ禍以前を超えて急拡大しています。特に、ライブ配信が広く浸透したことで、ユーザーが求める配信クオリティが一層高まりました。ライブ配信においては、コンテンツのクオリティだけでなく、障害の少ない安定したライブ配信が、ビジネスにおける競争力の鍵となっています。

また、 パブリッククラウドでのマルチリージョン構成やCDN活用により、グローバルに向けたコンテンツ配信の技術的課題やコスト面のハードルが下がり、国内外問わず幅広いユーザーにコンテンツを届ける事が可能になりました。

こういった背景の中、我々FanTech Studioのバックエンドエンジニアに求められているのが「ビジネスニーズに対して柔軟に対応できる、汎用性や拡張性の高いバックエンド開発」と言えます。

特に、私が開発責任者として重視しているのが「エンタメテックにおいて、汎用的に展開できるバックエンドのコードベースの開発」です。

バックエンド開発における「汎用性」や「共通化」と聞くと、認証や決済やロギングなど、共通化できる機能を集約した開発基盤というイメージがありますが、エンタメテックにおいては、音楽やスポーツといった「コンテンツは異なるけれど、エンタメという点で共通している事業に対して、ある程度汎用的で、拡張性に優れたバックエンドシステムを提供する」という、ビジネス的なプラットフォームをイメージしています。

エンタメと一言で表現しても、実際には非常に多様なコンテンツや文化が存在しており、それらに適したバックエンドの機能を迅速かつ高品質に提供することが求められています。

── 汎用性のあるバックエンドシステムとは具体的にどんなもので、ビジネス的にはどんなメリットが得られましたか?

例えば「WRESTLE UNIVERSE」で初めてペイパービュー機能を実装したときは、ビジネス視点での売り方のバリエーションの豊富さや、海外通貨に対応した決済はビジネス要件に含まれていませんでしたが、将来的に他のプロダクトでの需要を見越して設計していました。

その際、ペイパービューというビジネスモデル全体を分析し、今後「WRESTLE UNIVERSE」以外のプロダクトやコンテンツでも、開発したペイパービュー機能を再利用できることを意識しました。その結果「チケット早割販売」や「アーカイブ視聴セット販売」など、将来的なビジネスのニーズに対応できるよう、汎用性と再利用性を重視した機能設計とデータモデリングを行いました。

その結果、半年後に「FANBASE ARENA」や「ABEMA Live」でペイパービュー機能を求められた際には、ほとんど追加の実装をせずに提供をすることができました。

もちろん、機能リリース後はいくつか機能追加や仕様変更がありましたが、小さい変更でニーズに追従することができています。

── 機能要件を満たしながら、現段階では非機能要件といえる将来的なビジネスニーズを満たす開発をするためには、開発生産性の向上や工数確保が必要になると思われます。工夫している点は?

機能開発するとき、最初から他のプロダクトへも新機能として導入することを前提に各事業とコミュニケーションを取っています。そのため、近い将来に発生し得る仕様追加をある程度洗い出した上で開発に臨んでいるため、手戻りが少なく済んでいます。また、テストやデプロイといった作業を安全かつ高速に行えるように、開発生産性にこだわった最適化を続けていることが背景としてあります。

FanTech Studioでは、7つのプロダクトを運用しながらも少人数体制を実現するために、一人あたりの開発・運用コストの削減や自動化を徹底しています。

例えば、私のチームで開発しているFeature Flagsでは、非常に柔軟な条件を評価し結果を返すことが可能になっています。バックエンドのコードベース内でFeature Flagsを集約管理しており、TerraformでFeature Flagsを定義すると、コード自動生成によってクライアントコードが生成されます。このコードには、メトリクスの出力やリトライ処理などが含まれており、監視用ダッシュボードと親和性のあるコードが出力されます。Feature Flags以外にも多くの自動生成機構を取り入れており、人為的ミスが生じにくい構成を目指しています。

他にも、SREがいない組織で、7プロダクトの監視を開発と平行して実施するのは非常に大変です。そのためスコーピングプロジェクトを導入することで、問題発見のために監視すべき箇所を限定して効率化したり、オブザーバビリティの向上にも向き合ったりしています。監視用ダッシュボードも、すべてのプロダクトのダッシュボードが統合されており、トグルでプロダクトを切り替えながらメトリクスを確認することができます。
 

バックエンド開発における開発体験と生産性の向上

── 開発生産性の向上や工数確保という点ではどんな工夫をしましたか?

視聴傾向やマーケットの移り変わりが早い事業ドメインでは、新機能の追加やビジネスモデルの変化対応を急ぐあまり、ソースコードのメンテナンス不足やテスト不足、開発資産の肥大化やレガシー化が課題となりがちです。これらを放置すると、技術的負債やセキュリティリスクが生じ、システムがビジネスニーズに対応できなくなる可能性があるばかりか、セキュリティインシデントや致命的な障害の発生で、ビジネス継続すら危うくなるケースも多々あります。

事業的には攻めている裏側で、システム的には後手に回っている状況は、開発者としては何としても避けたい気持ちです。

特にライブ配信のような、その日その場限りの体験に価値があるケースの場合、障害が発生すればユーザーに多大な影響を及ぼすため、システムの堅牢性や安全性は事業継続にとって不可欠になります。

そういった課題に対して、FanTech Studioで特に意識しているのは「コードベースを小さく保ち、モダンな作りに変更できる状態を作り続ける」ことです。

既存のコードに機能を追加する場合、コードの可読性低下やテストの煩雑化など、副次的な弊害も発生しがちです。FanTech Studioでは、拡張性を意識した設計をしているため、複雑な依存関係を持つ処理などは少ないです。しかし、十分にメンテナンスされていないソースコードは、新規メンバーのオンボーディングコストや認知負荷が上がってしまったり、不要なテストによるCIの実行時間増加やバグの温床になったりもします。

大きな機能開発やチームの開発思想がアップデートされるタイミングで、関係する処理に不要になった要素があれば、積極的に捨ててから、新規に設計・開発に着手することを重視しています。

こういったプロセスを経ることで、システム的な制約やリスクをクリアな状態にし、ビジネスニーズへの柔軟な対応だけでなく、システム基盤自体に拡張性や汎用性をもたらす結果になっています。

また、バックエンドエンジニアにとっては、既存の設計やソースコードに縛られず、ゼロベースでアーキテクチャを考え直す機会にもなっています。

── 開発生産性についてはどうですか?

何度も実行するようなCI/CDに関連する繰り返し作業は、特に重要になってくると考えています。複数のコミットを1度にまとめてリリースする場合は、複数の開発者にリリースして問題ないかを確認するコミュニケーションが発生します。実装から時間が経過していると、実装者であっても処理を思い出すのに時間がかかるものです。

一方で、FanTech Studioでは、プルリクエストをマージ後に即本番環境にデプロイする戦略を採っていますが、テスト不足によるバグの混入や、設定ミスを含んだ状態でデプロイが行われた際、速やかに正常系へロールバックできる開発体制が整っていないと、本番環境でのインシデント発生のリスクが高まります。

FanTech Studioでは7つのプロダクトを運営していて、1つの変更による不具合が複数プロダクトに波及してしまう可能性があり、事業全体の損失が大きくなるリスクがあります。また、複数プロダクトでインシデントが発生すると、ロールバック作業に多くの工数を割く必要があるばかりか、再発防止のために、本番環境へのデプロイに対して慎重になり過ぎてしまい、どんどん守りの姿勢が強くなってしまいます。

こういった問題を予防するために、Feature Flagsや環境変数を用いて、特定のプロダクトだけ機能を有効化・無効化することを行っています。また、これらの一時的なフラグは削除漏れが発生しやすいため、コードの消し忘れを予防する自作のlinterを用いて削除漏れを防止しています。このツールを使用することで、脳で記憶しておく必要のないことを積極的に忘れることができ、開発生産性を向上させてくれています。

さらに、ブランチの構造をシンプルに保つことや、テストコードである必要のない品質チェックトリガーは実装しないように、品質担保の手法を最適化することにも取り組んでいます。これにより、コードを把握するための工数を下げ、デプロイまでに必要な人的コストを極力減らすことで、エンジニアが本来の開発に集中できる環境を整えることを目指しています。

インナーソースの技術カルチャーがもたらす透明性の高いコラボレーション

── 2024年8月には「InnerSource Gathering Tokyo 2024」という技術組織に関するカンファレンスに登壇しています。開発組織においてどんな課題が背景にあり、どんな課題解決が模索されているのでしょうか?

インナーソースへの機運は、会社や組織を超えて世の中に浸透しつつあります。これは社内の開発組織に、オープンソースソフトウェア(OSS)のプラクティスを適用し、車輪の再発明の防止などを目的とした社内コラボレーションを目指すアプローチです。私のチームでは、OSSとして開発されている高品質なシステムに対して、自分の組織に特化した小規模なプラグインをインナーソースとして開発することで、運用の工数を低く維持しつつ課題解決を行っています。

例えば、GrafanaやTerraformなどのOSSプロダクトは、プラグインを作成して自社の運用スタイルに合わせて拡張することが可能です。FanTech Studioでも、いくつかTerraform Providerを開発し、運用の効率化を図っています。

その一例として「PipeCD」のTerraform Providerの開発があります。FanTech Studioでは、アプリケーションのデプロイにPipeCDを利用していますが、当時はデプロイ設定を手動で行う必要がありました。複数のプロダクトを同時に開発・運用する私のチームでは、サービスを提供する国が増えた場合や、運用するプロダクトが増えた場合に、PipeCDの設定を追加する必要があり、手動での設定によるミスも発生していました。そこで、Terraformを利用してデプロイ設定に再現性を持たせることを提案し、PipeCDにコミットしながら、Terraform Providerの開発を主導しました。同様の課題を持つ社内のエンジニアとインナーソーシング活動を行い、私のチームに留まらず、社内での課題解決につなげることができました。

Terraform Providerの開発は一例ですが、サイバーエージェント社内でインナーソース文化が浸透していくと、事業部やプロダクトの壁を超えた透明性の高いコラボレーションが発生し、ソフトウェアの堅牢性や品質の向上、車輪の再発明の防止により、レバレッジの高い開発が期待できます。 

── インナーソースの考え方は事業プロダクトにも適用されますか?

インナーソースは、共通ライブラリやプラグインの領域に留まりません。
 

サイバーエージェントにおけるインナーソーシングの取り組み

上記スライドは「InnerSource Gathering Tokyo 2024」でお話しした内容になりますが、FanTech Studioが開発している共通のバックエンド資産は、複数の事業によってインナーソーシングされています。バックエンドリポジトリ全体をインナーソーシングすると、事業に特化した機能を開発できないのでは、と思われるかもしれませんし、実際にその難しさがあります。

そのため、機能設計する際には、ある程度汎用的な機能設計や、プロダクトによってオプトインできるような仕組みで設計する必要があります。難易度の高い設計が必要ですが、得られる知見は非常に大きなものになると思います。

また、事業サイドとのコミュニケーションも非常に重要で、バックエンドは共通資産であることを前提として、各事業とあるべき仕様について話すことが多々あります。事業特化な機能を設計することが難しい一方で、1度開発した機能が複数プロダクトで再利用できる魅力に共感を得られていることも、現在の体制が成立している要因として大きいです。

この記事をシェア

オフィシャルブログを見る

記事ランキング

未来のクリエイターへ贈る実践的カリキュラム!日藝×サイバーエージェントが仕掛ける、学生の未来を拓く産学連携

技術・デザイン

~クリエイターのビジネス視点を育む講座「芸術総合講座Ⅳ コンテンツビジネス実務」レポート~

Page Top