Slide 1

Slide 1 text

© 2021 eureka, Inc. All Rights Reserved. 動画合成アーキテクチャを 実装してみて Backend LT会(#venture_backend_lt) 2022/07/20 Kitaguchi Satoru

Slide 2

Slide 2 text

© 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION: Not for Public Distribution - Do Not Copy All Hands Meeting Kitaguchi Satoru 23卒 Backend エンジニア EC、ゲーム、広告など数社のインターンを経て、eurekaへ入社予定です 業務では決済基盤やPairsの機能開発に携わっています 休日はGoやCを書いたり、ロードバイクやサッカーをしたりします © 2021 eureka, Inc. All Rights Reserved.

Slide 3

Slide 3 text

© 2021 eureka, Inc. All Rights Reserved. Mission 人生に「あってよかった」と思ってもらえるものを。
 To provide a life-changing service that people will remember with great fondness.

Slide 4

Slide 4 text

© 2021 eureka, Inc. All Rights Reserved. Vision かけがえのない人との出会いを生み出し、
 日本、アジアにデーティングサービス
 文化を定着させる。
 To help people find their life partner and make dating services a social norm in Japan and Asia.

Slide 5

Slide 5 text

© 2021 eureka, Inc. All Rights Reserved.

Slide 6

Slide 6 text

6 © 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION: Not for Public Distribution - Do Not Copy All Hands Meeting ● 新機能のアイキャッチとは ● クライアント・バックエンドで動画合成する実装案 ● 採用したアーキテクチャ ● 直面した課題と解決方法 Agenda © 2021 eureka, Inc. All Rights Reserved.

Slide 7

Slide 7 text

7 © 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION: Not for Public Distribution - Do Not Copy All Hands Meeting 新機能のアイキャッチとは さがす画面で自分のプロフィールをフレーム付きで表示し、 趣味や好みのあうお相手からの注目を集められる機能 © 2021 eureka, Inc. All Rights Reserved. ※iPhoneアプリで先行的に提供されています(2022年7月現在) ※iPhone 8以上のでご利用を推奨します ※iOS 12以下は非対応です

Slide 8

Slide 8 text

8 © 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION: Not for Public Distribution - Do Not Copy All Hands Meeting 技術要件 © 2021 eureka, Inc. All Rights Reserved. 1. ニアリアルタイムで静止画の上に動画を合成する
 2. ピンチインピンチアウトして調整できる
 3. 合成前にクライアントでのプレビューが必須
 4. 同時にコメントを審査しなければならない


Slide 9

Slide 9 text

9 © 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION: Not for Public Distribution - Do Not Copy All Hands Meeting クライアントの実装案 © 2021 eureka, Inc. All Rights Reserved. プレビューとの整合性が取れる
 バックエンドで動画合成する際の負荷をク ライアントで受け持てる
 端末依存
 動画の検品が必須
 リクエストペイロードが重たくなる
 動画編集SDKを利用して合成しAPI経由で動画をアップロードする
 Pros
 Cons


Slide 10

Slide 10 text

10 © 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION: Not for Public Distribution - Do Not Copy All Hands Meeting バックエンド実装案 © 2021 eureka, Inc. All Rights Reserved. Pros Cons AWS Elemental MediaConvert ● フルマネージドでつなぎ込みも楽 ● 動画ワークフローに最適化されている ● 結局FFmpegなどで前処理が必要 ● Image Insert機能の検証がいる AWS Batch on AWS Fargate ● 実行時間を気にする必要がない ● CPUを使うので流量が読めないとしんどい ● インスタンスのスケールに気を遣う ● Lambdaに比べてオーバーヘッドが大きい ● Lambdaに比べて環境構築に時間がかかる Lambda + Custom Layer ● 環境構築が容易 ● zipに固めてアップロードするだけで良い ● 依存の追加と削除が楽 ● S3でzipのバージョンコントロールできる ● 15分以内の実行時間制限 ● 10GB以内のメモリ制限 ● 同時実行数に制限がある ● 5つまでのレイヤー制限 Lambda + container image ● 柔軟性がある ● Lambda用のコンテナは一般的な コンテナイメージの作り方とは異なる

Slide 11

Slide 11 text

11 © 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION: Not for Public Distribution - Do Not Copy All Hands Meeting バックエンド実装案 © 2021 eureka, Inc. All Rights Reserved. Pros Cons AWS Elemental MediaConvert ● フルマネージドでつなぎ込みも楽 ● 動画ワークフローに最適化されている ● 結局FFmpegなどで前処理が必要 ● Image Insert機能の検証がいる AWS Batch on AWS Fargate ● 実行時間を気にする必要がない ● CPUを使うので流量が読めないとしんどい ● インスタンスのスケールに気を遣う ● Lambdaに比べてオーバーヘッドが大きい ● Lambdaに比べて環境構築に時間がかかる Lambda + Custom Layer ● 環境構築が容易 ● zipに固めてアップロードするだけで良い ● 依存の追加と削除が楽 ● S3でzipのバージョンコントロールできる ● 15分以内の実行制限 ● 10GB以内のメモリ制限 ● 同時実行数に制限がある ● 5つまでのレイヤー制限 Lambda + container image ● 柔軟性がある ● Lambda用のコンテナは一般的な コンテナイメージの作り方とは異なる

Slide 12

Slide 12 text

12 © 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION: Not for Public Distribution - Do Not Copy All Hands Meeting 実際のアーキテクチャ © 2021 eureka, Inc. All Rights Reserved.

Slide 13

Slide 13 text

13 © 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION: Not for Public Distribution - Do Not Copy All Hands Meeting 直面した課題と解決方法 fpsなど動画チューニングし、 ファイルサイズを圧縮する FastStart化してストリーム形式にする パイプライン処理にする テキスト審査を非同期に処理する SQSのDLQで監視し、リトライさせる DBアクセスを最小限に抑えるため、 SQSにS3パスを格納する © 2021 eureka, Inc. All Rights Reserved. 端末負荷 合成時間 機能をすぐ利用できないため ユーザー体験が良くない (プレビューでは動画はできているので) 端末が発熱する さがす画面が重くなる 端末の充電の減りが速くなる

Slide 14

Slide 14 text

14 © 2021 eureka, Inc. All Rights Reserved. CONFIDENTIAL INFORMATION: Not for Public Distribution - Do Not Copy All Hands Meeting 振り返ってみて © 2021 eureka, Inc. All Rights Reserved. ● さまざまな実装パターンを検討する
 ● 実装パターンのメリデメ出す
 ● クライアントサイドや先輩エンジニアとディスカッション
 ユースケースに応じて最適なアーキテクチャを選定するには
 詳細はブログにまとめたのでぜひご覧ください
 https://medium.com/eureka-engineering/video-synthesis-architecture-of- pairs-eyecatch-5eb5810074a6