「攻め」のリプレース --- ナレッジワークのユーザー体験を支えるコンテンツ処理システムについて
by
Seiya Miyata
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
「攻め」のリプレース ナレッジワークのユーザー体験を支えるコンテンツ処理システムについて 2024-07-29 Encraft #16 プロダクトを支えるコアシステム 株式会社ナレッジワーク 宮田聖也
Slide 2
Slide 2 text
© Knowledge Work Inc. 自己紹介 2 2 • 宮田聖也 (@38xxer) • SWE at Knowledge Work • 2024 年 3 月入社 • Golang, Ruby が好き • 趣味:🍺🍺🍺, ⚽ (, ), 🎸, 📷
Slide 3
Slide 3 text
© Knowledge Work Inc. アジェンダ 3 3 ・ナレッジワークについて ・コアシステムである「コンテンツ処理システム (CP)」の概要 ・CP のリプレースの背景
Slide 4
Slide 4 text
© Knowledge Work Inc. 理解していただきたいポイント 4 4 ・ナレッジワークのコアシステムの概要 ・どんな課題にぶつかったか ・どう改善したか
Slide 5
Slide 5 text
© Knowledge Work Inc. プロダクト紹介 5 みんなが売れる営業になる セールスイネーブルメントクラウド セールスイネーブルメントクラウド「ナレッジワーク」 2022年リリース、資料共有・商談準備 SaaS
Slide 6
Slide 6 text
© Knowledge Work Inc. 6 ユーザー像 ・エンタープライズ企業の セールス ・主な業務は 顧客との商談、商談準備 ・商材数は膨大、新商品も続々登場 ・社内ファイル共有システム に膨大な社内資 料がある
Slide 7
Slide 7 text
© Knowledge Work Inc. セールスメンバーが感じるユーザー体験のペイン 7 7 より資料検索・資料閲覧を効率化したい これまで あるべき 見つかる 開ける 欲しい資料がすぐ見つかる ファイルが瞬時に開く 片っ端から社内システムのフォルダを開く ファイルツリーを深ぼって必要なファイルを探す、ファイル を開くのに 10秒 見つか らない 開け ない わから ない わかる
Slide 8
Slide 8 text
© Knowledge Work Inc. ナレッジワークについて 8 8 商品資料・提案資料・プレゼン動画などをアップロード 「ナレッジ」という単位で社内に共有
Slide 9
Slide 9 text
© Knowledge Work Inc. ナレッジワークについて 9 9
Slide 10
Slide 10 text
© Knowledge Work Inc. ナレッジとは 10 10 ナレッジワーク における情報共有の単位
Slide 11
Slide 11 text
© Knowledge Work Inc. ナレッジの種類 11 11 一つのナレッジには多様なコンテンツが紐づいている ナレッジ
Slide 12
Slide 12 text
© Knowledge Work Inc. それを生成するのが 12 12 コンテンツ処理システムです!
Slide 13
Slide 13 text
© Knowledge Work Inc. コンテンツ処理システム( CP) 13 13 コンテンツ処理= ナレッジに紐づくコンテンツの作成 画像・文字・動画 , … Content Processing ファイル
Slide 14
Slide 14 text
© Knowledge Work Inc. 14 14
Slide 15
Slide 15 text
© Knowledge Work Inc. 当初のコンテンツ処理システム( CP)(要点のみ抜粋) 15 15 Processor Converter Initiator Finalizer API Server Original Bucket Scanner User
Slide 16
Slide 16 text
© Knowledge Work Inc. 当初の CP(要点のみ抜粋) 16 16 Processor Converter Initiator Finalizer API Server Original Bucket Scanner User
Slide 17
Slide 17 text
© Knowledge Work Inc. 当初の CP(要点のみ抜粋) 17 17 Processor Converter Initiator Finalizer API Server Scanner ファイル形式 の判別 ファイル スキャン ファイル変換 コンテンツ 生成 終了の通知 責務が分割された多段階処理 Original Bucket
Slide 18
Slide 18 text
© Knowledge Work Inc. 18 ナレッジ閲覧用のコンテンツに加えて ユーザー体験向上に寄与するコンテンツも生成 生成されるコンテンツの例 ・一覧画面に表示するサムネイル ・PPT ファイルから生成した PDF ・PDF から抽出したテキスト ・詳細画面に表示する画像 + ・サムネイルへのホバー操作時に表示する コンテンツ ・軽量化した PDF … etc.
Slide 19
Slide 19 text
© Knowledge Work Inc. 音声・動画ファイルからのテキスト情報の抽出のような 重い処理が追加された ファイル変換、サムネイルの生成、 サムネイルへのホバー操作時に表示する コンテンツ、テキスト抽出処理 19 コンテンツ処理の要件 音声・動画ファイルからの 生成物の抽出 当初のコンテンツ 追加のコンテンツ
Slide 20
Slide 20 text
© Knowledge Work Inc. 当初の CP(要点のみ抜粋) 20 20 Processor Converter Initiator Finalizer API Server Scanner External API Original Bucket
Slide 21
Slide 21 text
© Knowledge Work Inc. 課題① - ボトルネック処理による遅延 21 21 Processor Converter Initiator Finalizer API Server Scanner External API 全コンテンツ処理の終了まで ナレッジが閲覧できない Original Bucket
Slide 22
Slide 22 text
© Knowledge Work Inc. 課題② - 複雑さの増大によるスケーラビリティ悪化 22 22 Processor Converter Initiator Finalizer API Server Scanner External API 変換の順序が 標準化されていない 条件分岐が分散している Original Bucket
Slide 23
Slide 23 text
© Knowledge Work Inc. 課題② - 複雑さの増大によるスケーラビリティ悪化 23 23 Processor Converter Initiator Finalizer API Server Scanner External API 変換の順序が 標準化されていない 条件分岐が分散している Original Bucket
Slide 24
Slide 24 text
© Knowledge Work Inc. 課題② - 複雑さの増大によるスケーラビリティ悪化 24 24 Processor Converter Initiator Finalizer API Server Scanner External API 新たな処理の追加時に 考慮するケースが多くなる Original Bucket
Slide 25
Slide 25 text
© Knowledge Work Inc. 課題③ - トレーサビリティの低さ 25 25 Processor Converter Initiator Finalizer API Server Scanner External API どこかの段階で失敗した場合 原因調査が大変 Original Bucket
Slide 26
Slide 26 text
© Knowledge Work Inc. コンテンツ処理システムを取り巻く外部環境 26 26 ナレッジはコアのドメイン 今後展開されるプロダクトでも参照される可能性が高い 2024 - 2026 年に 10 個のプロダクトを展開することが決定している ナレッジ
Slide 27
Slide 27 text
© Knowledge Work Inc. コンテンツ処理システムを取り巻く外部環境 27 27 今後展開されるプロダクトでは ドメインに応じた新たなコンテンツが必要になる可能性がある ナレッジ
Slide 28
Slide 28 text
© Knowledge Work Inc. コンテンツ処理システムを取り巻く外部環境 28 28 コンテンツ処理システムの追加開発は 複数のプロダクトチームが実行する可能性がある 開発プロセスを標準化したい ナレッジ
Slide 29
Slide 29 text
© Knowledge Work Inc. コンテンツ処理システムを取り巻く外部環境 29 29 今後、確実に複雑度を増す処理システム それに伴って追加実装の難易度は上がる ユーザー体験も悪くなる可能性がある
Slide 30
Slide 30 text
© Knowledge Work Inc. 30 30 実際に問題が発生する前にリプレース
Slide 31
Slide 31 text
© Knowledge Work Inc. 31 31 実際に問題が発生する前にリプレース 前のめりなリプレース ➡ 「攻め」のリプレース
Slide 32
Slide 32 text
© Knowledge Work Inc. 新 CP 32 32 Dispatcher Engine A DB API Server Engine C Engine B Original Bucket
Slide 33
Slide 33 text
© Knowledge Work Inc. 新 CP(要点のみ抜粋) 33 33 Dispatcher Engine A DB API Server Original Bucket Engine C Engine B ・エンジン処理の起 動 ・処理ステータス管 理 ・終了の通知 ・広義のファイル変換処理 ・形式判別やスキャンも含む ステータス保存 Original Bucket
Slide 34
Slide 34 text
© Knowledge Work Inc. 旧システムは多段階処理だった 34 34 Processor Converter Initiator Finalizer API Server Scanner ファイル形式 の判別 ファイル スキャン ファイル変換 コンテンツ 生成 終了の通知 Original Bucket
Slide 35
Slide 35 text
© Knowledge Work Inc. 新 CP 35 35 Dispatcher Engine A DB API Server Original Bucket Engine C Engine B 責務を分割しつつ 「エンジン」という形に抽象化 Original Bucket
Slide 36
Slide 36 text
© Knowledge Work Inc. 旧システムの課題① - ボトルネック処理による遅延 36 36 Processor Converter Initiator Finalizer API Server Cloud Storage Scanner External API 全コンテンツ処理の終了まで ナレッジが閲覧できない
Slide 37
Slide 37 text
© Knowledge Work Inc. 新 CP 37 37 Dispatcher Engine A DB API Server Original Bucket Engine C Engine B save state Original Bucket
Slide 38
Slide 38 text
© Knowledge Work Inc. 新 CP 38 38 Dispatcher Engine A DB API Server Original Bucket Engine C Engine B save state Original Bucket
Slide 39
Slide 39 text
© Knowledge Work Inc. 新 CP 39 39 Dispatcher Engine A DB API Server notify Original Bucket Engine C Engine B Original Bucket
Slide 40
Slide 40 text
© Knowledge Work Inc. 新 CP 40 40 Dispatcher Engine A DB API Server notify Original Bucket Engine C Engine B 早い成果物から利用可能 Original Bucket
Slide 41
Slide 41 text
© Knowledge Work Inc. 新 CP 41 41 Dispatcher Engine A DB API Server Original Bucket Engine C Engine B Original Bucket
Slide 42
Slide 42 text
© Knowledge Work Inc. 新 CP 42 42 Dispatcher Engine A DB API Server Original Bucket notify Engine C Engine B Original Bucket
Slide 43
Slide 43 text
© Knowledge Work Inc. 新 CP 43 43 Dispatcher Engine A DB API Server Original Bucket Engine C Engine B 一部失敗した場合も 他の成果物は利用可能 Original Bucket
Slide 44
Slide 44 text
© Knowledge Work Inc. 旧システムの課題② - 複雑さの増大によるスケーラビリティ悪化 44 44 Processor Converter Initiator Finalizer API Server Scanner External API 変換の順序が 標準化されていない 条件分岐が分散している Original Bucket
Slide 45
Slide 45 text
© Knowledge Work Inc. 新 CP 45 45 Dispatcher Engine A DB API Server Original Bucket Engine C Engine B I/F が統一され 追加開発が 容易になった Engine D Original Bucket
Slide 46
Slide 46 text
© Knowledge Work Inc. 新 CP 46 46 Dispatcher Engine A DB API Server Original Bucket Engine C Engine B コンテンツ処理 の順序の知識が 集約された Original Bucket
Slide 47
Slide 47 text
© Knowledge Work Inc. 旧システムの課題③ - トレーサビリティの低さ 47 47 Processor Converter Initiator Finalizer API Server Scanner External API どこかの段階で失敗した場合 原因調査が大変 Original Bucket
Slide 48
Slide 48 text
© Knowledge Work Inc. 新 CP 48 48 Dispatcher Engine A DB API Server Original Bucket Engine C Engine B 処理ステータスを DB 保存 ➡失敗時の調査が容易 Original Bucket
Slide 49
Slide 49 text
© Knowledge Work Inc. ユーザー観点ではナレッジのコンテンツの可用性が向上 開発者観点ではシステムの認知容易性・メンテナンス性が向上 直列処理 障害発生時の調査が難しい 機能追加が難しい 49 課題と解決策のまとめ 並列処理 処理ステータスが保存されている 機能追加しやすい 旧システム 新システム
Slide 50
Slide 50 text
© Knowledge Work Inc. リプレース時に議論した点 50 今後も継続的な改善を続けていきます ・Dispatcher の責務分割 ・状態管理 処理全体、個々のエンジン ・エンジンの I/F 定義 ... etc.
Slide 51
Slide 51 text
© Knowledge Work Inc. リプレース時に議論した点 51 今後も継続的な改善を続けていきます ・Dispatcher の責務分割 ・状態管理 処理全体、個々のエンジン ・エンジンの I/F 定義 ... etc. まず形式判別、次に スキャン... ファイル変換の後に テキスト抽出...
Slide 52
Slide 52 text
© Knowledge Work Inc. 52 カジュアル面談のご連絡、お待ちしています! 最後に ・プロダクト開発が好きだが、共通基盤シス テムにも興味があるという方 ・ユーザー体験を向上させたいという方 ・コアなシステムの議論が好きという方 …
Slide 53
Slide 53 text
© Knowledge Work Inc. Vision 人は起きている時間の半分を仕事に、 半分を余暇に使うと言われています。 余暇においては、以前より遥かに多くの喜びを 私たちは得られるようになりましたが、 それに比べて仕事の喜びは充分に得られていません。 余暇の時間に「誰かから与えられる喜び」も大切ですが、 仕事の時間に「自らできるようになる喜び」は 何にも代えがたいほどに尊いものです。 私たちは「できる喜び」をお互いに届けあえる機会が 毎日訪れる社会の実現に貢献します できる喜びが巡る日々を届ける Deliver the joy of enablement 53