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
インシデント事例と パッケージの全量解析に学ぶ ソフトウェアサプライチェーンの守り方 / supply-chain-attack-defense
flatt_security
0
150
CDKで書くECSのベストプラクティス、 改めて考え直す2026 #cdkconf2026
makies
3
860
AIレビューはどこまで任せられるのか?自動化と人が背負うレビューの境界
sansantech
PRO
3
1.1k
10年目を迎えた「ABEMA」がどのように AI 活用を推進して、AI 駆動開発にシフトしているのか / How ABEMA, entering its 10th year, is promoting the use of AI and shifting toward AI-driven development
miyukki
0
290
SRE Next 2026 何でも屋からの脱却
bto
0
1k
生成AI×AWS CDK×AWS FISで"振り返れる"ミニGameDayをつくろう
yoshimi0227
1
440
変更し続けられるシステムをどう保つか — AI時代のSSoTという設計原則
kawauso
1
260
【Claude Code】鹿野さんに聞く 私の推しの並行開発環境 大公開 / claude-code-parallel-2026-07-15
tonkotsuboy_com
13
8.8k
発表と総括 / Presentations and Summary
ks91
PRO
0
140
最適な自走を最小限の支援で — M&Aで拡大する組織で少人数SREが挑んだ1年 / SRE NEXT 2026
genda
0
1.6k
AI Native なプロダクト組織の立ち上げ方 : 生産性 100 倍への挑戦
mikesorae
0
230
Type-safe IaC for Dart
coborinai
0
160
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
630
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
190
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Exploring anti-patterns in Rails
aemeredith
3
450
How GitHub (no longer) Works
holman
316
150k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
2
340
30 Presentation Tips
portentint
PRO
1
350
The SEO Collaboration Effect
kristinabergwall1
1
510
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
900
A better future with KSS
kneath
240
18k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
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