쇼핑몰 환경에서 세션 유지 및 확장성 고려 아키텍처
쇼핑몰에서 사용자의 장바구니 데이터를 유지하는 것은 중요한 문제이다. 특히, ELB(Elastic Load Balancer)와 오토스케일링을 활용한 다중 AZ(Avalibility Zone) 인프라에서는 동일 사용자가 다른 EC2 인스턴스로 연결될 수 있어 장바구니 데이터가 사라질 위험이 있다. 이를 해결하기 위한 다양한 접근 방식이 존재하며, 아래와 같이 정리할 수 있다.
1. Stickiness 기반 세션 유지 (ELB Stickiness)
- 설명: ELB의 세션 고정(Sticky Sessions) 기능을 활성화하여 동일 사용자가 항상 같은 인스턴스로 접속하도록 한다.
- 장점: 설정이 간단하며, 동일 EC2 인스턴스에 접속하므로 세션 유지가 가능하다.
- 단점: 특정 인스턴스에 트래픽이 집중될 수 있으며, 인스턴스가 종료되면 세션 데이터가 유실된다.
🔽 한계점 보완 필요
2. 사용자 쿠키 기반 장바구니 저장
- 설명: 장바구니 데이터를 EC2가 아닌 사용자의 쿠키에 저장하여 어디에서든 접근 가능하게 한다.
- 장점: 특정 인스턴스에 종속되지 않고, 서버 부하를 줄일 수 있다.
- 단점:
- 쿠키 용량 제한(4KB)으로 많은 데이터를 저장하기 어렵다.
- HTTP 요청이 무거워질 수 있으며, 보안 검증이 필요하다.
🔽 다른 방법 필요
3. 서버 세션 기반 (ElasticCache + 세션 ID)
- 설명:
- 사용자는 세션 ID만 쿠키에 저장하고, 세션 데이터는 서버 측에서 관리한다.
- 사용자가 요청하면 ELB → EC2 → ElasticCache (Redis/Memcached) 를 통해 세션 정보를 확인한다.
- 캐시에 없는 경우 DynamoDB에 저장된 세션 데이터를 조회하여 캐시에 저장 후 제공한다.
- 장점:
- 빠른 응답 속도 (캐시 기반)
- 인스턴스가 변경되어도 세션 유지 가능
- 확장성이 뛰어남
- 단점:
- ElasticCache 유지보수 필요
- 트래픽 증가 시 캐시와 DB 최적화 필수
🔽 추가적인 성능 최적화 필요
4. DynamoDB + RDS 기반 데이터 저장
- 설명:
- 세션 데이터: ElasticCache에 저장하고, 영구 저장소로 DynamoDB 활용
- 사용자 데이터: RDS에 저장 (회원 정보, 주문 정보 등)
- 읽기 부하 최적화: RDS Read Replica를 생성하여 읽기 요청을 분산
- 장점:
- RDS의 읽기 전용 복제본(Read Replica) 을 사용하여 부하 분산
- 캐시가 만료되면 DynamoDB & RDS에서 데이터 로드
- 트래픽 증가에도 안정적인 운영 가능
🔽 이제 장애 대비 필요
5. 재해 복구 및 다중 AZ 구성
- 설명: 장애 발생 시에도 지속적인 서비스 제공을 위해 모든 구성 요소를 다중 AZ로 배포
- 구성:
- ELB → 다중 AZ 구성
- EC2 오토스케일링
- RDS 멀티 AZ 배포
- ElasticCache 멀티 AZ 지원
- 보안그룹 설정 강화
- RDS & ElasticCache는 EC2의 보안 그룹에서 오는 트래픽만 허용
🔷 전체 아키텍처 시각화 (→ 화살표로 표현)
사용자 → ELB(다중 AZ) → EC2(오토스케일링) → ElasticCache(Redis) → DynamoDB
↘ RDS(Read Replica)
💡 트래픽 흐름 예시
- 사용자 요청:
- ELB → EC2 → Redis → DynamoDB / RDS
- 장바구니 데이터 조회:
- Redis 캐시에 데이터 존재 → EC2로 전달
- 캐시에 없음 → DynamoDB or RDS에서 로드 후 Redis에 저장
- 재해 복구 대응:
- 모든 구성 요소를 다중 AZ로 배포
- 보안 그룹 제한: EC2에서 오는 트래픽만 허용
✅ 결론
쇼핑몰과 같은 다중 AZ 환경에서 세션을 유지하는 방법은 Stickiness, 사용자 쿠키, 서버 세션 등 여러 가지가 있지만,
최적의 방법은 ElasticCache + DynamoDB + RDS를 활용한 세션 관리이다.
이 방식은
✔️ 속도 (Redis 기반 캐싱)
✔️ 확장성 (DynamoDB & RDS Read Replica)
✔️ 안정성 (다중 AZ 배포)
을 모두 고려한 솔루션이며, 트래픽 증가와 장애 발생에도 안정적인 운영이 가능하다. 🎯