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

コンテンツ制作支援サービスの紹介:共同編集と自動文字起こしで業務改革

 コンテンツ制作支援サービスの紹介:共同編集と自動文字起こしで業務改革

2024/11/15に開催されたMedia-JAWSで朝日新聞社の嘉田・松山が発表したスライドを一部修正してアップロードしています。

More Decks by Media R&D Center, The Asahi Shimbun

Other Decks in Technology

Transcript

  1. 朝デジ事業センター メディア事業本部 コーポレート本部 組織概要 Copyright 2024 The Asahi Shimbun Company.

      08 開発部 システム部 ICT企画部 サービス開発部 メディア研究開発 センター ⼈⼯知能などの先端テクノロジー に関する研究開発、調査 フロントエンドを中⼼とした プロダクト開発
  2. ⾼精度 ⽂字起こしで 制作時間短縮 使いたい ファイルが すぐに⾒つかる クラウド管理で 制作を シームレスに 書き起こしを

    ファイルごとに カスタマイズ Copyright 2024 The Asahi Shimbun Company.   AssistedLaborOptimizationForContentAuthoring “⽂字起こし だけじゃない! コンテンツ制作⽀援サービス 12
  3. DBパフォーマンス Copyright 2024 The Asahi Shimbun Company.   26 開発

    テスト リリース 1ヶ⽉後... DocumentDBの事例が ないから⼼配だったけ ど、なんとかできそう みんなで負荷かけて... ⼤丈夫だ! 安定稼働してるし、 やりきったね! エラーとデータが⾶んだ という問い合わせが多発 してるんだが...
  4. AWS Lambda AWS Lambda APIGatewayの容量制限 Copyright 2024 The Asahi Shimbun

    Company.   28 WebSocketのメッセージペイロードサイズは最⼤で128kB データサイズが⼤きいので、通信が収まらない ➡分割送信、受信時に統合する処理を追加し、128kB以内に収めた  バックエンドではDynamoDBにバッファリング、フロントでは変数でバッファリング WebSocket WebSocket WebSocket WebSocket { "group_id": "item1", "index": 0, "total": 3, "data": "AAHWkgEADI6ucCwHcE.." }
  5. Amazon DocumentDB コミット1 コミット2 コミット3 コミット4 ... データの不整合でエディタが真っ⽩になる Copyright 2024

    The Asahi Shimbun Company.   29 Flushという操作に時間がかかりすぎていたのが原因 ・Flushタイミングをファイルを閉じた時に変更 ・書き込みをキューで管理 DB上で更新差分をまとめる作業 =Flush 200⾏のFlushに30秒ほど かかるケースがあった Flush中の動作で問題が発⽣   (サーバレス特有の問題) ・書き込み  →同期が遅延 ・初回読み込み  →データが破損するケース有 コミット1
  6. DBの排他制御 Copyright 2024 The Asahi Shimbun Company.   30 SQSFIFOキューを利⽤して書き込み処理の排他制御

    同時に2台以上のLambdaで処理が⾏われないようにする サーバレスでありながら、DBへの排他制御ができる ※メッセージが特定のメッセージグループに属することを指定するID(メッセージグループID)を各アイテムに設定する ことで、同じメッセージグループに属するメッセージは厳密な順序で処理される FIFOQueue メッセージグループID:アイテムA FIFOQueue メッセージグループID:アイテムA メッセージグループID:アイテムB Lambda 2 Lambda 1 同時実⾏可能なLambda数<=メッセージグループIDの数 Lambda 2 Lambda 1 ※
  7. AWS Lambda お は よ う う 直列処理 直列処理 Amazon

    SQS Amazon SQS 遅延があり、コストも⾼かった Copyright 2024 The Asahi Shimbun Company.   31 1⽂字ごとにコミットしてたので、 LambdaやDBの処理数が増えたり、キューが詰まって書き込みが遅延したりした フロントエンドからのコミットを5秒に⼀度に抑制することで低減した 5秒以内の⼊⼒は まとめる お お お お は は は よ よ 넝鹼䒀 넝؝أز ⡚鹼䒀 ⡚؝أز AWS Lambda Amazon DocumentDB Amazon DocumentDB
  8. 完成したのがこちら Copyright 2024 The Asahi Shimbun Company.   32 Amazon

    API Gateway WebSocket API AWS Lambda AWS Lambda AWS Lambda $connect $disconnect $default $decode Amazon SQS Amazon SQS AWS Lambda Amazon DynamoDB Amazon DocumentDB Amazon OpenSearch Service Client1 Client2
  9. Amazon API Gateway WebSocket API AWS Lambda AWS Lambda AWS

    Lambda 完成したのがこちら Copyright 2024 The Asahi Shimbun Company.   33 $connect $disconnect $default $decode Amazon SQS Amazon SQS AWS Lambda Amazon DynamoDB Amazon DocumentDB Amazon OpenSearch Service アイテム・ユーザー単位で コネクション確⽴ DynamoDBに保存 Client1 Client2
  10. Amazon API Gateway WebSocket API AWS Lambda AWS Lambda AWS

    Lambda $connect Amazon SQS Amazon SQS AWS Lambda Amazon DynamoDB Amazon DocumentDB Amazon OpenSearch Service 完成したのがこちら Copyright 2024 The Asahi Shimbun Company.   34 $disconnect $default $decode DocumentDBから該当アイテム のデータを取得し、128KBに分割 して送信 Client1 Client2 幕張に来たよ! 幕張に来たよ! 幕張に来たよ!
  11. Amazon API Gateway WebSocket API AWS Lambda AWS Lambda AWS

    Lambda Amazon SQS Amazon SQS AWS Lambda Amazon DynamoDB Amazon DocumentDB Amazon OpenSearch Service Client1 Client2 完成したのがこちら Copyright 2024 The Asahi Shimbun Company.   35 $connect $disconnect $default $decode 幕張に来たよ! 遠かった... 幕張に来たよ! 遠かった... 遠かった... 編集差分を保存(分割受信時には統 合) 該当アイテムに接続しているコネク ションを取得し、ブロードキャスト
  12. Amazon API Gateway WebSocket API AWS Lambda AWS Lambda AWS

    Lambda Amazon SQS Amazon SQS AWS Lambda Amazon DynamoDB Amazon DocumentDB Amazon OpenSearch Service Client1 Client2 $connect interbeeだ $disconnect 完成したのがこちら Copyright 2024 The Asahi Shimbun Company.   36 $default $decode 幕張に来たよ! 遠かった... interbeeだ 幕張に来たよ! 遠かった... FIFOQueue メッセージグループID:アイテムA 1:interbeeだ 2:
  13. 完成したのがこちら Copyright 2024 The Asahi Shimbun Company.   37 Amazon

    API Gateway WebSocket API AWS Lambda AWS Lambda AWS Lambda $connect $disconnect $default $decode Amazon SQS Amazon SQS AWS Lambda Amazon DynamoDB Amazon DocumentDB Amazon OpenSearch Service Client1 Client2 decode リクエスト 幕張に来たよ! 遠かった... interbeeだ 幕張に来たよ! 遠かった... interbeeだ BinData(0, AeUFzt HymgufHYjOsfb8B ux3AXc...) 幕張に来たよ! 遠かった... interbeeだ 全⽂検索⽤にテキストデータへの 変換を定期的に実施(20秒) Flush制御のためにドキュメント数 を格納(Flush実⾏は$defalutで)
  14. Amazon API Gateway WebSocket API AWS Lambda AWS Lambda AWS

    Lambda Amazon SQS Amazon SQS AWS Lambda Amazon DynamoDB Amazon DocumentDB Amazon OpenSearch Service Client1 Client2 完成したのがこちら Copyright 2024 The Asahi Shimbun Company.   38 $connect $disconnect $default $decode 幕張に来たよ! 遠かった... interbeeだ 幕張に来たよ! 遠かった... interbeeだ 全員切断時にドキュメント数が 閾値以上ならFlush実⾏
  15. 本番運⽤中です Copyright 2024 The Asahi Shimbun Company.   39 今の所、ちゃんと動いています!

    対応の結果、エラー率が0%台に低下しました Lambdaエラー率 DocumentDB CPU利⽤率