[Part 0] 스와이프로 찾는 내 스타일, ‘바로’를 기획하며(Ft. 기술적 목표)
- 무신사, 에이블리와 같은 패션 E-Commerce 플랫폼입니다
- 유튜브, 인스타를 통해 여러 코디들을 살펴보는 과정에서 옷을 구매하기 위해 여러 플랫폼을 오가며 찾는 과정이 번거로웠습니다
- ‘바로(BARO)’는 이러한 불편함을 해결하기 위해 코디를 직관적이고 빠르게 탐색할 수 있는 스와이프(좌우로 사진을 넘기며 좋아요/싫어요)를 핵심 기능으로 두었습니다
- 또한 AI 가상 피팅 기능(Google Nano Banana 활용)을 통해 옷을 직접 입어보지 못하는 E-Commerce의 단점을 보완하고 구매를 망설여하는 사용자들의 구매 전환율을 높일 수 있도록 했습니다
| Hee Sang | howu |
| PM / BackEnd | FrontEnd |
| 1️⃣ 스와이프 + 나의 룩 보기 | 2️⃣ AI 가상 피팅 |
|---|---|
V2.mp4 |
AI.mp4 |
- 카카오 로그인
- 세션 스토리지 기반 인증 처리
- 상품 생성 및 조회, 상품 좋아요/취소
- 인기 상품 및 최신 상품 목록 조회(커서 기반 페이지네이션)
- 주문 생성 및 조회, 목록 조회(커서 기반 페이지네이션)
- CRUD, 목록 조회(커서 기반 페이지네이션)
- Presigned URL 기반 S3 이미지 업로드
- 구글 나노 바나나 기반 AI 가상 피팅 기능
- 룩 생성 및 조회, 룩 좋아요/싫어요
- 스와이프 및 나의 룩 목록 조회(커서 기반 페이지네이션)
src/
├── main/
│ ├── kotlin/
│ │ └── com/dh/baro/
│ │ ├── cart # 장바구니 관련 모듈
│ │ │ ├── application # 애플리케이션 서비스
│ │ │ ├── domain # 도메인 엔티티 및 리포지토리
│ │ │ └── presentation # API (Controller) 및 DTO
│ │ ├── core # 공통 유틸리티 및 설정
│ │ │ ├── annotation # 커스텀 어노테이션
│ │ │ ├── auth # 세션 관리 및 인증
│ │ │ ├── config # Spring, Redis, Kafka 설정
│ │ │ ├── dlq # Dead-Letter Queue
│ │ │ ├── serialization # 직렬화
│ │ │ ├── outbox # Transactional Outbox 패턴
│ │ │ └── exception # 커스텀 예외
│ │ ├── identity # 사용자 및 로그인 관련 모듈
│ │ │ ├── application
│ │ │ ├── domain
│ │ │ ├── infra # 외부 API 연동
│ │ │ └── presentation
│ │ ├── look # 룩(코디) 관련 모듈
│ │ ├── order # 주문 관련 모듈
│ │ ├── product # 상품 관련 모듈
│ │ └── BaroApplication.kt
│ └── resources # 리소스 파일 (설정, 스크립트 등)
│ ├── application-dev.yaml # 개발 환경 설정
│ ├── application-prod.yaml # 운영 환경 설정
│ └── lua # Redis Lua 스크립트 파일
└── test/ # 테스트 관련 코드
├── kotlin # 테스트 코드
└── resources # 테스트용 리소스
MAU 5만명, DAU 5,000명(DAU/MAU 비율 10%) 기준
동시 접속자 수 : 500명(DAU/10)
목표 응답 속도 : 100ms 이하
[Part 1] JWT는 정말 괜찮은 방법일까? (Ft. 세션저장소 선택 이유)
[Part 2] 분산 시스템에서 ID가 유일하려면?(Ft. Snowflake VS TSID 성능테스트)
[Part 3] 반복되는 인증,인가 처리 없애버리기(Ft. AOP & ArgumentResolver)
[Part 4] 단일 주문 성능 개선 삽질기 (Ft. JPA save, FK)
[Part 5] DeadLock 범인 찾기 (Ft. 위험한 FK?)
[Part 6] 일괄 주문 기능 개선 Vol.1 (Ft. Eventual Consistency, Lua Script)
[Part 7] 일괄 주문 기능 개선 Vol.2 (Ft. Kafka, Transactional Outbox)
[Part 8] Redis의 Lua Script는 Atomic 하지 않다..?
[Part 9] 인기상품조회 기능 개선 (Ft. DB Connection Pool)