본문으로 건너뛰기

ScalingMethod

1 AWS Auto Scaling Group의 스케일링 방법

  • Amazon EC2 Auto Scaling은 Auto Scaling 그룹을 확장할 수 있는 여러 가지 방법을 제공합니다.
  • 이를 통해 애플리케이션의 가용성과 성능을 유지하면서 비용 효율성을 극대화할 수 있습니다. 여기에서는 다양한 스케일링 방법에 대해 자세히 살펴보겠습니다.

2 고정된 인스턴스 수 유지 (Maintain a Fixed Number of Instances)

  • 기본적으로 Auto Scaling 그룹에 첨부된 스케일링 정책이나 예약된 작업이 없는 경우, 그룹은 고정된 크기를 유지합니다.
  • Auto Scaling 그룹을 생성하면 원하는 용량을 충족하기 위해 인스턴스를 시작합니다.
  • 스케일링 조건이 없으면 인스턴스가 비정상 상태가 되더라도 원하는 용량을 유지합니다.
  • Auto Scaling 그룹의 각 인스턴스 상태를 모니터링하고 비정상적인 인스턴스를 새 인스턴스로 교체합니다.
  • 일정한 성능이 필요한 애플리케이션이나 서비스에서 유용합니다.

3 수동 스케일링 (Scale Manually)

  • 수동 스케일링은 Auto Scaling 그룹을 확장하는 가장 기본적인 방법입니다.
  • 사용자는 Auto Scaling 그룹의 원하는 용량(desired capacity)을 업데이트하거나 인스턴스를 종료할 수 있습니다.
  • 사용자가 직접 인스턴스 수를 조절하므로 간단하지만 자동화된 대응은 불가능합니다.
  • 특정 시점에 일시적으로 인스턴스를 추가하거나 제거해야 하는 경우에 유용합니다.

4 스케줄에 따른 스케일링 (Scale Based on a Schedule)

  • 스케줄에 따른 스케일링은 날짜와 시간에 따라 스케일링 작업을 자동으로 수행합니다.
  • 스케줄 기반 스케일링을 통해 예측 가능한 트래픽 패턴에 맞춰 인스턴스 수를 미리 조정할 수 있습니다.
  • 예를 들어, 예상되는 트래픽 증가나 감소에 맞춰 인스턴스 수를 조절할 수 있습니다.
  • 예측 가능한 스케줄에 따라 인스턴스를 추가하거나 제거할 수 있어, 미리 계획된 트래픽 변화에 효과적으로 대응할 수 있습니다.
  • 정기적으로 트래픽이 변동하는 애플리케이션에 유용합니다.
  • Scheduled scaling은 비즈니스 운영 시간과 같은 정기적인 트래픽 변동을 처리하는 데 유용합니다.

5 예측 스케일링 (Scale Proactively)

  • 예측 스케일링은 머신 러닝을 사용하여 트래픽 패턴을 예측하고, 이에 따라 인스턴스를 사전에 조절하는 방법입니다.
  • 이를 통해 예측된 일일 및 주간 트래픽 패턴에 따라 미리 인스턴스를 추가합니다.
  • 예측 알고리즘을 통해 미래의 트래픽 변화를 미리 감지하고 대응합니다.
  • 동적 스케일링과 결합하여 더욱 효율적인 스케일링을 구현할 수 있습니다.
  • 트래픽 패턴이 일정하지만 사전에 대응이 필요한 애플리케이션에 유용합니다.

5.1 개요

  • Predictive Scaling은 Amazon EC2 Auto Scaling이 향후 트래픽 패턴을 예측하여 인스턴스 수를 자동으로 조정할 수 있도록 합니다.
  • 과거 데이터를 분석하여 향후 수요를 예측하고, 필요한 용량을 미리 준비함으로써 성능 저하를 방지합니다.

5.2 동작 방식

  • Auto Scaling이 CloudWatch 지표와 사용자의 스케일링 기록을 분석하여 수요 패턴을 학습합니다.
  • 트래픽 증가를 예상하여 인스턴스 수를 미리 늘리고, 트래픽 감소를 예상하여 인스턴스 수를 줄이는 방식으로 동작합니다.
  • 예측 모델을 지속적으로 업데이트하여 정확성을 향상시킵니다.

5.3 장점

  • 자동화된 용량 관리: 예측된 수요에 맞추어 자동으로 인스턴스를 추가하거나 제거함으로써, 수동 개입 없이 애플리케이션의 가용성과 성능을 유지합니다.
  • 비용 최적화: 필요할 때만 인스턴스를 사용하여 리소스 낭비를 줄이고 비용을 절감합니다.
  • 성능 보장: 트래픽 급증 시에도 미리 준비된 용량으로 빠르게 대응할 수 있어, 사용자 경험을 저해하지 않습니다.

5.4 구성 방법

  • Auto Scaling 그룹 생성: 기존의 Auto Scaling 그룹에 Predictive Scaling을 추가할 수 있습니다.
  • CloudWatch 지표 선택: 예측에 사용할 지표를 선택합니다. 일반적으로 CPU 사용률, 네트워크 트래픽 등을 사용합니다.
  • 스케일링 정책 설정: 예측 모델을 기반으로 스케일링 정책을 설정합니다. 예를 들어, CPU 사용률이 70%를 초과하면 인스턴스를 추가하는 방식입니다.

5.5 사용 사례

  • 이커머스 사이트: 쇼핑 시즌과 같이 트래픽이 급증할 때 Predictive Scaling을 통해 미리 준비된 용량으로 원활한 서비스를 제공합니다.
  • 뉴스 사이트: 중요한 이벤트가 발생할 때 트래픽 급증을 예상하여 서버 용량을 확보함으로써, 사이트의 가용성을 유지합니다.

5.6 고려사항

  • 데이터 품질: 정확한 예측을 위해 과거 데이터의 품질이 중요합니다. 잘못된 데이터는 예측 오류를 초래할 수 있습니다.
  • 지속적인 모니터링: 예측 모델이 잘 작동하는지 지속적으로 모니터링하고, 필요시 조정해야 합니다.
  • 비용 관리: 예측에 따라 리소스가 추가되므로, 비용 관리에도 주의를 기울여야 합니다.

6 수요에 따른 동적 스케일링 (Scale Dynamically Based on Demand)

  • 동적 스케일링은 스케일링 정책을 정의하여 수요 변화에 따라 Auto Scaling 그룹을 동적으로 확장합니다.
  • 예를 들어, 웹 애플리케이션이 2개의 인스턴스에서 실행 중이며, CPU 사용률을 50%로 유지하고자 할 때 유용합니다.
  • 트래픽 변화에 따라 자동으로 인스턴스 수를 조절하므로 예측할 수 없는 트래픽 변화에 대응할 수 있습니다.
  • 트래픽 패턴이 일정하지 않은 애플리케이션에 적합합니다.

6.1 타겟 추적 스케일링 정책 (Target Tracking Scaling Policies)

  • Target tracking scaling policy는 Auto Scaling 그룹의 용량을 타겟 지표 값에 따라 자동으로 조정합니다.
  • 이를 통해 애플리케이션의 최적 성능과 비용 효율성을 유지할 수 있으며, 수동 개입 없이 자동으로 조정됩니다.
  • 타겟 추적을 사용하면, 애플리케이션의 이상적인 평균 사용률 또는 처리량 수준을 나타내는 지표와 목표 값을 선택할 수 있습니다.
  • Amazon EC2 Auto Scaling은 지표가 목표 값을 벗어날 때 CloudWatch 알람을 생성하고 스케일링 이벤트를 호출하여 용량을 조정합니다.
  • 예를 들어, 현재 두 개의 인스턴스에서 실행되는 애플리케이션의 Auto Scaling 그룹이 CPU 사용률을 50%로 유지하도록 설정할 수 있습니다. 이 경우, CPU 사용률이 50%를 초과하면 Auto Scaling 그룹이 용량을 증가시키고, CPU 사용률이 50% 이하로 떨어지면 용량을 최적화하기 위해 감소시킵니다.
  • CloudWatch 통합: CloudWatch는 목표 지표와의 비교를 통해 알람을 생성하고, 필요 시 스케일링 이벤트를 트리거합니다. 이 과정은 완전히 자동화되어 있어 수동 개입이 필요 없습니다.

6.1 여러 타겟 추적 스케일링 정책

  • 스케일링 성능을 최적화하기 위해 여러 타겟 추적 스케일링 정책을 함께 사용할 수 있습니다.
  • 각 정책이 다른 지표를 사용하면 추가적인 로드 정보를 제공하여 Auto Scaling 그룹이 더 나은 결정을 내리도록 도울 수 있습니다.
  • Auto Scaling 그룹은 언제나 가용성을 우선시하며, 어떤 타겟 추적 정책이든 스케일 아웃을 준비하면 스케일 아웃을 수행합니다. 스케일 인은 모든 타겟 추적 정책이 스케일 인을 준비한 경우에만 수행합니다.

6.2 지표 선택

  • 사전 정의된 지표 또는 사용자 정의 지표로 타겟 추적 스케일링 정책을 생성할 수 있습니다.
  • 사전 정의된 지표에는 ASGAverageCPUUtilization, ASGAverageNetworkIn, ASGAverageNetworkOut, ALBRequestCountPerTarget이 포함됩니다.
  • 사용자 정의 지표를 사용하려면 AWS CLI 또는 SDK를 사용하여 커스텀 지표 사양을 지정해야 합니다.
  • 지표를 선택할 때 1분 간격으로 제공되는 지표를 사용하는 것이 좋습니다.

6.3 목표 값 정의

  • 타겟 추적 스케일링 정책을 생성할 때 목표 값을 지정해야 합니다.
  • 목표 값은 Auto Scaling 그룹의 이상적인 평균 사용률 또는 처리량을 나타냅니다.
  • 자원을 비용 효율적으로 사용하려면 예기치 않은 트래픽 증가에 대비하여 목표 값을 가능한 한 높게 설정하는 것이 좋습니다.

6.4 인스턴스 워밍업 시간 정의

  • 새로 시작된 인스턴스가 워밍업되는 데 걸리는 시간을 지정할 수 있습니다.
  • 워밍업 시간이 만료될 때까지 인스턴스는 Auto Scaling 그룹의 집계된 EC2 인스턴스 지표에 포함되지 않습니다.
  • 워밍업 중인 인스턴스가 있는 동안에는 스케일 아웃 활동만 발생하며, 스케일 인 활동은 차단됩니다.

6.5 고려사항

  • 타겟 추적 스케일링 정책과 관련된 CloudWatch 알람을 생성, 수정, 삭제하지 마십시오.
  • 타겟 추적 스케일링 정책은 트래픽 수준 변동 시 가용성을 우선시하여 트래픽이 감소할 때 점진적으로 스케일 인합니다.
  • 지표 데이터 포인트가 누락되면 CloudWatch 알람 상태가 INSUFFICIENT_DATA로 변경되어 Auto Scaling 그룹이 스케일링을 수행하지 못할 수 있습니다.
  • 스케일 인이 즉시 발생해야 할 경우, 정책의 스케일 인 부분을 비활성화할 수 있습니다.

6.2 단계 스케일링 (Step Scaling)

  • 단계 스케일링은 설정된 알람 상태에 따라 여러 단계로 나눠 인스턴스 수를 조정하는 방법입니다.
  • 알람 상태의 심각도에 따라 증가 또는 감소하는 인스턴스 수가 다르게 설정됩니다.
  • 예를 들어, CPU 사용률이 60%를 초과하면 1개의 인스턴스를 추가하고, 80%를 초과하면 추가로 2개의 인스턴스를 추가하는 방식으로 설정할 수 있습니다.
  • CloudWatch 통합: 단계별 스케일링도 CloudWatch 알람을 통해 트리거됩니다. 알람 조건이 충족되면, 미리 정의된 단계별 조정이 자동으로 실행됩니다.
  • 장점
    • 급격한 트래픽 증가에 더 효과적으로 대응할 수 있습니다.
    • 트래픽 증가의 정도에 따라 다른 스케일링 동작을 정의할 수 있습니다.

6.3 단순 스케일링 (Simple Scaling)

  • 단순 스케일링(Simple Scaling)은 특정 알람 조건이 충족될 때마다 단일 스케일링 동작을 수행하는 간단한 방법입니다.
  • 이 방법은 주로 고정된 개수 또는 퍼센트 단위로 인스턴스를 추가하거나 제거합니다.
  • 인스턴스 개수 기반 스케일링
    • 특정 지표(예: CPU 사용률, 네트워크 트래픽 등)가 설정된 임계값을 초과할 때, 사전에 정의된 개수의 인스턴스를 추가하거나 제거합니다.
    • 예를 들어, CPU 사용률이 70%를 초과하면 2개의 인스턴스를 추가하는 방식으로 설정할 수 있습니다.
  • 퍼센트 기반 스케일링
    • 인스턴스 수를 절대적인 개수 대신 퍼센트로 조정할 수도 있습니다.
    • 이 방법은 인스턴스 수가 이미 클 경우 더 많은 자원을 추가하거나 제거할 수 있어, 부하가 큰 상황에서 유리합니다.
    • 예를 들어, CPU 사용률이 70%를 초과하면 현재 Auto Scaling 그룹의 인스턴스 수의 20%를 추가하는 방식으로 설정할 수 있습니다.
  • CloudWatch 통합: 단순 스케일링도 CloudWatch 알람에 의존하여 동작합니다. 사용자가 설정한 알람 조건에 따라 스케일링 이벤트가 트리거됩니다.
  • 단점:
    • 급격한 트래픽 변화에 빠르게 대응하기 어렵습니다.
    • 한 번에 하나의 스케일링 이벤트만 처리할 수 있습니다.
  • 사용 사례: 트래픽 패턴이 비교적 안정적이고 예측 가능한 애플리케이션에 적합합니다.

6.4 CloudWatch와의 연관성

  • 모든 동적 스케일링 방법은 AWS CloudWatch와 긴밀하게 연관되어 작동합니다. CloudWatch는 다음과 같은 역할을 수행합니다:
  • 모니터링: 설정된 지표를 실시간으로 모니터링하여, 애플리케이션의 성능을 측정하고 변화를 감지합니다.
  • 알람 생성: 설정된 임계값을 초과하거나 특정 조건이 충족되면 알람을 생성하여 스케일링 이벤트를 트리거합니다.
  • 자동화된 스케일링: CloudWatch와의 통합을 통해 수동 개입 없이 인스턴스 수를 조정할 수 있으며, 이를 통해 애플리케이션의 가용성과 성능을 자동으로 유지할 수 있습니다.

6.5 스케일링 정책 선택 가이드

  • 각 스케일링 정책은 고유한 특징과 장단점을 가지고 있습니다.
  • 적절한 정책을 선택하기 위해 다음 사항을 고려해야 합니다:
  1. 애플리케이션의 특성:
    • 트래픽 패턴이 예측 가능한가?
    • 급격한 트래픽 변화가 자주 발생하는가?
  2. 성능 요구사항:
    • 특정 성능 지표를 일정하게 유지해야 하는가?
    • 트래픽 증가에 얼마나 빠르게 대응해야 하는가?
  3. 비용 최적화:
    • 리소스 사용을 얼마나 세밀하게 제어해야 하는가?
  4. 관리 복잡성:
    • 스케일링 정책을 얼마나 자주 조정하고 관리할 수 있는가?

정책 선택 권장 사항

  • 단순한 환경, 예측 가능한 트래픽: 단순 스케일링
  • 변동성 있는 트래픽, 세밀한 제어 필요: 단계 스케일링
  • 특정 성능 지표 유지, 간단한 설정 선호: 타겟 추적 스케일링

6.6 급격한 트래픽 증가에 대한 대응

  • 급격한 트래픽 증가에 효과적으로 대응하기 위해서는 다음과 같은 방법을 고려할 수 있습니다:
  1. 단계 스케일링 사용:
    • 트래픽 증가의 정도에 따라 다른 스케일링 동작을 정의합니다.
    • 예: CPU 사용률이 60%를 초과하면 2개 인스턴스 추가, 80%를 초과하면 4개 인스턴스 추가
  2. 더 공격적인 스케일링 규칙 설정:
    • 초기 단계에서 더 많은 인스턴스를 추가하도록 설정합니다.
    • 이는 트래픽 급증 시 빠르게 대응할 수 있게 해줍니다.
  3. 예측적 스케일링 활용:
    • 과거 트래픽 패턴을 분석하여 미리 용량을 확장합니다.
    • 이는 예측 가능한 트래픽 패턴이 있는 경우에 유용합니다.
  4. 복합 정책 사용:
    • 타겟 추적 스케일링과 단계 스케일링을 함께 사용하여 일반적인 변동과 급격한 증가 모두에 대응합니다.
  5. CloudWatch 알람 조정:
    • 더 짧은 평가 기간을 설정하여 빠르게 트래픽 변화를 감지합니다.
    • 주의: 너무 짧은 기간은 불필요한 스케일링을 유발할 수 있습니다.

참고 자료