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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
banatt
December 01, 2022
Technology
4.6k
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
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
19k
猫付きpingコマンドを自作
uyuki234
0
230
Bill One 開発エンジニア 紹介資料
sansan33
PRO
7
19k
【CEDEC2026】専門性の高いデフォルメチームが挑んだ人材育成戦略 〜Cygames Academiaの企画から実施まで〜
cygames
PRO
0
590
[ChatGPT Work LT]事務作業が苦手な人のための バックオフィスの「半」自動化
chimaki_iot
0
280
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.2k
今こそ聞きたいソフトウェア設計 ドメイン駆動設計再入門
masuda220
PRO
17
7.2k
モバイルアプリ開発概論2026
recruitengineers
PRO
5
580
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
380
【CEDEC2026】コードレビュー支援ツール開発から学ぶ:LLMを用いた業務システムの実践的な運用設計と誤出力対策
cygames
PRO
0
680
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
2.5k
ブラウザ研修 2026
recruitengineers
PRO
6
980
Featured
See All Featured
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Agile that works and the tools we love
rasmusluckow
331
22k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
Mind Mapping
helmedeiros
PRO
1
310
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Producing Creativity
orderedlist
PRO
348
40k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
410
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
230
A Modern Web Designer's Workflow
chriscoyier
698
190k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
KATA
mclloyd
PRO
35
15k
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