Auto Scailing

AWS Auto Scaling은 애플리케이션을 모니터링하고 용량을 자동으로 조정하여, 최대한 저렴한 비용으로 안정적이고 예측 가능한 성능을 유지하도록 돕는다

유용한 케이스

  • 주기적 트래픽

    (예: 정규 업무 시간 동안 리소스 사용량이 많고 밤에는 리소스가 적게 사용되는 경우)

  • 배치(batch) 처리, 테스트 또는 주기적 분석과 같은 온/오프 워크로드 패턴

  • 급증 기간이 발생하는 마케팅 캠페인과 같이 변동이 심한 트래픽 패턴

Scailing 종류

  • Verical Scaling

    • 인스턴스 사이즈 변경

    • EBS 용량 증가

  • Horizontal Scailng

    • 인스턴스 추가/제거

AWS Auto Scaling 리소스

  • Amazon EC2 Amazon EC2 Auto Scailing group에서, EC2 인스턴스를 시작하거나 종료

  • Amazon EC2 Spot Fleets Amazon EC2 Spot Fleets에서, EC2 인스턴스를 시작 또는 종료. 가격또는 용량 이유로 인해 중단 된 인스턴스를 자동으로 교체

  • Amazon ECS 로드 변동에 대응하기 위해 원하는 ECS 서비스 카운트를 늘리거나 줄임

  • Amazon DynamoDB DynamoDB 테이블 또는 글로벌 보조 인덱스를 활성화하여 프로비저닝 된 읽기 및 쓰기 용량을 늘려 스로틀링없이 갑작스러운 트래픽 증가를 처리

  • Amazon Aurora Aurora DB 클러스터에 프로비저닝 된 Aurora 읽기 전용 복제본 수를 동적으로 조정하여 활성 연결 또는 워크로드의 갑작스러운 증가를 처리

리소스 조정 기능

현재 제공되는 조정 기능으로는 동적 조정과 예측 조정이 있음 1. 동적 조정 애플리케이션의 확장 가능 리소스에 대한 조정 정책을 생성, 조정 계획을 따라 각 리소스에 대한 용량을 추가 및 제거하여 리소스 활용률을 지정된 목표값으로 유지

  1. 예측 조정

    • 로드 예측 지정한 로드 지표에 대해 최대 14일 동안의 기록을 분석하여, 향후 2일 동안의 수요를 예측합니다. 이 데이터는 1시간 간격으로 제공되며 매일 업데이트

    • 예약 조정 작업 예약된 시간에 AWS Auto Scaling은 리소스의 최소 용량을 예약 조정 작업에서 지정한 값으로 업데이트

    • 최대 용량 동작 예약 조정 작업에서 지정하는 값에 대한 최소 및 최대 용량 제한이 있음. 예측 용량이 최대 용량보다 높을 때 애플리케이션이 최대 용량을 초과하는 리소스를 추가할 수 있는지 여부를 제어

EC2 Auto Scaling

애플리케이션의 로드를 처리할 수 있는 정확한 수의 Amazon EC2 인스턴스를 보유하도록 보장함. 사용자가 정의한 조정 정책에 따라 인스턴스 수가 최소 및 최대 인스턴스 수 내에서 지정하는 조건에 따라 조절하게 됨.

Minimum size : 최소 인스턴스 수를 지정, Amazon EC2 Auto Scaling에서는 그룹의 크기가 이 값 아래로 내려가지 않음 Maximum size : 최대 인스턴스 수를 지정, Amazon EC2 Auto Scaling에서는 그룹의 크기가 이 값을 넘지 않음 Desired capacity : 원하는 용량을 지정한 경우 그룹을 생성한 다음에는 Amazon EC2 Auto Scaling 그룹에서 이만큼의 인스턴스를 보유

EC2 Auto Scaling 구성 요소

Amazon EC2 Auto Scaling의 핵심 구성 요소는 다음과 같음.

  • 구성 템플릿(Launch Templates, Launch Configurations) 인스턴스의 AMI ID, 인스턴스 유형, 키 페어, 보안 그룹, 블록 디바이스 매핑 등의 정보를 지정

  • Groups EC2 인스턴스 최소 및 최대 인스턴스 수와 원하는 인스턴스 수 지정

  • 조정 옵션 Auto Scaling 그룹을 조정하는 다양한 방법 제공(동적 및 예측 조정)

🤔 시작 템플릿(Launch Templates), 시작 구성(Launce Configurations)

시작 템플릿을 사용하여 Auto Scailing 그룹을 만드는것을 AWS에서는 권장함. 인스턴스 구성 정보(Amazon 머신 이미지(AMI)의 ID, 인스턴스 유형, 키 페어, 보안 그룹 및 EC2 인스턴스를 시작하는 데 사용할 기타 파라미터 등이 포함)를 지정한다는 점에서는 시작 템플릿과 시작 구성이 동일함.

시작 구성은 생성하고 변경이 불가하며 새로운 구성을 만들수밖에 없음, 또한 Auto Scailing 그룹 기능을 모두 사용할 수가 없으며, 시작 템플릿에서만 Amazon EC2 고급 구성 옵션을 제공함.

예)

  • 시작 구성은 스팟 및 온디맨드 인스턴스를 모두 시작하거나 여러 인스턴스 유형을 지정 불가

  • Amazon EC2 전용 호스트를 사용하려면 시작 템플릿을 사용해야함

Auto Scailing 그룹

Auto Scaling 그룹에는 자동 조정 및 관리 목적의 논리적 그룹으로 취급되는 Amazon EC2 인스턴스 모음이 포함 Auto Scaling 그룹을 통해 상태 검사, 교체 및 조정 정책과 같은 기능을 사용함

생성 방법 1. 시작 템플릿 시작 템플릿에는 AMI 및 인스턴스 유형과 같이 Amazon EC2가 인스턴스를 시작하는 데 필요한 정보가 포함되어 있고, 기본 버전 또는 최신 버전을 사용하도록 구성할수 있음

  1. 시작 구성 시작 템플릿과 유사하나 구성보다는 템플릿 권장

  2. EC2 인스턴스 running 상태의 인스턴스를 가지고 시작 구성을 만들고 이를 Auto Scailing 그룹에 연결하게됨

  3. 시작 마법사 EC2 시작 마법사를 사용해서 Auto Scailing 그룹을 만들수 있음. 이때도 시작 구성을 사용함

온디맨드 인스턴스, 스팟 인스턴스 또는 두가지 모두 사용 가능하나, 이러한 여러 구매 옵션을 지정하려면 반드시 시작 템플릿을 사용해야함 특히 스팟으로 여러 인스턴스 타입을 그룹화하여 사용하려면 시작 템플릿을 반드시 사용해야함 인스턴스 구성에 대한 상세 내용은 인스턴스 할당 전략을 통해서 확인 가능

Elastic Load Balancing

기존 Auto Scaling 그룹에 하나 이상의 로드 밸런서를 연결할 수 있도록 Elastic Load Balancing과 통합한다 로드 밸런서(타겟 그룹)를 연결한 후에는 그룹의 인스턴스를 자동으로 등록하고 제거하면서 인스턴스 간에 수신 트래픽을 분산하게 된다 Elastic Load Balancing에서 지원되는 Classic, Application, Network 세가지 타입 모두 Auto Scaling에서 지원한다

인스턴스 할당 전략

온디맨드 인스턴스

  • 시작 템플릿 재정의 목록에 있는 인스턴스 유형 순서를 사용하여 온디맨드 용량을 채울 때 우선 사용할 인스턴스 유형을 결정하게 됨

  • 여분의 예약 인스턴스 할인 적용 되는 인스턴스를 높은 우선순위에 배치

  • Savings Plans 사용 중이라면 적용되는 인스턴스 유형 우선 배치

스팟 인스턴스

  • 용량 최적화 요금은 시간이 지나면서 수요 및 공급의 장기 추세에 따라 서서히 변화하지만 용량은 실시간으로 변동되며, 이 전략은 가용성이 높은 풀(중단이 발생될 확률이 적은 인스턴스 풀)을 예측하여 사용하는 방식 예) 빅데이터 및 분석, 이미지 및 미디어 렌더링, 기계학습, 고성능 컴퓨팅

  • 낮은 가격 인스턴스를 할당 시점에 단위당 가격이 가장 낮은 풀에서 제공 예) 일시적인 워크로드, 쉽게 확인하고 다시 시작할 수 있는 워크로드

인스턴스 비율 제어

인스턴스 배포

전체 인스턴스 수

10

20

30

40

예 1

온디맨드 기본: 10

10

10

10

10

온디맨드 비율: 50%

0

5

10

15

스팟 비율: 50%

0

5

10

15

예 2

온디맨드 기본: 0

0

0

0

0

온디맨드 비율: 60%

6

12

18

24

스팟 비율: 40%

4

8

12

16

예 3

온디맨드 기본: 0

0

0

0

0

온디맨드 비율: 100%

10

20

30

40

스팟 비율: 0%

0

0

0

0

예 4

온디맨드 기본: 0

0

0

0

0

온디맨드 비율: 0%

0

0

0

0

스팟 비율: 100%

10

20

30

40

예 5

온디맨드 기본: 12

10

12

12

12

온디맨드 비율: 0%

0

0

0

0

스팟 비율: 100%

0

8

18

28

그룹 조정

조정은 애플리케이션의 컴퓨팅 용량을 늘리거나 줄이는 기능.

조정 옵션

  • 항상 현재 인스턴스 수준 유지

    지정된 수의 인스턴스를 항상 유지 ==> 최소,최대,원하는 용량 동일하게 설정

  • 수동 조정

    최소, 최대 또는 원하는 용량을 직접 조정

  • 일정을 기반으로 조정

    확장 작업이 시간 및 날짜 함수에 따라 자동으로 수행

  • 온디맨드 기반 조정

    조정 정책을 사용하여 리소스를 조정하는 보다 향상된 방식을 사용하면 조정 프로세스를 제어하는 파라미터를 정의

  • 예측 조정

    예측적 조정과 동적 조정(각기 사전 예방식 접근 방식 및 사후 대처식 접근 방식)을 결합

온디맨드 기반 조정(동적 조정)

  • 대상 추적 조정 : 특정 지표의 목표 값을 기준으로 그룹의 현재 용량 조정

  • 단계 조정 : 그룹의 현재 용량을 단일 조정 조절에 따라 늘리거나 줄이며, 경보 위반의 크기에 따라 달라짐

  • 단순 조정 : 그룹의 현재 용량을 단일 조정 조절에 따라 늘리거나 줄임

단순 조정은 조정 활동 상태가 완료 되기 전까지 추가 경보에 대해서는 대응하지 못하고 대기하기 때문에 단계 조정 또는 추적 조정을 권장

인스턴스 종료

종료 정책을 사용하면 축소 이벤트가 발생할 때 먼저 종료할 인스턴스를 제어할수 있음

종료 정책

  • Default : 기본 종료 정책에 따라 인스턴스를 종료

  • AllocationStrategy : 그룹의 종료 중인 인스턴스 유형에 대한 할당 전략에 나머지 인스턴스를 맞춤 선호하는 인스턴스 유형이 변경된 경우 유용

  • OldestLaunchTemplate : 가장 오래된 시작 템플릿이 있는 인스턴스를 종료 최신이 아닌 시작 템플릿을 사용하는 인스턴스가 먼저 종료

  • OldestLaunchConfiguration : 가장 오래된 시작 구성을 가진 인스턴스를 종료 그룹을 업데이트하고 이전 구성의 인스턴스를 단계적으로 종료

  • ClosestToNextInstanceHour : 다음 번 결제 시간에 가장 근접한 인스턴스를 종료 시간제로 요금이 청구되는 인스턴스의 사용을 극대화

  • NewestInstance : 그룹에서 가장 새로운 인스턴스를 종료 새로운 시작 구성을 테스트하지만 기존 상태로 유지하고 싶을 경우에 유용

  • OldestInstance : 그룹에서 가장 오래된 인스턴스를 종료 새로운 EC2 인스턴스 유형으로 업그레이드할 때 유용

축소 보호

축소 시 Auto Scaling 그룹에서 특정 인스턴스의 종료를 막을 경우 사용

Default 종료 정책

기본 종료 정책은 다음과 같은 절차로 동작함 1. 인스턴스가 가장 많으며 축소로부터 보호되지 않는 인스턴스가 최소 하나 이상 있는 가용 영역을 확인 2. 종료할 인스턴스를 결정하기전, 온디맨드 또는 스팟 인스턴스의 할당 전략에 나머지 인스턴스를 맞춤 3. 이 중에서 가장 오래된 시작 템플릿 또는 구성을 사용하는 인스턴스가 있는지 확인 4. 위의 기준에 따라 종료할 비보호 인스턴스가 여러 개 있는 경우, 다음 결제 시간에 가장 근접한 인스턴스가 무엇인지 확인 다음 번 결제 시간에 가장 근접한 비보호 인스턴스가 여러 개인 경우 이러한 인스턴스 중 하나를 임의로 종료

수명 주기 후크

Auto Scaling 그룹에서 인스턴스를 시작하거나 종료할 때 인스턴스를 일시 중지하여 사용자 지정 작업을 수행할 수 있음

인스턴스 임시 제거

InService 상태의 인스턴스를 Standby 상태로 설정하고, 인스턴스를 업데이트하거나 문제 해결한 다음, 해당 인스턴스를 서비스 상태를 전환 대기 상태의 인스턴스는 Auto Scaling 그룹에 여전히 속하나, 애플리케이션 트래픽을 처리하지 않음

조정 정책 비활성화

Auto Scaling 그룹에 포함된 인스턴스 수를 변경하지 않도록 조정 정책을 일시적으로 비활성화 가능

인스턴스를 재부팅하거나 문제를 해결해야 하는 경우에는 인스턴스 임시 제거 기능을 사용 권장

재분배 활동

특정 작업으로 인해 Auto Scaling 그룹이 가용 영역 간에 불균형하게 분배될 경우 가용 영역을 재분배하는 작업이 발생됨

  • 그룹의 가용 영역을 변경한 경우

  • 명시적으로 인스턴스를 종료 또는 분리하여 그룹이 불균형해지는 경우

  • 이전에 용량 부족을 겪었던 가용 영역이 복구되어 추가적인 가용 용량이 확보된 경우

  • 이전에 스팟 가격이 최대 가격보다 높았던 가용 영역이 이제 스팟 가격이 하락하여 최대 가격 아래로 떨어진 경우

이때, 이전 인스턴스를 종료하기 전에 새 인스턴스를 시작하여 재분배로 인해 애플리케이션의 성능이나 가용성 저하가 발생되지 않도록 함

EC2 Auto Scailing 수명 주기

Auto Scaling 그룹의 EC2 인스턴스에는 다른 EC2 인스턴스와는 다른 경로, 즉 수명 주기가 있음 인스턴스가 시작되는 즉시 인스턴스에 대한 요금이 청구되며, 아직 서비스되지 않는 시간도 포함됨

요금

AWS Auto Scaling 기능은 Amazon CloudWatch 지표와 경보를 사용하여 활성화되며, 이에 따라 사용하는 다른 AWS 리소스 및 CloudWatch의 서비스 요금 외에 추가 비용은 없음

Last updated