-
Notifications
You must be signed in to change notification settings - Fork 2
기획서
KyuWon Kim edited this page Sep 2, 2024
·
9 revisions
- t3.small EC2 인스턴스의 극한 성능을 활용하여 대규모 동시 접속과 초당 높은 트랜잭션을 처리할 수 있는 선착순 티켓팅 시스템을 3주 안에 개발한다.
- t3.small 인스턴스로 최대 동시 접속자 처리
- 초당 최대 트랜잭션 처리 능력 확보
- 시스템 안정성과 데이터 정합성 유지
- EC2 인스턴스 1: Spring Boot 애플리케이션 서버 (메인 서버)
- EC2 인스턴스 2: Spring Boot 애플리케이션 서버 (큐 서버)
- EC2 인스턴스 3: Redis 서버
- ELB: Elastic Load Balancer
- RDS 인스턴스: MySQL 서버
- 백엔드: Spring Boot, Spring MVC, Spring Data JPA, Docker
- 데이터베이스: MySQL, Redis
- 캐시: Redis
- 문서화: Spring REST Docs, Jacoco (테스트 커버리지 측정 도구)
- 파일 저장소: AWS S3
- 배포: AWS EC2 (t3.small)
- MySQL 비관락 사용하여 선착순 및 데이터 정합성 보장
- SKIPPED LOCK 사용하여 티켓 구매 권한 부여 및 남은 티켓 처리, 성능 개선
- Redis 기반 대기열 서버 구현으로 동시 접속자 수 개선
- 인덱싱 적용
- JPA 사용 시 여러 번 나가는 쿼리 조절
- 네트워크 및 디스크 IO 성능을 위해 필요한 칼럼만 가져오도록 쿼리 수정
- 결제 API 비동기 처리
- DB 관련된 결제 후속 작업 스케줄링 기반 비동기 배치 처리