Skip to content

4. System Architecture & Purchase Flow

YeeunJ edited this page Jun 11, 2025 · 9 revisions

System Architecture

EC2 t3.small: Bastion (Jenkins CI/CD, Nginx)

퍼블릭 서브넷에 위치한 유일한 인스턴스로, 외부에서 SSH 접속 및 CI/CD 파이프라인을 실행합니다.

Jenkins와 함께 Nginx를 이용해 외부 요청을 내부 App 서버로 프록시합니다.

EC2 t3.small: APP

사용자 인터페이스로, 브라우저나 모바일 앱에서 HTTP 요청을 보냅니다.

Application Load Balancer (ALB)

애플리케이션 서버(EC2)로 트래픽을 분산하고 헬스체크를 수행합니다.

EC2 t3.small: App Server

Spring Boot 애플리케이션이 구동되며, 비즈니스 로직을 처리합니다.

EC2 t3.small: Kafka & ZooKeeper

예약·선착순 이벤트를 메시지 큐로 발행·소비하는 분산 로그 시스템입니다.

EC2 t3.small: Redis

인기 상품 랭킹과 선착순 재고 차감 같은 인메모리 데이터 처리를 담당합니다.

RDS MySQL

회원·상품·주문·예약 등 영속성을 가진 데이터를 저장하는 관계형 데이터베이스입니다.

S3 Bucket 상품·브랜드·리뷰 이미지 파일을 저장하고, presigned URL로 안전하게 제공됩니다.

Purchase Flow

일반 구매 (General)

API 호출 시 DB에서 재고를 즉시 차감하고, 주문 테이블에 레코드 삽입

예약 구매 (Reservation)

API 호출 시 ‘PENDING’ 상태로 예약을 DB에 저장하고 Kafka 이벤트 발행

예약 마감 시점에 소비자가 재고 차감 후 예약 상태를 ‘CONFIRMED’/‘FAILED’로 업데이트

선착순 구매 (First-Come)

API 호출 시 Redis에서 재고를 원자적으로 차감하여 즉시 성공/실패 응답

성공 시 Kafka 이벤트 발행 후, 백그라운드에서 주문을 DB에 삽입