본문 바로가기

Infrastructure/Certificate

[SAA] Discussions - MyClothes.com

MyClothes.com

옷을 구매하는 사이트인 MyClothes.com을 설계하면서 여러 AWS 서비스에 대해서 복습해본다.


Stateful Web App:MyClothes.com

  • MyClothes.com은 사람들이 온라인으로 옷을 살 수 있는 서비스다.
  • 상품을 담을 수 있는 장바구니가 존재한다.
  • 서비스는 동시에 수백명의 사용자가 접속한다.
  • 확장하고 수평적 확장성을 유지하며 웹 애플리케이션을 가능한 한 “Stateless 상태”로 유지해야 한다.
  • 사용자의 장바구니는 유지되어야 한다.
  • 사용자의 세부 정보는 데이터베이스에 저장되어야 한다.

Introduce Stickiness(Session Affinity)

  • “ELB Stickiness”를 활용하여 재요청하는 경우 기존에 요청하던 인스턴스로 요청할 수 있다.

Introduce User Cookies

  • Stateless와 HTTP 요청은 쿠키가 변경될 수 있기 때문에 보안 위험이 더 높다.
  • 쿠키의 유효성을 검사해야 하며, 쿠키의 크기는 4KB 미만이어야 한다.

Introduce Server Session

  • 사용자는 “Web Cookie”안에 “Session ID”를 전송한다.
  • 각 인스턴스의 서비스는 세션 데이터를 저장하고 있는 “ElastiCache”를 통해 세션 데이터를 조회한다.

Storing User Data in a Database

  • 사용자의 데이터를 저장하고 있는 데이터베이스는 모든 인스턴스의 서비스가 공유하도록 한다.

Scaling Reads

  • RDS의 읽기 전용 복제본을 만들어 부하를 분산할 수 있다.

  • 만약, RDS 읽기 전용 복제본을 만들 수 없는 상황이라면 캐시를 사용하여 DB의 부하를 줄일 수 있다.

Multi AZ - Survive disaters

  • 다중 가용지역에 인스턴스를 분산하여 재해로 인한 서비스 장애를 대비할 수 있다.

Security Groups

  • 모든 IP를 대상으로 HTTP, HTTPS 요청을 허용한다.
  • 로드 밸런서 보안 그룹을 통해 EC2 인스턴스로의 트래픽을 제한한다.
  • EC2 보안 그룹의 ElastiCache 보안 그룹에 대한 트래픽을 제한한다.
  • EC2 보안 그룹의 RDS 보안 그룹에 대한 트래픽을 제한한다.

  • MyClothes.com 애플리케이션의 “3-Tier” 아키텍처에 대해 논의한 내용은 아래와 같다.
    • ELB Sticky Session (고정 세션)
    • 쿠키를 저장하고 웹 앱을 Stateless로 만들기 위한 웹 클라이언트
    • ElastiCache
      • 세션 저장소(대안: DynamoDB)
      • RDS의 데이터를 캐싱
      • 다중 가용지역
    • RDS
      • 사용자 데이터 저장용
      • 읽기 전용 복제본을 통한 확장
      • 다중 가용지역을 통한 재해 복구
    • 서로를 참조하는 보안 그룹을 통한 강력한 보안

참고 자료

'Infrastructure > Certificate' 카테고리의 다른 글

[SAA] Classic Solutions Architecture  (0) 2022.11.16
[SAA] Discussions - MyWordPress.com  (0) 2022.11.16
[SAA] Discussions - WhatIsTheTime.com  (0) 2022.11.16
[SAA] Route 53  (0) 2022.11.16
[SAA] AWS Fundamentals - ElastiCache  (0) 2022.11.02