デブサミ2019 2日目(02/15)メモ 13:05〜 3周年に突入するAbemaTVの挑戦と苦悩

  • スライド https://speakerdeck.com/miyukki/the-challenge-and-anguish-of-abematv-celebrating-the-third-anniversary

  • みゆっきさん

    • コンテンツ配信チーム
    • 趣味でも配信
  • 新デバイス

  • 赤い人はテックリード
    • レビューしたり他メンバーからの質問を受け付けたり
  • GCPを使っている
    • L7LB
    • GKE
    • 帯域に対するコスト
    • 開発当初は東京リージョンがなかったので台湾リージョンを使っていた
      • ネットワークの速度や安定性に難あり
      • レガシーネットワークは移行のコストが高い
  • Java→Node→go

    • goのパッケージ管理はgodep→dep
    • go本体のリリースサイクルが早い(半年)

    • マイクロサービス

      • 80個ぐらい
      • コンテナ化
      • 機能毎のリリース

      • 共通ロジックをどう管理するか?

      • 負担の大きいサービスを分解する

  • GKE

  • mongo DB

    • Cloud Manager
    • シャーディング、レプリカセット
    • CPU16コア、メモリ60GBを60台
    • クラスタ

      • ユーザー
      • コメント
      • 配信
    • 管理

      • mongos
      • コネプー
    • スキーマ設計は慎重に
    • イケてるgoライブラリがない
  • cache

    • in memory
      • アプリ側
        • 番組表とか
    • redis
      • 今はmanaged serviceがあるけど、開発当初はなかった。
      • セッション管理
      • ロック
      • ネットワーク負荷対策
      • クラスタドメインによって分ける(mongoDBと同じ分け方)
  • terraform

    • GCPの構成管理
  • packer

  • ネットワーク

    • クラサバ通信
      • 開発当初はgRPCが使えなかった
        • バックにhttp2.0を流せなかった
          • 今はできる
    • プロトコルバッファ

    • CDN

      • akamai media delivery
      • API Cloud CDN(?)
        • チェックつけるだけで使える
    • 広告

      • リニア型
        • SSAI(server side)
        • 規格はVAST
      • VOD型
        • CSAI(client side)
        • シーク制御が難しい為
        • google IMA(?)
        • VAST
  • CI/CD

    • codeship
      • バックエンド
        • テスト
        • イメージ作成
    • deploykun
      • 社内製ツール
      • ChatOps
        • PR→codeship→GKE
  • モニタリング

    • bugsnag
    • Google Cloud Monitoring
    • 異常検知
      • slack
      • エンジニアにコール
      • 担当外の人にコールが行ったり
    • pagerduty
      • インシデント管理
      • 画像が貼れない
  • ログ

    • アプリ
      • 1
        • fluentd
      • 2
        • Cloud PubSub
          • カスタムカラム追加が難しい
        • BigQuery
          • キャパが心配
        • Streaming Inserter
          • 運用管理
      • 3
        • 新ログシステム
          • Cloud Dataflow
          • Cloud Storage
          • BigQuery
          • apache avro
            • スキーマ込み
            • BigQueryがavroファイル取り込みをサポートしている
  • メトリクス

    • staticdriver
      • redis, mongoDB
    • prometheus
      • アプリ
      • grafana
  • 今後

    • 挑戦と苦悩

      • 規模拡大
        • キャパ、マネジメント
      • 安定化
      • 老朽化
        • ミドルのEOL
        • 古いアーキ
    • 目指すアーキ

      • 配信レイヤーの全二重化
        • ユーザーの直前まで二重になっているべき
      • チャンネル別リソース
      • オートスケール
        • 過去の実績に基づいてスケール