Slide 1

Slide 1 text

ZOZOTOWNの商品の閲覧を
 支えるJava
 2023-03-23 ZOZO Tech Meetup〜Java活用事例紹介〜
 
 
 株式会社ZOZO
 技術本部 ECプラットフォーム部 マイグレーションブロック
 藤本 拓也 Copyright © ZOZO, Inc. 1

Slide 2

Slide 2 text

© ZOZO, Inc. Agenda
 ● ロードマップにおける現在地
 ● 商品情報を扱うサービスのこれまで
 ● これから構築していく商品基盤
 ● まとめ
 2

Slide 3

Slide 3 text

© ZOZO, Inc. ロードマップにおける現在地
 3

Slide 4

Slide 4 text

© ZOZO, Inc. ロードマップにおける現在地
 
 
 
 
 
 ZOZO開発組織の2022年の振り返りと現状 - Qiita (https://qiita.com/sonots/items/eaec792b4ee41ad7ef1b)
 
 
 4

Slide 5

Slide 5 text

© ZOZO, Inc. ロードマップにおける現在地
 
 
 
 
 
 ZOZO開発組織の2022年の振り返りと現状 - Qiita (https://qiita.com/sonots/items/eaec792b4ee41ad7ef1b)
 
 
 5 参照系基盤

Slide 6

Slide 6 text

© ZOZO, Inc. ロードマップにおける現在地
 
 
 
 
 
 ZOZO開発組織の2022年の振り返りと現状 - Qiita (https://qiita.com/sonots/items/eaec792b4ee41ad7ef1b)
 
 
 6 BFF 検索基盤 カート決済 リプレイス

Slide 7

Slide 7 text

© ZOZO, Inc. 商品情報を扱うサービスのこれまで
 7

Slide 8

Slide 8 text

© ZOZO, Inc. 商品情報を主に扱うサービス(FrontAPI)
 
 商品情報を扱うサービスのこれまで
 8 FrontAPI SQL Server Procedure SQL 
 ● FrontAPIはマイクロサービス構想以前に作り始められていた
 ● ストアドプロシージャからの移行を主目的としていた
 VBScript

Slide 9

Slide 9 text

© ZOZO, Inc. 商品情報を扱うサービスのこれまで
 9 FrontAPIのアプリケーションの構成
 

 ● Java
 ● Spring Boot
 ● MyBatis
 ● SQL Server
 ● JUnit
 ● Testcontainers
 @Controller @Service @Mapper SQL Server

Slide 10

Slide 10 text

© ZOZO, Inc. 商品情報を扱うサービスのこれまで
 10 コードの例
 ここで値やモデルの変換などを行っている

Slide 11

Slide 11 text

© ZOZO, Inc. 商品情報を扱うサービスのこれまで
 11 FrontAPIが使われているところ(一部)
 

 


Slide 12

Slide 12 text

© ZOZO, Inc. 商品情報を扱うサービスのこれまで
 12 FrontAPIの普段の取り組み
 
 ● FrontAPIを作成してから長い期間が経過している
 ● 大変になっているところもある
 ● 課題はGitHubのIssueとして積み上げている
 ● 週一で解消する会をやっている
 ○ Testが足りないところを追加したり
 ○ ビルドツールをMavenからGradleに置き換えたり
 


Slide 13

Slide 13 text

© ZOZO, Inc. これから構築していく商品基盤
 13

Slide 14

Slide 14 text

© ZOZO, Inc. これから構築していく商品基盤
 
 
 
 
 
 
 
 ZOZO開発組織の2022年の振り返りと現状 - Qiita (https://qiita.com/sonots/items/eaec792b4ee41ad7ef1b)
 
 
 14 商品基盤構築

Slide 15

Slide 15 text

© ZOZO, Inc. これから構築していく商品基盤
 15 商品情報を扱うサービスに特化させていく
 
 主な課題
 商品情報以外の機能を持っている
 
 FrontAPI 検索 おすすめ 商品情報 検索基盤 検索 推薦基盤 お知らせ 商品基盤

Slide 16

Slide 16 text

© 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)
 


Slide 17

Slide 17 text

© ZOZO, Inc. これから構築していく商品基盤
 17 ArchUnitを使って実現したいこと
 

 Package間の依存関係をチェック
 プレゼンテーション層のパッケージ ユースケース層のパッケージ ドメイン層のパッケージ プレゼンテーション層は自分自身のみ参照できる ユースケース層はプレゼンテーション層からのみ参照できる ドメイン層はいずれからも参照できる

Slide 18

Slide 18 text

© ZOZO, Inc. これから構築していく商品基盤
 18 ArchUnitを使って実現したいこと
 

 ◯◯DateTime.now()を使わないように
 使っても良いクラスを制限 各メソッドで◯◯DateTimeのクラスを 使っているか? 使っているのは◯◯DateTimeの now()メソッドか? 使っていたらテストエラーとして登録する

Slide 19

Slide 19 text

© ZOZO, Inc. これから構築していく商品基盤
 19 その他の展望(ネイティブイメージの作成)
 

 ● これまでのJavaで作られたサービスはKubernetes上で実行されている
 ● Goなどと比べるとどうしても立ち上がりは遅い
 ● Spring Boot 3.0からネイティブイメージの作成がサポート
 ● これまでよりも素早いスケールを目標に


Slide 20

Slide 20 text

© ZOZO, Inc. まとめ
 20

Slide 21

Slide 21 text

© ZOZO, Inc. まとめ
 21 ● ZOZOTOWNの商品を閲覧するとき、裏ではJavaが使われている
 ● ストアドプロシージャから移行した当時と状況が変わってきている
 ● 日々の保守を行いつつ、商品情報に特化したサービスへと変化させていく
 ● 一緒にサービスを支えていく仲間を募集中
 
 
 ZOZOTOWN バックエンドエンジニア(マイクロサービス) https://hrmos.co/pages/zozo/jobs/0000005