Upgrade to Pro — share decks privately, control downloads, hide ads and more …

老舗VODプラットフォームのモダナイゼーションへの挑戦

abe
September 17, 2021

 老舗VODプラットフォームのモダナイゼーションへの挑戦

abe

September 17, 2021
Tweet

Other Decks in Programming

Transcript

  1. サービス紹介 • サービス事業 ◦ ビデオマーケット ▪ 配信本数は国内最大の 24 万本以上の動画配信サービス ▪

    有料会員には毎月50作品レンタル可能なクーポンを配布中 ◦ ミレール ▪ D2C型の都度課金型動画配信サービス • プラットフォーム事業 ◦ music.jp、GYAOストア、DMM動画への配信システムを提供
  2. 現状 • ガラケーの仕様を踏襲しレガシー化したシステム ◦ レガシー化の原因→時代の流れに対応する速度重視の開発 ▪ 対応デバイスを増加させてきた • 都度、別のWEBアプリケーションとして作成されるためバックエンドが肥大化 •

    別々のため機能追加にデバイス種別分工数がかかり非効率的 ▪ 保守性の低さ • ライブラリ等バージョン管理難しい状態で作成され、既に手が入れづらい状況 • メンテナンスやバージョンアップすることが考慮されていない • 指標が収集しづらく、改善点が見つけづらい
  3. 対応デバイスの歴史 2006年3月 ガラケー向けVODサービス開始 2008年8月 iPhone3G発売 2009年7月 Android初上陸 2010年10月 iOS向けVODサービス開始 2010年12月

    Android向けVODサービス開始 2011年11月 世界初スマホ向けHD配信サービ ス開始 2014年1月 PC向けVODサービス開始 2014年5月 Chromecast販売開始 2015年2月 AndroidTV日本販売開始 2015年2月 AndroidTV向けアプリ配信開始 2014年10月 Chromecast対応 2017年9月 「DOLBY ATMOS」に対応 2017年11月 tvOS向けアプリ配信開始 2011年10月 au初のiPhone4s販売開始 2009年6月 人気の火付け役iPhone3GS発売
  4. こうしたい:’という共通を追加する場合 A B C 機能D 機能E 機能F A B C

    機能D 機能E’ 機能F サービスをデバイ スごとではなく、 機能ごとへ Eの改修のみ!
  5. 可用性 • 課題 ◦ 多くを手動で管理する必要がある ▪ 想定以上のスパイクが発生した際のスケールアウト時にサーバーの増設や LBの設定が必 要。スケールインも同様 ▪

    インフラチームの負担が多く新しいサービスを追加しずらい ◦ アプリケーションログが分散、パフォーマンス管理ができていない →マネージドサービスを利用し、運用の可用性を高める
  6. MicroService • Backend API群 • 開発言語はKotlin ◦ 技術スタックとしての知見や利用実績 • gRPCサーバー

    ◦ .protoファイルは個々のリポジトリで管理 • DBは既存サービスのものを使用
  7. 通信方式 • Client <ー> BFF はgraphQL ◦ 1リクエストで複数リソースにアクセス可能 ◦ クライアント側で欲しいデータを絞れる

    ◦ 以前開発したiOS向けサービスと要件がほぼ一緒、ある程度流用可能 • BFF <ー> MicroService はgRPC (一部graphQL) ◦ HTTP/2で高速化 ◦ protoファイルによりIFの共有を強制
  8. Multi Cluster Ingress • マルチクラスタ(マルチリージョン)間のHTTP(S)負 荷分散するためのサービス • フリートに登録されているクラスタに対してトラ フィックをルーティング ◦

    フリートは論理的にグループ化して管理するリソース ◦ 現時点でフリートメンバーになれるのは Kubernetesクラ スタのみ ◦ 本サービスは国内限定のサービスなので、東京リージョ ンクラスタと大阪リージョンクラスタを登録
  9. Multi Clusterの導入目的 • 分離 ◦ 信頼性の向上、セキュリティの要件を満たすためサービスのコントロールプレーンとデータプレーン を分離する • ロケーション ◦

    可用性、レイテンシ、局所性のニーズに対応するため、特定のロケーションにサービスを配置する • スケーリング ◦ 特にKubernetesクラスタのコンテキストで、単一クラスタで生じる制限を超えるサービスのスケーリ ング cf. https://cloud.google.com/anthos/multicluster-management/use-cases
  10. Multi Clusterの導入目的 • 分離 ◦ 信頼性の向上、セキュリティの要件を満たすためサービスのコントロールプレーンとデータプレーン を分離する • ロケーション ◦

    可用性、レイテンシ、局所性のニーズに対応するため、特定のロケーションにサービスを配置する • スケーリング ◦ 特にKubernetesクラスタのコンテキストで、単一クラスタで生じる制限を超えるサービスのスケーリ ング cf. https://cloud.google.com/anthos/multicluster-management/use-cases