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.9k
家族の思い出を形にする 〜 1秒動画の生成を支えるインフラアーキテクチャ
Ojima Hikaru
August 07, 2025
Tweet
Share
More Decks by Ojima Hikaru
See All by Ojima Hikaru
Railsの限界を超えろ!「家族アルバム みてね」の画像・動画の大規模アップロードを支えるアーキテクチャの変遷
ojima_h
5
830
Podのオートスケーリングに苦戦し続けている話
ojima_h
1
350
ディメンショナルモデリングのすすめ
ojima_h
8
4.8k
モンスターストライクを支えるデータ分析基盤と準リアルタイム集計
ojima_h
7
5.8k
データ分析基盤の変遷とデータレイクの作り方
ojima_h
2
1.9k
Other Decks in Technology
See All in Technology
機密情報の漏洩を防げ! Webフロントエンド開発で意識すべき漏洩パターンとその対策
mizdra
PRO
8
2.2k
AIでテストプロセスを自動化しよう251113.pdf
sakatakazunori
0
110
コミュニティと共に変化する 私とFusicの8年間
ayasamind
0
450
旧から新へ: 大規模ウェブクローラの Perl から Go への移行 / YAPC::Fukuoka 2025
motemen
2
770
コード1ミリもわからないけど Claude CodeでFigjamプラグインを作った話
abokadotyann
1
160
Dart and Flutter MCP serverで実現する AI駆動E2Eテスト整備と自動操作
yukisakai1225
0
350
仕様駆動 x Codex で 超効率開発
ismk
2
1.4k
エンジニアに定年なし! AI時代にキャリアをReboot — 学び続けて未来を創る
junjikoide
0
180
決済システムの信頼性を支える技術と運用の実践
ykagano
0
490
日々のSlackアラート確認運用をCustom Chat Modesで楽にした話 / 日々のSlackアラート確認運用をCustom Chat Modesで楽にした話
imamotohikaru
0
450
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
3
1.3k
[mercari GEARS 2025] Keynote
mercari
PRO
0
170
Featured
See All Featured
Context Engineering - Making Every Token Count
addyosmani
9
380
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Music & Morning Musume
bryan
46
6.9k
A Modern Web Designer's Workflow
chriscoyier
697
190k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Balancing Empowerment & Direction
lara
5
740
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
320
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Why You Should Never Use an ORM
jnunemaker
PRO
60
9.6k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Faster Mobile Websites
deanohume
310
31k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
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 ありがとうございました