코디잉

6주차 - WIL (Weekly I Learned) 본문

PROJECT/항해플러스 Lite 백엔드

6주차 - WIL (Weekly I Learned)

yong_ღ'ᴗ'ღ 2025. 7. 1. 19:39

🧐 6주차 과제 

1. Distributed Lock - Redis 기반의 분산락 구현해보기

2. Distributed Lock -  주문, 결제 등에 적절한 키와 범위를 선정해 분산락 적용하고, 통합테스트 작성하기

3. Cache - Cache 전략 취할 수 있는 구간 점검하고 적절한 전략 선정하기

4. Cache - Redis 기반의 캐싱 전략 적용하기

✅ Keep (잘한 점 / 유지할 점)

- 콘서트별로 토큰을 관리하려던 구조를 전환하여 전체 예약서비스 접근 제어용 대기열 구조로 단순화

- 허용된 대기열 토큰의 유효시간을 고려한 스케줄러를 도입하여 유효하지 않은 토큰 자동 만료 처리

- 재시도 방식의 Spin Lock 로직을 Redis로 직접 구현하고 Lua 스크립트로 안전하게 락 해제 처리

- 100개 동시 요청 기반 통합 테스트를 통해 실제 분산락 효과 검증

💬 이번 주 알게 된 것들

- Redis를 활용한 분산락의 방식

- Lua 스크립트 unlock 방식의 필요성과 구현 방법

🔁 지난 주 목표 회고

[✔] 콘서트별 대기열 → 예약 서비스 전체 단위 대기열로 구조 변경하기로 결정.

      대기열 토큰 검증 방식 변경 – userId 기반 → tokenId 기반으로 전환

[] 대기열 구현 (Redis pub/sub 구조 적용)
[✔] 좌석 상태 변경 스케줄러 수정: @ ConfigurationProperties, RetryTemplate

[✔] 허용된 대기열 토큰(ALLOWED) 10분 지나면 TIMEOUT 처리하는 스케줄러 구현
[✔] DTO 입력값에 대한 검증 로직 추가 (@Valid 활용)

[✔] 결제 동시성 테스트 코드 작성 – 100명 동시 결제 시도 → 1건만 성공하도록 테스트

[✔] Docker 기반 Redis 환경 구성

[✔] Redis 분산락 구현 (Spin Lock) 및 예약/결제 기능에 적용

[✔] Redis 통합테스트 환경 구성 및 테스트 성공

[❌] Cache

🎯 다음 주 목표

- 대기열 토큰 Redis 저장 적용

- 대기열 Redis pub/sub 구조 설계 및 적용

- Cache 공부 및 적용

 
Comments