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.2k
ZOZOTOWNの商品の閲覧を支えるJava
FUJIMOTO Takuya
March 23, 2023
Tweet
Share
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
13
1.5k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
115
18k
Atom: Resistance is Futile
akmur
258
25k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
39
4.4k
A better future with KSS
kneath
231
16k
Testing 201, or: Great Expectations
jmmastey
27
6.3k
GraphQLとの向き合い方2022年版
quramy
31
12k
Designing on Purpose - Digital PM Summit 2013
jponch
110
6.4k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
60
14k
How to name files
jennybc
64
92k
The Illustrated Children's Guide to Kubernetes
chrisshort
29
46k
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