Skip to content

Cool-Potatoes/flight-booking

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

✈️ Airportato: 항공기 좌석 티켓팅 서비스


0. 목차

  1. 프로젝트 소개
  2. 서비스/프로젝트 목표
  3. 적용 기술
  4. 인프라 설계도
  5. 주요 기능
  6. 목표 달성을 위한 기술적 의사결정
  7. 트러블 슈팅
  8. 상세 담당 업무

👋 프로젝트 소개

$\bf{\huge{\color{#FF8000}Airportato}}$( Airport + Potato )

똑똑한 사람은 세상에 적응하지만 감자는 세상을 바꿉니다! 🥔
감자들이 모여 새로운 서비스를 만들었습니다.

기존 항공권 예매 시스템과 달리 원하는 좌석을 티켓팅 하는 서비스입니다.

창 밖을 보고 싶은데, 멀리 떨어져서 아쉬우셨나요?
빨리 내리고 싶은데, 맨 뒷자리라 답답하셨나요?

이제 좌석 배정 걱정은 그만!
여유롭고 편안한 여행,
Airportato에서 경험해보세요! ✈️

🎯 서비스/프로젝트 목표

개발 기간 : 2024.12.26 ~ 2025.01.27

1️⃣ 대규모 트래픽 안정적 처리

  • 트래픽 제어 및 메시지 분산으로 서버 과부하 방지
  • 수만 건 동시 요청 처리, CPU 사용률 80% 이하 유지

2️⃣ 서버 성능 및 처리 최적화

  • 캐싱, 쿼리 최적화, 통신 최적화로 응답 속도 개선
  • 부하 테스트로 병목 구간 분석 및 지속 개선

3️⃣ 데이터 무결성 및 동시성 제어

  • 중복 예매·결제 오류 방지, 무결성 100% 유지

4️⃣ 확장성과 서비스 독립성 강화

  • MSA 도입으로 독립적 배포 및 관리
  • 트래픽 급증 시 유연한 확장 가능

5️⃣ 사용자 경험 최적화

  • 응답 속도 200ms 이하 유지
  • 알림·상태 조회로 사용자 정보 제공

🔧 적용 기술

Development


Database

Messaging

External Library

Monitoring

Test

CI/CD


📄 인프라 설계도

인프라 설계도_직각

⚙️ 주요 기능

회원 서비스

  • 회원가입, 로그인, 로그아웃
  • 아이디 찾기, 비밀번호 변경
  • 관리자의 회원 블락 기능
    • 경고 3회 누적시 사용자 블락
    • 경고 시 관리자는 이유 작성
    • 사용자는 경고 이유 및 블락 상태 확인 가능

예매 ( 티켓팅 ) 서비스

  • 좌석 예매
  • 예매 정보 조회
  • 좌석 변경
    • 사용자: 변경을 원하는 좌석 입력
    • 서버:
      • 좌석 변경 가능 여부 확인 후 사용자에게 응답 반환 [분산 락 적용]
      • 해당 좌석 가격 및 사용자 마일리지 확인
      • 기존 티켓 환불 및 재결제 시도
    • 변경 결과 알림으로 발송
  • 옵션 ( 기내식, 수하물 등 ) 변경
  • 예매 취소

결제 서비스

  • 마일리지 기반 결제
    • 결제 시, 사용자의 충전된 마일리지를 자동으로 차감하여 결제 금액을 처리
  • 마일리지 부족 시 결제 처리
    • 마일리지가 부족할 경우 결제를 보류하고 유저에게 알림 전송
    • 유저가 마일리지를 충전하면 자동으로 결제가 완료되고 알림 전송
    • 일정 시간이 지나도 마일리지가 충분하지 않을 경우, 예매를 취소하고 알림 전송

알림 서비스

  • 결제 결과 전송
  • 비밀번호 변경시 인증번호 전송

AI 서비스

  • 항공사, 좌석 등급별 기내 수하물 정보 제공
  • 여행 국가와 월에 대한 평균 날씨 정보 제공

💡 목표 달성을 위한 기술적 의사결정

1. 안정적인 대규모 트래픽 처리

2. 서버 성능 및 처리 효율 최적화

3. 동시성 제어

4. 서비스 간 독립성 및 확장성 확보

5. 사용자 편의성 증대

💥 트러블슈팅

😎 팀원 소개 및 담당 업무

이름 포지션 담당(개인별 기여점)
김재현
김재현
Leader ✅ 코드 리뷰, 의사 결정 참여
✅ 대기열
✅ 쿼리 개선
✅ 결제 실패 재처리 시스템
김한준
김한준
Sub-Leader ✅ 서버 간 통신 최적화
✅ 동시성 제어
✅ 예약 서비스
      - MSA 기반의 예약 - 결제 - 티켓 로직 구현
      - Kafka 를 통한 비동기 처리
      - 분산락을 통한 동시성 문제 해결
      - 실패 시 재시도 처리, DLT 구현
      - Seat: 캐싱 적용, 조회 성능 개선
조한범
조한범
Member ✅ 알림 서비스
      - 알림 생성, 조회, 읽음 처리, 삭제
      - 이메일 비동기 전송 (SMTP 사용)
✅ 배포
      - EC2에서 Docker Compose를 통해 서비스 배포
      - RDS(PostgreSQL) 데이터베이스와 연동하여 저장
      - Git Actions를 사용한 자동 CI/CD 파이프라인 구축
      - Docker Hub를 사용한 이미지 관리
홍유진
홍유진
Member ✅ 인증/인가
      - JWT 토큰: 액세스 및 리프레시 토큰 생성/관리
      - Redis를 이용한 토큰 상태 확인 및 블랙리스트 처리
      - Gateway: 토큰 검증 후 사용자 정보와 함께 요청 라우팅
✅ 유저 서비스
      - 회원가입, 로그인, 조회, 수정, 탈퇴, 관리자의 회원 block
      - 인증 코드 캐싱 및 Kafka를 통한 알림 서비스 연동
✅ AI 서비스
      - Gemini API를 활용한 단순 정보 제공

About

✈️ Airportato: 항공기 좌석 티켓팅을 위한 MSA 기반 플랫폼

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5