Skip to content

S-BARO/server

Repository files navigation

👕 스와이프로 찾는 내 스타일, 바로(BARO)

[Part 0] 스와이프로 찾는 내 스타일, ‘바로’를 기획하며(Ft. 기술적 목표)

  • 무신사, 에이블리와 같은 패션 E-Commerce 플랫폼입니다
  • 유튜브, 인스타를 통해 여러 코디들을 살펴보는 과정에서 옷을 구매하기 위해 여러 플랫폼을 오가며 찾는 과정이 번거로웠습니다
  • ‘바로(BARO)’는 이러한 불편함을 해결하기 위해 코디를 직관적이고 빠르게 탐색할 수 있는 스와이프(좌우로 사진을 넘기며 좋아요/싫어요)를 핵심 기능으로 두었습니다
  • 또한 AI 가상 피팅 기능(Google Nano Banana 활용)을 통해 옷을 직접 입어보지 못하는 E-Commerce의 단점을 보완하고 구매를 망설여하는 사용자들의 구매 전환율을 높일 수 있도록 했습니다

👨‍👧‍👦 Team

Hee Sang howu
PM / BackEnd FrontEnd

🎥 핵심 기능 시연 영상

1️⃣ 스와이프 + 나의 룩 보기 2️⃣ AI 가상 피팅
V2.mp4
AI.mp4

📑 주요 기능 목록

1. Auth(인증)

  • 카카오 로그인
  • 세션 스토리지 기반 인증 처리

2. Product(상품)

  • 상품 생성 및 조회, 상품 좋아요/취소
  • 인기 상품 및 최신 상품 목록 조회(커서 기반 페이지네이션)

3. Order(주문)

  • 주문 생성 및 조회, 목록 조회(커서 기반 페이지네이션)

4. Cart(장바구니)

  • CRUD, 목록 조회(커서 기반 페이지네이션)

5. Fit(피팅)

  • Presigned URL 기반 S3 이미지 업로드
  • 구글 나노 바나나 기반 AI 가상 피팅 기능

6. Look(룩)

  • 룩 생성 및 조회, 룩 좋아요/싫어요
  • 스와이프 및 나의 룩 목록 조회(커서 기반 페이지네이션)

🗂️ 코드 구조도

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                         # 테스트용 리소스

🗺️ System Architecture

image

💾 ERD

[바로(BARO) ERD]

image

📈 목표 성능

MAU 5만명, DAU 5,000명(DAU/MAU 비율 10%) 기준

동시 접속자 수 : 500명(DAU/10)

목표 응답 속도 : 100ms 이하


🤔 Technical Issue

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

[Part 10] AI 피팅 기능 사용량 제한하기 (Ft. Token Bucket)

[Part 11] 룩 상세 조회 기능 개선 (Ft. Redis 캐싱)

About

스와이프로 찾는 내 스타일, 바로(BARO)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published