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
2k
家族の思い出を形にする 〜 1秒動画の生成を支えるインフラアーキテクチャ
Ojima Hikaru
August 07, 2025
Tweet
Share
More Decks by Ojima Hikaru
See All by Ojima Hikaru
Railsの限界を超えろ!「家族アルバム みてね」の画像・動画の大規模アップロードを支えるアーキテクチャの変遷
ojima_h
5
990
Podのオートスケーリングに苦戦し続けている話
ojima_h
1
370
ディメンショナルモデリングのすすめ
ojima_h
8
4.8k
モンスターストライクを支えるデータ分析基盤と準リアルタイム集計
ojima_h
7
5.8k
データ分析基盤の変遷とデータレイクの作り方
ojima_h
2
1.9k
Other Decks in Technology
See All in Technology
Oracle Cloud Observability and Management Platform - OCI 運用監視サービス概要 -
oracle4engineer
PRO
2
14k
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
1
190
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
570
Webhook best practices for rock solid and resilient deployments
glaforge
1
250
クレジットカード決済基盤を支えるSRE - 厳格な監査とSRE運用の両立 (SRE Kaigi 2026)
capytan
6
2.4k
オープンウェイトのLLMリランカーを契約書で評価する / searchtechjp
sansan_randd
3
640
Mosaic AI Gatewayでコーディングエージェントを配るための運用Tips / JEDAI 2026 新春 Meetup! AIコーディング特集
genda
0
150
We Built for Predictability; The Workloads Didn’t Care
stahnma
0
130
顧客の言葉を、そのまま信じない勇気
yamatai1212
1
320
セキュリティ はじめの一歩
nikinusu
0
1.5k
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1k
(金融庁共催)第4回金融データ活用チャレンジ勉強会資料
takumimukaiyama
0
120
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Everyday Curiosity
cassininazir
0
130
SEO for Brand Visibility & Recognition
aleyda
0
4.2k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
3.9k
Believing is Seeing
oripsolob
1
50
Designing for Performance
lara
610
70k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
160
The Curious Case for Waylosing
cassininazir
0
230
How GitHub (no longer) Works
holman
316
140k
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 ありがとうございました