들어가며..
지금까지 배운 AWS solution을 복습할 겸 여러 사용자 요구조건에 따라 어떤 AWS Service들을 사용해야 하는지를 정리해보았습니다.
Example 1
현재 시각을 알려주는 서버를 설계한다.
요구사항
최초설계
- ec2 인스턴스는 t2.micro 타입을 가짐
- ec2 인스턴스는 elastic IP를 가짐
- 사용자는 ec2 인스턴스에게 현재 시각을 물어본다
- ec2 인스턴스는 현재 시각을 response 해준다.
수직적 확장
- t2 인스턴스가 부하가 많아져 느리다면
- ec2 인스턴스를 m5 인스턴스 타입으로 수직적 확장
수평적 확장
- 그럼에도 부하가 많아져 느리다면
- ASG에 인스턴스들을 넣어 수평적확장하도록 설정
- 각 인스턴스들은 elasticIP를 가짐
- 하지만 elastic IP는 계정 당 5개 사용가능하므로 문제점 발생
Route53
- Route53을 이용해 elastic ip대신 dns를 사용
- TTL 설정
- 하나의 인스턴스에 부하가 집중되는 장애가 발생 할 가능성이 있음
ELB
More..
Multi-AZ를 이용해 재해에 대비할 수 있음
인스턴스의 용량을 예약해 on-demand보다 비용적으로 이점을 볼 수 있음
Example 2
쇼핑몰을 설계한다
요구사항
- 회원, 쇼핑물품에 대한 데이터베이스를 가짐
- 회원들의 로그인 세션, 장바구니 상태를 유지해야 함
sticky session
- elb에 stickness를 설정해 같은 회원은 같은 인스턴스에 연결되도록 설정
- 부하가 집중될 가능성 높음
cookie
- cookie에 사용자의 정보들을 전부 집어넣어 통신한다
- cookie의 최대 크기는 4KB로 제한적
- 보안적으로 critical
session store 사용
- elastiCache를 session store로 사용한다
- redis혹은 memcached를 선택하여 사용 가능
- amazon dynamoDB를 사용할 수도 있다.
데이터베이스
- Amazon RDS를 데이터베이스로 사용
- RDS 읽기 전용 복제본을 이용해 성능을 높일 수도 있다.
ElastiCache를 RDS의 캐시서버로 사용
- ElastiCache를 RDS의 캐시서버로 사용해서 RDS의 성능을 높일 수 있다.
- Redis를 사용한다면 Multi-AZ 기능을 이용해 재난에 대비할 수 있다.
마치며..
여태 배웠던 AWS Service들을 복습하면서 어떻게 적재적소에 사용해야하는 지를 알게되었습니다. AWS는 알면 알수록 정답이 뚜렷해지는 것 같습니다.
https://www.udemy.com/course/best-aws-certified-solutions-architect-associate/