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

パイプラインの並行化により音量正規化を8倍高速化した話 (20230705_concurren...

パイプラインの並行化により音量正規化を8倍高速化した話 (20230705_concurrent_normalization)

2023年7月5日に 株式会社Voicy / 株式会社オーディオストック / 株式会社SKIYAKI によって共同開催された勉強会、「音楽・音声系テック企業3社のエンジニアが語る!プラットフォームを支える技術」での発表資料です。

https://skiyaki.connpass.com/event/286356/

Koki Senda

July 05, 2023
Tweet

More Decks by Koki Senda

Other Decks in Programming

Transcript

  1. © Voicy, Inc. 自己紹介
 • 千田 航己 (せんちゃん)
 SRE/バックエンドエンジニア 


    ▪ リソース管理 • AWS • Kubernetes ▪ モニタリング • Datadog ▪ 基盤システム開発 • 通知配信基盤 • 音声処理基盤 ▪ CI/CD • CircleCI • Argo CD
  2. © Voicy, Inc. 自己紹介
 • 千田 航己 (せんちゃん)
 SRE/バックエンドエンジニア 


    ▪ リソース管理 • AWS • Kubernetes ▪ モニタリング • Datadog ▪ 基盤システム開発 • 通知配信基盤 • 音声処理基盤 ▪ CI/CD • CircleCI • Argo CD
  3. © Voicy, Inc. はじめに
 • 前提
 ◦ Voicyではアップロードされた音源をサーバー側で加工している 
 •

    問題点
 ◦ サービス規模の拡大に伴い処理が遅れるようになってきた 
 ◦ 配信音源の品質に関わるため高速化したい 
 • 対応
 ◦ 並行に処理することで高速化 
 音量正規化処理が混雑していたので高速化した 

  4. © Voicy, Inc. Voicyについて 
 音声プラットフォーム 
 Voicy
 サーバー
 パーソナリティが


    専用アプリで収録
 Voicy Recorder
 リスナーが
 専用アプリで聴取
 Voicy

  5. © Voicy, Inc. 従来のアーキテクチャ 
 • 収録音源がアップロードされると、DBの対応するレコードのフラグが立つ
 オーディオ処理をバッチで定期実行 
 Batch

    Server (EC2) audio- processor DB ① 処理対象を取得
 ② 音量正規化
 をリクエスト
 HLS変換など
 処理対象のデータは
 フラグが立っている
 ③ 後続処理へ
 同期API

  6. © Voicy, Inc. 従来のアーキテクチャの課題 
 混雑時に非常に遅い 
 Batch Server (EC2)

    audio- processor DB ① 処理対象を取得
 ② 音量正規化
 をリクエスト
 HLS変換など
 処理対象のデータは
 フラグが立っている
 ③ 後続処理へ
 1件ずつ直列に リクエストを送信 同期API

  7. © Voicy, Inc. 従来のアーキテクチャの課題 
 混雑時に非常に遅い 
 Batch Server (EC2)

    audio- processor DB ① 処理対象を取得
 ② 音量正規化
 をリクエスト
 HLS変換など
 処理対象のデータは
 フラグが立っている
 ③ 後続処理へ
 短時間に大量の音 源がアップロードされ ることがある 1件ずつ直列に リクエストを送信 同期API
 処理が遅い音源があ ると待ちが長くなる
  8. © Voicy, Inc. 解決策
 並行処理 & 処理状況をキューで管理 
 audio- processor

    ① 処理対象
 を取得
 ② 音量正規化
 をリクエスト
 HLS変換など
 ③ 後続処理へ
 Amazon SQS
 job-handler 同期API
 • 処理中ステータスの管理 • タイムアウト • リトライ • goroutineで並行処理
  9. © Voicy, Inc. 負荷テストとキャパシティプランニング 
 • audio-processorの負荷が上がるのでキャパシティの再設計が必要
 ◦ job-handler
 ▪

    並行数
 ◦ audio-processor
 ▪ Pod数
 ▪ CPU
 ▪ Memory
 処理速度とコストのバランス 
 audio- processor job-handler
  10. © Voicy, Inc. 負荷テストとキャパシティプランニング 
 • audio-processorの負荷が上がるのでキャパシティの再設計が必要
 ◦ job-handler
 ▪

    並行数 → できるだけ増やしたい 
 ◦ audio-processor
 ▪ Pod数 → 並行数に対応する数 
 ▪ CPU → ひとつのオーディオファイルを処理するのに使用する最大数 
 ▪ Memory → 用意したインスタンスの上限 
 処理速度とコストのバランス 
 audio- processor job-handler
  11. © Voicy, Inc. むすび
 • 前提
 ◦ Voicyではアップロードされた音源をサーバー側で加工している 
 •

    問題点
 ◦ サービスの成長に伴い処理の完了が遅れるようになってきた 
 ▪ 直列処理
 ▪ 時間がかかる音源があると後続の音源の待ちが長くなる 
 • 対応
 ◦ 並行に処理することで高速化 
 ◦ 負荷テストとキャパシティプランニング 
 パイプラインの並行化によりオーディオ処理を高速化