스케일링
Vertical Scale(Scale Up)
- 성능과 비용이 비례하지 않는다.
Horizontal Scale(Scale Out)
- 성능과 비용이 비례함
- scale out을 지원하기 위한 아키텍처를 고려해야 한다.
AWS Auto Scaling
AWS Auto Scaling은 애플리케이션을 모니터링하고 용량을 자동으로 조정하여, 최대한 저렴한 비용으로 안정적이고 예측 가능한 성능을 유지합니다. AWS Auto Scaling을 사용하면 몇 분만에 손쉽게 여러 서비스 전체에서 여러 리소스에 대해 애플리케이션 규모 조정을 설정할 수 있습니다.
EC2 Auto Scaling
- 목표
- 정확한 수의 EC2 인스턴스를 보유하도록 보장
- 그룹의 최소 인스턴스 숫자 및 최대 인스턴스 숫자
- 최소 숫자 이하로 내려가지 않도록 인스턴스 숫자를 유지 (인스턴스 추가)
- 최대 숫자 이상 늘어나지 않도록 인스턴스 숫자 유지(인스턴스 삭제)
- 다양한 스케일링 정책 적용 가능
- 예: CPU의 부하에 따라 인스턴스 크기를 늘리기
- 가용 영역에 인스턴스가 골고루 분산될 수 있도록 인스턴스를 분배
오토스케일링의 구성
- 시작 구성(launch configurations) / 시작 템플릿(launch template): 무엇을 실행시킬 것인가?
- EC2의 타입, 사이즈
- AMI
- 보안 그룹, Key, IAM
- 유저 데이터
- 모니터링: 언제 실행시킬 것인가? + 상태 확인
- 예: CPU 점유율이 일정 %을 넘어섰을 때 추가로 실행 or 2개 이상이 필요한 스택에서 EC2 하나가 죽었을 때
- CloudWatch (and/or) ELB와 연계
- 설정: 얼마나 어떻게 실행시킬 것인가?
- 최대 / 최소 / 원하는 인스턴스 숫자
- ELB와 연동 등
실습
- EC2 > 시작템플릿
- Autoscaling Group에서 어떤 인스턴스를 어떻게 올릴 것인가?
- 위와 같이 설정하되, 네트워크 인터페이스도 위와 같이 설정한다.
- 퍼블릭 IP 자동 할당: 활성화 / 보안그룹: default / 종료 시 삭제: 예
- EC2 > Auto Scaling 그룹
- 선택한 가용영역에만 EC2가 올라가게 된다.
- 그룹의 최소, 최대 크기를 지정해준다.
- 태그를 설정하게 되면, 올라가는 인스턴스들에 태그가 설정된다.
- 인스턴스가 2개 생성된 것을 볼 수 있는데, 여기에서 인스턴스를 하나 종료시키면 다시 인스턴스를 하나 추가해준다.
- 태그 또한 적용되었다.