Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ZOZOTOWNの商品検索におけるElasticsearch活用事例 / Elasticsea...
Search
banatt
December 01, 2022
Technology
4.8k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ZOZOTOWNの商品検索におけるElasticsearch活用事例 / Elasticsearch Case Study in ZOZOTOWN Goods Search
banatt
December 01, 2022
Other Decks in Technology
See All in Technology
Point Cloud as a Foreign Language for Multi-modal Large Language Model
takmin
0
350
hookで自作する Claude Code の「実況ボード」
shinyasaita
2
280
AI駆動開発を組織で促すために
lycorptech_jp
PRO
7
9.1k
Oracle AI Databaseデータベース・サービス: BaseDB/ExaDB-Dの可用性
oracle4engineer
PRO
1
1k
Claude Codeで開発以外の業務も爆速化しよう!
minorun365
PRO
12
9.4k
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
25k
AI時代のデータ基盤を考える問い
pacocat
0
790
どんな手を使っても絶対間に合わせるスケジューラ
asari194617
0
1.5k
1.5時間を無駄にして学んだwsl2におけるaptとsnapの選択と仕組み
yosaka0123
0
480
Backstageでつくるセルフサービスな社内開発基盤
kikunosuke75
1
130
Bet AI Day 2026丨AIを「使う」から、AIが「働く」へ ― LayerXが進める「組織AI」の社会実装
layerx
PRO
2
700
Claude Codeの体系的な理解と知識のフック
oikon48
10
6.4k
Featured
See All Featured
Amusing Abliteration
ianozsvald
1
280
The Cult of Friendly URLs
andyhume
79
7k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Utilizing Notion as your number one productivity tool
mfonobong
4
560
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
260
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
630
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
450
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.6k
Transcript
ZOZOTOWNの商品検索における Elasticsearch活用事例 株式会社ZOZO 技術本部 検索基盤部 池田 祐一 SRE部 立花 隆 Copyright ©
ZOZO, Inc. 1
© ZOZO, Inc. 株式会社ZOZO 技術本部 検索基盤部 検索基盤ブロック 池田 祐一 前職はSIerで働いており、2021年4月よりZOZOの検索基盤
チームへジョインしました。 現在はZOZOTOWNの検索に関するバックエンド領域の開発 ・保守/運用を行っています。 フルリモートでの生活もすっかり板につきました。 2
© ZOZO, Inc. https://zozo.jp/ • ファッションEC • 1,500以上のショップ、8,400以上のブランドの取り扱い • 常時90万点以上の商品アイテム数と毎日平均2,600点以上の新着
商品 を掲載(2022年9月末時点) • ブランド古着のファッションゾーン「ZOZOUSED」や コスメ専門モール「ZOZOCOSME」、靴の専門モール 「ZOZOSHOES」、ラグジュアリー&デザイナーズゾーン 「ZOZOVILLA」を展開 • 即日配送サービス • ギフトラッピングサービス • ツケ払い など 3
© ZOZO, Inc. 本セッションの構成 4 第1部: アプリケーション ZOZOTOWNにおけるElasticsearchの活用方法と、商品検索システムの構成について
第2部: SRE 検索APIが利用するElasticsearchをプロダクションレディにするための取り組みについて アプリケーション観点と、SRE観点の2部構成でお話しします。 本セッションの構成
© ZOZO, Inc. 5 第1部 1. ZOZOTOWNとElasticsearchのこれまでの歩み 2. ZOZOTOWNにおけるElasticsearchの活用方法 3.
ZOZOTOWNの検索システムの構成 第2部 1. Elasticsearch周りのアーキテクチャ 2. プロダクションレディとは? 3. プロダクションレディにするために取り組んでいること 4. 今後の展望 アジェンダ
© ZOZO, Inc. 6 第1部 1. ZOZOTOWNとElasticsearchのこれまでの歩み 2. ZOZOTOWNにおけるElasticsearchの活用方法 3.
ZOZOTOWNの検索システムの構成 第2部 1. Elasticsearch周りのアーキテクチャ 2. プロダクションレディとは? 3. プロダクションレディにするために取り組んでいること 4. 今後の展望 アジェンダ
© ZOZO, Inc. ZOZOTOWNとElasticsearchのこれまでの歩み 7 GSAサービス終了に伴う 乗り換え Elasticsearchへ全面移行 ➡ 2020年4月より、ZOZOTOWNの商品検索はElasticsearchへと全面移行しました。 2017
2018 2019 2020 2021 2022 ✓ ZOZOTOWN商品検索におけるElasticsearch移行までの歴史 Google Search Appliance
© ZOZO, Inc. 8 第1部 1. ZOZOTOWNとElasticsearchのこれまでの歩み 2. ZOZOTOWNにおけるElasticsearchの活用方法 3.
ZOZOTOWNの検索システムの構成 第2部 1. Elasticsearch周りのアーキテクチャ 2. プロダクションレディとは? 3. プロダクションレディにするために取り組んでいること 4. 今後の展望 アジェンダ
© ZOZO, Inc. ZOZOTOWNにおけるElasticsearchの活用方法 ✓ ZOZOTOWNで取り扱っている商品全般の検索機能をElasticsearchが担当する。 9 検索キーワードサジェスト ランキング機能 商品検索
© ZOZO, Inc. 製品情報 ZOZOTOWNにおけるElasticsearchの活用方法 検索に必要な情報をリアルタイム更新 ✓ Elasticsearchへインデクシングした商品データから、検索条件にマッチした商品を一覧表示する。 ブランド 検索条件に合った商品をソートして出力
サイズ カラー クーポン 情報 セール 情報 在庫状態 1 2 3 4 5 … … … … 10
© ZOZO, Inc. ZOZOTOWNにおけるElasticsearchの活用方法 ✓ ユーザーの行動履歴や属性を元に検索結果を並べる「あなたにおすすめ順」を実現するために、 Elasticsearch Learning to
Rank(LTR)プラグインを利用している。 11 おすすめ順を指定 機械学習モデルの再学習を 繰り返し改善 商品特徴量ログを出力 機械学習モデルを使い、 ユーザーの嗜好に合わせた並び順 へ並べ替える プロフィール ・30代男 ・過去に購入した商品 ・…
© ZOZO, Inc. 12 第1部 1. ZOZOTOWNとElasticsearchのこれまでの歩み 2. ZOZOTOWNにおけるElasticsearchの活用方法 3.
ZOZOTOWNの検索システムの構成 第2部 1. Elasticsearch周りのアーキテクチャ 2. プロダクションレディとは? 3. プロダクションレディにするために取り組んでいること 4. 今後の展望 アジェンダ
© ZOZO, Inc. ZOZOTOWNの検索システムの構成 ✓ 検索システムは、Elasticsearchへ商品情報をインデクシングするバッチ機能(以下インデクシングバッチ)と、 Elasticsearchから商品情報を取得するAPI(以下検索API)から構成している。 13
© ZOZO, Inc. ZOZOTOWNの検索システムの構成 ✓ インデクシングバッチ詳細 14 製品情報・クーポン情報・人気順、など複数の処理 へ分割しており、Elasticsearchへのインデクシング を並列に処理する
更新情報を反映 対象データの情報取得 Elasticsearchへ情報反映 スケジュール起動
© ZOZO, Inc. ZOZOTOWNの検索システムの構成 ✓ 検索API詳細 15 検索リクエスト Elasticsearchへのクエリ発行 商品情報の取得
商品情報の返却 リクエストに応じた情報を取得。 商品検索やランキング検索、また、商品件数取 得など、複数のエンドポイントから構成
© ZOZO, Inc. 検索APIが利用するElasticsearchをプロダクションレディにするための取り組みについて、ご紹介します。 16 ここからSREのお話
© ZOZO, Inc. 株式会社ZOZO 技術本部 SRE部 ECプラットフォーム基盤SREブロック 立花 隆 2021年2月に入社し、ZOZOTOWNのマイクロサービス基盤を 担当するSREチームにジョインしました。現在は検索サービ
スのSREを担当しています。 プライベートでは2022年4月から始めたロードバイクで福岡 市周辺を走ってます🚴 17
© ZOZO, Inc. 18 第1部 1. ZOZOTOWNとElasticsearchのこれまでの歩み 2. ZOZOTOWNにおけるElasticsearchの活用方法 3.
ZOZOTOWNの検索システムの構成 第2部 1. Elasticsearch周りのアーキテクチャ 2. プロダクションレディとは? 3. プロダクションレディにするために取り組んでいること 4. 今後の展望 アジェンダ
© ZOZO, Inc. 19 Elasticsearch周りのアーキテクチャ
© ZOZO, Inc. 20 第1部 1. ZOZOTOWNとElasticsearchのこれまでの歩み 2. ZOZOTOWNにおけるElasticsearchの活用方法 3.
ZOZOTOWNの検索システムの構成 第2部 1. Elasticsearch周りのアーキテクチャ 2. プロダクションレディとは? 3. プロダクションレディにするために取り組んでいること 4. 今後の展望 アジェンダ
© ZOZO, Inc. プロダクションレディとは? サービスが本番トラフィックを捌けるほど信頼のある状態のこと ZOZOTOWNではProduction Readiness Checklist*1 をベースとして、SREがサービス本番 リリース前に何を準備したら良いのか、より実践しやすいように規定している
21 Production Readiness Checklist *1 プロダクションレディマイクロサービス [オライリージャパン] 付録A 本番対応のチェックリスト より引用 ref. ZOZOTOWNのProduction Readiness Checklistと信頼性向上の取り組み ZOZOTOWN Microservice Production Readiness Checklist 1. 安定性、信頼性を備えている 2. スケーラブルでパフォーマンスが高い 3. 耐障害性があり大惨事対応力がある 4. 適切に監視されている 5. ドキュメントが整備され、組織的に理 解されている 1. CI/CD と Release Engineering 2. Performance Testing / Capacity Planning 3. Failure Testing 4. Monitoring 5. Documentation
© ZOZO, Inc. 22 第1部 1. ZOZOTOWNとElasticsearchのこれまでの歩み 2. ZOZOTOWNにおけるElasticsearchの活用方法 3.
ZOZOTOWNの検索システムの構成 第2部 1. Elasticsearch周りのアーキテクチャ 2. プロダクションレディとは? 3. プロダクションレディにするために取り組んでいること 4. 今後の展望 アジェンダ
© ZOZO, Inc. 1. マネージドサービスを活用して運用負荷を下げる ✓ Elasticsearchクラスタの管理にはマネージドクラウドサービスである Elastic Cloudを利用している 23
Elastic Cloudを選定した理由としては、カ スタムプラグインの利用に制限がないこと も大きかった • インフラ管理を手放す • 障害ノードの自動リカバリ • バックアップの自動取得
© ZOZO, Inc. 2. IaCとCI/CDによる信頼性・保守性向上 24 ✓ Terraform + GitHub
ActionsでElasticsearchクラスタ on ElasticCloudをデプロイしている Terraform利用前のCI/CDパイプライン内では、 CLIのElastic Cloud Controller (ecctl)を利用した職人芸的 な自家製スクリプトを利用していた・・・ elastic/terraform-provider-ec
© ZOZO, Inc. 3. パフォーマンステストとキャパシティプラン 25 ✓ 検索APIからElasticsearchを通す負荷試験を実施し、基礎数値を把握する • 1データノードあたりの目標レイテンシを捌けるスループット
• エラーが出ないラインではなく、レイテンシが跳ねないラインを探る ✓ データノードを増やした時にスループットが比例することを確認する concurrency(req/sec) latency(msec) 負荷試験結果の例 99%ile mean 昔は同じ物理ノードに複数コンテナが 乗りリソースが取り合いになることが 多く、20データノードくらいで性能が頭 打ちになっていた・・・
© ZOZO, Inc. 3. パフォーマンステストとキャパシティプラン 26 ✓ データノードの適切なキャパシティサイズ見積もりができている • 平常時、土日深夜ピーク、大規模セール深夜ピーク、正月ピーク
それぞれで何台必要になるかわかっている イベント 想定リクエスト量 スループット /1Node 必要なNode数 平常時 1,200 req/sec 100 req/sec 1,200 / 100 = 12 Node 土日深夜ピーク 1,800 req/sec 100 req/sec 1,800 / 100 = 18 Node 大規模セールピーク 2,400 req/sec 100 req/sec 2,400 / 100 = 24 Node 正月ピーク 3,000 req/sec 100 req/sec 3,000 / 100 = 30 Node CPUヘビーなワークロードであるZOZOTOWN検索機能においては、CPU使用量もしくはリク エスト量の閾値超過をトリガーにオートスケールさせたいが、現在Elastic Cloudではディスク 利用量トリガーでしかオートスケールできない。 そのため残念ながら人力で変更しており運用負荷が高い状態・・・
© ZOZO, Inc. 4. モニタリング 27 ✓ ダッシュボードで各種メトリクスを確認できる • インフラ、アプリケーションのメトリクスそれぞれの監視対象の例
(赤字はアラート判定の対象) インフラ監視対象 CPU使用量 メモリ使用量 ディスク使用量 スレッドプール(queue,rejected) データノード数 クラスタステータス 未アサイン状態のシャード数 アプリケーション監視対象 クエリ&フェッチ スループット クエリ&フェッチ レイテンシ インデクシングバッチの遅延 インデックス毎のドキュメント数 エイリアスの指すインデックス数 セール商品数、クーポン商品数など 独自クエリでしか取得できないメトリクスについては、 DatadogのPythonライブラリ*1を利用した自家製エク スポーターを作り対応している *1 ref. Datadog/datadogpy
© ZOZO, Inc. 4. モニタリング 28 ✓ Slackへのアラート通知が設定されている • 監視アラートメッセージには対応アクションが記載されたリンクを明
記し、誰でも即応できるようにする ✓ 一定以上の障害レベルの場合、PagerDutyから輪番担当者へのオンコー ルが設定されている
© ZOZO, Inc. 29 第1部 1. ZOZOTOWNとElasticsearchのこれまでの歩み 2. ZOZOTOWNにおけるElasticsearchの活用方法 3.
ZOZOTOWNの検索システムの構成 第2部 1. Elasticsearch周りのアーキテクチャ 2. プロダクションレディとは? 3. プロダクションレディにするために取り組んでいること 4. 今後の展望 アジェンダ
© ZOZO, Inc. 今後の展望 30 😤 セールイベント時のデータノード数変更の運用負荷が高い ➜ CPU利用量 or
リクエスト量判定のオートスケール追加を待ってます!🙏 😤 Elasticsearchのチューニングはまだ手動設定 ➜ 手動設定はクラスタ追加時に失念するリスクがあるためTerraform*1で IaC化する!💪 😤 おすすめ順検索の特徴量を増やすとレイテンシが悪化する ➜ 検索全体でレイテンシを改善し、特徴量を増やせる余地を作る!💪 *1 ref. elastic/terraform-provider-elasticstack 信頼性・保守性の向上 ユーザ体験の向上
© ZOZO, Inc. 31 最後に・・・
© ZOZO, Inc. • マッピング設定の最適化によるパフォーマンスチューニング • ユーザーログを活用したZOZOTOWNの検索サジェスト改善 • Elasticsearchバージョンアップ対応
32 取り組みについて、弊社テックブログ でも紹介していますので是非! 日々の運用・改善についてご紹介 その他にもElasticsearchに関わる様々な改善・開発を日々行っている
© ZOZO, Inc. ご清聴ありがとうございました 33
None