솔루션 아키텍처 (2)

은채의 성장통·2025년 2월 9일
0

AWS

목록 보기
45/79

쇼핑몰 환경에서 세션 유지 및 확장성 고려 아키텍처

쇼핑몰에서 사용자의 장바구니 데이터를 유지하는 것은 중요한 문제이다. 특히, ELB(Elastic Load Balancer)와 오토스케일링을 활용한 다중 AZ(Avalibility Zone) 인프라에서는 동일 사용자가 다른 EC2 인스턴스로 연결될 수 있어 장바구니 데이터가 사라질 위험이 있다. 이를 해결하기 위한 다양한 접근 방식이 존재하며, 아래와 같이 정리할 수 있다.


1. Stickiness 기반 세션 유지 (ELB Stickiness)

  • 설명: ELB의 세션 고정(Sticky Sessions) 기능을 활성화하여 동일 사용자가 항상 같은 인스턴스로 접속하도록 한다.
  • 장점: 설정이 간단하며, 동일 EC2 인스턴스에 접속하므로 세션 유지가 가능하다.
  • 단점: 특정 인스턴스에 트래픽이 집중될 수 있으며, 인스턴스가 종료되면 세션 데이터가 유실된다.

🔽 한계점 보완 필요


2. 사용자 쿠키 기반 장바구니 저장

  • 설명: 장바구니 데이터를 EC2가 아닌 사용자의 쿠키에 저장하여 어디에서든 접근 가능하게 한다.
  • 장점: 특정 인스턴스에 종속되지 않고, 서버 부하를 줄일 수 있다.
  • 단점:
    • 쿠키 용량 제한(4KB)으로 많은 데이터를 저장하기 어렵다.
    • HTTP 요청이 무거워질 수 있으며, 보안 검증이 필요하다.

🔽 다른 방법 필요


3. 서버 세션 기반 (ElasticCache + 세션 ID)

  • 설명:
    1. 사용자는 세션 ID만 쿠키에 저장하고, 세션 데이터는 서버 측에서 관리한다.
    2. 사용자가 요청하면 ELB → EC2 → ElasticCache (Redis/Memcached) 를 통해 세션 정보를 확인한다.
    3. 캐시에 없는 경우 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)

💡 트래픽 흐름 예시

  1. 사용자 요청:
    • ELB → EC2 → Redis → DynamoDB / RDS
  2. 장바구니 데이터 조회:
    • Redis 캐시에 데이터 존재 → EC2로 전달
    • 캐시에 없음 → DynamoDB or RDS에서 로드 후 Redis에 저장
  3. 재해 복구 대응:
    • 모든 구성 요소를 다중 AZ로 배포
    • 보안 그룹 제한: EC2에서 오는 트래픽만 허용

결론

쇼핑몰과 같은 다중 AZ 환경에서 세션을 유지하는 방법은 Stickiness, 사용자 쿠키, 서버 세션 등 여러 가지가 있지만,

최적의 방법은 ElasticCache + DynamoDB + RDS를 활용한 세션 관리이다.

이 방식은

✔️ 속도 (Redis 기반 캐싱)

✔️ 확장성 (DynamoDB & RDS Read Replica)

✔️ 안정성 (다중 AZ 배포)

을 모두 고려한 솔루션이며, 트래픽 증가와 장애 발생에도 안정적인 운영이 가능하다. 🎯

profile
인생 별거 없어

0개의 댓글