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の商品の閲覧を支えるJava
Search
FUJIMOTO Takuya
March 23, 2023
0
1.5k
ZOZOTOWNの商品の閲覧を支えるJava
FUJIMOTO Takuya
March 23, 2023
Tweet
Share
Featured
See All Featured
Practical Orchestrator
shlominoach
186
10k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3.1k
Into the Great Unknown - MozCon
thekraken
34
1.6k
Building an army of robots
kneath
302
44k
Writing Fast Ruby
sferik
628
61k
Speed Design
sergeychernyshev
25
720
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Code Review Best Practice
trishagee
65
17k
Scaling GitHub
holman
459
140k
How to Ace a Technical Interview
jacobian
276
23k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
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