웜 풀을 사용하여 부팅 시간이 긴 애플리케이션의 지연 시간 단축 - Amazon EC2 Auto Scaling

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

웜 풀을 사용하여 부팅 시간이 긴 애플리케이션의 지연 시간 단축

웜 풀을 사용하면 예컨대, 인스턴스가 많은 양의 데이터를 디스크에 기록해야 하기 때문에 부팅 시간이 매우 길어지는 애플리케이션의 지연 시간을 줄일 수 있습니다. 웜 풀을 사용하면 애플리케이션 성능 향상을 위해 대기 시간을 관리하려고 Auto Scaling 그룹을 과도하게 프로비저닝할 필요가 없습니다. 자세한 설명은 블로그 게시물 EC2 Auto Scaling 웜 풀로 애플리케이션의 크기를 더 빠르게 조정(Scaling your applications faster with EC2 Auto Scaling Warm Pools)를 참조하세요.

중요

필요하지 않은 경우, 웜 풀을 생성하면 불필요한 비용이 발생할 수 있습니다. 첫 번째 부팅 시간으로 인해 애플리케이션에서 눈에 띄는 대기 시간 문제가 발생하지 않는 경우, 웜 풀을 사용할 필요가 없습니다.

핵심 개념

시작하기 전에 다음과 같은 핵심 개념을 익힙니다.

웜 풀

웜 풀은 Auto Scaling 그룹과 함께 있는 미리 초기화된 EC2 인스턴스의 풀입니다. 애플리케이션을 스케일 아웃해야 할 때마다 Auto Scaling 그룹은 원하는 새 용량을 충족하기 위해 웜 풀을 사용할 수 있습니다. 이렇게 하면 인스턴스가 애플리케이션 트래픽 제공을 신속하게 시작하여 스케일 아웃 이벤트에 대한 응답 속도를 높일 수 있습니다. 인스턴스가 웜 풀을 벗어나면 그룹의 원하는 용량에 가산됩니다. 이를 웜 스타트라고 합니다.

인스턴스가 웜 풀에 있는 동안 조정 정책은 InService 상태에 있는 인스턴스의 지표 값이 대상 추적 조정 정책의 대상 사용률과 동일한 조정 정책의 경보 상한 임계값보다 큰 경우에만 스케일 아웃됩니다.

웜 풀 크기

기본적으로 웜 풀의 크기는 Auto Scaling 그룹의 최대 용량과 원하는 용량 간의 차이로 계산됩니다. 예컨대, Auto Scaling 그룹의 원하는 용량이 6이고 최대 용량이 10인 경우, 웜 풀을 처음 설정하고 풀을 초기화할 때 웜 풀의 크기는 4가 됩니다.

웜 풀의 최대 용량을 개별적으로 지정하려면 사용자 지정 사양(MaxGroupPreparedCapacity) 옵션을 사용하고 그룹의 현재 용량보다 큰 사용자 지정 값을 설정합니다. 사용자 지정 값을 제공하는 경우 웜 풀의 크기는 사용자 지정 값과 그룹의 현재 원하는 용량 간의 차이로 계산됩니다. 예를 들어 Auto Scaling 그룹의 원하는 용량이 6, 최대 용량이 20, 사용자 지정 값이 8인 경우 웜 풀을 처음 설정하고 풀을 초기화할 때 웜 풀의 크기는 2가 됩니다.

대규모 Auto Scaling 그룹으로 작업할 때 웜 풀 사용에 따르는 비용 혜택을 관리하기 위해 사용자 지정 사양(MaxGroupPreparedCapacity) 옵션을 사용해야 할 수 있습니다. 예컨대, 최대 용량이 1,500(비상 트래픽 급증 시 추가 용량 제공용)이고, 100개의 인스턴스로 구성된 웜 풀이 있는, 인스턴스 1,000개의 Auto Scaling 그룹은 웜 풀 내에 향후 사용을 위해 예약된 인스턴스 500개를 유지하는 것보다 목표를 더 잘 달성할 수 있습니다.

최소 웜 풀 크기

최소 크기 설정을 사용해 웜 풀에 유지할 최소 인스턴스 수를 정적으로 설정하는 것이 좋습니다. 기본적으로 설정된 최소 크기는 없습니다.

웜 풀 인스턴스 상태

웜 풀의 인스턴스를 Stopped, Running, Hibernated의 세 가지 상태 중 하나로 유지할 수 있습니다. Stopped 상태로 인스턴스를 유지하는 것이 비용을 최소화하는 효과적인 방법입니다. 중지된 인스턴스의 경우, 사용하는 볼륨과 인스턴스에 연결된 탄력적 IP 주소에 대해서만 요금을 지불합니다.

또는 인스턴스를 Hibernated 상태로 유지하여 메모리 콘텐츠(RAM)를 삭제하지 않고 인스턴스를 중지할 수 있습니다. 인스턴스가 최대 절전 모드로 전환되면 운영 체제에 RAM 콘텐츠를 Amazon EBS 루트 볼륨에 저장하라는 신호가 전달됩니다. 인스턴스를 다시 시작하면 루트 볼륨이 이전 상태로 복원되고 RAM의 콘텐츠가 다시 로드됩니다. 인스턴스가 최대 절전 모드에 있는 동안에는 RAM 콘텐츠용 스토리지를 포함한 EBS 볼륨과 인스턴스에 연결된 탄력적 IP 주소에 대해서만 요금을 지불하면 됩니다.

웜 풀 내에서 인스턴스를 Running 상태로 유지하는 것도 가능하지만 불필요한 요금이 발생하지 않도록 하는 것이 좋습니다. 인스턴스가 중지되거나 최대 절전 모드로 전환되면 인스턴스 자체의 비용이 절감됩니다. 인스턴스가 실행 중일 때만 해당 인스턴스에 대한 요금을 지불합니다.

수명 주기 후크

수명 주기 후크를 사용하여 인스턴스를 대기 상태에 놓음으로써 인스턴스에서 사용자 지정 작업을 수행할 수 있습니다. 사용자 지정 작업은 인스턴스가 시작될 때 또는 해지되기 전에 수행됩니다.

또한 웜 풀 구성에서 수명 주기 후크는 인스턴스의 초기화가 완료될 때까지 스케일 아웃 이벤트 중에 인스턴스가 중지 또는 동면되거나 서비스 상태가 되지 않도록 인스턴스를 지연시킬 수 있습니다. 수명 주기 후크 없이 Auto Scaling 그룹에 웜 풀을 추가하는 경우, 초기화를 완료하는 데 시간이 오래 걸리는 인스턴스는 준비가 되기 전에 스케일 아웃 이벤트 동안 중지되거나 최대 절전 모드로 전환된 다음 서비스 상태가 될 수 있습니다.

인스턴스 재사용 정책

기본적으로 Amazon EC2 Auto Scaling은 Auto Scaling 그룹이 축소되면 인스턴스를 해지합니다. 그런 다음 웜 풀로 새 인스턴스를 시작하여 해지된 인스턴스를 교체합니다.

그러지 않고 웜 풀로 인스턴스를 반환하려는 경우, 인스턴스 재사용 정책을 지정할 수 있습니다. 이렇게 하면 이미 애플리케이션 트래픽을 처리하도록 구성된 인스턴스를 재사용할 수 있습니다. 웜 풀이 과다 프로비저닝되지 않도록 Amazon EC2 Auto Scaling은 해당 설정을 기준으로 웜 풀이 필요 이상으로 큰 경우, 웜 풀의 인스턴스를 해지하여 그 크기를 줄일 수 있습니다. 웜 풀에서 인스턴스를 해지할 때 웜 풀은 기본 해지 정책을 사용하여 먼저 해지할 인스턴스를 선택합니다.

중요

축소 시 인스턴스를 최대 절전 모드로 전환하려는 경우, Auto Scaling 그룹에 기존 인스턴스가 있으면 인스턴스가 인스턴스 최대 절전 모드에 대한 요건을 충족해야 합니다. 그렇지 않으면 인스턴스가 웜 풀로 반환될 때 최대 절전 모드 대신 중지 상태로 전환됩니다.

참고

현재는 AWS CLI 또는 SDK만 사용하여 인스턴스 재사용 정책을 지정할 수 있습니다. 콘솔에서는 이 기능을 사용할 수 없습니다.

사전 조건

Auto Scaling 그룹에 대한 웜 풀을 만들기 전에 수명 주기 후크를 사용하여 새 인스턴스를 적절한 초기 상태로 초기화할 방법을 결정하세요.

수명 주기 후크로 인해 대기 상태에 있는 인스턴스에 대해 사용자 지정 작업을 수행하려면 다음 두 가지 옵션이 있습니다.

  • 시작 시 인스턴스에서 명령을 실행하는 간단한 시나리오의 경우, Auto Scaling 그룹에 대한 시작 템플릿 또는 시작 구성을 생성할 때 사용자 데이터 스크립트를 포함할 수 있습니다. 사용자 데이터 스크립트는 인스턴스를 시작할 때 cloud-init을 통해 실행되는 단순한 일반 셸 스크립트 또는 cloud-init 명령입니다. 이 스크립트는 스크립트가 실행되는 인스턴스의 ID를 사용하여 인스턴스가 다음 상태로 전환되는 시기를 제어할 수도 있습니다. 아직 없는 경우, 인스턴스 메타데이터에서 인스턴스의 인스턴스 ID를 검색하도록 스크립트를 업데이트합니다. 자세한 내용은 Amazon EC2 사용 설명서인스턴스 메타데이터 검색을 참조하세요.

    작은 정보

    인스턴스가 다시 시작될 때 사용자 데이터 스크립트를 실행하려면 사용자 데이터가 MIME 멀티 파트 형식이어야 하며 사용자 데이터의 #cloud-config 섹션에 다음과 같은 사항을 지정해야 합니다.

    #cloud-config cloud_final_modules: - [scripts-user, always]
  • 인스턴스가 웜 풀에 들어가거나 나갈 때 특정 작업을 수행하기 위해 AWS Lambda와 같은 서비스가 필요한 고급 시나리오의 경우, Auto Scaling 그룹에 대한 수명 주기 후크를 만들고 수명 주기 알림에 근거하여 사용자 지정 작업을 수행하도록 대상 서비스를 구성할 수 있습니다. 자세한 내용은 지원되는 알림 대상 섹션을 참조하세요.

인스턴스의 최대 절전 모드 준비

Hibernated 풀 상태를 사용하도록 Auto Scaling 인스턴스를 준비하려면 Amazon EC2 사용 설명서최대 절전 모드 사전 조건 주제에 설명된 대로 인스턴스 최대 절전 모드를 지원하도록 올바르게 설정된 새 시작 템플릿 또는 시작 구성을 생성합니다. 그런 다음 새 시작 템플릿 또는 시작 구성을 Auto Scaling 그룹과 연결하고 인스턴스 새로 고침을 시작하여 이전 시작 템플릿 또는 시작 구성과 연결된 인스턴스를 교체합니다. 자세한 내용은 인스턴스 새로 고침을 사용하여 Auto Scaling 그룹의 인스턴스 업데이트 섹션을 참조하세요.

웜 풀에서 인스턴스 업데이트

웜 풀의 인스턴스를 업데이트하려면 새 시작 템플릿 또는 시작 구성을 만들어 Auto Scaling 그룹에 연결하면 됩니다. 새 인스턴스는 시작 템플릿 또는 시작 구성에 지정된 새 AMI 및 기타 업데이트를 사용하여 시작되지만 기존 인스턴스는 영향을 받지 않습니다.

새 시작 템플릿 또는 시작 구성을 사용하는 교체 웜 풀 인스턴스가 강제로 시작되도록 하려면 인스턴스 새로 고침을 시작하여 그룹의 롤링 업데이트를 수행하면 됩니다. 인스턴스 새로 고침은 먼저 InService 인스턴스를 교체합니다. 그런 다음 웜 풀의 인스턴스를 교체합니다. 자세한 내용은 인스턴스 새로 고침을 사용하여 Auto Scaling 그룹의 인스턴스 업데이트 섹션을 참조하세요.

GitHub 리포지토리에서 웜 풀용 수명 주기 후크의 예를 확인할 수 있습니다.

제한 사항

  • 혼합 인스턴스 정책이 있는 Auto Scaling 그룹에는 웜 풀을 추가할 수 없습니다. 스팟 인스턴스를 요청하는 시작 템플릿 또는 시작 구성이 있는 Auto Scaling 그룹에도 웜 풀을 추가할 수 없습니다.

  • Amazon EC2 Auto Scaling은 루트 디바이스로 Amazon EBS 볼륨이 있는 경우에만 인스턴스를 Stopped 또는 Hibernated 상태로 전환할 수 있습니다. 루트 디바이스에 인스턴스 스토어를 사용하는 인스턴스는 중지하거나 최대 전절 모드로 전환할 수 없습니다.

  • Amazon EC2 Auto Scaling은 Amazon EC2 사용 설명서최대 절전 모드 사전 조건 주제에 열거된 요건을 충족하는 경우에만 인스턴스를 Hibernated 상태로 전환할 수 있습니다.

  • 스케일 아웃 이벤트가 있을 때 웜 풀이 고갈되면 인스턴스는 Auto Scaling 그룹으로 바로 시작됩니다(콜드 스타트). 또한 가용 영역의 용량이 부족할 경우, 콜드 스타트가 발생할 수도 있습니다.

  • 웜 풀 내의 인스턴스가 시작 프로세스 중에 문제가 발생하여 InService 상태에 도달하지 못하는 경우 해당 인스턴스는 시작 실패로 간주되고 종료됩니다. 이는 용량 부족 오류 또는 기타 요인과 같은 기본 원인과 관계없이 적용됩니다.

  • Amazon Elastic Kubernetes Service(Amazon EKS) 관리형 노드 그룹에서 웜 풀을 사용하려는 경우, 아직 초기화 중인 인스턴스가 Amazon EKS 클러스터에 등록될 수 있습니다. 따라서 클러스터가 중지 또는 최대 절전 모드를 준비할 때 인스턴스에 대한 작업을 예약하게 될 수 있습니다.

  • 마찬가지로 Amazon ECS 클러스터에서 웜 풀을 사용하려는 경우, 초기화가 완료되기 전에 인스턴스가 클러스터에 등록될 수 있습니다. 이 문제를 해결하려면 사용자 데이터에 특수 에이전트 구성 변수를 포함하는 시작 템플릿 또는 시작 구성을 구성해야 합니다. 자세한 설명은 Amazon Elastic Container Service 개발자 안내서Auto Scaling 그룹의 웜 풀 사용을 참조하세요.

  • 웜 풀에 대한 최대 절전 모드 지원은 다음을 제외하고 Amazon EC2 Auto Scaling 및 최대 절전 모드가 제공되는 모든 상용 AWS 리전에서 사용할 수 있습니다.

    • 아시아 태평양(하이데라바드)

    • 아시아 태평양(멜버른)

    • 캐나다 서부(캘거리)

    • 중국(베이징) 리전

    • 중국(닝샤) 리전

    • 유럽(스페인)

    • 이스라엘(텔아비브)