항해 플러스 3기를 진행하면서 실습한 내용들을 정리한 프로젝트입니다.
- Java 17
- SpringBoot 3.2.0
- Gradle
- MySQL, Redis, JPA
- local
- dev
- stg
- prod
pr-ci.yml
: develop 브랜치로 pr이 들어온 경우 실행되는 파일로 테스트/빌드를 진행합니다. (test는 test-container를 사용)dev-cd.yml
: develop 브랜치로 push가 일어나는 경우 테스트/빌드 및 AWS ECR로 이미지를 푸시하고 ECS 배포까지 진행하게 됩니다.prod-cd.yml
:
com.hanghae.hanghaeplus3
├── account
│ ├── controller
│ │ ├── AccountRestController.java
│ │ ├── request
│ │ │ └── BalanceChargeRequest.java
│ │ └── response
│ │ ├── ChargeBalanceResponse.java
│ │ └── FindBalanceResponse.java
│ ├── repository
│ │ ├── AccountJpaRepository.java
│ │ ├── AccountRepositoryImpl.java
│ │ └── entity
│ │ └── AccountEntity.java
│ └── service
│ ├── AccountRepository.java
│ ├── AccountService.java
│ └── domain
│ └── Account.java
├── config
├── constant
├── exception
├── member
├── order
├── payment
├── product
├── BaseTimeEntity.java
├── CommonResponse.java
└── HanghaePlus3Application.java
- 구현 기능
- 이커머스(e-commerce) 상품 구매 서비스
- 주요 API
- 계좌 잔액 조회
- 계좌 잔액 충전
- 상품 조회
- 상품 구매
- 인기 상품 조회
- 주요 포인트
- 동시성 테스트
- 따닥 방지
- Redis Lock 사용 (분산 환경 및 DB Connection 보호)
- 동시 재고 차감 방지
- 비관적 락 사용 -> 추후 낙관적 락으로 변경 예정
- 따닥 방지
- 캐시
- 인기 상품 조회 ->
@Cacheable
을 사용하여 캐싱하고 매일 한번 스케줄링으로 캐시를 삭제
- 인기 상품 조회 ->
- 동시성 테스트
- logback console, file 로그 남기기
- CloudWatch 연동
- JMeter 적용
- 인기상품 조회, 주문 관련 API 테스트 시나리오 작성