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トップページの裏側 / Back side of the ZOZOTOWN t...
Search
TakahashiKazutaro
July 29, 2021
Technology
5.9k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ZOZOTOWNトップページの裏側 / Back side of the ZOZOTOWN top page
TakahashiKazutaro
July 29, 2021
More Decks by TakahashiKazutaro
See All by TakahashiKazutaro
replace of cart system on ZOZOTOWN
takahashikazutaro
0
2.2k
Other Decks in Technology
See All in Technology
[ChatGPT Work LT]事務作業が苦手な人のための バックオフィスの「半」自動化
chimaki_iot
0
280
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
2.5k
グローバル基準のSREは、運用現場でどう機能したか:成熟度アセスメントの実践 / SRE NEXT 2026
sorawatanabe
0
190
FPGAが実現する遠方宇宙の高空間分解能天体撮影 -大型地上望遠鏡の視力を補正する「補償光学」とは?-
komei_mt
0
220
[しろおび夏祭り2026] チャットするAIから、作業するAIへ - 使われ方の変化と、その裏側で起きていること
kk0n
0
1.7k
Invisible to AI? Making TYPO3 Sites Quotable by AI Search Systems
wolfgangwagner
0
190
つくって納得、つかって実感! 大規模言語モデルことはじめ ver2.0
recruitengineers
PRO
4
1.5k
20260804_Q4AzureUpdateBite_FabricDataAgentの精度を高める設計.pdf
matayuuu
1
130
【AG-UI × A2UI × MCP Apps】Generative UIをやさしく解説する
nrinetcom
PRO
1
110
制約理論(ToC)入門 2026版
recruitengineers
PRO
8
2.2k
OSPN.JPバージョンアップ作業進捗のご報告 / 20260801-osc26kyoto
akkiesoft
0
480
認知負荷をGemini で溶かす — GKE 基盤「Orbit」における AI エージェントの実践
sansantech
PRO
1
290
Featured
See All Featured
The Limits of Empathy - UXLibs8
cassininazir
1
600
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
Become a Pro
speakerdeck
PRO
31
6.2k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
380
How to Talk to Developers About Accessibility
jct
2
500
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Optimizing for Happiness
mojombo
378
71k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
200
Transcript
ZOZOTOWNトップページの裏側 ZOZO Tech Meetup 〜マイクロサービス化に取り組む、16年目のZOZOTOWN〜 株式会社ZOZOテクノロジーズ EC基盤本部/ECプラットフォーム部 カート決済チーム 高橋 和太郎
Copyright © ZOZO Technologies, Inc.
© ZOZO Technologies, Inc. 株式会社ZOZOテクノロジーズ EC基盤本部/ECプラットフォーム部 カート決済チーム 高橋 和太郎 2016年10月にスタートトゥデイ工務店(現ZOZOテクノロジー
ズ)に中途入社。2019年よりZOZOTOWNリプレイスプロジェ クトに従事。趣味は猫と遊ぶこと。 2
© ZOZO Technologies, Inc. https://zozo.jp/ • 日本最大級のファッション通販サイト • 1,400以上のショップ、8,200以上のブランドの取り扱い(ともに2021年3月 末時点)
• 常時83万点以上の商品アイテム数と毎日平均2,900点以上の新着 商品 を掲載 • コスメ専門モール「ZOZOCOSME」や靴の専門モール 「ZOZOSHOES」、ラグジュアリー&デザイナーズゾーン 「ZOZOVILLA」を展開 • 即日配送サービス • ギフトラッピングサービス • ツケ払い など 3
© ZOZO Technologies, Inc. アジェンダ • ZOZOTOWNトップページの裏側を支えるAPI • 構成 •
処理の流れ • まとめ 4
© ZOZO Technologies, Inc. 5 ZOZOTOWNトップページ の裏側を支えるAPI
© ZOZO Technologies, Inc. 6 2021/3/18にZOZOTOWNはリニューアルしました。
© ZOZO Technologies, Inc. 7 今回のZOZOTOWNのリニューアルを機に実装されたAPI ZOZO Aggregation
API
© ZOZO Technologies, Inc. ZOZO Aggregation APIを実装した目的 8 • 各マイクロサービスへの通信をまとめる
• パーソナライズを見据えてモジュールの出し分けをする • コンテンツの運用負荷の削減する • 表示モジュールのA/Bテストを可能にする
© ZOZO Technologies, Inc. モジュールとは 9 • ZOZOTOWNのトップページに表示されて一 定の目的を持った商品情報の塊のこと
• リニューアル前から現在と同様に情報を表 示する単位でデバイスごとに存在していた
© ZOZO Technologies, Inc. 10 構成
© ZOZO Technologies, Inc. リニューアル前のZOZOTOWNのトップページの構成 11 • Web、アプリで必要に応じて各APIやオンプレ DB(ストアド)へアクセスしていた
• 今後、マイクロサービスが進むにつれ、アクセ ス対象となるAPIが増え、そのAPIの要件に よっては、クライアントサイドで改修が必要に なる
© ZOZO Technologies, Inc. リニューアル後のZOZOTOWNのトップページの構成 12 • トップページのすべてのアクセスはAPI Gatewayを通してAggregation APIへ
一本化 された • 今後、マイクロサービスが増えた場合でもクラ イアントから通信を行うのではなく、 Aggregation APIから通信を行う
© ZOZO Technologies, Inc. リニューアルの過程で苦労したこと(開発体制 -before-) 13
© ZOZO Technologies, Inc. リニューアルの過程で苦労したこと(開発体制 -after-) 14
© ZOZO Technologies, Inc. Aggregation APIを中心とした構成(開発当初) 15
© ZOZO Technologies, Inc. Aggregation APIを中心とした構成(負荷試験実施時) 16
© ZOZO Technologies, Inc. 負荷試験の障害の原因 17
© ZOZO Technologies, Inc. Aggregation APIを中心とした構成(キャッシュ導入後) 18
© ZOZO Technologies, Inc. キャッシュスタンピード対策について 19 ZOZOTOWNリニューアルで 実 施
した Cache Stampede対策 https://techblog.zozo.com/entry/zozotown-cache-stampede
© ZOZO Technologies, Inc. 20 処理の流れ
© ZOZO Technologies, Inc. Aggregation APIの処理の流れ(全体) 21
© ZOZO Technologies, Inc. Aggregation APIの処理の流れ(モジュール管理情報取得) 22
© ZOZO Technologies, Inc. Aggregation APIの処理の流れ(モジュール管理情報取得) 23 ZOZOTOWNのTOPページに必要な情報を取得 • モジュールのタイトル
• モジュール内の情報取得条件
© ZOZO Technologies, Inc. Aggregation APIの処理の流れ(各モジュール情報取得) 24
© ZOZO Technologies, Inc. Aggregation APIの処理の流れ(各モジュール情報取得) 25
© ZOZO Technologies, Inc. 26 全体レスポンス { "result": [ {
モジュールAレスポンス }, { モジュールBレスポンス }, { モジュールCレスポンス }, { モジュールDレスポンス } ] } Aggregation APIのレスポンス
© ZOZO Technologies, Inc. 27 全体レスポンス { "result": [ {
モジュールAレスポンス }, { モジュールBレスポンス }, { モジュールCレスポンス }, { モジュールDレスポンス } ] } Aggregation APIのレスポンス { "common_information": { "title": "モジュールAタイトル", "sub_title": "モジュールAサブタイトル", "module_type": "モジュールA", : }, "module_information": [ { "item_id": 1234567, "item_name": "サンプルA", "price": 5500 }, { : }, ] } モジュールの共通情報 モジュール情報
© ZOZO Technologies, Inc. 28 Aggregation APIのダウン = ZOZOTOWNのトップページが見れない
© ZOZO Technologies, Inc. Aggregation APIの処理の流れ(障害発生時) 29
© ZOZO Technologies, Inc. Aggregation APIの処理の流れ(障害発生時) 30
© ZOZO Technologies, Inc. Aggregation APIの処理の流れ(障害発生時) 31 • Aggregation API内部に保持している固定のjsonを読む
© ZOZO Technologies, Inc. Aggregation APIの処理の流れ(障害発生時) 32
© ZOZO Technologies, Inc. 33 まとめ
© ZOZO Technologies, Inc. • BFFとしてはクライアントと1対1とすべき ◦ Web : Web用API、App:App用API
• 多くのチームとのコミュニケーションが取れた 34 Aggregation APIを構築して得られたこと
© ZOZO Technologies, Inc. • ZOZO Aggregation APIを実装 • 各マイクロサービスとの通信をまとめる役割
• 一部のマイクロサービスとの通信でエラーでも大丈夫 35 まとめ
None