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

「攻め」のリプレース --- ナレッジワークのユーザー体験を支えるコンテンツ処理システムについて

「攻め」のリプレース --- ナレッジワークのユーザー体験を支えるコンテンツ処理システムについて

イネーブルメントクラウド「ナレッジワーク」では、ユーザーがアップロードするファイルに対して様々な処理を行うことで、高速なファイル表示や、検索精度の向上を図っています。この処理システムが直面した課題とその解決策を元に、ナレッジワーク社内の 大規模システムのリプレースの意思決定の技術的・組織的背景についてお話しします。

Seiya Miyata

July 30, 2024
Tweet

More Decks by Seiya Miyata

Other Decks in Technology

Transcript

  1. © Knowledge Work Inc. 自己紹介 2 2 • 宮田聖也 (@38xxer)

    • SWE at Knowledge Work • 2024 年 3 月入社 • Golang, Ruby が好き • 趣味:🍺🍺🍺, ⚽ (󰧹, 󰎼), 🎸, 📷
  2. © Knowledge Work Inc. 6 ユーザー像 ・エンタープライズ企業の セールス ・主な業務は 顧客との商談、商談準備

    ・商材数は膨大、新商品も続々登場 ・社内ファイル共有システム に膨大な社内資 料がある
  3. © Knowledge Work Inc. セールスメンバーが感じるユーザー体験のペイン 7 7 より資料検索・資料閲覧を効率化したい これまで あるべき

    見つかる 開ける 欲しい資料がすぐ見つかる ファイルが瞬時に開く 片っ端から社内システムのフォルダを開く ファイルツリーを深ぼって必要なファイルを探す、ファイル を開くのに 10秒 見つか らない 開け ない わから ない わかる
  4. © Knowledge Work Inc. 当初の CP(要点のみ抜粋) 16 16 Processor Converter

    Initiator Finalizer API Server Original Bucket Scanner User
  5. © Knowledge Work Inc. 当初の CP(要点のみ抜粋) 17 17 Processor Converter

    Initiator Finalizer API Server Scanner ファイル形式 の判別 ファイル スキャン ファイル変換 コンテンツ 生成 終了の通知 責務が分割された多段階処理 Original Bucket
  6. © Knowledge Work Inc. 18 ナレッジ閲覧用のコンテンツに加えて ユーザー体験向上に寄与するコンテンツも生成 生成されるコンテンツの例 ・一覧画面に表示するサムネイル ・PPT

    ファイルから生成した PDF ・PDF から抽出したテキスト ・詳細画面に表示する画像 + ・サムネイルへのホバー操作時に表示する コンテンツ ・軽量化した PDF … etc.
  7. © Knowledge Work Inc. 当初の CP(要点のみ抜粋) 20 20 Processor Converter

    Initiator Finalizer API Server Scanner External API Original Bucket
  8. © Knowledge Work Inc. 課題① - ボトルネック処理による遅延 21 21 Processor

    Converter Initiator Finalizer API Server Scanner External API 全コンテンツ処理の終了まで ナレッジが閲覧できない Original Bucket
  9. © Knowledge Work Inc. 課題② - 複雑さの増大によるスケーラビリティ悪化 22 22 Processor

    Converter Initiator Finalizer API Server Scanner External API 変換の順序が 標準化されていない 条件分岐が分散している Original Bucket
  10. © Knowledge Work Inc. 課題② - 複雑さの増大によるスケーラビリティ悪化 23 23 Processor

    Converter Initiator Finalizer API Server Scanner External API 変換の順序が 標準化されていない 条件分岐が分散している Original Bucket
  11. © Knowledge Work Inc. 課題② - 複雑さの増大によるスケーラビリティ悪化 24 24 Processor

    Converter Initiator Finalizer API Server Scanner External API 新たな処理の追加時に 考慮するケースが多くなる Original Bucket
  12. © Knowledge Work Inc. 課題③ - トレーサビリティの低さ 25 25 Processor

    Converter Initiator Finalizer API Server Scanner External API どこかの段階で失敗した場合 原因調査が大変 Original Bucket
  13. © Knowledge Work Inc. 新 CP 32 32 Dispatcher Engine

    A DB API Server Engine C Engine B Original Bucket
  14. © Knowledge Work Inc. 新 CP(要点のみ抜粋) 33 33 Dispatcher Engine

    A DB API Server Original Bucket Engine C Engine B ・エンジン処理の起 動 ・処理ステータス管 理 ・終了の通知 ・広義のファイル変換処理 ・形式判別やスキャンも含む ステータス保存 Original Bucket
  15. © Knowledge Work Inc. 旧システムは多段階処理だった 34 34 Processor Converter Initiator

    Finalizer API Server Scanner ファイル形式 の判別 ファイル スキャン ファイル変換 コンテンツ 生成 終了の通知 Original Bucket
  16. © Knowledge Work Inc. 新 CP 35 35 Dispatcher Engine

    A DB API Server Original Bucket Engine C Engine B 責務を分割しつつ 「エンジン」という形に抽象化 Original Bucket
  17. © Knowledge Work Inc. 旧システムの課題① - ボトルネック処理による遅延 36 36 Processor

    Converter Initiator Finalizer API Server Cloud Storage Scanner External API 全コンテンツ処理の終了まで ナレッジが閲覧できない
  18. © Knowledge Work Inc. 新 CP 37 37 Dispatcher Engine

    A DB API Server Original Bucket Engine C Engine B save state Original Bucket
  19. © Knowledge Work Inc. 新 CP 38 38 Dispatcher Engine

    A DB API Server Original Bucket Engine C Engine B save state Original Bucket
  20. © Knowledge Work Inc. 新 CP 39 39 Dispatcher Engine

    A DB API Server notify Original Bucket Engine C Engine B Original Bucket
  21. © Knowledge Work Inc. 新 CP 40 40 Dispatcher Engine

    A DB API Server notify Original Bucket Engine C Engine B 早い成果物から利用可能 Original Bucket
  22. © Knowledge Work Inc. 新 CP 41 41 Dispatcher Engine

    A DB API Server Original Bucket Engine C Engine B Original Bucket
  23. © Knowledge Work Inc. 新 CP 42 42 Dispatcher Engine

    A DB API Server Original Bucket notify Engine C Engine B Original Bucket
  24. © Knowledge Work Inc. 新 CP 43 43 Dispatcher Engine

    A DB API Server Original Bucket Engine C Engine B 一部失敗した場合も 他の成果物は利用可能 Original Bucket
  25. © Knowledge Work Inc. 旧システムの課題② - 複雑さの増大によるスケーラビリティ悪化 44 44 Processor

    Converter Initiator Finalizer API Server Scanner External API 変換の順序が 標準化されていない 条件分岐が分散している Original Bucket
  26. © Knowledge Work Inc. 新 CP 45 45 Dispatcher Engine

    A DB API Server Original Bucket Engine C Engine B I/F が統一され 追加開発が 容易になった Engine D Original Bucket
  27. © Knowledge Work Inc. 新 CP 46 46 Dispatcher Engine

    A DB API Server Original Bucket Engine C Engine B コンテンツ処理 の順序の知識が 集約された Original Bucket
  28. © Knowledge Work Inc. 旧システムの課題③ - トレーサビリティの低さ 47 47 Processor

    Converter Initiator Finalizer API Server Scanner External API どこかの段階で失敗した場合 原因調査が大変 Original Bucket
  29. © Knowledge Work Inc. 新 CP 48 48 Dispatcher Engine

    A DB API Server Original Bucket Engine C Engine B 処理ステータスを DB 保存 ➡失敗時の調査が容易 Original Bucket
  30. © Knowledge Work Inc. リプレース時に議論した点 51 今後も継続的な改善を続けていきます ・Dispatcher の責務分割 ・状態管理

    処理全体、個々のエンジン ・エンジンの I/F 定義 ... etc. まず形式判別、次に スキャン... ファイル変換の後に テキスト抽出...
  31. © Knowledge Work Inc. Vision 人は起きている時間の半分を仕事に、 半分を余暇に使うと言われています。 余暇においては、以前より遥かに多くの喜びを 私たちは得られるようになりましたが、 それに比べて仕事の喜びは充分に得られていません。

    余暇の時間に「誰かから与えられる喜び」も大切ですが、 仕事の時間に「自らできるようになる喜び」は 何にも代えがたいほどに尊いものです。 私たちは「できる喜び」をお互いに届けあえる機会が 毎日訪れる社会の実現に貢献します できる喜びが巡る日々を届ける Deliver the joy of enablement 53