はじめに
本記事は、22卒1年目の成長シリーズ 6日目の記事です。
22年にRe:Carrer入社して、ABEMAでサーバーサイドエンジニアとして、主に広告サーバ開発に従事しているdnakanoです。(Re:Carrer ≒ 第2新卒、なので厳密には22卒ではないです。ちなみに前職は全く違う分野のエンジニアでした)
この記事では、入社後関わったABEMAの新ライブ配信サーバに向けの広告配信サーバを新規開発した話を通して、若手の実際の業務内容や、やりがいを感じとってもらえればと思っております。
開発したもの
「FIFA ワールドカップ カタール 2022」に向けて、高画質化、負債解消等の理由でライブ配信システムが新規構築されました。
広告配信サーバについても既存のリニア・VODといった放送形式とは異なる要件で新規開発となり、幸運にも入社1年目の自分が担当させていただけることになりました。
難しかったポイント
既存システムを活かしつつ、今後の進化を見越した設計をする
ABEMAの広告システムはマイクロサービス構成をとっており、今回はマイクロサービスを追加する形で開発を進めました。既存のリニア・VODの広告配信に利用しているマイクロサービス群全体の機能・責務を把握した上で、マイクロサービスを追加する必要がありました。
具体的には、以下の点を意識した設計を行いました。
- 既存のマイクロサービス群・ドメインロジックと親和性の高い、適切な責務・インターフェイスの設計
- 将来の配信機能進化を見越した設計
- 廃止予定のマイクロサービスの機能の移行を見越した設計
特に、「FIFA ワールドカップ カタール 2022」時点では、全試合を手動配信設定するという限定的な要件のみでしたが、その先の配信機能進化(パーソナライズ配信化やインタラクティブ広告機能の実現)を見越し、すでに同様の機能を実現しているリニア放送の機能を活用できるようなインターフェイスを意識して実装しました。
その結果、既存のリニア放送で用いているコンポーネントの「広告チャンス」の概念を抽象化し、同一の配信ロジックを既存マイクロサービスを活用することで、少ない工数で自動配信やパーソナライズ配信の開発を進めることができています。
また、手動配信設定の管理やバリデーションを行うマイクロサービスについては、廃止予定のコンポーネントの機能の一部を担えるようにロジックを抽象化した形で実装しており、将来的にはリニア放送のロジックも統合できる予定です。
新規開発部分だけではなく、システム全体を全体をキャッチアップし、適切ポイントを探りながら設計を進めていくのは、経験の浅い自分には難しいながらも、エンジニアとしての面白みが詰まった業務でした。
落とせないシステム
「FIFA ワールドカップ カタール 2022」は全試合完全無料配信を行ったため、直接的な収入として広告が大きな部分を占めました。また、コンテンツの内容上、広告主様の期待も大きいため、いつも以上に確実に広告を配信しなくてはいけないというプレッシャーのかかるプロジェクトでした。
そのため、実装時には手厚く単体テスト、QA、負荷試験行うのはもちろん、実運用時に向け、
- CMチャンスに対し不正なレスポンスが発生した場合のPagerDutyインシデント作成
- 万が一広告が取得できなかった場合のフォールバック的な埋め映像の配信
- 関連コンポーネントのダッシュボード、配信内容のダッシュボードを作成、生配信中の監視
- 不正な広告設定がされていないか、定期的に確認するSlackBotの作成
等の対策を行いました。結果としても、全試合大きなトラブルなく配信することができ、大きな達成感につながりました。
関わる人が多い
私(のチームも含む)の担当領域としては、広告配信設定の管理(画面・DB)、広告動画のトランスコード、動画配信サーバに向けた広告配信、広告ログの集計基盤でした。
逆にいうとSSAIによる広告挿入や、プレイヤーからの広告ログ発火などは他チームの担当領域であり、チーム間での要件や制約のすり合わせが多く発生しました。
広告の知識だけでなく動画配信・プレイヤーの背景知識を仕入れながらコミニュケーションをとる必要があり、なかなか大変でした。実際に、動画トランスコードの設定や、広告ログのトークンの仕様などを起因として問題が起きることもあり、迷惑をかけることもありましたが、多くの優秀なエンジニアの方々と一緒に仕事をさせてもらえたのはとてもいい経験でした。
また、システム的な面以外にも、特定のCM前後に大会のバンパー映像を流す等、広告の内容自体の要件も複雑なものでした。
特に「FIFA ワールドカップ カタール 2022」におけるライブ配信では、全試合の広告設定を手動で設定する方針でした。膨大なオペレーションの工数を下げる工夫やオペミス対策を考慮した配信設定フローや管理画面を構築する必要がありました。
オペレーションの担当者とのすり合わせを重ねていく中で、単に広告配信サーバを構築するだけではなかなか意識することがない、ユーザ目線を持った開発を経験するためのいい機会になりました。
まとめ
新卒入社エンジニアの成長事例として、ライブ配信向け広告配信サーバの新規開発を行った際のことをまとめてみました。
この一年では、他にもやりがいのあるタスクいろいろやらせていただき、楽しみながら、大きく成長できました。
今後も、さらに大きな課題に立ち向かって成長していけたらと思います!
一緒に働くエンジニアを募集しています
25卒以降の学生を対象としたプレエントリー受付中。
選考情報などをいち早く受け取れます。
24卒も一部職種は現在も受け付けておりますので、こちらよりご確認ください。
また、社会人向け新卒採用制度「Re:Career」や、キャリア採用の求人一覧、カジュアル面談もございます。
インターンシップも!
サイバーエージェントでは、現在インターンシップの募集をしております。
どのインターンシップも共通している特徴は4つ!
- 社員が全力
- 社員との接点が多い
- 視座の高い仲間に出会える
- 交通費支給・宿泊場所手配
内容も数日で終わるものから2週間のもの、職種や難易度もさまざまなので、
自分に合うものを見つけてぜひエントリーをお待ちしております。