Week 15
기간: 2026.02.23 - 2026.02.27
커리큘럼: Team Project (Articket - 공연 예매 플랫폼)
1. Facts — 무엇을 했나?
< Team Project (Articket) >
- [Articket] 프로젝트 초기 세팅 및 구조화
Spring Boot 백엔드와 Vue.js 프론트엔드를 동시에 개발하며, 모놀리식 구조로 ERD 기반 엔티티(Venue, Member, Performance, Seat, Order 등)를 구현했다.
- GitHub 저장소 설정 및 브랜치 전략(feature/이슈 단위)을 팀원과 정립하고, API 명세(Postman 기준)를 공유했다.
https://github.com/beyond-sw-camp/be23-2nd-team5-articket-be
https://github.com/beyond-sw-camp/be23-2nd-team5-articket-fe
※ 현재는 private 레파지토리로 추후 public으로 변경 예정
- Redis TTL 기반 좌석 선점 로직과 WebSocket(STOMP) 실시간 좌석 상태 연동을 백엔드에서 구현하고, 프론트엔드 좌석맵 컴포넌트와 연계 테스트했다.
- Kakao OAuth/Google OAuth 간편로그인과 JWT 토큰 발급 시스템을 백엔드에서 구축, 프론트엔드 리디렉트 핸들러를 구현했다.
- 공연장 관리(CRUD)와 좌석 배치도 생성 API를 개발하고, Vue에서 동적 좌석 UI를 렌더링하는 작업을 진행했다.
2. Feelings — 어떻게 느꼈나?
- 모놀리식으로 빠르게 MVP를 만들어보니 MSA 이론 학습 후 실제로 통합 구조의 단순함을 다시 체감하면서도, 동시성(좌석 선점) 같은 핵심 기능 구현이 흥미로웠다.
- 프론트(Vue)와 백(Spring Boot)을 동시에 작업하면서 API 스펙 불일치로 인한 디버깅이 반복되자, Swagger/Postman의 중요성을 뼈저리게 느꼈다.
- Redis Lua 스크립트로 원자적 선점 구현 성공 시 WebSocket으로 실시간 반영되는 걸 보며 "진짜 서비스"가 만들어지는 감격을 느꼈다.
- 팀원들과 매일 코드리뷰/PR 병합하면서 협업 리듬이 잡히는 게 가장 보람찼고, 서로 다른 스택(백/프론트) 보완이 재밌었다.
3. Findings — 무엇을 배웠나?
-
모놀리식 개발의 실용성:
초기 MVP 단계에서는 서비스 분리보다 단일 코드베이스에서 빠른 통합 테스트가 더 효율적이며, Redis/WebSocket 같은 핵심 기능을 먼저 검증할 수 있었다.
-
프론트-백엔드 동시 개발 워크플로우:
API 명세를 Postman으로 먼저 정의하고(추후 Swagger 도입 고려 중) → 프론트에서 Mock 데이터로 UI 개발 → 실제 연동 순으로 진행하니 충돌이 줄었다.
-
Redis TTL + Lua + WebSocket 조합의 동시성 해결:
좌석 선점에서 발생하는 Race Condition을 Lua 스크립트로 원자적으로 처리하고, Keyspace Notification으로 TTL 만료를 자동 감지해 실시간 해제하는 구조를 익혔다.
4. Future — 다음에 어떻게 활용할까?
- 좌석 선점 성공 → RabbitMQ 큐 워커로 결제 확정 처리 연계하여 "선점 → 확정" 완전 플로우 구현하기.
- SSE 실시간 알림(결제 완료, 공연 승인 등)을 Pub/Sub으로 확장해 다중 서버 환경에서도 안정적 브로드캐스트 지원.
- Kakao Map API 연동으로 위치 기반 공연장 검색(Haversine 공식 활용 공간 쿼리)과 관리자 지도 좌석 배치 기능을 추가.
- Rate Limiting + Circuit Breaker 패턴 적용으로 티켓 오픈 시 트래픽 폭증 대비.
- Docker Compose로 프론트+백+Redis+RabbitMQ 전체 환경을 컨테이너화해 팀별 로컬 환경 통일.
🧩 마무리 한 줄
Articket 모놀리식 MVP 개발로 Redis 선점 + WebSocket 실시간 + OAuth 인증의 핵심 기능들을 팀 협업 속에 구현해본 생산적인 한 주였다.