코디잉
4주차 - WIL (Weekly I Learned) 본문
🧐 4주차 과제
1. 예약/결제 기능 : 레이어드 아키텍처 ➡ 클린 아키텍처로 전환하기
2. 테스트 컨테이너로 테스트 가능하도록 구성
3. 기능별 통합테스트 작성
✅ Keep (잘한 점 / 유지할 점)
- 클린 아키텍처의 구조를 이해하고, 레이어드 아키텍처로 구현했던 패키지를 클린 아키텍처로 전환함
- 대기열 토큰 로직을 설계하면서 예매 흐름(조회 ➡ 예약 ➡ 결제)의 전반적인 흐름을 제어하는 구조를 구성해봄
- 상태 기반의 접근 방식(READY / EXPIRED 등)을 적용하고, 클린 아키텍처 구조 내에서도 Validator 컴포넌트를 활용해 공통 검증 로직을 분리함
❗️ Problem (문제점)
- DB 제약조건(UNIQUE) 설정으로 인해 이미 EXPIRED 된 토큰이 있음에도 발급이 막히는 문제가 발생 → 제약조건 제거 및 상태 조건 기반 처리로 수정 (역시 구현하다보면, DB에 수정할 사항이 많이 생긴다 ㅠ.ㅠ)
- 대기열토큰에서 발급된 순서를 의미하는 order 값의 실제 활용 방식에 대해 고민이 있었음 (READY 기준으로만 입장 허용하는 구조로 정리함) [➡ 아직도 명확히 정리되지 않음. 정리해봐야 함]
💡 Try (해결을 위한 시도)
- 콘서트일정 ID → 콘서트 ID로 대기열 토큰 기준을 전환하고, 발급 시점도 콘서트 일정 조회 시점으로 변경
- 기존 토큰 상태가 READY면 그대로 재사용하고, EXPIRED일 경우 새로 발급하는 로직 적용
💬 이번 주 알게 된 것들
- DB Unique 제약 조건은 상태값이 함께 고려되지 않으면 실질적인 유연한 처리를 막는 요소가 될 수 있다...
🔁 지난 주 목표 회고
[✔] 예약/결제 부분(reservation 패키지) 클린아키텍처로 전환하기
[✔] Infrastructure 레이어 작성하기
[✔] 좌석 선택 동시성처리 : Lock 구현하기
[✔] 대기열 토큰 기능 구현하기
[✔] 테스트 컨테이너로 테스트 가능하도록 구성
[✔] 기능별 통합테스트 작성
🎯 다음 주 목표
- 피드백 받았던거 보완해보기
- 동시성 관련 문제들 생각해보고, 처리해야함
'PROJECT > 항해플러스 Lite 백엔드' 카테고리의 다른 글
6주차 - WIL (Weekly I Learned) (0) | 2025.07.01 |
---|---|
5주차 - WIL (Weekly I Learned) (0) | 2025.06.21 |
3주차 - WIL (Weekly I Learned) (0) | 2025.06.08 |
2주차 - WIL (Weekly I Learned) (0) | 2025.06.01 |
1주차 - WIL (Weekly I Learned) (0) | 2025.05.25 |