오늘 탄다 프로젝트는 특가 및 일반 항공권을 사용자에게 제공하고, 실시간 항공권 조회 및 예약 기능을 통해 편리하고 신뢰할 수 있는 항공권 구매 경험을 제공하는 서비스입니다. 사용자는 원하는 조건의 항공권을 검색하고, 실시간으로 예약 및 결제를 진행할 수 있습니다.
- 서비스 구조 및 아키텍처
- MSA 기반의 유연하고 확장 가능한 서비스 아키텍처 설계 및 개발
- 서비스 간 독립성과 분산 처리를 고려한 도메인 분리
- 비동기 메시징을 활용한 이벤트 기반 아키텍처 적용
- 서비스 안정성 확보
- 대용량 트래픽 환경에서도 안정적인 서비스 제공
- 장애 감지 및 대응을 위한 모니터링 시스템 구축
- 예약 중 장애나 오류 발생 시 복구 및 재처리 로직 적용
- 성능 및 사용자 경험 최적화
- 실시간 특가 항공편 조회와 예약 기능의 응답 속도 개선
- 대기열 시스템과 동시성 제어를 통한 중복 예약 방지 및 순차 처리
- 높은 처리량을 유지하면서도 사용자 경험을 해치지 않는 설계
| 담당자 | 역할 | 담당 업무 |
|---|---|---|
| 진강훈 | BE | 대기열 서비스, 결제 서비스 설계 및 구현 |
| 김승수 | BE | 사용자 인증/인가 서비스 설계 및 구현, CI/CD PipeLine 구축 및 배포 |
| 서진영 | BE | 예약 서비스 설계 및 구현, 모니터링툴 구축 및 시각화 |
| 오연주 | BE | 항공 서비스 설계 및 구현 |
API 명세서 ☞ 🔗Link
- 사용자 관리
- Redis를 사용하여 토큰 관리 → 사용자의 권한 상태 변경시 토큰을 블랙리스트에 등록하거나 만료 처리하기 위해 토큰 버전 정보 추가
- 토큰 버전 변경시 Kafka를 통해 Gateway에 비동기 전파 → GateWay는 수신한 이벤트 기반으로 해당 토큰을 즉시 만료 처리
- 실시간 항공편 조회
- Amadeus 외부 API 연동을 통해 실시간 항공편 정보 조회 기능
- 검색 날짜 기준 최저가 순으로 정렬
- Redis cache를 통한 항공편 조회 성능 최적화
- Redisson을 통한 분산 락 적용으로 좌석 수에 대한 동시성 제어 및 데이터 정합성 보장
- 대기열의 생성 및 관리
- 좌석 선점형 대기열 구조 → 좌석 선택하여 예약 진행 중에 다른 사용자는 동일 좌석에 대한 예약 불가
- Redis SortedSet을 통한 대기열 생성으로 순차 예약 처리 보장
- 대기열 동시 진입 시 Redisson을 통한 분산 락 적용으로 최상단 사용자의 순서 보장
- 임시 예약 및 예약 생성
- 대기열 진입 성공시 Kafka를 통해 예약 생성 비동기 처리
- Redis에 임시 예약 정보 생성 및 TTL 지정 → 기간내 탑승객 정보 입력 및 결제 완료 시 예약 확정
- 결제
- 포트원 PG 대행사 연동을 통한 결제 시스템
- 예약 생성시 결제 요청 → 결제 승인 처리, 예약 취소시 → 결제 취소 처리
-
대기열 선점 중 과도한 항공편 조회 발생 ☞ 🔗Link
-
사용자 서비스 개발 과정에서 과도한 의존성 ☞ 🔗Link
-
MySQL 정적 데이터 삽입시 타입 불일치 오류 ☞ 🔗Link
-
Redis Cache 역직렬화 과정 오류 ☞ 🔗Link
-
Kafka consumer 무한 재시도 이슈 ☞ 🔗Link

