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

10Xの検索を10xしたい at 第49回Elasticsearch勉強会

10Xの検索を10xしたい at 第49回Elasticsearch勉強会

Ryusuke Chiba

August 31, 2022
Tweet

More Decks by Ryusuke Chiba

Other Decks in Technology

Transcript

  1. ©10X, Inc. All Rights Reserved.
    第49回 Elaticsearch 勉強会

    10Xの検索を10xしたい @metalunk

    1

    View Slide

  2. ©10X, Inc. All Rights Reserved. 2
    10X が提供する Stailer の説明

    チェーンストアECの垂直立ち上げプラットフォーム

    View Slide

  3. ©10X, Inc. All Rights Reserved.
    チェーンストアECの垂直立ち上げプラットフォーム Stailer

    3
    スーパーマーケットやドラッグストアの E-commerce
    アプリ制作からオペレーションまで(詳しくは次のページ)
    インテグレータでなくプラットフォーム
    https://yamotty.tokyo/post/20220605
    Smart retailer

    View Slide

  4. ©10X, Inc. All Rights Reserved.
    チェーンストアECの垂直立ち上げプラットフォーム Stailer

    4

    View Slide

  5. ©10X, Inc. All Rights Reserved. 5
    半年間で実施した検索改善


    View Slide

  6. ©10X, Inc. All Rights Reserved.
    半年間で実施した検索改善

    2022年1月からの半年間で取り組んだこと

    ● Slow query の解決(検索速度 10x)

    ● Hardware profile の変更(コスト 80% 削減)

    ● 検索キーワードサジェスト

    ● カテゴリフィルタ

    ● bigram

    ● シノニム辞書を Search time に展開

    ● イベントログからシノニムルールの生成

    今日は青字の部分だけ説明します


    6
    詳しくは

    https://product.10x.co.jp/entry/serch-10x 

    https://product.10x.co.jp/entry/search-10x-ii 


    View Slide

  7. ©10X, Inc. All Rights Reserved. 7
    コスト 80% 削減
    Hardware profile の変更


    View Slide

  8. ©10X, Inc. All Rights Reserved.
    Hardware profile の変更(コスト 80% 削減)

    背景

    ● Slow query を解消し,CPU usage 68% 減少,Query time
    87% 減少し,リソースに余裕ができた

    課題

    ● 負荷解消によって必要なリソースのバランスが変わり,適
    切な Hardware profile を利用できていない(単に scale in
    しただけでは解決しない)

    8

    View Slide

  9. ©10X, Inc. All Rights Reserved.
    Elastic Cloud の Hardware profile

    
Elastic Cloud の Hardware profile を変えることで
    Storage, RAM, vCPU のバランスを変えることが
    できる

    現在利用できる profile は

    ● Storage optimized

    ● Storage optimized (dense)

    ● General purpose

    ● CPU optimized

    9
    Hardware profile の変更(コスト 80% 削減)

    View Slide

  10. ©10X, Inc. All Rights Reserved.
    引っ越し計画

    10
    Hardware profile の変更(コスト 80% 削減)
    もともと I/O Optimized(RAM と Storage が大盛り)を
    使っていたが,Stailer は CPU heavy なアプリケーショ
    ンであるため,CPU Optimized が適していることがわ
    かった

    現状と同等の vCPU をもつ profile に変更すると 85万
    円/月の節約ができそう! 

    この節約はサービスが大きくなってスケールアウトす
    るときにさらに効く


    しかし,Hardware profile は Deployment 作成時にしか
    設定できないため,あたらしく Deployment を作成し,
    旧 Deployment から引っ越しをする必要がある 

    無停止,データロスなしで


    View Slide

  11. ©10X, Inc. All Rights Reserved.
    引っ越しの方針

    1. Elasticsearch の更新をすべて PubSub 経由にする

    2. 新しい Deployment を CPU optimized で作る

    3. Double write 開始

    4. 旧 Deployment の全 index を新 Deployment に reindex

    5. 参照を切り替える

    6. Double write 停止

    7. 旧 Deployment を停止,削除する

    11
    Hardware profile の変更(コスト 80% 削減)

    View Slide

  12. ©10X, Inc. All Rights Reserved.
    Step0

    12
    Hardware profile の変更(コスト 80% 削減)
    1. Elasticsearch の更新をすべて PubSub 経
    由にする

    2. 新しい Deployment を CPU optimized で作
    る

    3. Double write 開始

    4. 旧 Deployment の全 index を新
    Deployment に reindex

    5. 参照を切り替える

    6. Double write 停止

    7. 旧 Deployment を停止,削除する

    View Slide

  13. ©10X, Inc. All Rights Reserved.
    Step1

    13
    Hardware profile の変更(コスト 80% 削減)
    1. Elasticsearch の更新をすべて PubSub 経
    由にする

    2. 新しい Deployment を CPU optimized で作
    る

    3. Double write 開始

    4. 旧 Deployment の全 index を新
    Deployment に reindex

    5. 参照を切り替える

    6. Double write 停止

    7. 旧 Deployment を停止,削除する

    View Slide

  14. ©10X, Inc. All Rights Reserved.
    Step2, 3, 4

    14
    Hardware profile の変更(コスト 80% 削減)
    1. Elasticsearch の更新をすべて PubSub 経
    由にする

    2. 新しい Deployment を CPU optimized で作
    る

    3. Double write 開始

    4. 旧 Deployment の全 index を新
    Deployment に reindex

    5. 参照を切り替える

    6. Double write 停止

    7. 旧 Deployment を停止,削除する

    View Slide

  15. ©10X, Inc. All Rights Reserved.
    Step5

    15
    Hardware profile の変更(コスト 80% 削減)
    1. Elasticsearch の更新をすべて PubSub 経
    由にする

    2. 新しい Deployment を CPU optimized で作
    る

    3. Double write 開始

    4. 旧 Deployment の全 index を新
    Deployment に reindex

    5. 参照を切り替える

    6. Double write 停止

    7. 旧 Deployment を停止,削除する

    View Slide

  16. ©10X, Inc. All Rights Reserved.
    Step6

    16
    Hardware profile の変更(コスト 80% 削減)
    1. Elasticsearch の更新をすべて PubSub 経
    由にする

    2. 新しい Deployment を CPU optimized で作
    る

    3. Double write 開始

    4. 旧 Deployment の全 index を新
    Deployment に reindex

    5. 参照を切り替える

    6. Double write 停止

    7. 旧 Deployment を停止,削除する

    View Slide

  17. ©10X, Inc. All Rights Reserved.
    Step7

    17
    Hardware profile の変更(コスト 80% 削減)
    1. Elasticsearch の更新をすべて PubSub 経
    由にする

    2. 新しい Deployment を CPU optimized で作
    る

    3. Double write 開始

    4. 旧 Deployment の全 index を新
    Deployment に reindex

    5. 参照を切り替える

    6. Double write 停止

    7. 旧 Deployment を停止,削除する

    View Slide

  18. ©10X, Inc. All Rights Reserved.
    Restore from snapshot 機能の不具合

    Elastic Cloud が提供している Restore from snapshot 機能で新 Deployment を作ろうとしたが動か
    ず...

    サポートに問い合わせるも特別な不具合とのことで,修正には時間がかかりそう(その後個別対応し
    てもらい,いまは動くはず)

    そういうわけで,代わりに Reindex from remote 機能を使ったツールを作ることにした

    ツールが行うことは,新しい Deployment に index を作り,mapping 等の設定をし,稼働中の
    Deployment から Reindex を実行すること

    18
    Hardware profile の変更(コスト 80% 削減)

    View Slide

  19. ©10X, Inc. All Rights Reserved.
    成果

    ● コスト 80% 削減

    ● 将来スケールアウトするときにも省コスト

    ● Elasticsearch の更新をすべて Pub/Sub 経由にできた

    ○ 引っ越し可能

    ○ 耐障害性向上

    19
    Hardware profile の変更(コスト 80% 削減)

    View Slide

  20. ©10X, Inc. All Rights Reserved. 20
    2022年1月からの半年間で取り組んだこと

    ● Slow query の解決(検索速度 10x)

    ● Hardware profile の変更(コスト 80% 削減)

    ● 検索キーワードサジェスト

    ● カテゴリフィルタ

    ● bigram

    ● シノニム辞書を Search time に展開

    ● イベントログからシノニムルールの生成

    今日説明できなかった改善事例はブログをご覧ください
    https://product.10x.co.jp/entry/serch-10x 

    https://product.10x.co.jp/entry/search-10x-ii

    View Slide

  21. ©10X, Inc. All Rights Reserved. 21
    いま取り組んでいる推薦


    View Slide

  22. ©10X, Inc. All Rights Reserved.
    いま取り組んでいる推薦

    Stailer における商品の Discovery のうち,お客さまが能動的に探す検索はまあまあいい状態になっ
    てきたから,次はお客さまに受動的に商品を見つけてもらいたい

    22
    ● 初期リリースでは MLOps 部分をきっちり作り,モデルは簡単なもの(ε-greedy のバンディッ
    ト)を出す

    ● MLOps を @metalunk, Data science を Growth チームの2人で担当

    ● 出したらまたどこかで発表します
    推薦やるぞ!

    View Slide

  23. ©10X, Inc. All Rights Reserved. 23
    10X のすゝめ


    View Slide

  24. ©10X, Inc. All Rights Reserved.
    10X のいいところ10個あげます

    1. メンバーが賢い.自律的

    2. 心理的安全性が高い(Brilliant jerk がいない)

    3. 経営陣が信頼できる

    4. SO に夢が持てる

    5. スタートアップなのにまあまあ高い給与水準

    6. Stailer を作ることで世界をよくできる

    7. 事業が成長している

    8. 日本のどこに住んでもいい

    9. フルリモート OK

    10. 家族第一

    24

    View Slide

  25. ©10X, Inc. All Rights Reserved.
    カジュアル面談しませんか?

    この通り,検索はまだ基本的なことしかやっておらず,やることはたくさんあります

    検索エンジニアが入社したら活躍できる状態を作りました


    どんな人に来てほしい?

    ● Stailer の検索を 10x できる人

    ● 検索,推薦合わせて Discovery という大きい Issue をまるっとやるのも大歓迎

    Job description はこちら: https://open.talentio.com/r/1/c/10x/pages/59532

    まずはカジュアル面談お願いします!: https://meety.net/matches/VKrfjFMdjWsC

    25

    View Slide