| 분류 | 내용 |
|---|---|
| 주제 | 대규모 트래픽 처리 기반 티켓 예매 서비스 |
| 팀원 구성 | 👑 김종규 이유빈 백지연 |
| 개발 기간 | 2024.09.24 ~ 2024.10.25 |
| API 명세서 | 🔗 API 명세서 |
| 테이블 명세서 | 🔗 테이블 명세서 |
대규모 트래픽을 안정적으로 처리하며, 사용자에게 정확하고 신뢰성 있는 티켓 예매 경험을 제공하는 MSA기반의 티켓 예매 서비스 입니다.
- MSA 구조를 통해 대용량 트래픽을 안정적으로 처리
- Elasticsearch를 활용한 빠른 검색 기능을 제공
- 대기열 구현을 통해 사용자 요청을 효과적으로 관리하여 시스템 과부화를 방지하고, 예매 과정의 응답성을 향상
- 키워드 검색 :
- 사용자는 검색창에 원하는 키워드를 입력하여 공연을 검색할 수 있습니다.
- 검색 결과 :
- 검색 결과는 공연 제목, 공연 설명, 공연 위치에서 유사한 키워드를 기반으로 반환됩니다.
- 제목 필드가 가장 높은 가중치를 부여받아, 제목과의 일치 여부가 검색 결과에 큰 영향을 미칩니다.
- 페이징 처리 :
- 기본 페이지 사이즌 10으로 설정되어 있어, 한 페이지에 최대 10개의 검색 결과만 표시됩니다.
- 사용자는 페이지를 전환하여 추가적인 검색 결과를 쉽게 탐색할 수 있습니다.
- Kafka를 활용해 비동기 주문 시스템
- 외부 결제 API를 활용하여, 결제 테스트
- 대기 큐와 실행 큐를 구분하여 관리
- 실행 큐에 인원 제한을 둔다.
- 서버 부하를 줄이기 위해 제한된 수의 사용자만이 실제 예매 작업을 실행할 수 있도록 한다.
- 새로고침을 할 경우 대기열에서 삭제되고 가장 후순위로 재배치
- 사용자들이 대기열에서 불리한 상황을 방지하기 위해 무분별한 새로고침을 제한하고, 공정한 대기 시스템을 유지하도록 한다.
- 대기열에 등록된 시간을 score로
- 동일한 시간에 접속한 사용자들이 있을 때 순서 문제를 해결하기 위해 대기 순서를 등록된 시간으로 관리한다.
- WebSocket을 통해 실시간으로 대기 순서 정보 제공
- 대기 중인 사용자가 자신의 순서를 실시간으로 확인하여 대기 시간을 예측할 수 있게 함으로써 사용자 만족도를 높임.
대용량의 실시간 데이터 스트리밍과 분산 메시지 처리를 안정적이고 확장 가능하게 관리하며, 시스템 간의 비동기 통신과 이벤트 중심 아키텍처를 구현하기 위해 도입했습니다.
인메모리 데이터베이스로 높은 성능을 보장하고, 다양한 자료구조와 라이브러리 등을 통해 캐싱, 분산 락 같이 다양한 분야에서 활용이 가능합니다.
대용량 데이터를 실시간으로 빠르게 검색하고, 로그 분석 및 검색 쿼리에 최적화된 검색 엔진으로, 공연 검색을 하는데 있어 효율적인 데이터 인덱싱과 고성능 검색을 지원합니다.
HTTP 통신에서 발생하는 지속적인 요청/응답 비용을 줄이고, 사용자에게 실시간으로 대기열 순서 정보를 효율적으로 제공하기 위해 도입했습니다. 서버와 클라이언트 간의 지속적인 양방향 통신을 가능하게 하여, 대기열 상태 변화나 알림을 지연 없이 전달할 수 있습니다.