Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ZOZOTOWNの商品の閲覧を支えるJava
Search
FUJIMOTO Takuya
March 23, 2023
2.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ZOZOTOWNの商品の閲覧を支えるJava
FUJIMOTO Takuya
March 23, 2023
Featured
See All Featured
Color Theory Basics | Prateek | Gurzu
gurzu
1
510
ラッコキーワード サービス紹介資料
rakko
5
5.7M
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
620
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Design in an AI World
tapps
1
380
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
330
Exploring anti-patterns in Rails
aemeredith
4
560
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
How to Ace a Technical Interview
jacobian
280
24k
Accessibility Awareness
sabderemane
1
290
Statistics for Hackers
jakevdp
799
230k
Transcript
ZOZOTOWNの商品の閲覧を 支えるJava 2023-03-23 ZOZO Tech Meetup〜Java活用事例紹介〜 株式会社ZOZO 技術本部
ECプラットフォーム部 マイグレーションブロック 藤本 拓也 Copyright © ZOZO, Inc. 1
© ZOZO, Inc. Agenda • ロードマップにおける現在地 • 商品情報を扱うサービスのこれまで • これから構築していく商品基盤
• まとめ 2
© ZOZO, Inc. ロードマップにおける現在地 3
© ZOZO, Inc. ロードマップにおける現在地 ZOZO開発組織の2022年の振り返りと現状
- Qiita (https://qiita.com/sonots/items/eaec792b4ee41ad7ef1b) 4
© ZOZO, Inc. ロードマップにおける現在地 ZOZO開発組織の2022年の振り返りと現状
- Qiita (https://qiita.com/sonots/items/eaec792b4ee41ad7ef1b) 5 参照系基盤
© ZOZO, Inc. ロードマップにおける現在地 ZOZO開発組織の2022年の振り返りと現状
- Qiita (https://qiita.com/sonots/items/eaec792b4ee41ad7ef1b) 6 BFF 検索基盤 カート決済 リプレイス
© ZOZO, Inc. 商品情報を扱うサービスのこれまで 7
© ZOZO, Inc. 商品情報を主に扱うサービス(FrontAPI) 商品情報を扱うサービスのこれまで 8 FrontAPI SQL Server
Procedure SQL • FrontAPIはマイクロサービス構想以前に作り始められていた • ストアドプロシージャからの移行を主目的としていた VBScript
© ZOZO, Inc. 商品情報を扱うサービスのこれまで 9 FrontAPIのアプリケーションの構成 • Java •
Spring Boot • MyBatis • SQL Server • JUnit • Testcontainers @Controller @Service @Mapper SQL Server
© ZOZO, Inc. 商品情報を扱うサービスのこれまで 10 コードの例 ここで値やモデルの変換などを行っている
© ZOZO, Inc. 商品情報を扱うサービスのこれまで 11 FrontAPIが使われているところ(一部)
© ZOZO, Inc. 商品情報を扱うサービスのこれまで 12 FrontAPIの普段の取り組み • FrontAPIを作成してから長い期間が経過している •
大変になっているところもある • 課題はGitHubのIssueとして積み上げている • 週一で解消する会をやっている ◦ Testが足りないところを追加したり ◦ ビルドツールをMavenからGradleに置き換えたり
© ZOZO, Inc. これから構築していく商品基盤 13
© ZOZO, Inc. これから構築していく商品基盤
ZOZO開発組織の2022年の振り返りと現状 - Qiita (https://qiita.com/sonots/items/eaec792b4ee41ad7ef1b) 14 商品基盤構築
© ZOZO, Inc. これから構築していく商品基盤 15 商品情報を扱うサービスに特化させていく 主な課題 商品情報以外の機能を持っている
FrontAPI 検索 おすすめ 商品情報 検索基盤 検索 推薦基盤 お知らせ 商品基盤
© ZOZO, Inc. これから構築していく商品基盤 16 アプリケーションの構成(検討中) • Java •
Spring Boot • (未定) 永続化フレームワーク (MyBatis or Doma2 ?) • (未定) Database (MySQL?) • JUnit (+ Spock Framework?) • ArchUnit Database? ”OpenJDK Wiki”(https://wiki.openjdk.org/display/duke/Gallery) “Spring”(https://spring.io)
© ZOZO, Inc. これから構築していく商品基盤 17 ArchUnitを使って実現したいこと Package間の依存関係をチェック プレゼンテーション層のパッケージ ユースケース層のパッケージ
ドメイン層のパッケージ プレゼンテーション層は自分自身のみ参照できる ユースケース層はプレゼンテーション層からのみ参照できる ドメイン層はいずれからも参照できる
© ZOZO, Inc. これから構築していく商品基盤 18 ArchUnitを使って実現したいこと ◯◯DateTime.now()を使わないように 使っても良いクラスを制限 各メソッドで◯◯DateTimeのクラスを
使っているか? 使っているのは◯◯DateTimeの now()メソッドか? 使っていたらテストエラーとして登録する
© ZOZO, Inc. これから構築していく商品基盤 19 その他の展望(ネイティブイメージの作成) • これまでのJavaで作られたサービスはKubernetes上で実行されている •
Goなどと比べるとどうしても立ち上がりは遅い • Spring Boot 3.0からネイティブイメージの作成がサポート • これまでよりも素早いスケールを目標に
© ZOZO, Inc. まとめ 20
© ZOZO, Inc. まとめ 21 • ZOZOTOWNの商品を閲覧するとき、裏ではJavaが使われている • ストアドプロシージャから移行した当時と状況が変わってきている •
日々の保守を行いつつ、商品情報に特化したサービスへと変化させていく • 一緒にサービスを支えていく仲間を募集中 ZOZOTOWN バックエンドエンジニア(マイクロサービス) https://hrmos.co/pages/zozo/jobs/0000005