Skip to content

기획서

KyuWon Kim edited this page Sep 2, 2024 · 9 revisions

📋 1. 프로젝트 개요

1.1 목표

  • t3.small EC2 인스턴스의 극한 성능을 활용하여 대규모 동시 접속과 초당 높은 트랜잭션을 처리할 수 있는 선착순 티켓팅 시스템을 3주 안에 개발한다.

1.2 핵심 문제 정의

  • t3.small 인스턴스로 최대 동시 접속자 처리
  • 초당 최대 트랜잭션 처리 능력 확보
  • 시스템 안정성과 데이터 정합성 유지


🏗️ 2. 시스템 구성

2.1 서버 구성

  • EC2 인스턴스 1: Spring Boot 애플리케이션 서버 (메인 서버)
  • EC2 인스턴스 2: Spring Boot 애플리케이션 서버 (큐 서버)
  • EC2 인스턴스 3: Redis 서버
  • ELB: Elastic Load Balancer
  • RDS 인스턴스: MySQL 서버

2.2 기술 스택

  • 백엔드: Spring Boot, Spring MVC, Spring Data JPA, Docker
  • 데이터베이스: MySQL, Redis
  • 캐시: Redis
  • 문서화: Spring REST Docs, Jacoco (테스트 커버리지 측정 도구)
  • 파일 저장소: AWS S3
  • 배포: AWS EC2 (t3.small)


📝 3. 요구사항

Festival Proposal Aug 23 Screenshot

🔧 4. 핵심 기능 및 기술적 해결 방안

4.1 선착순 기능 구현

  1. MySQL 비관락 사용하여 선착순 및 데이터 정합성 보장
  2. SKIPPED LOCK 사용하여 티켓 구매 권한 부여 및 남은 티켓 처리, 성능 개선
  3. Redis 기반 대기열 서버 구현으로 동시 접속자 수 개선

4.2 데이터베이스 성능 최적화

  • 인덱싱 적용
  • JPA 사용 시 여러 번 나가는 쿼리 조절
  • 네트워크 및 디스크 IO 성능을 위해 필요한 칼럼만 가져오도록 쿼리 수정

4.3 성능 개선

  • 결제 API 비동기 처리
  • DB 관련된 결제 후속 작업 스케줄링 기반 비동기 배치 처리