記録的な猛暑が続いた夏もおわり、本格的な秋へと突入しそうですが、皆様いかがお過ごしでしょうか?
メディア広告部門(MDH)アドテクノロジー局ダイレクトチームの桑原です。
今回は7/13に開催した 「アドテク×インフラアーキテクチャ – オレシカナイトVol.7」のレポートと次回開催のお知らせをしたいと思います。
– オレシカナイトとは?
オレシカナイトは「AbemaTV」や「Ameba」をはじめとしたサイバーエージェントグループが運営するメディアにおいて、パブリッシャー独自の視点でアドテクノロジー開発を行うエンジニアの横断組織 「Cyberagent Publisher adTechnology Associaion (PTA)」が主催する技術者向け勉強会です。
2か月に1回の頻度で開催しており、今回で7回目となりました。テーマは「アドテク×インフラアーキテクチャ」です。
インフラは、アドテク業界に限らずWebにおいて非常に重要、かつサービスの基幹を成すテクノロジーであり、以前は自前でサーバを立てていたサービスが多かったと思いますが、近年はAWS (Amazon Web Service)やGCP (Google Cloud Platform)などを代表とするパブリッククラウドへの移行が進んでいるのが時の流れを感じさせますね。
– 1.マスターデータのキャッシュシステムの改善の話
(株式会社AJA AJA SSPエンジニアリーダー 伊藤皓程)
まずはAJA伊藤より、AJAのサービスのグロースに伴って増えていったシステムの課題と対策について発表しました。
AJAとは、メディア側のアドテク事業 (レコメンドやSSP、PMPなど)を行うサイバーエージェントの子会社です。今回は提供している「AJA SSP」(参考:https://aja-kk.co.jp/service/aja-ssp)で使用しているマスタデータをキャッシュする機能について紹介しました。
マスタデータへのアクセス数が増えた際にAPIサーバはAWSのオートスケーリングで台数が増加するのですが、マスタデータを格納しているAuroraはスケールしないのでReaderのCPU使用率が100%に張り付いてしまい、最終的にAuroraを参照・更新しているバッチがタイムアウトを起こし失敗するという状態になっていました。
また、マスターデータのバリデーションチェックをAPIサーバで行なっていたので、異常なデータが入っているとキャッシュ自体が出来なくなり、さらにこの状態でオートスケールしてしまうとゾンビインスタンスが大量に作成されてしまうという問題も発生していました。
そこで、AWS Lambdaでキャッシュリローダーを作成し、Auroraへのアクセスは5分毎に固定、取得したデータをバリデーションにかけて、問題ない場合はjson形式でエンコードしたのちにgzip圧縮してS3に保存するようにしました。
これにより、APIサーバが増えてもS3の圧縮済みのマスタデータを参照するためAuroraには影響が出ず、バリデーションエラーの場合でもAPIはコケることなくマスタデータを取得できるようになりました。
アクセス数増大問題はwebサービスでは頻出の課題だと思いますが、対処法のひとつとして参考にしていただければと思います。
– 2.成長フェーズと選択した技術のお話
(株式会社サイバーエージェント MDH 石橋弦樹)
次に、当社石橋より「AmebaDSP」の開発について、「立ち上げ」「事業継続危機」「再編成とこれから」の各フェーズにおける課題と所感について発表しました。
「AmebaDSP」の立ち上げ時は、とにかくリリーススピードを最優先にしていたそうです。ログの収集加工や集計、配信や計測のロジックなどの実装に与えられた開発期間はわずか4カ月。Golangの採用によって学習コストを削減し、ElasticBeanstalkでインフラ管理コストを削減し、Datadogを活用してシステムの状態管理を容易にすることでなんとかリリースすることができたということです。
しかし、急激な立ち上げと新機能追加によって技術的負債が溜まっていき、テストも書かれていないのでバグの温床に。ついには、低迷する売り上げによりプロダクトのクローズの危機を迎えたこともあったそうです。
そこからPDCAを回しつつ、まずは基盤の整備と負債を返済するフェーズ、売り上げを伸ばすフェーズにわけ、タスクの優先度をつけて順次対応を済ませていったことで、売上拡大に成功してプロダクトのクローズを回避できたとのこと。
チームの再編成を経た現在も解決すべきことは山積みで、分析基盤の整備やコスト削減、後発のDSPとして独自の武器作りなどを今後の強化ポイントとして挙げていました。
– 3.GKEを使った開発における継続的デリバリー
(株式会社AbemaTV 広告本部リードエンジニア 福永亘)
最後に、AbemaTVのリードエンジニア、福永からAbemaTVにおける継続的デリバリーの導入事例を紹介させていただきました。
継続的デリバリーとは、DevOpsソフトウェア開発手法の1つで、コードに変更が発生すると、自動的にビルド、テスト、および本番へのリリース準備が実行されるという仕組みのことです。
詳細は資料に委ねますが、デプロイはchatOpsを採用し、slack上でbotと対話形式でパラメータを選択するとデプロイが実行される仕様にしているとのことで、この部分はかなりユニークではないかなと思います。
今後はさらに、kubernetesの管理を自動化したり、CIツールをDroneから別のツールへ変えたりしたいとのことでした。質疑応答も大いに盛り上がりました。
– 懇親会 & LT
すべての発表が終了し、軽食と飲み物を配られ懇親会がスタートしました。参加者各位、各々交流していただけたようで、気付けば時計は22時を過ぎ…。さらに今回は交流を深めたい有志の方々で二次会が開催されたようです。
懇親会の和やかな雰囲気の中、MDHアドテクノロジー局の小林から「Crystalでスケジュール同期」、同じくMDHアドテクノロジー局の林から「サイバーエージェント技術課題解決会議2018(プルリクサミット)振り返り」というテーマでLT発表させていただきました。
オレシカナイトでは、LTをしていただける方をゆるく募集していますので、ご興味のある方はConnpass経由でご連絡いただければと思います!
以上「アドテク×インフラアーキテクチャ – オレシカナイトVol.7」のレポートでした。
今回都合が悪く来れなかった方は、ぜひ次回のオレシカナイトにご参加ください。
– オレシカナイト Vol.8
というわけで、次回のオレシカナイトは10月12日(金)に開催されます!
テーマは、「開発プロセス」になります。
参加希望の方は以下のURLからエントリーください。
URL https://cyberagent.connpass.com/event/101153/
公開と同時に席が埋まってしまう場合があるので、興味のある方はConnpassのサイバーエージェントアカウントをフォローしましょう!
みなさまのご来場お待ちしております。
Profile:
株式会社サイバーエージェント
メディア広告部門(MDH) ADテクノロジー局
エンジニア
桑原大輔
▼メディア広告部門(MDH)
Ameba Ownd:https://ameba-ad-pr.amebaownd.com/
Facebook:https://www.facebook.com/AmebaAds.CyberAgent/
Twitter:https://twitter.com/amebaads_pr
▼PTA
Twitter:https://twitter.com/PTA_CyberAgent