// projects/jsonstore

JsonStore

상품 등록부터 장바구니, 배송지, 주문, 관리자 처리까지 이어지는 커머스 MVP

completedE-commerce5명
role
장바구니·알림 흐름 분석/정리와 테스트 보강
impact
JWT 인증 주체 기준 API, Redis cart, FCM 알림 흐름의 권한 경계 점검
proof
Gradle test suite 당시 통과. 권한 필터·주문 만료 정책은 팀 구조 분석 기준
권한 필터2개
주문 만료 정책15분
근거 자료1
근거 보기

Project.java

project_nameJsonStore
period_team2025.03.31 ~ 2025.04.16 / 5명
purpose고객 쇼핑 흐름과 관리자 상품·주문 처리 흐름의 커머스 MVP 검증
goal고객/관리자 인증 분리, 상품·장바구니·배송지·주문·알림 흐름 연결
development_issue고객/관리자 공존 서비스. 인증 필터, 권한, 장바구니 캐싱, 주문 재고 동시성 경계 혼재 위험.
results
  • 팀 프로젝트 고객/관리자 인증 분리 구조 분석, 장바구니·알림 API는 JWT 인증 주체 기준 정리
  • Redis 기반 장바구니 캐싱 흐름 분석·테스트
  • Firebase Cloud Messaging 기반 웹 알림 흐름 분석·테스트
  • 주문·재고 동시성 테스트, JUnit/Mockito 테스트 보강

Role.md

roleCart, notification & test coverage
contribution장바구니·알림 흐름 분석과 테스트 보강. 고객 쇼핑 흐름과 관리자 주문 처리 흐름의 API 계약·도메인 책임 정리.
implemented_features
  • 장바구니 추가/조회/삭제 흐름 분석
  • FCM 토큰 등록과 웹 알림 발송 흐름 분석
  • JWT 인증 주체 기준 장바구니·알림 API 정리
  • 주문·재고 동시성 테스트
  • 고객/관리자 권한 경계 테스트
personal_achievements
  • 장바구니 Redis 저장소 분리 구조의 반복 조회·수정 흐름 분석
  • 요청 파라미터 대신 JWT 인증 주체를 쓰는 API 경계 정리
  • 주문·재고 차감 흐름의 동시성 위험 테스트 시나리오화

TechDecision.md

Backend

Java 21커머스 MVP 백엔드의 Spring Boot 런타임
Spring Boot 3.4.4커머스 도메인 API 구성, 계층별 테스트 기반
Spring Security + JWT고객/관리자 인증 필터 분리

AI

이 범주의 대표 기술은 없습니다.

Data

Spring Data JPA상품, 주문, 배송지, 회원 도메인의 관계형 모델 관리
Querydsl상품 검색과 조건 조회의 타입 안정적 확장
MySQL커머스 주문과 상품 데이터 저장소

Infra

Redis장바구니 캐싱과 주문 만료 대기 자원
Firebase Admin SDK웹 알림 토큰 등록과 발송 처리
AWS S3 SDK상품 이미지 업로드 저장소 연동
Docker Compose서비스 실행 환경과 외부 의존성 재현

Test

H2로컬 테스트의 빠른 도메인 계층 검증
JUnit 5 + Mockito장바구니, 알림, 주문, 인증 기능 회귀 검증
Spring Security Test권한별 API 접근과 인증 주체 기반 동작 검증

Docs

Swagger팀원 확인용 고객/관리자 API 문서화

Redis 기반 장바구니 캐싱

decision사용자별 장바구니 상태 Redis 저장, 서비스 계층의 추가·조회·삭제 흐름 일관화
reason상품 탐색 중 반복 조회·수정되는 장바구니, DB 단독 경유 시 응답 흐름 부담
alternativesDB 테이블 단독 저장, 클라이언트 local state 중심 처리
trade_offRedis 키 스키마·만료 정책 관리 부담 vs 반복 조회·수정 응답 경량화
verification장바구니 추가/조회/삭제 서비스 테스트, 인증 사용자 기준 API 테스트
ownership구조 분석 · 포트폴리오 표현 범위: 구조 분석/테스트 보강.

JWT principal 기반 장바구니·알림 API

decision장바구니·알림 API 기준: 요청 body 회원 식별자보다 JWT 인증 주체
reason클라이언트 식별자와 실제 인증 사용자 불일치 시 타 사용자 장바구니·알림 접근 위험
alternatives요청 body memberId 사용, path variable memberId 사용
trade_off테스트 인증 컨텍스트 구성 부담 vs API 입력 단순화·권한 경계 명확화
verificationSpring Security Test 기반 인증 사용자 기준 장바구니·알림 동작과 실패 케이스 검증
ownership구조 분석 · 포트폴리오 표현 범위: 구조 분석/테스트 보강.

FCM 알림과 테스트 보강

decisionFCM 토큰 등록과 알림 발송 실패 흐름까지 테스트 대상 포함
reason외부 서비스 연동 웹 알림, 토큰 저장·발송 요청·실패 예외 분리 필요
alternatives알림 기능 제외, 발송 실패를 로깅만 하고 테스트하지 않음
trade_off외부 SDK 추상화·테스트 setup 비용 증가 vs 알림 기능 회귀 감소
verificationFCM 토큰 등록과 알림 발송 실패 예외 테스트
ownership구조 분석 · 포트폴리오 표현 범위: 구조 분석/테스트 보강.

Problems.md

JWT 기준 장바구니·알림 API 정리

problem요청값 회원 식별자 의존 시 인증 주체와 요청 데이터 불일치 위험
approachAPI 입력의 사용자 식별 책임 축소, JWT memberUid 기준 서비스 계층 정리
cause화면 전달 값과 인증 컨텍스트의 동시 존재, 흐려지는 권한 경계
solution장바구니·알림 기능의 현재 로그인 사용자 조회를 인증 객체 기준으로 수정
result클라이언트 임의 식별자 없이 현재 로그인 사용자 기준 동작

주문·재고 동시성 검증

problem동일 상품 동시 구매 시 재고 오차 위험
approach상품 재고 처리 책임 분리, 동시성 테스트 기반 주문 생성 흐름 재현
cause주문 생성과 재고 차감의 결합, 동시 요청 경계 약화 가능성
solution재고 처리 서비스 분리, 주문 생성 테스트의 동시 요청 케이스 검증
result동시성 위험 테스트 시나리오화, 이후 주문 처리 수정의 회귀 기준 확보

Evidence/

ERD

ERD

회원·상품·재고·장바구니·주문(orders·order_products)·배송·결제·알림·관리자 도메인 관계

권한 필터

2개

프로젝트 구조 분석 기준 Member/Admin JWT 필터와 Provider 분리.

주문 만료 정책

15분

프로젝트 설정 분석 기준 대기 주문 재고 점유 제한 정책.

테스트 검증

당시 Gradle test suite 통과

기존 포트폴리오 기록의 검증 항목이며 전체 품질 보증률을 뜻하지 않는다.

Retrospective.md

learned

  • 커머스 핵심 경계: API 형태보다 인증 주체, 주문 상태, 재고 차감
  • 관리자/고객 공존 서비스: 필터 수준 역할 분리의 디버깅 이점

regrets

  • 주문·재고 동시성 테스트의 다양한 상품 조합·실패 케이스 부족
  • S3와 Firebase 운영 키 관리 절차 문서화 부족

improvements

  • 주문 상태 전이와 재고 차감 정책 별도 문서화
  • Firebase/S3 키 로테이션과 권한 정책 운영 체크리스트화

collaboration

고객/관리자 화면의 단일 API 서버 사용 구조. 팀원과 권한별 응답·에러 케이스 정합.

STAR.md

장바구니 API를 인증 주체 기준으로 정리

Situation장바구니·알림 API의 요청값 회원 식별자 의존, 타 사용자 데이터 접근 위험
ActionJWT 현재 사용자 기준 서비스 경계 변경, Spring Security Test 인증 케이스 보강
Result사용자 ID 직접 전달 없이 현재 로그인 사용자 기준 장바구니·알림 처리
Learning인증 서비스의 안전한 기준: 편한 파라미터보다 인증 컨텍스트