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

急成長スタートアップを支える データ基盤の裏側

Fumina Chihama
March 14, 2024
560

急成長スタートアップを支える データ基盤の裏側

Fumina Chihama

March 14, 2024
Tweet

More Decks by Fumina Chihama

Transcript

  1. ほ し い と 出 会 え る イ ン

    テ ン ト セ ー ル ス 急成長スタートアップを支える データ基盤の裏側 2024-03-13 Sales Marker CTO チン シン X @ShinChen03
  2. INDEX © Sales Marker Co., Ltd. 2 01 自己紹介 02

    事業紹介 03 要求の変化とデータ構造の変化 04 どう設計すれば良かった? 05 最後に
  3. 株式会社SalesMarker 取締役CTO 陳 晨(チン シン) / @ShinChen03 アメリカワシントン大学セントルイス校修士課程終了後、 LINE株式会社に新卒入社。全社横断ビッグデータプラット フォーム構築プロジェクトに従事後、日本マイクロソフトに転

    職し、AI&ビッグデータ部門にて世界中のお客様に対しシステ ム設計から開発、運用までシステム全般をサポート。その後株 式会社スタンバイにてリアルタイム分析基盤の構築をリードす る。 テクノロジーで社会の効率化に貢献したい想いにより、 CrossBorder株式会社(現:株式会社Sales Marker)を共同 創業。 ex 自己紹介
  4. 5 © Sales Marker Co., Ltd. ※出所: 2019 Gartner End-User

    Buyer Surveyより 自社の課題を解決するツールを 導入したいとき、何をしますか?
  5. 購買意思決定の60%を占める事前調査部分に直接アプローチできないことで 取りこぼしが起きているため、事前調査時点でアプローチを行うことが必要 購買プロセスの60%がWeb上で終了している 7 © Sales Marker Co., Ltd. BtoBビジネスにおいては購買プロセスのうち約60%が、ベンダーの営業担当者に会う前に

    終了していると言われており、企業へのコンタクト段階ではほとんど意思決定が行われています。 事前調査 60% 営業担当 40% BtoBビジネスにおける購買プロセス ※出所: 2019 Gartner End-User Buyer Surveyより
  6. 9 © Sales Marker Co., Ltd. ※出所: 2019 Gartner End-User

    Buyer Surveyより Sales Markerは、 2年でARR15億円 YoY 900% 成長
  7. 10 © Sales Marker Co., Ltd. ※出所: 2019 Gartner End-User

    Buyer Surveyより ユニコーン企業 “T2D3”の 2倍の成長速度
  8. 11 © Sales Marker Co., Ltd. ※出所: 2019 Gartner End-User

    Buyer Surveyより 組織人数: 2023/2 20人 → 2024/2 150人 エンジニア数: 2023/2 3人 → 2024/2 25人 40人 80人 120人 150人 100人 80人 40人
  9. 14 © Sales Marker Co., Ltd. ※出所: 2019 Gartner End-User

    Buyer Surveyより Sales Markerは「インテントセールス」を実現します 国内最大500万件の法人データ、370万件の人物データ、50億レコードのインテントデータを保有 インテント 50億件 法人データ 500万件 人物データ 370万人 インテントセールスの仕組み 国内最大のデータ量
  10. 15 © Sales Marker Co., Ltd. ※出所: 2019 Gartner End-User

    Buyer Surveyより Sales Markerは「インテントセールス」を実現します 国内最大500万件の法人データ、370万件の人物データ、50億レコードのインテントデータを保有 インテント 50億件 法人データ 500万件 人物データ 370万人 インテントセールスの仕組み 国内最大のデータ量
  11. 事業成長にと共に変化する要件 フェーズ1(サービス開始初期) インテントデータ x 法人データ x 部署データ x 人物データ x

    部分検索 要件 データ構造 3 index Daily 要件 データ構造 法人データ: 500万 インテントデータ: 2千 インテントデータ × 法人データ
  12. 事業成長にと共に変化する要件 フェーズ2(サービス開始2ヶ月後) インテントデータ x 法人データ x 部署データ x 人物データ x

    部分検索 要件 データ構造 3 index Daily 課題:顧客のデータと突合する為、大量に名寄せを走らせる必要がある 法 人データの母数が多い為Aurora mysqlでは負荷が高い 要件 データ構造 法人データ: 500万 インテントデータ: 1万 インテントデータ × 法人データ × 部分検索
  13. 事業成長にと共に変化する要件 フェーズ2(サービス開始2ヶ月後) インテントデータ x 法人データ x 部署データ x 人物データ x

    部分検索 要件 データ構造 3 index Daily 解決方法:Opensearchを導入し、検索用にデータを同期させる事で解決 要件 データ構造 法人データ: 500万 インテントデータ: 1万 1 index Daily インテントデータ × 法人データ × 部分検索
  14. 事業成長にと共に変化する要件 フェーズ3 インテントデータ x 法人データ x 部署データ x 人物データ x

    部分検索 要件 データ構造 3 index Daily 課題:法人だけでは課題解決できず、部署や人物のデータを導入する必要 が新たに出てきた。 要件 データ構造 1 index Daily 法人データ: 500万 部署データ: 150万 人物データ: 300万 インテントデータ: 100万 インテントデータ × 法人データ インテントデータ × 部署データ インテントデータ × 人物データ × 部分検索
  15. 事業成長にと共に変化する要件 フェーズ3 インテントデータ x 法人データ x 部署データ x 人物データ x

    部分検索 要件 データ構造 3 index Daily 解決方法:開発期間が2週間の為Indexを追加する事で対応 要件 データ構造 法人データ: 500万 部署データ: 150万 人物データ: 300万 インテントデータ: 100万 3 index Daily インテントデータ × 法人データ インテントデータ × 部署データ インテントデータ × 人物データ × 部分検索
  16. 事業成長にと共に変化する要件 フェーズ4 インテントデータ x 法人データ x 部署データ x 人物データ x

    部分検索 要件 データ構造 3 index Daily 課題:OpensearchはJoin出来ず、Index間の横断的な検索が出来ない 要件 データ構造 法人データ: 500万 部署データ: 150万 人物データ: 300万 インテントデータ: 1000万 3 index Daily インテントデータ × 法人データ × 部署データ × 人物データ × 部分検索
  17. 事業成長にと共に変化する要件 フェーズ4 インテントデータ x 法人データ x 部署データ x 人物データ x

    部分検索 要件 データ構造 3 index Daily 解決方法:新たなIndex設計をし、一定冗長させることで横断検索を可能に 要件 データ構造 法人データ: 500万 部署データ: 150万 人物データ: 300万 インテントデータ: 1000万 Unified index Daily インテントデータ × 法人データ × 部署データ × 人物データ × 部分検索
  18. 事業成長にと共に変化する要件 フェーズ5 インテントデータ x 法人データ x 部署データ x 人物データ x

    部分検索 要件 データ構造 3 index Daily 課題:インテントデータが増えすぎてしまい、過去データを検索する際に パフォーマスが著しく落ちてしまう 要件 データ構造 法人データ: 500万 部署データ: 150万 人物データ: 300万 インテントデータ: 2億 Unified index Daily インテントデータ × 法人データ × 部署データ × 人物データ × 部分検索
  19. 事業成長にと共に変化する要件 フェーズ5 インテントデータ x 法人データ x 部署データ x 人物データ x

    部分検索 要件 解決方法:Athenaを新規に立ち上げ、定期的に古いデータをアーカイブす る仕組みを作り、Hot/Coldデータの振り分けを実施 要件 法人データ: 500万 部署データ: 150万 人物データ: 300万 インテントデータ: 2億 インテントデータ × 法人データ × 部署データ × 人物データ × 部分検索 データ構造 3 index Daily データ構造 Unified index Daily Daily
  20. 事業成長にと共に変化する要件 フェーズ6 インテントデータ x 法人データ x 部署データ x 人物データ x

    部分検索 要件 データ構造 3 index Daily 課題:ユーザーデータを混ぜた検索がしたいが、検索エンジンへのSyncが Dailyの為、不可能だった 要件 データ構造 インテントデータ × 法人データ × 部署データ × 人物データ × 部分検索 × ユーサーデータ 法人データ: 500万 部署データ: 150万 人物データ: 300万 インテントデータ: 2億 Unified index Daily Daily
  21. 事業成長にと共に変化する要件 フェーズ6 インテントデータ x 法人データ x 部署データ x 人物データ x

    部分検索 要件 データ構造 3 index Daily 解決方法:Opensearchの更新をリアルタイムに 要件 データ構造 インテントデータ × 法人データ × 部署データ × 人物データ × 部分検索 × ユーサーデータ 法人データ: 500万 部署データ: 150万 人物データ: 300万 インテントデータ: 20億 Unified index Daily Realtime
  22. 要件の発生時間軸とデータ構造の変化 3月 2022年 サービス開始 2023年 2024年 7月 5月 データ構造フェーズ2 10月

    データ構造フェーズ3 2月 データ構造フェーズ4 データ構造フェーズ5 データ構造フェーズ6 1月
  23. 要件の発生時間軸とデータ構造の変化 3月 2022年 サービス開始 2023年 2024年 7月 5月 データ構造フェーズ2 10月

    データ構造フェーズ3 2月 データ構造フェーズ4 データ構造フェーズ5 データ構造フェーズ6 1月 全ての変更は2〜3週間内で行う必要があった 新規機能の開発も止められなかった
  24. 要件の発生時間軸とデータ構造の変化 3月 2022年 サービス開始 2023年 2024年 7月 5月 データ構造フェーズ2 10月

    データ構造フェーズ3 2月 データ構造フェーズ4 データ構造フェーズ5 データ構造フェーズ6 1月 エンジニアの人数は常に不足、顧客数は増え続けるので 必須開発要件もどんどん増える