코디잉

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

PROJECT/항해플러스 Lite 백엔드

4주차 - WIL (Weekly I Learned)

yong_ღ'ᴗ'ღ 2025. 6. 15. 21:17

🧐 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 구현하기
[✔] 대기열 토큰 기능 구현하기

[✔] 테스트 컨테이너로 테스트 가능하도록 구성

[✔]  기능별 통합테스트 작성

🎯 다음 주 목표

- 피드백 받았던거 보완해보기

- 동시성 관련 문제들 생각해보고, 처리해야함

Comments