- 본 프로젝트는 팝업스토어 예약 및 한정 상품 예약 기능을 제공하는 플랫폼을 개발하는 것을 목표로 한다.
- 사용자는 다양한 팝업스토어를 확인하고 예약할 수 있으며, 스토어 예약 완료 후 한정 상품도 별도로 예약할 수 있다.
- 운영자는 팝업스토어 등록과 예약 관리를 효율적으로 수행할 수 있다.
| 역할 | 담당자 | 세부 업무 |
|---|---|---|
| 상품, 상품 예약 API |
원지윤 |
- 상품, 상품예약 CRUD 구현 - 공통 모듈에 예외/응답, JPA Auditing, AuditorAware 구현 및 JitPack 배포 - Redis 캐싱을 통해 상품 조회 성능 최적화 - 상품 예약 시 분산 락을 적용하여 재고 동시성 문제 해결 - 예약 취소 시 재고 복구를 위한 보상 트랜잭션 적용 |
| 스토어 예약, 슬랙 알림 API |
송예지 (팀장) |
- 스토어 예약 CRUD 구현 - Redis 캐싱 및 Redisson 락을 활용한 동시성 제어 - JMeter 테스트 기반으로 최적의 락 방식 적용 - 예약 기능별 서비스 버전 분리 및 관리 - Slack 포맷터 기반 메시지 템플릿 구성 및 Slack 알림 전송 |
| 스토어 API | 이태훈 | - 스토어, 스토어 시간대 CRU 구현 - 스토어 전체 조회 시 캐싱하여 조회 |
| 인증인가, 사용자 API |
조수빈 | - 회원가입, 로그인, 회원정보 수정 및 예약 내역 조회 기능 구현 - JWT 기반 인증 및 토큰 발급, 인증 필터로 사용자 요청 검증 - AOP와 @CheckUserRole을 통한 역할 기반 접근 제어 구현 - Redis 캐싱으로 사용자별 예약 내역 조회 성능 최적화 - 재고 감소 시 락을 활용한 동시성 제어 처리 |
- 멀티모듈 기반 마이크로서비스 아키텍처 설계
- 각 도메인은 독립적인 Spring Boot 애플리케이션으로 구성
- 서비스 간 통신은 FeignClient를 활용한 RESTful API 기반 인터페이스로 처리
- Spring Cloud Eureka를 이용한 서비스 디스커버리 및 Spring Cloud Gateway를 통한 API 라우팅
- 반복되는 요청을 줄이기 위해 Redis 캐시를 적용하여 응답 속도 개선
- 캐싱 적용 전후 JMeter 기반 성능 측정을 통해 응답 속도 및 처리량 개선 확인
- Kafka를 통한 예약 프로세스 비동기 연동
- Producer-Consumer 구조로 서비스 간 결합도를 낮추고 확장성을 높임
- Redis 기반 분산 락을 도입하여 스토어/상품 예약 및 상품 재고 차감 시 동시 접근 제어
- 상품 예약에 비관적 락을 적용하여 데이터 정합성 문제 해결
docker-compose로 개발 환경 구축: 모든 마이크로서비스, Kafka, Redis, PostgreSQL 등을 한 번에 실행- 서비스 간 의존성을 최소화한 실행 및 테스트 환경 구성
- JWT 기반 사용자 인증 및 권한 검증 로직 구현
- 사용자 요청 시 토큰에서 사용자 정보를 파싱하여 권한 기반 접근 제어 적용
- Swagger 기반의 API 문서 자동 생성
- FeignClient 모킹을 통해 테스트 구현
-
Language
-
Backend Framework
-
Database
-
Messaging
-
Auth
-
Infra
-
IDE
🍌 Redis 적용
🍌 Kafka 도입
main: 서비스 운영 브랜치dev: 개발 환경 브랜치 - 개별적으로 작업했던 내용을 검토 후 dev에 mergefeat/[이슈번호]-[서비스명]: 서비스별 세부 브랜치fix/[이슈번호]-[서비스명]: 서비스별 수정되는 작업들을 위한 브랜치
| Division | Message |
|---|---|
| "feat: ~ " | 새로운 기능 추가 |
| "fix: ~ " | 버그 수정 |
| "refactor: ~ " | 기능이나 성능 개선 및 수정 |
| "style: ~ " | 주석 제거, 코드 줄바꿈 등의 사소한 변경 |
| "delete: ~ " | 파일을 삭제만 한 경우 |
- Pull Request를 통한 코드 리뷰
- dev에 pr을 올린 후 두 명 이상의 승인을 거쳐야 merge 할 수 있음
- 코드 변경 사항에 대해 팀원들과 공유하고 검토
- GitHub Issues를 통한 이슈 관리
- 이슈 트래킹을 통해 진행사항을 효율적으로 파악
- 데일리 스크럼을 통한 커뮤니케이션
- 매일 스크럼을 진행하여 모든 팀원의 진행 상황 공유




