Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
家族の思い出を形にする 〜 1秒動画の生成を支えるインフラアーキテクチャ
Search
Ojima Hikaru
August 07, 2025
Technology
3
1.5k
家族の思い出を形にする 〜 1秒動画の生成を支えるインフラアーキテクチャ
Ojima Hikaru
August 07, 2025
Tweet
Share
More Decks by Ojima Hikaru
See All by Ojima Hikaru
Railsの限界を超えろ!「家族アルバム みてね」の画像・動画の大規模アップロードを支えるアーキテクチャの変遷
ojima_h
5
670
Podのオートスケーリングに苦戦し続けている話
ojima_h
1
330
ディメンショナルモデリングのすすめ
ojima_h
8
4.7k
モンスターストライクを支えるデータ分析基盤と準リアルタイム集計
ojima_h
7
5.7k
データ分析基盤の変遷とデータレイクの作り方
ojima_h
2
1.9k
Other Decks in Technology
See All in Technology
JOAI発表資料 @ 関東kaggler会
joai_committee
1
250
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
30k
Goss: Faiss向けの新しい本番環境対応 Goバインディング #coefl_go_jp
bengo4com
0
1.4k
サイボウズフロントエンドの横断活動から考える AI時代にできること
mugi_uno
4
1.4k
マイクロモビリティシェアサービスを支える プラットフォームアーキテクチャ
grimoh
1
190
Webアクセシビリティ入門
recruitengineers
PRO
1
160
GCASアップデート(202506-202508)
techniczna
0
250
トヨタ生産方式(TPS)入門
recruitengineers
PRO
1
150
いま、あらためて考えてみるアカウント管理 with IaC / Account management with IaC
kohbis
2
680
Android Studio の 新しいAI機能を試してみよう / Try out the new AI features in Android Studio
yanzm
0
260
Understanding Go GC #coefl_go_jp
bengo4com
0
1.1k
LLMエージェント時代に適応した開発フロー
hiragram
1
400
Featured
See All Featured
How GitHub (no longer) Works
holman
315
140k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
480
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1.1k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Gamification - CAS2011
davidbonilla
81
5.4k
Designing for Performance
lara
610
69k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Transcript
©MIXI 家族の思い出を形にする —1秒動画の⽣成を⽀えるインフラアーキテクチャ 2025/08/07 インフラアーキテクチャ選択のジレンマ
©MIXI ⾃⼰紹介 ⽣島 光 @ojima_h 2019年から『家族アルバム みてね』のSREグループで活動しています。 データ分析基盤の構築、EKS移⾏、CI/CDの改善などに関わってきました。 海が好きです。 3児の⽗です。
©MIXI 『家族アルバム みてね』について * iOS‧Android™ アプリ登録者数、ブラウザ版登録者数の合計
©MIXI 『家族アルバム みてね』について 1秒動画 フォトブック 写真プリント
©MIXI 今⽇のテーマ 1秒動画の⽣成を⽀えるインフラアーキテクチャにおける様々な⼯夫とジレンマ を紹介します - ⼤量の写真‧動画データを扱う⼤規模なバッチ処理における⼯夫 - 機械学習やBigQueryなどの複数の技術スタックとの連携 - ⼤量のジョブフローをリソース効率よく処理する⼯夫
©MIXI 今⽇は話さなないこと 1秒動画を⽣成するためのアルゴリズムなどについては話ません。 1秒動画のつくり⽅ ― 「家族アルバム みてね」における動画エンコードパイプラインと その最適化事例 | gihyo.jp
BigQuery で1秒動画の配信対象家族を爆速で抽出する / How to create 1sec movie schedules with bigquery - Speaker Deck いい感じの素材選択ロジック / How to select videos for 1sec Movie - Speaker Deck 「家族アルバム みてね」年間版1秒動画2023 ⼤量配信の裏側 - Kyohei Hamada - Medium
©MIXI インフラアーキテクチャ概観
©MIXI ステージ1:画像‧動画アップロード アップロードされた写真‧動画を保存 し、スコアリングなどを⾏う ステージ2:対象家族抽出処理 1秒動画⽣成の対象となる家族を抽出し、 ジョブキューに積む ステージ3:1秒動画⽣成 スコアを元に素材となるメディアを選択‧ 加⼯‧結合し、最終成果物となる1秒動画
を⽣成 3つのステージ
©MIXI ステージ1:画像‧動画アップロード アップロードされた写真‧動画に対してスコアリングやタグ付け
©MIXI アーキテクチャ詳細 メインサービス - サムネイル⽣成 - アップロード完了通知 解析パイプライン - 画像‧動画に含まれる顔情報など
を分析しスコアを算出 - 算出されたスコアは「メインサー ビス」のDBに保存 - 複数のMLモデルをジョブオーケス トレータにより統合 各コンポーネントはSQSにより結合 - リクエスト送信⽤とレスポンス受 信⽤の2つのSQSキューのペア
©MIXI Amazon S3 99.999999999% の耐久性 - データを⽋損することなく保存で きることが何より重要 スケーラビリティ -
⼤量の画像‧動画のアップロード や閲覧のリクエストを遅延なく処 理 - ⼤規模なバッチ処理の読み取り負 荷に耐えられる 様々な機能 - 署名付きURL:クライアントから 直接アップロード - CloudFront:快適な閲覧体験
©MIXI 異なる技術スタック メインサービス - 単⼀のRailsアプリケーション - いくつかのAPIサーバー‧Web サーバー - ⾮常に多数のジョブワーカー
- Sidekiq - Shoryuken 解析パイプライン - ジョブオーケストレーター ‒ Railsで実装 - 解析器 ‒ TensorflowやPyTorch などそれぞれ個別の技術で実 装。リポジトリも独⽴。
©MIXI 異なる技術スタック バックエンド全体の管理が複雑化 - メインサービスと解析パイプライン でそれぞれ保持するデータベース 間の整合性 - リポジトリごとにCI/CDを整備 -
セキュリティアップデートなどのメ ンテナンス サービス・リポジトリを分割することによる 柔軟性と、それと引き換えの管理コスト
©MIXI ステージ2:対象家族抽出 1秒動画⽣成の対象となる家族を抽出し、ジョブキューに積む
©MIXI アーキテクチャ詳細 対象家族をBigQueryで抽出 - 素材が少ない家族は対象から外 す - ⾮常に複雑なクエリ 初めはRDBを使⽤していたが、 BigQueryへ移⾏
- DB負荷への懸念が解消 - メインサービスから分離 - 実⾏時間の劇的な短縮
©MIXI MySQL→BigQuery ⼀⽇1回のETL処理により、Aurora MySQL からBigQueryへデータ転送 - MySQLのデータサイズは数TB - Apache Spark
を Kubernetes 上で5時間ほどかけて実⾏ 運⽤負荷が課題
©MIXI ステージ3:1秒動画⽣成 スコアを元に素材となるメディアを選択‧加⼯‧結合し、最終成果物となる1秒動画を⽣成
©MIXI アーキテクチャ詳細 いくつものステップで構成 1. 素材選択 2. 回転や切り抜きなどの整形処理 3. タイトルやBGMを追加 4.
etc… 各ステップは Sidekiq Job として実装 全体を Sidekiq Batch により統合 ジョブの並列分散実⾏により1秒動画 の⽣成時間を短縮
©MIXI 課題 ⼤量のジョブの処理が課題 - 数百万の家族に対するバッチ処理 - ジョブは複数のステップにわたる
©MIXI Amazon EKS コンピュートリソースの安定供給が必 要 - Amazon EKSを利⽤ - ジョブキューの⻑さに応じて即
座にスケールアウト - スポットインスタンスの利⽤ キャパシティプランニング - ノードも多数起動する - Cluster autoscaler のメ モリ不⾜ - スポットインスタンスの クォータ - 定常時とは異なるリソース使⽤ 状況が発⽣することに注意
©MIXI ジョブキュー構成の⼯夫 BEFORE: - 全てのステップを単⼀のジョブキューに 追加 - 1つ⽬のステップで全てのジョブが完了 するのを待ち、次に2つ⽬のステップで 全てのジョブが完了するのを待ち‧‧
- 最終的な1秒動画が出来上がりを確認で きるまでにかなりの時間が必要 - AFTER: - 1つ⽬のステップだけ優先度の低いジョ ブキューを利⽤ - 1つのジョブが全てのステップを完了し たら次のジョブへ‧‧ - 1秒動画の⽣成が完了次第順次配信す る、といった運⽤も可能に
©MIXI まとめ
©MIXI まとめ - 信頼できる基盤に⽀えられている - Amazon S3 - Amazon EKS
- 複数の技術スタックを組み合わせることのトレードオフ - MLパイプライン - BigQuery - 継続的なチューニングが⼤切 - ジョブキューの構成など
©MIXI https://team.mitene.us WE ARE HIRING!!! SREメンバー募集中!
©MIXI ありがとうございました