[ 6주차 과제 ] 대용량 트래픽&데이터 처리 - 피드백
2025. 5. 12. 13:37ㆍ향해99 8기
1. 재고차감 피드백 - 락을 너무 오래 잡고 있어요
100개 상품을 주문하면, 락 100개를 오래 잡아야 함
하나라도 실패하면 전체 실패 → 기능 제공에 악영향
락 점유 시간이 길어져서 다른 유저는 접근 자체가 안 됨
-> 피드백 반영
https://github.com/shinbumjun/server-java2/pull/2/commits/16b64e0caaa8321949d143369737351ebf37f644
기존에는 락과 트랜잭션이 동일한 흐름 내에 있어 책임이 분리되지 않았고,
AOP 트랜잭션의 구조적 장점을 활용하지 못했다.
구조를 개선하여 StockLockService에서 락만 담당하고,
ProductServiceImpl에서 트랜잭션만 담당하도록 분리함으로써
실질적인 AOP 기반 책임 분리 구조를 완성했다.
또한, 주문 생성 후 락 획득에 실패하면 주문을 실패 상태로 변경하여
기능 제공과 동시성 제어의 균형을 확보했다.
2. 쿠폰 발급 – 공정 큐가 오히려 성능을 낮춘다
공정 큐는 순서를 엄격히 보장하지만 시스템 전체 성능을 크게 저하시킬 수 있다.
실무에서는 Redis의 단일 쓰레드 원자성만 활용해도 충분히 선착순 처리가 가능하다.
-> 피드백 반영
https://github.com/shinbumjun/server-java2/pull/2/commits/ad89f9ee91115e06d4eb82699ee4bf9844d1966e
공정 큐 제거 → Redis 락만으로 선착순 쿠폰 발급 처리
요청 순서 보장 대신 시스템 처리량과 성능을 우선 고려
3. 포인트 사용 – 테스트 방식 개선 필요
'향해99 8기' 카테고리의 다른 글
| [ 8주차 과제 ] 대용량 트래픽&데이터 처리 (0) | 2025.05.19 |
|---|---|
| [ 7주차 과제 ] 대용량 트래픽&데이터 처리 (0) | 2025.05.19 |
| [ 6주차 과제 ] 대용량 트래픽&데이터 처리 - 정리 (0) | 2025.04.29 |
| [ 5주차 과제 ] 데이터베이스 심화 (비관적 락 동시성 테스트 문제 및 해결) (0) | 2025.04.19 |
| [ 3주차 과제 ] 이커머스 Clean + Layered Architecture 설계 (0) | 2025.04.05 |