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 |