Skip to content

zzu-uzz/oneul-tanda

 
 

Repository files navigation

오늘 탄다: 최저가 여행을 원하는 사용자를 위한 특가 항공권 예매 서비스

7조_프로젝트커버

✈️ 프로젝트 소개

오늘 탄다 프로젝트는 특가 및 일반 항공권을 사용자에게 제공하고, 실시간 항공권 조회 및 예약 기능을 통해 편리하고 신뢰할 수 있는 항공권 구매 경험을 제공하는 서비스입니다. 사용자는 원하는 조건의 항공권을 검색하고, 실시간으로 예약 및 결제를 진행할 수 있습니다.

📍 프로젝트 목적

  1. 서비스 구조 및 아키텍처
    • MSA 기반의 유연하고 확장 가능한 서비스 아키텍처 설계 및 개발
    • 서비스 간 독립성과 분산 처리를 고려한 도메인 분리
    • 비동기 메시징을 활용한 이벤트 기반 아키텍처 적용
  2. 서비스 안정성 확보
    • 대용량 트래픽 환경에서도 안정적인 서비스 제공
    • 장애 감지 및 대응을 위한 모니터링 시스템 구축
    • 예약 중 장애나 오류 발생 시 복구 및 재처리 로직 적용
  3. 성능 및 사용자 경험 최적화
    • 실시간 특가 항공편 조회와 예약 기능의 응답 속도 개선
    • 대기열 시스템과 동시성 제어를 통한 중복 예약 방지 및 순차 처리
    • 높은 처리량을 유지하면서도 사용자 경험을 해치지 않는 설계

🧑‍🧑‍🧒‍🧒 Team

담당자 역할 담당 업무
진강훈 BE 대기열 서비스, 결제 서비스 설계 및 구현
김승수 BE 사용자 인증/인가 서비스 설계 및 구현, CI/CD PipeLine 구축 및 배포
서진영 BE 예약 서비스 설계 및 구현, 모니터링툴 구축 및 시각화
오연주 BE 항공 서비스 설계 및 구현

▶️ Architecture

image (7)

📄 API 명세서

API 명세서 ☞ 🔗Link


📚 ERD

항공권 예매 서비스 (4)


⚙️ 주요 기능

  • 사용자 관리
    • Redis를 사용하여 토큰 관리 → 사용자의 권한 상태 변경시 토큰을 블랙리스트에 등록하거나 만료 처리하기 위해 토큰 버전 정보 추가
    • 토큰 버전 변경시 Kafka를 통해 Gateway에 비동기 전파 → GateWay는 수신한 이벤트 기반으로 해당 토큰을 즉시 만료 처리
  • 실시간 항공편 조회
    • Amadeus 외부 API 연동을 통해 실시간 항공편 정보 조회 기능
    • 검색 날짜 기준 최저가 순으로 정렬
    • Redis cache를 통한 항공편 조회 성능 최적화
    • Redisson을 통한 분산 락 적용으로 좌석 수에 대한 동시성 제어 및 데이터 정합성 보장
  • 대기열의 생성 및 관리
    • 좌석 선점형 대기열 구조 → 좌석 선택하여 예약 진행 중에 다른 사용자는 동일 좌석에 대한 예약 불가
    • Redis SortedSet을 통한 대기열 생성으로 순차 예약 처리 보장
    • 대기열 동시 진입 시 Redisson을 통한 분산 락 적용으로 최상단 사용자의 순서 보장
  • 임시 예약 및 예약 생성
    • 대기열 진입 성공시 Kafka를 통해 예약 생성 비동기 처리
    • Redis에 임시 예약 정보 생성 및 TTL 지정 → 기간내 탑승객 정보 입력 및 결제 완료 시 예약 확정
  • 결제
    • 포트원 PG 대행사 연동을 통한 결제 시스템
    • 예약 생성시 결제 요청 → 결제 승인 처리, 예약 취소시 → 결제 취소 처리

❗️ Trouble Shooting

  • 대기열 선점 중 과도한 항공편 조회 발생 ☞ 🔗Link

  • 사용자 서비스 개발 과정에서 과도한 의존성 ☞ 🔗Link

  • MySQL 정적 데이터 삽입시 타입 불일치 오류 ☞ 🔗Link

  • Redis Cache 역직렬화 과정 오류 ☞ 🔗Link

  • Kafka consumer 무한 재시도 이슈 ☞ 🔗Link


🛠️ Technologies & Tools



About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 99.1%
  • Other 0.9%