Category: Amazon EC2*


EC2 Spot Fleet API – 한번에 수천개의 스팟 인스턴스 관리하기

지난 9년간 Amazon Elastic Compute Cloud (EC2)의 서비스 진화를 살펴 보는 것은 매우 흥미롭습니다. 초기에는 단일 인스턴스 타입을 단일 리전에서 사전에 정해진 주문형 가격에서 시작하였습니다. 지금은 다양한 인스턴스 타입이 11개의 리전 (AWS GovCloud (US) 포함)에서 시작할 수 있으며, 예약 인스턴스 및 스팟 인스턴스(현재 9 지역)를 선택할 수 있습니다. 그동안 EC2에 많은 기능을 추가했고, Amazon EMR, AWS Elastic Beanstalk, Amazon WorkSpaces, Amazon EC2 Container Service, AWS Lambda 등 다른 서비스의 빌딩 블록으로 사용되고 있습니다.

신규 스팟 집합 API
오늘 스팟 인스턴스의 집합을 바로 시작하고 제어 할 수 있는 새로운 API를 추가하였으며, 이를 통해 더욱 쉽게 스팟 인스턴스를 사용할 수 있게 되었습니다. (스팟 집합은 분산 응용 프로그램에서 병렬로 작동하는 스팟 인스턴스의 집합입니다. 스팟 집합으로는 일괄 처리 작업 및 Hadoop 워크 플로우, HPC 그리드 컴퓨팅 작업을 할 수 있습니다.) 많은 AWS 고객은 가장 낮은 비용으로 다양한 업무 영역(분자 생물학 시뮬레이션 연구에서 지속적인 통합 환경에 이르기까지)을 수행하기 위해 여러 인스턴스 유형과 가용 영역에서 사용 가능한 컴퓨팅 용량을 찾고, 시장 가격을 모니터링하여 입찰 가격을 관리하는 자체 코드를 만들어 적게는 몇 백에서 몇 천의 인스턴스 그룹을 시작할 수 있습니다.

새로 공개한 API RequestSpotFleet를 통해 스팟 집합의 대상 용량 시간 당 입찰 가격 및 부팅 인스턴스 유형을 지정하기만 하면 인스턴스를 띄울 수 있습니다. 최저가의 용량을 찾아 스팟 집합의 목표 용량을 유지할 수 있습니다. 일단 API 호출에서 이러한 모든합니다.

API 요청 시작하기

한 리전에서 최대 1000개의 활성 스팟 집합을 가질 수 있습니다. 하나의 스팟 집합과 한 개의 리전에 대해 3000개의 인스턴스 제한이 있습니다 (일반 계정이나 리전마다 있는 EC2의 상한도 그대로 유효하므로, 부팅할 인스턴스 갯수나 만들 수 있는 Amazon Elastic Block Store (EBS) 볼륨 수에도 제한이 걸립니다).

API 및 CLI를 통해 각 요청은 다음 값을 지정 해야 합니다 :

  • 대상 용량 – 스팟 집합에 넣고 싶은 EC2 인스턴스 수 (지정하지 않으면 기본값은 1)
  • 최대 입찰가 – 지불하려고 최대 입찰가
  • 시작 설정 – 시작하려는 인스턴스 수와 인스턴스 유형 및 시작 설정 (AMI Id, VPC 서브넷과 가용영역, 보안 그룹, 블록 디바이스 매핑 사용자 데이터 등). 더 싸고 사용하기 위해서는 일반적으로 부팅 설정에서는 특정 서브넷이나 가용 영역을 지정하지 않습니다.
  • IAM 역할 이름 – EC2가 스스로 종료하기 위해 필요합니다.

각 요청은 다음의 옵션 값을 포함 할 수 있습니다.

  • 클라이언트 토큰 –호출을 식별하는 고유한 문자열 (대소 문자 구분). 스팟 집합 요청을 위한 멱등 보장을 위해 사용할 수 있습니다.
  • 유효 기간 시작 날짜 – 호출 시작 날짜 및 시간
  • 유효 기간 종료 날짜 – 호출 종료 시간
  • 유효 기간 종료시 종결 – TRUE를 지정하면 호출 종료 시간에 스팟 집합의 모든 인스턴스가 종료됩니다. FALSE(기본값)으로 스팟 인스턴스는 그대로 실행을 계속하지만, 새로운 인스턴스를 시작합니다.

RequestSpotFleet API가 성공적으로 호출 되면 스팟 집합 요청 ID를 반환하며, 요청이 이상한 경우는 오류를 반환합니다. 사용할 수 없는 인스턴스 유형을 요청한 경우에도 오류를 받게됩니다.스팟 집합 요청 ID를 사용하여 DescribeSpotFleetRequests, DescribeSpotFleetInstances, DescribeSpotFleetRequestHistory, CancelSpotFleetRequests 등 기타 스팟 집합 API를 호출 할 수 있습니다 (각 API는 명령 줄에서도 동일한 기능이 있습니다).

더 자세히 살펴 보기
일단 호출이 접수된 날짜가 정해지면 EC2 스팟 가격이 달라졌다 해도 요청한 용량을 유지하게 됩니다. 시작 설정에 따라 현재 현물 가격을 모니터링하기 시작합니다. 최저가로 용량을 확보하기 위해 상한에 들어가고 있으며 입찰 제한에 들어가고있는 경우 스팟 인스턴스 시작합니다. 스팟 가격이 상승하면 스팟 집합의 인스턴스는 종료됩니다, 그 시점에서 최저가의 시작 설정으로 교체됩니다.
이 설정은 요청이 만료 될 때까지 또는 취소 할 때까지 활성화됩니다. 스팟 집합의 인스턴스는 의도적으로 종결하지 않는 한 계속 실행됩니다. 앞서 언급 한 바와 같이, IAM 역할을 포함해야 합니다. 이를 통해 EC2는 자신을 종료할 수 있습니다.

고려해야 할 사항
다른 신규 AWS 기능과 마찬가지로 첫 번째 출시한 상태에서 해야 할 많은 기능을 계속해서 구현해 나갈 예정입니다. 예를 들어, 우리는 인스턴스 가중치 시스템을 추가할 계획을 가지고 있습니다. 이것은 각 부팅 설정의 상대적인 우선 순위를 수식으로 표현할 수 있도록 합니다. 대상 용량이라는 기능은 계산에 필요한 스팟 집합의 “마력”을 나타낼 수 단위를 표현합니다. 각 스팟 집합는 특정 AWS 지역에서 실행합니다. 장래 적으로는 두 개 이상의 지역에 걸쳐 스팟 집합을 지원할 예정입니다.

바로 이용 가능
오늘부터 공용 AWS 지역에서 스팟 집합 기능을 출시 할 수 있습니다. 스팟 집합의 기능은 무료로 시작한 EC2 인스턴스 현물 가격과 기타 이용한 자원에 대해서 지불합니다.

Jeff;

이 글은 Amazon EC2 Spot Fleet API – Manage Thousands of Spot Instances with one Request의 한국어 번역입니다.

C4 Instance 출시

지난해 말 컴퓨팅 최적화 EC2 인스턴스인 C4에 대해 블로그에 소개하고, 요금과 기술 정보는 추후에 소개해 드린다고 했는데, 오늘 7개 지역에서 드디어 c4 인스턴스를 출시하였습니다.

새 인스턴스 타입 C4
새로운 C4인스턴스는 Intel Xeon E5-2666 v3(코드 네임 Haswell)프로세서를 기반으로 하고 있습니다. EC2에 최적화된 맞춤 프로세서는 2.9GHz에서 동작하며 Intel(R Turbo Boost시에는 3.5GHz로 동작합니다(상세 사양 참조). 이들 인스턴스는 EC2에서 가장 높은 성능을 제공하도록 설계되어 있습니다.

인스턴스 이름 vCPU RAM 네트워크 성능 전용 EBS 처리량 Linux 요금
c4.large 2 3.75 GiB 중간 500 Mbps $0.116/1시간
c4.xlarge 4 7.5 GiB 중간 750 Mbps $0.232/1시간
c4.2xlarge 8 15 GiB 높음 1,000 Mbps $0.464/1시간
c4.4xlarge 16 30 GiB 높음 2,000 Mbps $0.928/1시간
c4.8xlarge 36 60 GiB 10 Gbps 4,000 Mbps $1.856/1시간

가격은 미국 동부(북 버지니아)와 미국 서부(오리건)지역이나, 유럽(아일랜드), 아시아 퍼시픽(도쿄), 미국 서부(북 캘리포니아), 아시아 퍼시픽(싱가포르), 아시아 퍼시픽(시드니)로도 이용 가능합니다. 가격에 대한 자세한 내용은 EC2 요금 페이지를 참고하세요.

모든 C4 인스턴스에는 EBS 최적화가 기본적으로 동작합니다. 이 기능에 의해 통상적인 네트워크 처리량(Throughput)과 별도로 500Mbps부터 4000Mbps의 EBS의 전용 산출량을 추가 요금 없이 이용 가능합니다. C3 인스턴스와 마찬가지로 C4인스턴스는 보다 높은 패킷 매초(PPS), 낮은 네트워크 지터 및 지연을 제공하기 위해 확장 네트워킹도 이용할 수 있습니다. 2대 이상의 C2 인스턴스를 Placement Group내에서 기동함으로써 그룹 내 낮은 네트워크 지연을 실현할 수 있습니다.

c4.8xlarge에 대해
EC2는 Web API을 거쳐 쉽게 관리할 수 있는 컴퓨팅 및 네트워크와 블록 스토리지와 같은 자원을 안전하게 제공하기 위해 가상화 기술을 사용하고 있습니다. C4와 같은 고성능 컴퓨팅 최적화 인스턴스에서는 그 아래층에 있는 하드웨어의 성능을 최대한 끌어내고, 낮은 네트워크 지터를 통한 가상화 I/O을 제공하는 것을 목표로 보다 효율적인 시스템이 되도록 c4.8xlarge 인스턴스 타입에는 4개의 vCPU을 추가할 수 있습니다.(어떤 운영 체계에서는 32 vCPU의 상한선이 있고, c4.8xlarge에 대응이 안될 가능성이 있습니다. 자세한 사항은 대응 운영 체제 정보를 참조해 주십시오)

이전의 Intel 프로세서와 마찬가지로 C4의 Intel Xeon E5-2666 v3 역시 Turbo Boost를 지원합니다. 이 기술 설계는 전력 소비와 열 발생의 제한 내에서 프로세서가 정격 주파수(2.9GHz)보다 고속으로 동작하는 기능입니다. 그 효과는 사용 중인 코어 수와 워크 로드에 의존하지만, 이상적인 상황에서는 3.5GHz까지 클럭 속도를 향상 시킬 수 있습니다. 일반적으로 적은 코어를 사용하는 워크 로드는 이 속도에 의한 효과를 얻기 쉽습니다. Turbo Boost는 기본적으로 효과적으로 여러분의 애플리케이션의 변경하지 않고 효과를 얻을 수 있습니다.

이는 Haswell 마이크로 아키텍처의 실제 구성입니다. (이 사진은 C4인스턴스에 사용되는 프로세서에 비슷하지만 동일하지 않습니다). 중앙에 캐쉬가 있고 그 아래위에 CPU코어가 있습니다:

Haswell-die

만약 당워크 로드가 이들 모든 코어를 사용할 경우 2.9GHz의 성능을 이용할 수 있고 나아가 설계된 발열과 소비 전력의 상한을 넘지 않는 범위에서 클럭 속도를 올리는 것이 가능한 경우 언제든지 Turbo Boost의 혜택을 얻을 수 있습니다.

워크 로드가 18코어 모두를 필요로 하지 않는 경우도 있을 것으로 생각합니다(각 코어는 2쓰레드를 지원합니다). 이러한 어플리케이션을 보다 좋은 성능에 보여 주기 위해 스레드 단위로 소비 전력을 관리하는 것이 가능합니다. 이를 C-State 관리라고 합니다. 앱 코드가 2코어 밖에 쓰지 않았다면, 그 외 16코어의 상태를 높은 전력 절약 차원으로 여유가 생겨 나머지의 코어에 대해 Turbo Boost의 기회가 늘어납니다. 또한, 원하는 성능(CPU 클럭 주파수)을 제어할 수도 있고 이쪽은 P-state 관리로서 알려져 있습니다. C-State 관리 기능을 사용하려면, 코어가 활성화 되기까지 시간을 고려할 필요가 있습니다.(높은 Sleep 수준은 낮은 전력 소비지만 활성화 될 때까지 시간을 요합니다). P-State 관리를 사용하려면, CPU 주파수가 바뀌도록 애플리케이션에 대응해 둘 필요가 있습니다. C-State와 P-State 관리는 운영 체제에 도움이 필요하다 현 시점에서는 Linux의 대응하고 있는 점에 주의하세요.

프로세서의 주파수와 C-state의 정보를 표시하려면 turbostat 명령을 이용할 수 있습니다.(Amazon Linux AMI에서 이용 가능합니다)

C-State와 P-State에 대해서는 Jeremy Eder의 글 processor.max_cstate, intelidle.max_cstate and /dev/cpu_dma_latency나 Dell의 테크니컬 화이트 페이퍼 Controlling Processor C-State Usage in LinuxAre hardware power management features causing latency spikes in my application?를 참고하시기 바랍니다.

Intel(R) Xeon(R) Processor(E5-2666 v3)의 상세
Intel Haswell 마이크로 아키텍처는 예전보다 현저히 개선되고 있습니다. 브랜치 예측 및 데이터 페칭에 효율적으로 되어 있습니다. 병렬로 복수의 명령을 실행할 기회를 활용하기 쉽게 되었고, 정수 연산과 분기 성능을 개선합니다. 이 새로운 프로세서는 인텔 Advanced Vector Extensions 2를 채용하고 있습니다. AVX2는 256비트의 정수 벡터를 지원하며 1사이클당 32개의 단일 정밀도 부동 소수 점 또는 16개의 배정 밀도 부동 소수 점을 연산할 수 있습니다. AVX2는 비트 필드의 패킹, 가변 비트 스트림의 디코딩, 비트 수집 및 임의 밀도 연산, 엔디안 변환, 해시, 암호 처리 등도 지원합니다. 마이크로 아키텍처 개선은 기존 애플리케이션의 성능도 30%이상 개선할 수 있습니다. 이들 새 기능을 활용하려면 새 명령을 사용하는 코드를 생성할 수 있는 Tool Chain을 쓰면 됩니다. Intel Developer Zone의 글 Write your First Program with Haswell new Instructions도 참조해 주십시오.

C4인스턴스는 오늘부터 이용할 수 있습니다.
처음 알려드렸듯이 새로운 C4인스턴스는 오늘 부터 7개 이용 가능합니다(기타 지역도 향후 이용 가능하게 됩니다). 온디멘드 인스턴스로 실행하거나 예약 인스턴스로 접속도 가능합니다. 또 지원 지역에서 C4인스턴스에서 AWS Marketplace를 사용할 수 있습니다.

만약 C4인스턴스 타입에 대한 피드백은 ec2-c4-feedback@amazon.com으로 연락 부탁드립니다.

– Jeff;

본 글은 Now Available – New C4 Instances의 한국어 번역입니다.

EC2 Container Service 따라하기

지난 AWS re:Invent 에서 Amazon EC2 Container Service(ECS) ‘미리 보기’를 처음 소개하면서 다양한 고객의 소리를 들었습니다. ‘미리 보기’ 신청에 많은 분들이 요청해 주신 점도 감사드립니다.  지금까지 ‘미리 보기’ 신청을 준 모든 고객 분들이 사용하실 수 있으며, 신규 신청에 경우도 24시간내에 사용 가능하십니다.

ECS는 Docker기반의 애플리케이션 빌드 및 실행 및 확장성(Scaling)을 돕기 위한 서비스입니다. 간단한 클러스터 관리 및 높은 성능과 유연한 스케줄링, 확장성 및 이동성 그리고 AWS외 서비스 기능과 원활한 통합을 할 수 있습니다.  기존 AWS에서 실행 환경 처럼  안전하고 효율적입니다.

ECS의 기본 사항
먼저 ECS의 용어와 기본 컨셉에 대해 알아보도록 하겠습니다.

  • Cluster -Task를 실행하기 위한 Container Instance의 논리적 그룹입니다
  • Container Instance -ECS가 가동되고 있는 EC2 인스턴스 즉, Cluster에 등록된 것입니다. Cluster내에서 움직이고 있는 인스턴스 집합은 Task를 실행하기 위한 리소스 풀(Resource Pool)을 만듭니다.
  • Task Definition– Task Definition은 Container 모음을 정합니다. 여기에는 Task Description이 포함되며, 한 개 이상의 Container를 정의합니다. 어떤 Task Definition에서 정의된 모든 Container는 동일한 Container Instance에서 가동합니다.
  • Task -Task Definition를 인스턴스화 합니다.
  • Container -Task의 일부로 생성된 Docker 컨테이너입니다.

ECS Container Agent는 Container 인스턴스에서 움직이는 에이전트입니다.  Container를 시작하는 역할 및 에이전트 자신도 Docker 컨테이너에서 실행 되며(Docker Hub에서 이용 가능), 인스턴스 내에 있는 Docker 데몬과 통신을 합니다.

우리가 클러스터 및 컨테이너 서비스를 언급할 때, “스케줄링”은 인스턴스에 작업을 할당하는 과정입니다. ECS는 다음의 3가지 스케줄링 옵션을 제공합니다.

  1. 자동(Automated)RunTask 함수는 Cluster에서 Task(Task Definition에서 정의)을 자동으로 진행합니다.
  2. 매뉴얼(Manual)StartTask 함수는 특정 Container Instance(또는 인스턴스)에서 Task(Task Definition에서 정의)을 진행합니다.
  3. 맞춤(Custom)ListContainerInstancesDescribeContainerInstances을  사용하면 Cluster내의 이용 가능한 자원의 정보를 수집할 수 있고, 스케줄링의 핵심을 구현하는 것입니다. (다시 말해 최적의 Container Instance를 뽑기 위한  정보로 할용 가능합니다.) 그 이후 StartTask를 실행하고 인스턴스에서 작업을 실행합니다. 이를 실행하는 것은 자체 RunTask 구현하는 것과 같은 의미가 됩니다.

EC2 Container Service 직접 해보기
ECS를 실제로 테스트해 보기 위해 미리 보기 등록을 하신 후, AWS CLI의 프리뷰 버전을 다운로드 후 설치합니다. 그 다음, IAM Role와 VPC를 작성해 클러스터를 만들기 위한 준비를 합니다. (ECS는 현재 US East 지역에서만 가능하나 점차로 지원 리전을 확대할 예정입니다.). 아래 명령어를 실행해 MyCluster라는 이름의 Cluster를 작성해 봅시다.

$ aws ecs create-cluster --cluster-name MyCluster --profile jbarr-cli

아래는 JSON 형식으로 신규 생성한 Clouster 정보입니다.

{
    "cluster": {
        "clusterName": "MyCluster", 
        "status": "ACTIVE", 
        "clusterArn": "arn:aws:ecs:us-east-1:348414629041:cluster/MyCluster"
    }
}

다음 단계로  ECS용 AMI(Amazon Linux AMI ECS용 미리보기 버전)를 이용하여,  자신의 VPC 중에 여러개의 EC2인스턴스를 만듭니다. EC2를 만들때, ECS용으로 만든 IAM Role(ecs라는 이름)를 선택합니다.

EC2 사용자 데이터 설정에서 자신의 Cluster(MyCluster)내에서 실행하도록 ECS 설정을 적습니다.(default클러스터 경우, 필요 없음)

인스턴스가 시작된 이후 자신의 Cluster에 포함되었는지 list-container-instances 명령으로 확인할 수 있습니다. 등록된 Container Instance은 각자 ARN가 할당됩니다.

$ aws ecs list-container-instances --cluster MyCluster --profile jbarr-cli
{
    "containerInstanceArns": [
        "arn:aws:ecs:us-east-1:348414629041:container-instance/4cf62484-da62-49a5-ad32-2015286a6d39", 
        "arn:aws:ecs:us-east-1:348414629041:container-instance/be672053-0ff8-4478-b136-7fae9225e493"
    ]
}

Cluster내 인스턴스를 선택한 후, 이용 가능한 CPU와 메모리 자원에 대해 질의를 실행하고 찾아낼 수 있습니다.

$ aws ecs describe-container-instances --cluster MyCluster \
  --container-instances arn:aws:ecs:us-east-1:348414629041:container-instance/4cf62484-da62-49a5-ad32-2015286a6d39 \
  --profile jbarr-cli

아래가 결과 데이터 샘플입니다.

{
            "registeredResources": [
                {
                    "integerValue": 1024, 
                    "longValue": 0, 
                    "type": "INTEGER", 
                    "name": "CPU", 
                    "doubleValue": 0.0
                }, 
                {
                    "integerValue": 3768, 
                    "longValue": 0, 
                    "type": "INTEGER", 
                    "name": "MEMORY", 
                    "doubleValue": 0.0
                }
            ]
}

ECS의 미리보기 개발자 가이드에 따라 아래와 같이 간단한 Task Definition을 작성하고 등록해 보겠습니다.

$ aws ecs register-task-definition --family sleep360 \
  --container-definitions file://$HOME/tmp/task.json \
  --profile jbarr-cli

그리고 10개를 실행해 보도록 하죠.

aws ecs run-task --cluster MyCluster --task-definition sleep360:1 --count 10 --profile jbarr-cli

실행 중인 작업은 다음과 같이 list-tasks 명령으로 볼 수 있습니다.

$ aws ecs list-tasks --cluster MyCluster --profile jbarr-cli

아래와 같이 실행 중인 컨테이너 목록이 반환됩니다.

{
    "taskArns": [
        "arn:aws:ecs:us-east-1:348414629041:task/0c949733-862c-4979-b5bd-d4f8b474c58e", 
        "arn:aws:ecs:us-east-1:348414629041:task/3ababde9-08dc-4fc9-b005-be5723d1d495", 
        "arn:aws:ecs:us-east-1:348414629041:task/602e13d2-681e-4c87-a1d9-74c139f7335e", 
        "arn:aws:ecs:us-east-1:348414629041:task/6d072f42-75da-4a84-8b68-4841fdfe600d", 
        "arn:aws:ecs:us-east-1:348414629041:task/6da6c947-8071-4111-9d31-b87b8b93cc53", 
        "arn:aws:ecs:us-east-1:348414629041:task/6ec9828a-cbfb-4a39-b491-7b7705113ad2", 
        "arn:aws:ecs:us-east-1:348414629041:task/87e29ab2-34be-4495-988b-c93ac1f8b77c", 
        "arn:aws:ecs:us-east-1:348414629041:task/ad4fc3cc-7e80-4681-b858-68ff46716fe5", 
        "arn:aws:ecs:us-east-1:348414629041:task/cdd221ea-837c-4108-9577-2e4f53376c12", 
        "arn:aws:ecs:us-east-1:348414629041:task/eab79263-087f-43d3-ae4c-1a89678c7101"
    ]
}

여기까지 작업을 실행하고 인스턴스를 정지시킨후 정리해 보겠습니다. 직접 실행해 본 결과, 다음의 세가지 점만 약간의 Tips으로 적어봅니다.

  1. VPC가 외부 연결이 있는지 확인해 두세요
  2. ECS가 이용 가능한 적절한 AMI을 사용하세요(미리 보기 단계)
  3. IAM Role이 필요하므로, AMI을 띄울 때 설정해 주세요

ECS 빠른 실행 템플릿
빠르게 ECS를 실행해 볼 수 있도록 CloudFormation을 사용한 ECS 실행 템플릿을 활용해 보세요. 이 템플릿은 IAM Role과 그 역할을 위한 Instance Profile을 생성합니다. 이 역할은 ECS 에이전트가 ECS와 커뮤니케이션을 할 수 있도록 허용하기 위한 것입니다. 템플릿에서는 이 Role을 통해 인스턴스를 시작하고, 그 결과 인스턴스에 접근할 수 있는 SSH 명령을 생성해서 돌려줍니다. 기존 클러스터로 인스턴스를 시작 및 등록하는 것도 가능하며, “default”라는 이름의 기본 클러스터를 이용하기도 합니다. 이 템플릿을 사용한 경우, 인스턴스는 Default VPC을 사용하게 됩니다.

지금 시작 하기
ECS를 하기 위해서는 먼저 미리 보기 등록을 하시기 바랍니다. 즉시 이용 가능합니다.

ECS에 대해 더욱 알고 싶은 경우, re:Invent의 다음 세션을 보시면 좋습니다. 대략 30분 정도 됩니다(주의하실 점은 현재 ECS 기능이 크게 변해있을 수 있으므로, 참고만 하시면 좋겠습니다.)

또한, 내년 Amazon EC2 Container Service Deep Dive(2015 년 1월 14일 미국 시간)라는 웨비나를 진행합니다. 이번 웨비나에서는 ECS 선임 매니저인 Deepak Singh가 왜 우리가 ECS을 만들었는가, 핵심 개념 및 고객 애플리케이션에서 ECS를 어떻게 사용하면 좋은지 등을 발표합니다..

또 한 가지는 CoreOS라는 현대적인 인프라 구조의 요구 사항을 만족하도록 설계한 운영 체제를 기반으로 CoreOS AMI의 ECS 지원이 가능해졌습니다! 자세한 것은 Amazon ECS on CoreOS를 참고하십시오.

마지막으로 AWS는 우리는 항상 고객 피드백을 받고 있습니다. ECS는 아직 미리보기 모드이므로 고객의 요구나 요청을 듣고 새로운 기능을 개선할 수 있습니다. 피드백은 ECS 포럼에 해 주시기 바랍니다.

– Jeff;

본 글은 EC2 Container Service In Action의 한국어 번역입니다.

AWS 데이터 전송 비용 가격 인하

AWS 중 데이터 송수신 비용에 대해 가격 인하 소식을 알려 드립니다. 아래 가격 정책은 2014년 12월 1일부터 적용됩니다.:

  • 인터넷 데이터 전송(Out)– AWS로부터 인터넷으로 데이터를 보내는 전송 가격을 이번 6~43% 인하합니다.(월별 총 데이터 전송량에 따라 다름)
  • CloudFront에 대한 데이터 전송– AWS에서 Amazon CloudFront에 대한 데이터 전송이 무료로 변경되었습니다.
  • CloudFront 엣지 데이터 전송– 미국, 유럽, 일본 호주에 있는 CloudFront 엣지에서 데이터 전송 가격을 4~29%로 인하합니다(엣지 위치와 지역에 따라 다름)

데이터 전송 가격 인하

아래 사항은 데이터 전송 가격 인하에 대한 개요입니다. 자세한 내용은 EC2 요금 페이지S3 요금 페이지를 살펴 보시기 바랍니다.

요금 조건 미국 서부
(오리건, 북캘리포니아)
유럽
(아일랜드, 프랑크푸르트)
아시아 퍼시픽
(싱가포르)
아시아 퍼시픽
(도쿄)
아시아 퍼시픽
(시드니)
10TB까지/월 -25% -25% -37% -30% -26%
이후 40TB/월 -6% -6% -43% -15% -21%
이후 100TB/월 -37% -5% -13%
이후 350TB/월 -33% -6% -14%

“10TB까지/월”요금은 AWS 무료 이용 한도의 데이터 전송이 끝난 후에 적용됩니다.

CloudFront 데이터 전송 가격 인하

CloudFront 인터넷 데이터 전송 가격에 대한 개요입니다. 자세한 것은 CloudFront의 요금 페이지를 살펴 보시기 바랍니다.

요금 조건 미국 유럽 홍콩, 필리핀
한국, 싱가포르, 대만
일본 호주
초기 10TB/월 -29% -29% -26% -26% -26%
이후 40TB/월 -4% -4% -4%

이들 요금은 AWS 무료 이용 한도 데이터 전송 사용 후에 적용됩니다.

예전 부터 추진하고 있는대로 계속적으로 가격을 인하하는데 초점을 맞추어 고객이 비용을 절약할 수 있도록 노력하겠습니다.

–Jeff

이 글은 AWS Data Transfer Price Reduction의 한국어 번역입니다.

EC2 예약 인스턴스(RI) 가격 모델 단순화

EC2의 예약 인스턴스(Reserved Instance)는 몇 가지 장점이 있습니다. 하나는 가용 인스턴스량을 보증하고, 사전 요금(Upfront)을 내셔야 시간당 요금이 내려가는 것입니다. 2009년에 예약 인스턴스 모델 출시를 하였지만, 고객들이 RI를 구입하여 사용하는 패턴과 피드백을 종합 분석해서 가격 모델을 아래와 같이 단순화하기로 결정하였습니다.

새 예약 인스턴스 모델
RI의 종류는 한 가지지만, 지불 방법은 3가지입니다. 새 RI 모델은 가용성을 보장하면서도 시간당 가격도 할인됩니다. 예를 들어, 3년 RI의 경우 63%정도로 온 디멘드 인스턴스에 비해 더 저렴해집니다.

세 가지 지불 방법 중에서 결정할 수 있습니다. 할인율이 큰 순서로 정리했습니다.

  • All Upfront(모두 선불)- 3년 또는 1년 RI의 기간 이용 금액을 모두 일괄로 사전에 지불합니다. 가장 저렴합니다.
  • Partial Upfront(일부 선불)-이용액의 일부를 사전에 지불하고 3년 또는 1년 RI의 기간 동안 매월 지불하는 옵션입니다. All Upfront와 No Upfront의 중간 할인율입니다.
  • No Upfront(선불 없음)- 사전 요금은 없습니다. 다만, RI의 기간 동안 지불 계약을 하며 할인율은 온 디멘드에 비해 30%가량 싸집니다. 이 옵션의 기간은 1년간 뿐입니다.

자세한 사항
새로운 변경 모델에 대해 Reserved Instance FAQAWS Support에 문의해 주십시오.

– Jeff;

본 글은 Simplifying the EC2 Reserved Instance Model의 한국어 번역입니다.

AWS IP 대역 JSON 형식으로 공개

여러 고객들로부터 AWS가 사용하는 IP 주소 범위에 대한 문의를 받는 경우가 많습니다. 고객마다 그 정보의 활용 사례는 다르지만 방화벽이나 네트워크의 접근 제어 목록 등이 대표적입니다. 지금까지는 EC2, S3, SNS, CloudFront 등의 포럼에서 사람들에게 각자 제공하기도 했습니다.

JSON 형식의 IP주소 범위 공개
JSON형식으로 범위 정보를 https://ip-ranges.amazonaws.com/ip-ranges.json에서 제공합니다. 이 데이터 API에는 공식적으로 제공하는 것으로 자주 변경될 수 있으며 그래서 정기적으로 확인할 필요가 있습니다.

일부 예제 코드는 아래와 같습니다.

{
  "syncToken": "1416523628",
  "createDate": "2014-11-20-22-51-01",
  "prefixes": [
    {
      "ip_prefix": "50.19.0.0/16",
      "region": "us-east-1",
      "service": "AMAZON"
    },
    {
      "ip_prefix": "54.239.98.0/24",
      "region": "us-east-1",
      "service": "AMAZON"
    },

“Service”키에 포함되는 값은 “AMAZON”, “EC2”, “ROUTE53”, “ROUTE53_HEALTHCHECKS”, “CLOUDFRONT” 등으로서 어떤 서비스까지 세부적으로 알 필요가 없다면, “AMAZON”를 참조해 주세요. 다른 항목은 그 하부 데이터가 되며, S3 등 몇가지 서비스는 “AMAZON”에 포함돼어 있지 않으며, 이 값은 차례차례 추가될 예정입니다.

더 자세한 정보는 AWS IP Address Ranges을 참고하시기 바랍니다.

– Jeff;

본 글은 AWS Public IP Address Ranges Now Available in JSON Form의 한국어 번역본입니다.

Re:Invent 2014 – 고성능 컴퓨팅 작업을 C4 인스턴스

최근 클라우드상에서 실행하고 있는 수치 계산 등 컴퓨팅 처리에 수반하는 워크로드는 계속해서 증가하고 있습니다. 예를 들어 상위 랭킹 웹 사이트 호스팅, 온라인 게임, 시뮬레이션, 리스크 분석이나 레이아웃 등은 매우 많은 CPU 자원을 소비하고 있으며, 이는 대개 경우 멀티 코어 프로세서에 의한 병렬 처리 혜택을 받을 수 있습니다.

새로운 C4인스턴스 타입
이번에 새로 고성능 컴퓨팅에 최적화된 최신 세대의 Amazon Elastic Compute Cloud(EC2)인스턴스 공개를 알려드립니다.

이 새로운 C4인스턴스는 Intel Xeon E5-2666 v3(Haswell)프로세서를 기반으로 2.9GHz의 기본 클럭으로 동작하며 터보 사용시 기존 클럭 속도 보다 높은 3.5 GHz까지 올라갑니다. 이들 인스턴스는 EC2에서 가장 탁월한 계산 능력을 발휘하도록 설계되어 있습니다. 만약 워크 로드가 높은 작업을 가지고 있다면, 이 인스턴스의 이용하시길 추천 드립니다!아래 인스턴스의 라인 업 정보이며, 이들 스펙은 잠정 버전으로 출시 때는 약간 변경 가능성이 있습니다.

모델 vCPU 메모리 네트워크 성능
c4.large 2 3.75 GiB
c4.xlarge 4 7.5 GiB
c4.2xlarge 8 15 GiB 높음
c4.4xlarge 16 30 GiB 높음
c4.8xlarge 36 60 GiB 10기가 비트

이들 인스턴스는 올해 초에 발표한 SSD기반의 Elastic Block Store(EBS)와 함께 사용하면, 최적화 가능하며 모든 인스턴스 크기로 기본적으로에서 설정되어 있고 이에 대해서는 추가 비용 없이 이용 할 수 있습니다.

신규 C4인스턴스는 확장 네트워킹을 이용해 현저히 높은 패킷/초(PPS)성능 및 낮은 네트워크 레이턴시를 제공합니다.

다른 인스턴스와 마찬가지로 CPU의 최고의 퍼포먼스를 끌어내기 위해 C4인스턴스는 하드웨어 가상화(HVM)을 이용하거나 Virtual Private Cloud(VPC)내에서 동작합니다. c4.8xlarge는 P-state와 C-state컨트롤을 사용한 최상의 프로세서의 퍼포먼스와 전원 관리를 제공하고 있습니다. 또한, 36-core vCPU에서 멋진 성능을 제공합니다.

앞으로 추가되는 업데이트 소식을 기대해 주시기 바랍니다.

– Jeff;

본 글은 Now Available – New C4 Instances의 한국어 번역입니다.

저가 T2 인스턴스 출시 – 급격한 트래픽 처리 가능

저의 자동차는 최대 시속 240km까지 속도를 낼 수 있지만 항상 그런 속도로 운전하는 것은 아닙니다. 그러나, 아우토반과 같이 장소에 따라서는 그런 옵션이 있는 것이 좋을 수도 있습니다. 그러나 대부분 경우, 사용 가능한 성능의 일부만 사용 가능합니다.

대부분 컴퓨팅 워크 로드도 이와 비슷한 패턴을 따릅니다. 즉, 평소에는 컴퓨터 파워를 그다지 필요로 하지 않지만 가끔 넉넉하게 컴퓨터 리소스가 필요할 때가 있습니다. 예를 들어, 원격 데스크톱 개발 환경(빌드 서버 포함)이나 트래픽이 적은 웹 사이트와 데이터베이스 서비스를 하는 경우 등이 여기에 해당됩니다.

이러한 경우, 대부분 모든 CPU 코어를 소비할 수 있는 업무를 계속 하면 서버가 중단되게 됩니다. 또한, 이러한 워크로드는 비용을 중시하는 경향도 있습니다. 수백 대, 수천 대의 원격 데스크톱을 배포하거나 환경을 구축하는 기업의 경우 각 배치의 비용을 절감함으로써 전체 비용을 맞추고 있습니다. 트래픽이 적은 웹 사이트 및 테스트 환경에서도 경비를 절감할 수 있으면, 글로벌 환경에서 잠재적인 수익성에 큰 영향을 미칠 수 있습니다.

새로운 T2 인스턴스
오늘 Amazon EC2의 새로운 T2 인스턴스를 출시했습니다. T2 인스턴스는 CPU를 갑자기 써야 하는 환경에서도 이점을 얻을 수 있고, 실행하는 응용 프로그램의 비용을 획기적으로 줄일 수 있습니다. 이 인스턴스는 세 가지 크기 (micro, small, medium)를 사용할 수 있으며, 온 디멘드 요금에서 시간당 $0.013 (매달 $9.50)에서 이용하실 수 있습니다. 두개의 t2.micro 인스턴스 (하나는 Linux에서 다른 하나는 Windows)를 AWS 무료 이용 범위를 통해 무료 사용이 가능합니다.

T2의 인스턴스는 더 많은 컴퓨팅 파워를 필요로 할 때 자동으로 최대 코어까지 확장하는 기능이 결합되어 처리 능력을 보증 하는 프로세서 배분 모델로 구축되어 있습니다. 작은 크기와 비용의 인스턴스를 배포하면서도 CPU의 피크 수요를 처리하기 위한 적절한 컴퓨팅 파워를 가질 수 있습니다.

고객의 워크 로드가 이러한 범주에 해당하는 경우, T2 인스턴스는 매력적인 가격에 필요한 충분한 성능을 제공합니다. CPU 및 메모리 요구 사항에 따라 적절한 크기를 선택하면, 나머지는 T2 인스턴스에서 문제 없이 처리 가능합니다. 많은 응용 프로그램은 기본 성능을 필요하지 않으므로 응용 프로그램이 갑자기 높은 성능을 필요로 할 때, 쓸 수 있는 CPU 크레딧을 계속 충전합니다. 물론 자세한 정보도 이용 가능하므로 그 정보를 바탕으로 필요에 가장 적합한 인스턴스의 종류와 크기를 결정할 수 있습니다.

결론: T2 인스턴스의 등장으로 보다 저렴한 방법으로 작게 시작하고 컴퓨팅 파워에 대한 끊임없이 변화하는 수요에 대응하여, 모든 AWS 서비스를 최대한 활용할 수 있습니다.

스펙은 다음과 같습니다. (요금은 미국 동부 (버지니아 북부)의 온 디맨드 인스턴스입니다.) :

이름 vCPUs 기본 성능 RAM (GiB) 시간당 CPU 크레딧 시간당 요금 요금/월간
t2.micro 1 10 % 1.0 6 $ 0.013 $ 9.50
t2.small 1 20 % 2.0 12 $ 0.026 $ 19.00
t2.medium 2 40 % 4.0 24 $ 0.052 $ 38.00

‘기본 성능’은 인스턴스에 할당된 실제 CPU 싱글 코어 성능 비율을 나타냅니다. 예를 들어, t2.small 인스턴스는 2.5 GHz (터보 모드에서 최대 3.3GHz)의 Intel Xeon 프로세서의 싱글 코어의 20%를 사용할 수 있습니다. t2.medium 는 싱글 코어 성능의 40%를 사용할 수 있습니다. 수요에 따라 두 코어를 사용할 수 있습니다.

‘시간당 CPU 크레딧’은 T2 인스턴스가 한 시간 마다 받는 CPU 크레딧 비율을 보여줍니다. CPU 크레딧은 인스턴스가 CPU를 많이 사용하지 않는 경우 모아지며, 인스턴스가 활성 상태 일 때 소비됩니다. 사용하지 않는 CPU 크레딧은 최대 24시간 저장됩니다.

CPU 크레딧
위의 표와 같이 각 T2 인스턴스는 인스턴스의 크기에 의해 결정되는 비율로 CPU 크레딧을 받습니다. 하나의 크레딧(1 Credit)은 1CPU의 분당 전체 CPU 코어의 성능을 제공합니다.

예를 들어, t2.micro 인스턴스는 1시간마다 6 CPU 크레딧을 지속적으로 받습니다. 이 기능은 CPU 코어의 10%에 해당하는 기준 성능을 제공합니다. 부여 받은 크레딧이 필요하지 않는 경우에는 최대 24 시간까지 CPU 크레딧 잔량에 저장됩니다. 인스턴스가 기본 CPU를 10시간 사용하지 않으면 t2.micro 인스턴스는 거의 1시간 전체 코어 성능을 수행 할 수 있는 충분한 크레딧을 저장할 수 있습니다. (10시간 x 6CPU 크레딧/시간 = 60 CPU 크레딧)

각 리전에서 시간대 별로 업무의 시작과 끝에 CPU 파워를 더 필요로 하는 비즈니스 프로세스가 있다고 가정하면, 이 과정을 T2 인스턴스에 배치하여 기존에 축적 된 CPU 크레딧을 사용하여 신속하고 비용 효율적으로 컴퓨팅 부하를 처리 할 수​​ 있습니다.

다른 예로서 외부 뉴스 기사 링크를 통한 갑작스런 트래픽 유입 등의 영향으로 때때로 예측할 수 없는 트래픽 초과가 일어나는 동적 웹 사이트를 생각해 봅시다. T2 인스턴스에서 이러한 사이트를 호스팅하여 이러한 갑작스런 트래픽을 처리할 수 있는 효과적인 솔루션입니다.

인스턴스가 CPU 크레딧을 모두 사용하게 되면 성능은 서서히 기준 레벨로 돌아갑니다. 이러한 전환 과정은 사용자에게 서서히 좋은 경험을 제공하기 위해 15분 동안 진행됩니다.

크레딧을 사용하지 않는 경우, 기본적으로 저장되는 내용의 하루 분 정도를 모으게 됩니다.:

  • t2.micro – 144 – (6 CPU 분 / 시간 * 24 시간)
  • t2.small – 288 (12 CPU 분 / 시간 * 24 시간)
  • t2.medium – 576 (24 CPU 분 / 시간 * 24 시간)

인스턴스가 이 수준에 도달하면 더 이상 크레딧을 모으지 않습니다. 일반적으로 T2 인스턴스에 적합한 워크로드는 보통 크기의 크레딧을 유지합니다. 계속 크레딧이 쌓여있다면, 더 작은 인스턴스 크기로 옮겨서 비용 절감을 고려하는 것이 좋습니다.

갑작스런 트래픽 또는 필요에 따라 한 번에 모아진 크레딧을 소비할 수 있습니다. 그러나, 인스턴스를 stop/start하거나 예기치 않게 terminate 되는 경우 크레딧이 손실될 수 있습니다. 인스턴스 별로 리포트 되는 2개의 새로운 CloudWatch 메트릭을 살펴보면, 크레딧 축적 여부 및 지불 여부를 추적 할 수 있습니다.:

  • CPUCreditUsage – 시간에 따른 크레딧 지불 추적
  • CPUCreditBalance – 시간에 따른 크레딧 저장 추적

새로 출시된 인스턴스는 전체 코어 속도로 시작할 수 있도록 초기 CPU 크레딧이 할당됩니다. 이 초기 크레딧은 새로운 SSD 기반의 Elastic Block Storage가 제공하는 IOPS의 “부트 버스트”와 결합하여 보다 빠르게 T2 인스턴스를 시작할 수 있게 됩니다.

T2 in Action
제가 개발 과정에서 테스트로 t2.small을 사용해 보도록 하겠습니다 어떻게 CPU 크레딧이 축적되고 소비되는 지를 보여 드릴 것입니다. (이 결과를 공식 벤치마크라고 생각하지 마십시오.)

이제 인스턴스를 시작하고, 100 GB의 General Purpose (SSD) EBS 볼륨을 만들고 포맷해서 마운트하고 ncurses-develgcc 패키지를 설치하고 Kernel.org에서 Linux 커널 소스를 다운로드했습니다 . 그리고 menuconfig 실행하고 모든 기본 값을 사용하고 .config 파일을 저장한 후 커널을 빌드했습니다.:

보시다시피 전체 커널은 23분만에 빌드 되었습니다.점심을 Nosh the Truck에 점심을 사러 갔다 오기에 충분한 시간입니다. 피쉬 앤 칩스를 사서 돌아 오면 빌드가 완료되었습니다. AWS 관리 콘솔을 열고 빌드가 CPU 크레딧에 어떤 영향을 주었는지를 확인하기 위해 CloudWatch 메트릭을 보면 다음과 같습니다.

주황색 라인은 구축 과정을 통해 CPU 크레딧 이용료(1 분 단위)를 보여줍니다. 파란색 라인은 인스턴스의 CPU 크레딧 잔량(1 분 단위)를 보여줍니다. 보시다시피 잔량은 빌드를 시작하기 전에는 상승세였습니다 (인스턴스는 유휴 상태 였다는 것입니다). 빌드 중에 크레딧을 소비하고 있으며, 완전히 빌드가 끝난 직후에도 충분한 크레딧이 남아 있으며, 그 숫자가 15 이하는 되지 않았습니다. 빌드가 완료된 후에는 크레딧을 다시 모으기 시작하여, 1시간 이내에 16부터 25까지 상승했습니다.

빌드 중인 CPU 부하 CloudWatch 메트릭은 여기서 보실 수 있습니다 :

장기적으로 CPU 크레딧을 더 소비하도록 여러번 커널 빌드를 실행했습니다. (동시에 3개의 각 소스 트리의 여러 복사본에 대해 make -j 2를 실행했습니다. 보시다시피 충분한 성능을 보여줍니다 :

결론
개인적인 실험을 해 본 결과, T2는 매우 다양한 유즈케이스에 적합하다고 확신할 수 있었습니다. 여러분의 피드백을 기다리겠습니다!

비교가 반드시 정확한 것은 아니지만, 다음과 같이 이전 세대의 EC2 인스턴스를 T2 인스턴스로 대체하는 것이 좋을 것 같습니다.

  • t1.microt2.micro로 변경
  • m1.smallt2.small로 변경
  • m1.mediumt2.medium로 변경

이전 세대의 인스턴스를 같은 T2 인스턴스에 변경하면 지금까지 요금의 절반 비용으로 극적으로 좋은 성과를 얻을 수 있습니다. 변경 하는 경우, T2 인스턴스는 로컬 (인스턴스) 스토리지를 가지고 있지 않기 때문에, 하나 이상의 EBS 볼륨을 사용할 필요가 있다는 점에 유의하십시오.

T2 인스턴스는 기본이 되는 CPU에서 최상의 성능을 얻기 위해 Hardware Virtualization (HVM)를 사용하고 있기 때문에 HVM AMI를 사용해야 합니다.

가용성 및 요금
T2 인스턴스는 오늘부터 다음 AWS 지역에서 이용 가능하며, 바로 사용해 보실 수 있습니다 :

  • 미국 동부 (버지니아 북부)
  • 미국 서부 (오레곤)
  • EU (아일랜드)
  • 아시아 태평양 (싱가포르)
  • 아시아 태평양 (도쿄)
  • 아시아 태평양 (시드니)
  • 남미 (상파울루)

T2 인스턴스는 미국 서부 (캘리포니아 북부), 중국 (베이징), AWS GovCoud (미국)도 조만간 출시 예정입니다.

가격은 미국 동부 (버지니아 북부) 지역에서 주문형 t2.micro 인스턴스가 시간당 $0.013에서 이용하실 수 있습니다. T2 인스턴스를 사용하면 정말 매력적인 가격으로 작게 시작해서 필요에 따라 확장하고 모든 AWS 서비스를 사용할 수 있습니다! 자세한 정보는 EC2 요금 페이지를 참조하십시오.

Jeff ;

이 글은 New Low Cost EC2 Instances with Burstable Performance의 한국어 번역입니다.