Challenge
해결하려던 문제
이미지, MP4와 YouTube처럼 성격이 다른 후보를 하나의 토너먼트 흐름에서 안정적으로 재생하고, 탐색부터 제작과 관리까지 이어지는 경험이 필요했습니다.
프론트엔드의 게임 규칙과 API 상태를 분리해 테스트 가능한 구조로 정리하고, 기존 API는 NestJS와 PostgreSQL 기반으로 다시 구축해 인증과 미디어 저장 경계를 명확히 만들고 있습니다.
Scope
직접 다룬 영역
- 01월드컵 탐색 · 라운드 선택 · 토너먼트 플레이
- 02이미지 · MP4 · YouTube 후보 처리
- 03회원 인증과 월드컵 제작 · 관리
- 04NestJS API · PostgreSQL · 오브젝트 스토리지
Decisions
주요 기술적 선택
- 01
게임 규칙을 화면 밖으로 분리
후보 선택, 라운드 전환과 순위 계산을 순수 로직으로 분리해 UI 변경과 관계없이 핵심 규칙을 검증할 수 있게 했습니다.
- 02
동시 인증 갱신을 한 번으로 수렴
여러 요청이 동시에 만료돼도 refresh 요청은 한 번만 실행하고, 대기 중인 원래 요청이 같은 결과를 공유하도록 구성했습니다.
- 03
API와 데이터 기반을 새로 구축
NestJS, Prisma와 PostgreSQL로 API 계약을 다시 구현하고 refresh token rotation과 미디어 오브젝트 저장 경계를 서버에서 관리합니다.
Technology
사용 기술
- Next.js
- TypeScript
- NestJS
- PostgreSQL
- K3s