오늘 탄다 프로젝트는 특가 및 일반 항공권을 사용자에게 제공하고, 실시간 항공권 조회 및 예약 기능을 통해 편리하고 신뢰할 수 있는 항공권 구매 경험을 제공하는 서비스입니다. 사용자는 원하는 조건의 항공권을 검색하고, 실시간으로 예약 및 결제를 진행할 수 있습니다.
- 서비스 구조 및 아키텍처
- MSA 기반의 유연하고 확장 가능한 서비스 아키텍처 설계 및 개발
- 서비스 간 독립성과 분산 처리를 고려한 도메인 분리
- 비동기 메시징을 활용한 이벤트 기반 아키텍처 적용
- 서비스 안정성 확보
- 대용량 트래픽 환경에서도 안정적인 서비스 제공
- 장애 감지 및 대응을 위한 모니터링 시스템 구축
- 예약 중 장애나 오류 발생 시 복구 및 재처리 로직 적용
- 성능 및 사용자 경험 최적화
- 실시간 특가 항공편 조회와 예약 기능의 응답 속도 개선
- 대기열 시스템과 동시성 제어를 통한 중복 예약 방지 및 순차 처리
- 높은 처리량을 유지하면서도 사용자 경험을 해치지 않는 설계
| 역할 | 담당자 | 담당 |
|---|---|---|
| 리더 | 진강훈 | 예약 대기열 서비스와 결제 서비스 설계 및 구현 |
| 테크-리더 | 김승수 | 사용자의 인증, 인가 서비스 설계 및 구현, CI/CD PipeLine 구축 및 배포 |
| 서브-리더 | 서진영 | 예약 서비스 설계 및 구현 및 모니터링 시각화 |
| 서서브-리더 | 오연주 | 항공 서비스 설계 및 구현, 기획 → 설계 → 개발 전 과정을 문서화하여 팀원 간 원활한 의사소통 유도 |
API 명세서 ☞ 여기로
테이블 명세서 ☞ 여기로

- 사용자 관리
- Redis를 사용하여 토큰 관리 → 사용자의 권한 상태 변경에 따라 토큰 블랙리스트, 만료 처리를 위한 토큰 버전 추가
- 토큰 버전 변경시 Kafka를 통해 gateway에서 토큰 만료 비동기 처리
- 실시간 항공편 조회
- 외부 API 연동을 통한 실시간 항공편 조회 기능 구현
- 검색 날짜 기준 최저가 순으로 검색
- Redis cache를 통한 항공편 조회 성능 최적화
- 대기열의 생성 및 관리
- 좌석 선점형 대기열 → 좌석 선택하여 예약 진행 중에 다른 사용자는 같은 좌석에 대한 예약 진행 불가
- Redisson을 통한 분산 락 적용으로 동시성 제어 → 좌석 수에 대한 데이터 정합성 보장
- Redis SortedSet을 통한 대기열 생성으로 순차적인 처리 → 먼저 선점한 사용자의 예약 순서를 보장
- 임시 예약 및 예약 생성
- 대기열 진입 성공시 Kafka를 통해 예약 생성 비동기 처리
- Redis에 임시 예약 정보 생성 및 TTL 지정 → 기간내 탑승객 정보 입력 및 결제 완료 시 예약 확정
- 결제
- 포트원 PG 대행사 연동을 통한 결제 시스템
- 예약 생성시 결제 요청 → 결제 승인 처리, 예약 취소시 → 결제 취소 처리
대기열 선점 중 과도한 항공편 조회 발생 ☞여기로
사용자 서비스 개발 과정에서 과도한 의존성 ☞여기로
MySQL 정적 데이터 삽입시 타입 불일치 오류 ☞여기로
Redis Cache 역직렬화 과정 오류 ☞여기로
Kafka consumer 무한 재시도 이슈 ☞여기로
| Java | Spring boot | Spring cloud | JWT | Spring security | kafka |
|---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| PostgreSQL | MySQL | JPA | QueryDSL |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Redis | Docker | Swagger | Slack | Grafana | Prometheus |
|---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| Git | GitHub | GitHubActions | EC2 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |




















