WELCOME TO THE PROJECT STORE
JsonStore
상품 등록부터 장바구니, 배송지, 주문, 관리자 처리까지 이어지는 커머스 MVP
- ROLE
- 장바구니·알림 흐름 분석/정리와 테스트 보강
- IMPACT
- JWT 인증 주체 기준 API, Redis cart, FCM 알림 흐름의 권한 경계 점검
- PROOF
- Gradle test suite 당시 통과. 권한 필터·주문 만료 정책은 팀 구조 분석 기준
IN THE STORE
프로젝트 안내
WHY THIS STORE EXISTS목적
고객 쇼핑 흐름과 관리자 상품·주문 처리 흐름의
커머스 MVP 검증목표
고객/관리자 인증 분리, 상품·장바구니·배송지·주문·알림 흐름 연결
개발 과제
고객/관리자 공존 서비스. 인증 필터, 권한, 장바구니 캐싱, 주문 재고 동시성 경계 혼재 위험.
결과
- 팀 프로젝트 고객/관리자 인증 분리 구조 분석, 장바구니·알림 API는 JWT 인증 주체 기준 정리
Redis기반 장바구니 캐싱 흐름 분석·테스트Firebase Cloud Messaging기반 웹 알림 흐름 분석·테스트- 주문·재고 동시성 테스트, JUnit/Mockito 테스트 보강
IN THE STORE
내가 맡은 일
OWNERSHIP역할
Cart, notification & test coverage
기여도
장바구니·알림 흐름 분석과 테스트 보강. 고객 쇼핑 흐름과 관리자 주문 처리 흐름의 API 계약·도메인 책임 정리.
구현한 기능
- 장바구니 추가/조회/삭제 흐름 분석
- FCM 토큰 등록과 웹 알림 발송 흐름 분석
- JWT 인증 주체 기준 장바구니·알림 API 정리
- 주문·재고 동시성 테스트
- 고객/관리자 권한 경계 테스트
개인 성과
- 장바구니
Redis저장소 분리 구조의 반복 조회·수정 흐름 분석 - 요청 파라미터 대신 JWT 인증 주체를 쓰는 API 경계 정리
- 주문·재고 차감 흐름의 동시성 위험 테스트 시나리오화
IN THE STORE
기술과 선택
TECH & DECISIONS백엔드
Java 21
커머스 MVP 백엔드의 Spring Boot 런타임
Spring Boot 3.4.4
커머스 도메인 API 구성, 계층별 테스트 기반
Spring Security + JWT
고객/관리자 인증 필터 분리
데이터
Spring Data JPA
상품, 주문, 배송지, 회원 도메인의 관계형 모델 관리
Querydsl
상품 검색과 조건 조회의 타입 안정적 확장
MySQL
커머스 주문과 상품 데이터 저장소
인프라
Redis
장바구니 캐싱과 주문 만료 대기 자원
Firebase Admin SDK
웹 알림 토큰 등록과 발송 처리
AWS S3 SDK
상품 이미지 업로드 저장소 연동
Docker Compose
서비스 실행 환경과 외부 의존성 재현
테스트
H2
로컬 테스트의 빠른 도메인 계층 검증
JUnit 5 + Mockito
장바구니, 알림, 주문, 인증 기능 회귀 검증
Spring Security Test
권한별 API 접근과 인증 주체 기반 동작 검증
문서화
Swagger
팀원 확인용 고객/관리자 API 문서화
Redis 기반 장바구니 캐싱
선택
사용자별 장바구니 상태
Redis 저장, 서비스 계층의 추가·조회·삭제 흐름 일관화이유
상품 탐색 중 반복 조회·수정되는 장바구니, DB 단독 경유 시 응답 흐름 부담
대안
DB 테이블 단독 저장, 클라이언트 local state 중심 처리
트레이드오프
Redis 키 스키마·만료 정책 관리 부담 vs 반복 조회·수정 응답 경량화
검증
장바구니 추가/조회/삭제 서비스 테스트, 인증 사용자 기준 API 테스트
주도성
구조 분석 · 포트폴리오 표현 범위: 구조 분석/테스트 보강.
JWT principal 기반 장바구니·알림 API
선택
장바구니·알림 API 기준: 요청 body 회원 식별자보다 JWT 인증 주체
이유
클라이언트 식별자와 실제 인증 사용자 불일치 시 타 사용자 장바구니·알림 접근 위험
대안
요청 body memberId 사용, path variable memberId 사용
트레이드오프
테스트 인증 컨텍스트 구성 부담 vs API 입력 단순화·권한 경계 명확화
검증
Spring Security Test 기반 인증 사용자 기준 장바구니·알림 동작과 실패 케이스 검증
주도성
구조 분석 · 포트폴리오 표현 범위: 구조 분석/테스트 보강.
FCM 알림과 테스트 보강
선택
FCM 토큰 등록과 알림 발송 실패 흐름까지 테스트 대상 포함
이유
외부 서비스 연동 웹 알림, 토큰 저장·발송 요청·실패 예외 분리 필요
대안
알림 기능 제외, 발송 실패를 로깅만 하고 테스트하지 않음
트레이드오프
외부 SDK 추상화·테스트 setup 비용 증가 vs 알림 기능 회귀 감소
검증
FCM 토큰 등록과 알림 발송 실패 예외 테스트
주도성
구조 분석 · 포트폴리오 표현 범위: 구조 분석/테스트 보강.
IN THE STORE
문제를 푼 방식
PROBLEM SOLVINGJWT 기준 장바구니·알림 API 정리
문제
요청값 회원 식별자 의존 시 인증 주체와 요청 데이터 불일치 위험
접근
API 입력의 사용자 식별 책임 축소, JWT memberUid 기준 서비스 계층 정리
원인
화면 전달 값과 인증 컨텍스트의 동시 존재, 흐려지는 권한 경계
해결
장바구니·알림 기능의 현재 로그인 사용자 조회를 인증 객체 기준으로 수정
결과
클라이언트 임의 식별자 없이 현재 로그인 사용자 기준 동작
주문·재고 동시성 검증
문제
동일 상품 동시 구매 시 재고 오차 위험
접근
상품 재고 처리 책임 분리, 동시성 테스트 기반 주문 생성 흐름 재현
원인
주문 생성과 재고 차감의 결합, 동시 요청 경계 약화 가능성
해결
재고 처리 서비스 분리, 주문 생성 테스트의 동시 요청 케이스 검증
결과
동시성 위험 테스트 시나리오화, 이후 주문 처리 수정의 회귀 기준 확보
IN THE STORE
검증 자료
EVIDENCE, NOT DECORATION
ERD
회원·상품·재고·장바구니·주문(orders·order_products)·배송·결제·알림·관리자 도메인 관계
권한 필터
2개프로젝트 구조 분석 기준Member/Admin JWT 필터와 Provider 분리.주문 만료 정책
15분프로젝트 설정 분석 기준 대기 주문 재고 점유 제한 정책.테스트 검증
당시 Gradle test suite 통과기존 포트폴리오 기록의 검증 항목이며 전체 품질 보증률을 뜻하지 않는다.IN THE STORE
회고
WHAT I LEARNED배운 점
- 커머스 핵심 경계: API 형태보다 인증 주체, 주문 상태, 재고 차감
- 관리자/고객 공존 서비스: 필터 수준 역할 분리의 디버깅 이점
아쉬운 점
- 주문·재고 동시성 테스트의 다양한 상품 조합·실패 케이스 부족
- S3와 Firebase 운영 키 관리 절차 문서화 부족
다음 개선
- 주문 상태 전이와 재고 차감 정책 별도 문서화
- Firebase/S3 키 로테이션과 권한 정책 운영 체크리스트화
협업
고객/관리자 화면의 단일 API 서버 사용 구조. 팀원과 권한별 응답·에러 케이스 정합.
IN THE STORE
면접에서 설명할 사례
STAR STORIES장바구니 API를 인증 주체 기준으로 정리
상황
장바구니·알림 API의 요청값 회원 식별자 의존, 타 사용자 데이터 접근 위험
행동
JWT 현재 사용자 기준 서비스 경계 변경, Spring Security Test 인증 케이스 보강
결과
사용자 ID 직접 전달 없이 현재 로그인 사용자 기준 장바구니·알림 처리
배움
인증 서비스의 안전한 기준: 편한 파라미터보다 인증 컨텍스트