Amazon EC2 Auto Scaling
사용 설명서

Auto Scaling의 이점

Amazon EC2 Auto Scaling를 애플리케이션 아키텍처에 추가하는 것은 AWS 클라우드의 이점을 극대화할 수 있는 한 방법입니다. Amazon EC2 Auto Scaling를 사용하면 애플리케이션에서는 다음 이점을 누릴 수 있습니다.

  • 내결함성 향상. Amazon EC2 Auto Scaling에서는 인스턴스가 비정상 상태일 때 이를 감지하여 종료한 다음 이를 대체할 인스턴스를 시작할 수 있습니다. 여러 개의 가용 영역을 사용하도록 Amazon EC2 Auto Scaling을 구성할 수도 있습니다. 하나의 가용 영역이 사용 불가 상태가 되면 Amazon EC2 Auto Scaling에서는 다른 가용 영역에서 새 인스턴스를 시작하여 이에 대처할 수 있습니다.

  • 가용성 향상. Amazon EC2 Auto Scaling은 애플리케이션이 항상 현재 트래픽 요구를 처리할 수 있는 올바른 용량을 갖추도록 도와줄 수 있습니다.

  • 비용 관리 개선. Amazon EC2 Auto Scaling는 필요에 따라 용량을 동적으로 확장 및 축소할 수 있습니다. 사용한 EC2 인스턴스에 대해서만 비용을 지불하므로, 실제로 인스턴스가 필요할 때 이를 시작하고 필요 없어지면 종료함으로써 비용을 절감합니다.

예: 가변적인 수요에 대응

Amazon EC2 Auto Scaling의 이점 중 몇 가지를 시연하기 위해 AWS에서 실행되는 기본 웹 애플리케이션을 고려해 봅니다. 이 애플리케이션을 사용하여 직원들은 회의에 사용하려는 회의실을 찾을 수 있습니다. 한 주의 시작과 끝에는 이 애플리케이션의 사용량이 최소 수준입니다. 주 중반쯤에는 보다 많은 직원들이 회의 일정을 잡고 있으며, 따라서 애플리케이션에 대한 수요가 눈에 띄게 증가합니다.

다음 그래프는 일주일 동안 애플리케이션의 용량이 얼마나 사용되었는지를 나타냅니다.


					애플리케이션에 대한 용량 수요 예시.

일반적으로 이러한 용량 변동을 계획하는 방법에는 두 가지가 있습니다. 첫 번째 옵션은 충분한 서버를 추가하여 애플리케이션에 항상 수요를 충족할 만큼의 충분한 용량이 확보되도록 하는 것입니다. 하지만 이 옵션의 단점은 애플리케이션에 이만큼의 용량이 필요 없는 날들도 있다는 것입니다. 여분의 용량이 미사용으로 남아 있다는 것은 결국 애플리케이션 실행 유지 비용의 상승을 의미합니다.


					필요한 것 이상의 용량을 구입하는 것이 비용 측면에서 얼마나 비효율적인지를 보여 주는 예.

두 번째 옵션은 애플리케이션에 대한 평균 수요를 처리할 수 있는 충분한 용량이 확보되도록 하는 것입니다. 이 옵션을 선택하면 가끔씩 사용되는 장비를 구매하지 않아도 되므로 비용이 절감됩니다. 그러나 애플리케이션에 대한 수요가 용량을 초과할 경우 부정적인 고객 경험을 초래할 위험이 있습니다.


					필요한 것보다 적게 용량을 구입함으로써 부정적인 고객 경험을 초래할 수 있음을 보여 주는 예.

애플리케이션에 Amazon EC2 Auto Scaling을 추가함으로써, 세 번째 옵션을 사용할 수 있습니다. 즉, 필요 시에만 애플리케이션에 새 인스턴스를 추가하고 더 이상 필요 없을 때 이를 종료할 수 있습니다. Amazon EC2 Auto Scaling은 EC2 인스턴스를 사용하므로 사용한 인스턴스에 대해서만 인스턴스 사용 시에 비용을 지불하면 됩니다. 이제 여러분은 비용을 최소화하면서도 최상의 고객 경험을 제공하는 비용 효율적인 아키텍처를 갖게 되었습니다.


					Amazon EC2 Auto Scaling이 필요 시 용량을 조절하는 방식을 보여 주는 예.

예: 웹 앱 아키텍처

일반적인 웹 앱 시나리오에서는 고객 트래픽 볼륨을 처리하기 위해 여러 개의 앱 사본을 동시에 실행합니다. 이러한 다수의 애플리케이션 사본은 동일한 EC2 인스턴스(클라우드 서버)에서 호스팅되며, 각각에서 고객 요청이 처리됩니다.


					기본 Auto Scaling 그룹의 그림.

Amazon EC2 Auto Scaling에서는 사용자를 대신하여 이러한 EC2 인스턴스의 시작과 종료를 관리합니다. Auto Scaling 그룹에서 EC2 인스턴스를 시작하거나 종료하는 시기를 결정하는 조건(Amazon CloudWatch 경보 등)의 집합을 정의합니다. Auto Scaling 그룹을 네트워크 아키텍처에 추가하면 애플리케이션의 가용성과 내결함성을 향상시킬 수 있습니다.


					기본 Auto Scaling 그룹의 그림.

필요한 만큼 Auto Scaling 그룹을 생성할 수 있습니다. 예를 들어, 각 티어별로 Auto Scaling 그룹을 생성할 수 있습니다.

Auto Scaling 그룹의 인스턴스 간 트래픽을 분산하기 위해 로드 밸런서를 아키텍처에 도입할 수 있습니다. 자세한 내용은 Auto Scaling 그룹에 로드 밸런서 사용 단원을 참조하십시오.

예: 가용 영역 전반에 인스턴스 분산

EC2 인스턴스와 같은 AWS 리소스가 고가용성 데이터 센터에 구축되어 있습니다. 추가적인 확장성과 안정성을 제공하기 위해 이러한 데이터 센터는 서로 다른 물리적 위치에 존재합니다. 리전은 지리적으로 분산되는 대규모 위치입니다. 각 리전은 가용 영역이라고 하는 여러 곳의 분리된 위치를 포함하며, 다른 가용 영역에 장애가 발생할 경우 해당 가용 영역의 장애로부터 격리되도록 설계되어 있으며 저렴하고 지연 시간도 짧은 네트워크를 통해 동일 리전의 다른 가용 영역에 연결되어 있습니다. 자세한 내용은 Amazon Web Services 일반 참조리전 및 엔드포인트: Amazon EC2 Auto Scaling를 참조하십시오.

Amazon EC2 Auto Scaling를 사용하여 리전 내 여러 가용 영역에 걸쳐 Auto Scaling 그룹을 확장함으로써 지리적 이중화를 통한 보안 및 안정성을 확보할 수 있습니다. 하나의 가용 영역이 비정상 또는 사용 불가 상태가 되었을 때, Auto Scaling에서는 영향을 받지 않은 가용 영역에서 새 인스턴스를 시작합니다. 비정상 가용 영역이 정상 상태로 복귀하는 경우 지정된 모든 가용 영역에 걸쳐 애플리케이션 인스턴스를 자동으로 고르게 재배포합니다.

Auto Scaling 그룹은 동일한 리전 내에 한 개 이상의 가용 영역에 속하는 EC2 인스턴스를 포함할 수 있습니다. 하지만 Auto Scaling 그룹은 여러 리전을 포괄할 수 없습니다.

VPC 내 Auto Scaling 그룹의 경우, 서브넷에서 EC2 인스턴스가 시작됩니다. Auto Scaling 그룹을 생성하거나 업데이트할 경우 EC2 인스턴스의 서브넷을 선택합니다. 가용 영역당 서브넷을 한 개 이상 선택할 수 있습니다. 자세한 내용은 VPC의 Auto Scaling 인스턴스 시작 단원을 참조하십시오.

인스턴스 분산

Amazon EC2 Auto Scaling은 인스턴스를 Auto Scaling 그룹에 대해 활성화된 가용 영역 간에 고르게 분산하려고 시도합니다. 이는 최소의 인스턴스로 가용 영역에서 새 인스턴스를 시작하려고 하는 방식으로 Amazon EC2 Auto Scaling에 의해 수행됩니다. 하지만 이 시도가 실패하는 경우 성공할 때까지 Amazon EC2 Auto Scaling는 다른 가용 영역에서 인스턴스 시작을 계속 시도합니다. VPC 내 Auto Scaling 그룹의 경우, 한 가용 영역에 여러 서브넷이 있으면 Amazon EC2 Auto Scaling이 가용 영역에서 서브넷을 무작위로 선택합니다.


						두 개의 가용 영역을 포괄하는 일반적인 Auto Scaling 그룹.

재분배 활동

특정 작업으로 인해 Auto Scaling 그룹이 가용 영역 간에 불균형하게 분배될 수 있습니다. Amazon EC2 Auto Scaling가 가용 영역을 재분배하여 보상합니다. 다음 작업으로 인해 재분배 활동이 발생할 수 있습니다.

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

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

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

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

재분배 시 Amazon EC2 Auto Scaling에서는 이전 인스턴스를 종료하기 전에 새 인스턴스를 시작하여 재분배로 인해 애플리케이션의 성능이나 가용성이 저하되지 않도록 합니다.

Amazon EC2 Auto Scaling에서는 이전 인스턴스 종료 전에 새 인스턴스를 시작하려 하므로 지정된 최대 용량에 도달하거나 이에 근접하면 재분배 활동을 지연시키거나 완전히 중지할 수 있습니다. 이 문제를 피하기 위해 시스템에서는 재분배 활동 중에 그룹의 지정된 최대 용량을 10% 여유(또는 인스턴스 1개의 여유 중 큰 쪽)만큼 일시적으로 초과할 수 있습니다. 그룹이 최대 용량에 도달하거나 이에 근접하여 재분배가 필요한 경우, 또는 사용자 요청에 의한 영역 재조정이나 영역 가용성 문제에 대처하기 위한 경우에만 이 여유분만큼 확장됩니다. 확장은 그룹에 재분배가 필요한 동안에만 유지됩니다(대개 몇 분 정도).