[AWS] 스케일링
스케일링
방법
Scale Up
Vertical Scale(수직 스케일)이라고도 부르며, 컴퓨터 자체의 성능을 높인다.
물리적으로 불가능한 Scale이 있으며 가격또한 허용불가능한 정도로 비싸진다.
그래서 Scale Out을 주로 사용한다.
Scale Out
Horizontal Scale(수평 스케일)이라고도 부르며, 인스턴스의 갯수를 늘린다.
vertical scale보다 가격이 싸고, 물리적으로 불가능한 부분은 없다.
다만, 다수의 인스턴스를 제어하기위한 아키텍처적인 고민을 많이해야한다.
수요에 따라 탄력적으로 인스턴스의 갯수를 조절해 비용절감을 노릴 수 있다.
- 이에따라 필요한 것이 오토스케일링!
AWS Auto Scaling
AWS Auto Scaling은 어플리케이션을 모니터링하고 용량을 자동으로 조정해 최대한 저렴한 비용으로 안정적이고 예측 가능한 성능을 유지한다.
몇 분만에 손쉽게 여러 서비스 전체에서 여러 리소스에 대해 어플리케이션 규모 조정을 설정할 수 있다.
Auto Scaling의 목표
정확한 수의 EC2 인스턴스를 보유하도록 보장한다.
- 그룹의 최소 인스턴스 숫자 및 최대 인스턴스 숫자
- 최소 숫자 이하로 내려가지 않도록 인스턴스 수를 유지한다.
- 최대 숫자 이상 늘어나지않도록 인스턴스 숫자를 유지한다.
- 다양한 스케일링 정책을 적용할 수 있다.
- 예) CPU 부하, 네트워크 상태에 따라 인스턴스 크기를 늘린다.
- 가용 영역 AZ에 인스턴스가 골고루 분산되도록하여 AZ가 터지더라도 서비스 장애가 없도록한다.
Auto Scaling의 구성
시작 구성/시작 템플릿 : 무엇을 실행시킬 것인가
EC2 Auto Scaling은 시작 환경설정 혹은 시작 템플릿으로 시작할 인스턴스의 환경을 자동으로 설정하며 시작시점에 필요한 스크립트를 준비한다.
AWS에서는 시작 템플릿의 사용을 권장한다.
- EC2의 타입, 사이즈
- 생성할 AMI
- 보안그룹, Key, IAM
- 유저 데이터
모니터링: 언제 실행시킬것인가, 상태는 어떠한가?
- 예) CPU 점유율이 일정 %를 넘었을 때 추가로 실행
- 예) 2개 이상이 필요한 스택에서 EC2 하나가 죽었을때
- CloudWatch(AWS 서비스 모니터링), ELB(로드밸런서)와 함께 사용한다.
설정: 얼마나, 어떻게 실행시킬 것인가?
- 최대, 최소, 원하는 인스턴스 숫자
- ELB와 연동 등
Auto Scaling Group
Auto Scaling이 관리하는 EC2 인스턴스 그룹이며, Auto Scaling 그룹 생성에 앞서 시작환경설정, 시작 템플릿을 구성해야한다.
최소, 최대, 희망 용량을 지정하면 Auto Scaling은 희망 용량에 맞게 인스턴스의 개수를 유지하며, 최소, 최대 용량 사이를 벗어나지 않게 Scale을 조절한다.
또한, 로드밸런서를 사용해 EC2 인스턴스에 유입되는 트래픽을 분산할 수 있다.
어플리케이션 인스턴스 헬스체크
Auto scaling 그룹을 생성하면 미리 정한 최소 또는 희망 용량의 인스턴스가 항상 유지된다.
생성된 인스턴스 상태가 좋지 못하면(헬스 체크) Auto Scaling이 이를 삭제하고 새로운 인스턴스로 대체한다.
헬스체크는 HTTP response 200 ~ 499까지 확인할 수 있다.
Auto Scaling 옵션
수동 스케일링
Auto Scaling 그룹 생성 후, 최소/희망/최대 용량 값을 변경하면 해당 내용이 즉시 반영된다.
동적 스케일링
AWS 관리형 리소스(S3, 로드밸런서, 인터넷 게이트웨이, NAT게이트웨이 등)는 탄력적이다.
부하가 발생하면 스스로 스케일업함으로서 성능과 용량을 높인다.
하지만 EC2는 사용자가 책임져야한다.
CloudWatch가 모니터링한 결과에 따라 희망 용량을 증가시키는 방식으로 작동한.
- 누적 CPU활성화율
- 타겟 당 누적 요청 횟수
- 누적 네트워크 바이트-인
- 누적 네트워크 바이트-아웃
등의 지표를 감시한다.
단순 스케일링
지표가 한계치에 도달하면 Auto Scailing이 희망 용량대로 인스턴스를 증가시키되, 아래 유형에 따라
증가 수준, 속도를 조절한다.
- ChangeInCapacity
- 지정 숫자만큼 희망 용량을 증가시킨다.
- ExactCapacity
- 현재값에 상관없이 용량을 지정 숫자만큼 증가시킨다.
- PercentChangeinCapacity
- 현재 용량의 비율을 기준으로 증가시킨다.
단계별 스케일링
리소스 사용량의 누적지표에 따른 인스턴스 추가
최소 한 단계에 해당하는 조정 값 또는 범위를 지정해야한다.
- 하위경계
- 상위경계
- 희망용량증가기준
- 조정타입
목표 추적 정책
특정 지표와 타겟 값을 선택하면 Auto Scailing이 CloudWatch Alarm, 인스턴스 개수 조정을 위한 스케일링 정책 생성 등 제반 업무를 처리한다.
업무 부하와 비례적으로 변경되어야한다.
ALB 요청횟수는 비례적이지 않으므로 적합하지 않다.
예약된 작업
예측가능한 경우 선제적으로 대응한다.
특정 요일, 날짜에 특정 정책이 수행되도록 할 수 있다.
댓글남기기