우리는 특정 워크로드에 대응할 수 있는 인스턴스를 프로비전 할 것이다. 하지만 때때로 트래픽이 급증한다면 인스턴스를 더 추가해야 할 수도있고, 트래픽이 감소한다면 인스턴스의 수를 줄여야 할 것이다. 트래픽이 감소하는데도 인스턴스의 수를 유지하는 것은 매우 비요휼적일 것이다 . 또한 이상이 있는 인스턴스를 즉시 감지해서 교체해야 할 것이다 .이것들을 가능하게 해주는 것이 바로 Auto Scailing이다.
💡 시작 환경설정 : Auto Scailing에서 인스턴스를 수동으로 프로비전하려면 AMI,타입,SSH키페어 등 많은 설정을 필요로한다. 이러한 프로비저닝할 때 모든 정보를 포함한 문서를 시작 환경설정이라 한다.
📌시작환경설정을 통해 미리 설정한 파라미터 내용에 따라 인스턴스를 자동 생성할 수 있다.
💡 시작 템플릿 : 시작 환경설정과 비슷한 기능이지만, 더 다양한 용도로 사용가능하다.
📌 버저닝 기능을 지원하므로 수정이 필요하면 사용중에도 변경할 수 있고 변경 전 버전은 구버전으로 보관된다. 버전은 앞뒤로 선택할 수 있다
*시작 환경설정은 버저닝기능이 없어 수정하려면 새 시작 환경설정을 생성해야 한다.
자동확장이 가능한 인스턴스의 집합이다 . 세가지 지표를 지정할 수 있다.
- 최소용량 : 성능을 유지하기 위한 최소 인스턴스의 수
- 최대용량 : 성능을 유지하기 위한 최대 인스턴스의 수
- 희망용량 : 인스턴스를 폐기하거나 추가할 때 항상 이 지표를 유지한다 (흡사 온도 조절기와 같다)
ex ) 희망용량이 4이면 현재 인스턴스를 4개 운영중이고 2개의 인스턴스에 문제가 생겨 폐기한다면
즉시 2개의 인스턴스를 추가해 4개를 유지한다.
최소용량, 최대용량, 희망용량을 수동으로 변경하면 Auto Scailing Group은 이를 즉시 반영한다.
리소스 고갈 전에 인스턴스를 자동으로 추가해준다.
CloudWatch alarm을 이용해 특정 리소스의 메트릭을 수집해 이것을 기반으로 희망용량을 증가시키거나 감소시키는 방식으로 동적 스케일링을 수행한다.
*추후 포스팅에서 CloudWatch alarm에 대해서 다뤄볼 예정이다.
메트릭이 기준치를 초과하면 미리 설정한 기준만큼 희망용량을 증가시킨다.
추가로 경계상한선과 하한선을 설정하고 메트릭이 이 범위안에 포함된다면 희망용량을 증가시킨다.
📌 비례적으로 증가시킬때 사용한다.
📌 트래픽이 최대 지점에 들어가기전 미리 스케일링하는 웜업 타임을 지정가능.
어느 구간에 포함되거나 특정 지표 이상이 아닌, 항상 해당 지표에 근접하거나 동일하게 만든다.
SQS의 메세지 수,타켓별 요청 수 등의 메트릭을 설정할 수 있다.
ex) CPU사용률을 50%로 지정했는데 현재 30%라면 50%에 근접하기 위해 인스턴스를 축소하거나,
현재 70%라면 인스턴스의 수를 확장하는 방식이라고 생각하면 된다.
📌 트래픽이 최대 지점에 들어가기전 미리 스케일링하는 웜업 타임을 지정가능.
📌 위의 예시처럼 다른 정책과 다르게 스케일인(축소)를 할수 있다.
이번 포스팅에서는 자동확장을 통해 트래픽이 변동적이거나 인스턴스에 문제가 생겼을 때 어떻게 대응하는지에 배웠다. 하지만 인스턴스를 추가하거나 제거하면 변경된 Auto scailing Group안에서 어떻게 트래픽이 새로 균등하게 배분되는지 궁금할 것이다. 또한 인스턴스에 문제가 생겼다는 것을 어떻게 알 수 있는지도 의문일 것이다. 추후의 포스팅에서는 이것들을 해결 할 수 있는 Elastic Load Balancer에 대해서 포스팅 할 예정이다.