ちょっと遅刻してしまったけど、21日にAbemaTV Developer Conferenceに参加してきました。 (ほとんど個人のメモです。)
感想
先に感想だけ書いておきます。
※ 僕向けのメモよりスライド探したほうがわかりやすいと思うので(笑)
感想としては、 Abemaのモニタリング、負荷対策の仕組みがマジですごかったこと。
AbemaTVのような大規模サービスをどう監視しているのかに、興味があったので、モニタリング関連のセッションは非常に勉強になりました。
特に、セッション中にOSS化されたpromvizはデモ含めてすごくUIがめちゃめちゃイケてました。
いやほんと超かっこいい。
AbemaTVはPrometheusを使ってたんですね。
iOSアプリもデイリーで7~8個PRマージしてるとか、開発もすごい活発に行われている印象を受けました。
AbemaTVといえば何度かダウンしたこともあったけど、その時のことも語られててました。
来月も「72時間ホンネテレビ」というどでかいトラフィックが来るイベントがあるので是非、来年のConferenceでそのあたりについても話が聞きたいなーと思います。
以下自分向けのメモ
iOS開発
- 1monthで162個のmerge。
- 営業日換算で7~8個のPRがマージされている。
毎日大量のコードが変更されいる。
- 開発フローはスクラム
- 開発とQAの期間の重複があると厳しい
- QA期間中にフライングする開発も可能
- 長期間に渡る開発はスプリントをまたぐ
タスクにはストーリーポイントを付けている。 * 大雑把な付け方をしているけれども。
優先度判断については共通言語、共通指標を持っている * 優先度を決める時に、非エンジニアとのコミュニケーションも円滑になる。
レビューはしっかりルール化されている。 * レビューは活発な文化
デザインについて
iOSアプリをAndroidに寄せている * bottom sheetとか * スマホの大画面化に合わせて、全画面モーダルは避けれる傾向にある。 * マテリアルデザインのデザインシステムは非常に優れている。
Web * モバイルページでのアプリDL率向上について * twitterからの流入率は高い。しかし、twitterから来たユーザーのDL率が低い * twitterから流入したユーザーのDLを上げた * ちょっとtwitterからのLPを変更したくらい * エンジニアの工数をほとんど使わずに大きな効果を出せた事例
- UI変更に抵抗はない
- UIが急に変わっても、時間が経って文句を言い続けている人はいない
- ユーザーは慣れる、変更による使いやすさの恩恵も受ける
- 変化を恐れることは悪
abemaTVにおけるモニタリング
- コンポーネント間はgrpcを使っている。
モニタリングシステムの進化 * 最初半年くらいはstackdriver * abemaはほぼすべてのレイヤーでモニタリングしたい * Prometheus + grafana * kubernetsと親和性が高い * PromQLが使いやすい * sqlライク * Exporterを作りやすい * AlertManagerがある
- stackdriverのモニタリングもPrometheusで監視している。
クラスタ全体のトラフィックの状態がわかりにくい * Prometheusのデータからデータを可視化したい。
Microservices下におけるWebの負荷対策
- 負荷対策
- 亀田興毅でwebが死んだ
- 藤井四段でwebが死んだ
webのシステム構成
- nginx + node + grpcで構成
webのサーバーリクエストをどうスケーリングさせるのか?
- LBレベルも通らないキャッシュが必要なのでは?
- CDNが必要になってくるのではないか?
- GCPは東京リージョンがあるよ
- キャッシュミス
- レスポンシブが合わない
- PCとスマホで出し分けが存在する
- フロントエンドエンジニアができることは限りがある。
- 負荷対策はパフォーマンス改善につながる
- 負荷対策は運用時の登竜門
MPEG-DASHで行うリニア配信
- MPEG-DASHとは
- 会場の方で動画関連の方が使っているのは大体HLS
MPD
- media presentation description
- mediaで定義されているメディアに関する情報を記述するxml
- type
- dynamic -> 定期的に取りにいく。生放送に使われる
- static -> 取りに行かない。
abemaTVにおけるリニア配信技術とは?
- リニア配信とは
- 予め決められた番組表に則って配信を続ける方法
- mpeg-dashをどうしてabemaで対応したか?
- abemaTVではマニフェストファイルを逐一作る必要がある。
- ts -> mp4 -> init.m4s/ medeia.m4s の2つを作る。
- 生放送のCMがどこに入るのかわからない
- tsが知っている。
配信品質管理
- トラブルが起きる箇所
- 配信トラブルをいち早く検知するのは?
AbemaTVの裏側
- 負荷試験について
- ヒット企画が多いが、
- 負荷対策の試練
- ヒット企画が多いが、
- 負荷試験