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.5k
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
SoccerMaster: A Vision Foundation Model for Soccer Understanding
kzykmyzw
0
160
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
460
AI x 開発生産性を取り巻く予算戦略と投資対効果
i35_267
7
2.7k
[Droidcon Orlando '26] The Android Lens: Applying Mobile Forensics to AI Performance
amanda_hinchman
1
100
インシデント事例と パッケージの全量解析に学ぶ ソフトウェアサプライチェーンの守り方 / supply-chain-attack-defense
flatt_security
0
840
Type-safe IaC for Dart
coborinai
0
180
AICoEでAIネイティブ組織への進化
yukiogawa
0
210
2026年のソフトウェア開発を考える(2026/07版) / Agentic Software Engineering 2026-07 Findy Edition
twada
PRO
19
8.3k
Making sense of Google’s agentic dev tools
glaforge
1
300
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
110k
PHPで作って学ぶリアルタイム音声対話AIとWebSocket入門 by ムナカタ
munakata
0
110
壊して学ぶAWS CDK: そのcdk deployで消えるもの、残るもの
k_adachi_01
1
460
Featured
See All Featured
Producing Creativity
orderedlist
PRO
348
40k
Become a Pro
speakerdeck
PRO
31
6k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
sira's awesome portfolio website redesign presentation
elsirapls
0
300
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
330
Done Done
chrislema
186
16k
Design in an AI World
tapps
1
260
Between Models and Reality
mayunak
4
380
Leo the Paperboy
mayatellez
8
1.9k
A Soul's Torment
seathinner
6
3.1k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
470
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
260
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