Category: News*


AWS Fargate 출시 – 서버리스 콘테이너 서비스

컨테이너는 개발자가 애플리케이션을 개발, 패키징 및 배포하는 데 있어 강력한 도구입니다. AWS에서는 고객들이 매주 수십만 개의 활성 ECS 클러스터와 수억 개의 신규 컨테이너를 운영합니다. 2016년 이후로 고객 성장세는 400% 이상에 이릅니다. Amazon ECS와 Kubernetes 같은 컨테이너 오케스트레이션 솔루션이 있어 컨테이너 워크로드의 배포, 관리 및 확장을 손쉽게 하여 민첩성을 개선합니다. 하지만, 이러한 컨테이너 관리 솔루션이 있음에도 기본 인프라의 가용성, 용량 및 유지 관리는 여전히 고객이 책임져야 하는 상황입니다. AWS에서 일부 공통적인 과중한 업무를 줄이면서 여러분이 컨테이너가 제공하는 속도, 민첩성 및 불변성을 최대한 활용하고, 그에 따라 인프라 관리 대신 애플리케이션 빌드에 집중할 수 있도록 하고자 합니다.

AWS Fargate

AWS Fargate는 AWS에서 컨테이너를 손쉽게 배포하는 방법으로 컨테이너를 위한 인스턴스를 관리할 필요 없이 컨테이너 자체만을 배포할 수 있도록 하는 기술입니다. 컨테이너 이미지를 빌드하고, CPU 및 메모리 요구 사항을 지정하고, 네트워킹 및 IAM 정책을 정의하면 됩니다. Fargate가 있으면 애플리케이션의 유연한 구성 옵션과 함께 초 단위로 요금을 지불합니다.

가장 좋은 점은 동일한 ECS가 제공하는 API 및 AWS 통합 기능을 계속 사용할 수 있다는 점입니다. Fargate는 Amazon Virtual Private Cloud, AWS Identity and Access Management(IAM), Amazon CloudWatch 및 로드 밸런서와의 기본 통합을 제공합니다. Fargate 작업(Task)은 AWS VPC 네트워킹 모드를 사용하고 VPC의 탄력적 네트워크 인터페이스(ENI)를 프로비저닝하여 리소스와의 안전한 통신이 가능합니다. AWS 명령줄 인터페이스(CLI)를 통해 Fargate 작업을 시작하는 것은 간단합니다.

ecs run-task --launch-type FARGATE --cluster BlogCluster --task-definition blog --network-configuration "awsvpcConfiguration={subnets=[subnet-b563fcd3]}"

또한 콘솔을 사용하여 작업 정의를 생성하고 Fargate 시작 유형에 따라 작업을 실행하기도 쉽습니다.

몇 가지 작업을 시작하고 나면 클러스터에서 실행 중인 것을 볼 수 있습니다.

ECS 클러스터는 유형이 다릅니다. Fargate 및 EC2에서 실행 중인 작업을 포함할 수 있습니다.

조금 더 자세히 작업을 살펴보면 Fargate가 VPC에서 프로비저닝한 ENI와 작업에서 사용하는 모든 컨테이너를 포함한 일부 유용한 정보를 확인할 수 있습니다. [Logs] 탭을 통해 작업에 대한 CloudWatch Logs에 쉽게 액세스할 수 있습니다.

이제 Fargate의 구성 옵션과 요금 세부 정보를 살펴보겠습니다.

요금

AWS Fargate는 온디맨드 요금 모델을 사용합니다. 애플리케이션에서 초당 소비한 vCPU 및 메모리 리소스 양에 대해 지불하면 됩니다. vCPU 요금은 초당 $0.00084333(시간당 $0.0506)이고, GB당 메모리는 초당 $0.00021167(시간당 $0.0127)입니다. Fargate를 사용하여 vCPU 및 메모리에 대한 50개의 구성 옵션을 통해 광범위한 워크로드를 지원할 수 있습니다. 구성 옵션은 아래와 같습니다.

CPU(vCPU) 메모리 값(GB)
0.25 0.5, 1, 2
0.5 1, 2, 3
1 최소 2GB 및 최대 8GB(1GB 증분)
2 최소 4GB 및 최대 16GB(1GB 증분)
4 최소 8GB 및 최대 30GB(1GB 증분)

알아둘 사항

  • 애플리케이션의 리소스 요구 사항에 가장 부합하도록 Fargate를 구성하고 컨테이너에 필요한 리소스에 대해서만 지불할 수 있습니다. 수십 또는 수천 개의 컨테이너를 몇 초 이내에 시작할 수 있습니다.
  • Fargate는 EC2에서 작업을 실행하는 것과 유사하게 작업을 실행합니다. 작업을 VPC에 추가하고, 로드 밸런서를 구성하며, IAM 역할을 할당할 수 있습니다.

장기 출시 계획

AWS Fargate는 2018년에는 Amazon EKS를 사용하여 Fargate에서의 컨테이너 시작을 지원할 계획이 있습니다. 늘 그렇듯 고객 여러분의 피드백을 기다리겠습니다. Amazon ECS 포럼에 의견을 남겨 여러분의 의견을 들려주세요.

Fargate는 현재 미국 동부(버지니아 북부) 리전에서 사용 가능합니다.

Randall;

이 글은 AWS re:Invent 2017 신규 서비스 소식으로 Introducing AWS Fargate – Run Containers without Managing Infrastructure 의 한국어 번역입니다.

Amazon S3 Select 및 Glacier Select – 원하는 객체 기반 데이터 질의 기능 출시

Amazon S3(Simple Storage Service)는 다양한 기업들이 사용하는 수백만 애플리케이션을 위한 대용량 데이터를 저장하며, 대부분 고객은 안전하고 지속성이 우수하며 경제적인 백업 아카이브 스토리지를 위해 Amazon Glacier를 사용하고 있습니다. S3를 사용하면 원하는 만큼 많은 객체를 저장할 수 있으며, 개별 객체의 크기는 5테라바이트까지 가능합니다. 객체 스토리지의 데이터는 일반적으로 하나의 완전한 개체로 액세스되었습니다. 즉, 5기가바이트 객체를 한 개 요청하면 5기가바이트를 모두 받게 됩니다. 이것은 객체 스토리지의 속성입니다.

오늘 Amazon S3 및 Glacier를 위한 두 가지 새로운 기능을 발표하여 새로운 데이터 분석 패러다임을 제공합니다. 표준 SQL 질의를 사용하여 여기에 저장된 객체에서 필요한 정보만 가져올 수 있는 기능입니다. 이렇게 하면 S3 또는 Glacier의 객체를 액세스하는 모든 애플리케이션 성능이 근본적으로 향상됩니다.

Amazon S3 Select 미리 보기

Amazon S3 Select는 간단한 SQL 식을 사용하여 애플리케이션이 객체에서 일부 데이터만 가져올 수 있도록 하는 서비스입니다. S3 Select를 사용하여 애플리케이션에서 필요한 데이터만 가져옴으로써, 상당한 성능 향상을 이룰 수 있습니다. 대부분의 경우 이러한 성능 향상은 최대 400%에 이릅니다.

대형 소매 기업의 개발자가 한 매장의 주간 판매 데이터를 분석해야 하는데, 매일 200개 매장 모두의 데이터가 새로운 GZIP 압축 CSV로 저장되고 있는 상황을 생각해 보십시오. S3 Select가 없으면 전체 CSV를 다운로드하여 압축을 풀고 처리하여 필요한 데이터를 가져와야 합니다. S3 Select를 사용하면, 전체 객체를 가져오는 대신 해당 매장의 데이터만 반환하는 간단한 SQL 식을 사용할 수 있습니다. 즉, 최소한의 데이터만 처리하면 되며 결과적으로 기반 애플리케이션의 성능이 향상됩니다.

Python 예제를 간단히 살펴보겠습니다.

import boto3
from s3select import ResponseHandler

class PrintingResponseHandler(ResponseHandler):
    def handle_records(self, record_data):
        print(record_data.decode('utf-8'))

handler = PrintingResponseHandler()
s3 = boto3.client('s3')
response = s3.select_object_content(
    Bucket="super-secret-reinvent-stuff",
    Key="stuff.csv",
    SelectRequest={
        'ExpressionType': 'SQL',
     'Expression': 'SELECT s._1 FROM S3Object AS s'',
        'InputSerialization': {
            'CompressionType': 'NONE',
            'CSV': {
                'FileHeaderInfo': 'IGNORE',
                'RecordDelimiter': '\n',
                'FieldDelimiter': ',',
            }
        },
        'OutputSerialization': {
            'CSV': {
                'RecordDelimiter': '\n',
                'FieldDelimiter': ',',
            }
        }
    }
)
handler.handle_response(response['Body'])

이렇게 하기 위해 S3 Select는 이진 유선 프로토콜을 사용하여 객체를 반환합니다. 현재 이를 위해서는 역직렬화를 지원하는 작은 라이브러리를 추가로 사용해야 합니다.

고객들은 S3 Select를 사용하여 모든 종류의 애플리케이션 속도를 향상시킬 수 있을 것으로 기대됩니다. 예를 들어 일부 데이터를 가져오는 이 기능은 AWS Lambda를 사용하여 만든 서버리스 애플리케이션에 특히 유용합니다. 서버리스 MapReduce 참조 아키텍처를, S3 Select를 사용하여 필요한 데이터 가져오도록 수정했을 때, 성능은 2배 향상했고 비용은 80% 감소했습니다.

또한, S3 Select 팀은 쿼리를 변경하지 않고 Amazon EMR에 대한 성능을 즉시 높일 수 있는 Presto 커넥터를 개발했습니다. S3에서 가져온 데이터의 약 99%를 필터링하는 복합 쿼리를 실행하여 이 커넥터를 테스트했습니다. S3 Select를 사용하지 않을 경우 Presto는 S3의 전체 객체를 스캔하여 필터링해야 했지만, S3 Select를 사용하면 S3 Select를 통해 쿼리에 필요한 데이터만 가져왔습니다.

[hadoop@ip-172-31-19-123 ~]$ time presto-cli --catalog hive --schema default --session hive.s3_optimized_select_enabled=false -f query.sql
"31.965496","127178","5976","70.89902","130147","6996","37.17715","138092","8678","135.49536","103926","11446","82.35177","116816","8484","67.308304","135811","10104"
 
real  0m35.910s
user  0m2.320s
sys   0m0.124s
[hadoop@ip-172-31-19-123 ~]$ time presto-cli --catalog hive --schema default --session hive.s3_optimized_select_enabled=true -f query.sql
"31.965496","127178","5976","70.89902","130147","6996","37.17715","138092","8678","135.49536","103926","11446","82.35177","116816","8484","67.308304","135811","10104"
 
real  0m6.566s
user  0m2.136s
sys   0m0.088s

S3 Select를 사용하지 않은 경우 이 쿼리는 35.9초 걸렸고, S3 Select를 사용했을 때는 6.5초밖에 걸리지 않았습니다. 5배 빠른 속도입니다.

알아둘 사항

  • S3 Select 프리뷰 버전은 GZIP으로 압축되거나 압축되지 않은 CSV 또는 JSON 파일을 지원합니다. 프리뷰 버전에서는 저장 시 암호화된 객체를 지원하지 않습니다.
  • S3 Select 프리뷰 버전은 무료입니다.
  • Amazon Athena, Amazon Redshift, Amazon EMR을 비롯하여 Cloudera, DataBricks, Hortonworks 등의 파트너들은 모두 S3 Select를 지원합니다.

Glacier Select 정식 출시

금융 서비스, 의료 등 규제가 엄격한 업종의 일부 기업에서는 SEC 규정 17a-4 또는 HIPAA 등과 같은 규정을 준수하기 위해 Amazon Glacier에 직접 데이터를 쓰고 있습니다. 많은 S3 사용자들은 더 이상 정기적으로 액세스하지 않는 데이터를 Glacier로 옮김으로써 스토리지 비용을 절약하도록 설계된 수명 주기 정책을 사용합니다. 온프레미스 테이프 라이브러리 등과 같은 기존의 아카이브 솔루션은 대부분 데이터 검색 처리량에 제한이 많아서 신속한 분석이나 처리에는 부적합합니다. 이러한 테이프 중 하나에 저장된 데이터를 사용하려면 유용한 결과를 얻기까지 몇 주씩 기다려야 할 수도 있습니다. 반면에 Glacier에 저장된 콜드 데이터는 단 몇 분만에 쉽게 쿼리할 수 있습니다.

따라서 아카이브된 데이터를 활용하여 새롭고 가능성 있는 비즈니스 가치를 창출할 수 있습니다. Glacier Select를 사용하면 표준 SQL 문을 사용하여 Glacier 객체에 대해 직접 필터링을 수행할 수 있습니다.

Glacier Select는 다른 검색 작업과 마찬가지로 수행되지만 다른 점은 초기 작업 요청에 전달할 수 있는 SelectParameters 파라미터 집합을 제공한다는 사실입니다.

다음은 간단한 예제입니다.

import boto3
glacier = boto3.client("glacier")

jobParameters = {
    "Type": "select", "ArchiveId": "ID",
    "Tier": "Expedited",
    "SelectParameters": {
        "InputSerialization": {"csv": {}},
        "ExpressionType": "SQL",
        "Expression": "SELECT * FROM archive WHERE _5='498960'",
        "OutputSerialization": {
            "csv": {}
        }
    },
    "OutputLocation": {
        "S3": {"BucketName": "glacier-select-output", "Prefix": "1"}
    }
}

glacier.initiate_job(vaultName="reInventSecrets", jobParameters=jobParameters)

알아둘 사항

Glacier Select는 모든 상용 리전에서 오늘 부터 사용할 수 있습니다. Glacier는 3가지 측정량으로 요금이 책정됩니다.

  • 스캔한 데이터량(GB)
  • 반환된 데이터량(GB)
  • Select 요청 수

각 측정량에 대한 요금은 원하는 결과 반환 속도에 따라 정해지며, 고속(1-5분), 일반(3-5시간), 대량(5-12시간)으로 구분됩니다. 곧 다가오는 2018년에 Athena는 Glacier Select를 사용하여 Glacier와 통합됩니다.

이러한 기능을 활용하여 애플리케이션 속도를 높이거나 새로운 성과를 달성하시기 바랍니다.

Randall;

이 글은 AWS re:Invent 2017 신규 서비스 소식으로 S3 Select and Glacier Select – Retrieving Subsets of Objects 의 한국어 번역입니다.

출시 예고 – Amazon Aurora 멀티 마스터 및 서버리스 서비스

Amazon Aurora에 대해 이미 들어보셨을 수도 있습니다. MySQL 호환 또는 PostgreSQL 호환 버전으로 제공되는 Aurora는 완전 관리형 솔루션으로, 최대 64TB 크기의 데이터베이스 스토리지까지 자동으로 확장됩니다. Aurora 데이터베이스 인스턴스를 생성할 때 원하는 인스턴스 크기를 선택할 수 있으며, 읽기 복제본을 사용하여 읽기 처리량을 늘리는 옵션도 있습니다. 처리 요건이나 쿼리 속도가 변경되면 인스턴스 크기를 수정하거나 필요에 따라 읽기 복제본 수를 변경할 수 있습니다. 이 모델은 워크로드를 예측할 수 있는 환경에서 요청 속도 및 처리 요구 사항에 맞게 매우 효과적으로 작동합니다.

오늘 관계형 데이터베이스의 병목을 획기적으로 개선할 수 있는 Aurora 멀티 마스터 및 서버리스 두 가지 기능을 미리 보기로 출시합니다.

Amazon Aurora 멀티 마스터 기능

Amazon Aurora 멀티 마스터로 복수의 가용 영역에서 작동하는 복수의 읽기/쓰기 마스터 인스턴스를 생성할 수 있습니다. 애플리케이션은 이를 통해 마치 읽기 전용 복제본을 읽는 것처럼 클러스터에 있는 여러 데이터베이스 인스턴스에 데이터를 쓰거나 읽을 수 있게 됩니다.

멀티 마스터 클러스터는 Aurora의 우수한 고가용성을 한층 더 강화합니다. 마스터 인스턴스 중 하나에 장애가 발생하면 클러스터에 있는 다른 인스턴스가 즉시 이어받기 때문에 인스턴스 장애는 물론 AZ 전체에 장애가 발생하더라도 애플리케이션이 중단되지 않고 계속 읽거나 쓸 수 있습니다.

현재 마스터 하나로 운영되는 Aurora는 데이터베이스 클러스터 하나에서 쓰기 인스턴스 하나와 최대 15개의 읽기 전용 복제본(승격 가능)을 지원합니다. 기본 쓰기 인스턴스는 r4.16xlarge에서 1초당 최대 200,000개의 쓰기 작업을 실행할 수 있습니다. 쓰기 처리량이 그보다 많아야 하는 워크로드라면 마스터 인스턴스를 추가하고 쓰기 작업을 수평 확장함으로써 이익을 얻을 수 있습니다. 이 미리 보기는 Aurora MySQL 호환 버전에 사용 가능합니다. 참가하려면 등록 양식을 작성해 주십시오.

Amazon Aurora 서버리스 기능

데이터 베이스를 사용하다 보면, 경우에 따라 하루 또는 한 주에 몇 분 또는 몇 시간 동안 요청이 폭증하는 등, 워크로드가 간헐적이거나 예측 불가능할 수도 있습니다. 반짝 세일, 드물거나 일회성으로 진행하는 이벤트, 온라인 게임, 보고 워크로드(시간당 또는 일일), 개발/테스트 및 새로운 애플리케이션 출시가 대표적인 경우입니다. 정확히 알맞은 양의 용량만 확보하기 위해서는 많은 조사 작업이 필요할 수 있고, 정기 결제는 합리적이지 않을 수 있습니다.

바로 오늘 Amazon Aurora 서버리스의 프리뷰 버전이 출시됩니다(미리 보기 신청). 가변성이 높고 급격한 변화가 발생할 수 있는 워크로드에 적합하도록 설계된 이 새 구성에서는 데이터베이스 리소스 비용을 사용한 만큼 초 단위로 지불할 수 있습니다.

이 서버리스 모델은 Aurora 아키텍처의 일부로 내장된, 완벽하게 분리된 처리와 스토리지를 기반으로 구축됩니다(자세한 내용은 Design Considerations for High-Throughput Cloud-Native Relational Databases 참조). 처음에 데이터베이스 인스턴스 크기를 선택하는 대신 엔드포인트를 만들고, 필요에 따라 원하는 최소 및 최대 용량을 설정한 후 엔드포인트에 대해 쿼리를 발행합니다. 엔드포인트는 쿼리를 신속하게 확장된 데이터베이스 리소스 집합으로 라우팅하는 간단한 프록시입니다. 그러면 백그라운드에서 조정 작업이 이루어지는 동안에도 연결 상태를 그대로 유지할 수 있습니다. 새로운 리소스가 5초 이내에 온라인으로 제공되는 등, 조정이 빠르게 이루어집니다. 함께 정상적으로 작동되는 방식은 다음과 같습니다.

스토리지와 처리가 분리되므로 이론상 0까지 축소할 수 있고 스토리지에 대한 비용만 지불하면 됩니다. 정말 멋진 모델이라고 생각합니다. 덕분에 새로운 종류의 인스턴트 온 임시 애플리케이션이 개발될 것으로 기대합니다. 조정은 요청을 즉시 처리할 준비가 된 “웜” 리소스 풀을 기반으로 단 몇 초 만에 이루어집니다. 새로 추가된 리소스가 최고 속도로 작동하도록 캐싱 및 버퍼링된 기존 콘텐츠가 신중하게 구축됩니다. 거의 아무런 조치 없이 기존의 Aurora 데이터베이스를 서버리스로 만들 수 있습니다.

요금 청구는 Aurora 용량 단위를 기반으로 하며, 각 단위는 컴퓨팅 성능과 메모리의 조합을 의미합니다. 새로 추가되는 리소스당 1분을 최소값으로 하여 1분 단위로 측정됩니다.

지속적 업데이트
2018년 초, Amazon Aurora 서버리스에 대한 추가 정보를 제공할 예정입니다. 현재 계획은 상반기에 MySQL 호환성을 갖춘 프로덕션 형태로 출시하고, 하반기에는 PostgreSQL 호환 버전을 출시하는 것입니다. 바로 지금 프리뷰 서비스에 가입할 수 있습니다.

Jeff;

이 글은 AWS re:Invent 2017 신규 서비스 출시 소식으로 Sign Up for the Preview of Amazon Aurora Multi-Master 및  In The Works – Amazon Aurora Serverless의 한국어 번역 편집본입니다.

Amazon DynamoDB 업데이트 – 글로벌 테이블 및 온 디맨드 백업 기능 출시

다양한 산업 분야의 AWS 고객이 Amazon DynamoDB를 이용해 미션 크리티컬 데이터를 저장합니다. 금융 서비스, 상거래, AdTech, IoT 및 게임 애플리케이션 등은 수백 테라바이트 용량의 데이터 및 수조 개의 항목으로 구성된 개별 테이블로 초당 수백만 건의 요청을 처리하고 DynamoDB를 사용해 몇 밀리초 이내에 결과를 반환합니다.

지금부터 여러분이 좋아할 만한 강력한 새 기능 두 가지를 소개하겠습니다.

  • 글로벌 테이블 – 이제 몇 번의 클릭만으로 멀티 마스터 쓰기를 완벽하게 지원하면서 두 곳 이상의 AWS 리전에 걸쳐 자동으로 복제되는 테이블을 생성할 수 있습니다. 따라서 복제 프로세스를 관리할 필요 없이 글로벌 사용자 기반을 겨냥해 대규모로 확장되는 애플리케이션을 빠르게 구축할 수 있습니다.
  • 온 디맨드 백업 – 이제 한 번의 클릭으로 성능이나 가용성에 전혀 영향을 미치지 않으면서 DynamoDB 테이블의 전체 백업을 만들 수 있습니다. 애플리케이션은 온라인 상태를 유지하고 최고 속도로 실행됩니다. 백업은 장기 보존 및 보관에 적합하며 규정 요구 사항을 준수하는 데 도움이 될 수 있습니다.

글로벌 테이블
DynamoDB는 이미 3개 가용 영역에 걸쳐 테이블을 복제하여 내구성이 뛰어난 고가용성 스토리지를 제공합니다. 이제 글로벌 테이블을 사용하여 두 곳 이상의 AWS 리전에 걸쳐 테이블을 복제하고 몇 번의 클릭만으로 설정할 수 있습니다. 가장 까다로운 글로벌 앱의 필요에 따라 확장 가능한, 빠른 읽기 및 쓰기 성능을 얻을 수 있습니다.

기존 코드를 변경할 필요는 없습니다. 지정된 리전의 DynamoDB 엔드포인트로 쓰기 요청 및 최종적 일관된 읽기 요청을 보내기만 하면 됩니다(강력한 일관된 읽기와 관련된 쓰기는 공통 엔드포인트를 공유해야 함). 보이지는 않지만 DynamoDB가 멀티 마스터 쓰기를 구현하고 특정 항목에 대한 마지막 쓰기가 우선 적용되도록 합니다. 글로벌 테이블을 사용하면 각 항목에는 가장 최근의 쓰기 시간을 나타내는 타임스탬프 속성이 포함됩니다. 업데이트는 DynamoDB Streams를 통해 다른 리전에 비동기식으로 전파되며 일반적으로 1초 이내에 완료됩니다(새로운 ReplicationLatency 및 PendingReplicationCount 측정치를 사용하여 추적 가능).

시작 방법은 간단합니다. 일반적인 방법으로 테이블을 만든 다음, 한 번 클릭으로 추가하여 다른 리전으로의 복제를 예약합니다. 모두 동일한 이름과 키 구성(해시 및 선택적 정렬)의 빈 테이블을 가지고 시작해야 합니다. 모든 테이블은 Auto Scaling, TTL, 로컬 보조 인덱스, 글로벌 보조 인덱스, 프로비저닝된 처리량 설정 및 IAM 정책 집합도 일관되게 공유해야 합니다. 편의를 위해 새로운 글로벌 테이블에서는 Auto Scaling이 자동으로 활성화됩니다.

DynamoDB Auto Scaling을 사용하지 않을 경우 로컬 리전에서 시작되는 각 애플리케이션 쓰기에 대한 추가 시스템 쓰기 및 그룹의 모든 테이블에서의 쓰기를 수용하기에 충분한 쓰기 용량과 로컬 읽기를 처리하기에 충분한 읽기 용량을 프로비저닝해야 합니다. 시스템 쓰기는 최종 쓰기가 우선 적용되는 모델을 지원하는 데 사용됩니다.

세 개 리전에 걸쳐 있는 글로벌 테이블을 생성해보겠습니다. 일반적인 방법으로 테이블을 만든 후 [Global Tables] 탭을 클릭합니다.

DynamoDB는 테이블을 검사하여 요구 사항을 충족하는지 확인하고, 사용자에게 DynamoDB Streams를 활성화할 것을 지시합니다. 이제 [Add region]을 클릭하고 [EU (Frankfurt)]를 선택한 후 [ Continue:]를 클릭합니다.

테이블이 즉시 생성됩니다.

이 작업을 한 번 더 반복하면 세 개 AWS 리전에 걸쳐 있는 글로벌 테이블이 만들어집니다.

[EU (Ireland)]에 항목을 생성합니다.

만드는 즉시 [EU (Frankfurt)]에 표시됩니다.

교차 리전 복제 프로세스에 aws:rep:updateregion aws:rep:updatetime 속성이 추가됩니다. 애플리케이션에서 볼 수 있지만 수정해서는 안 됩니다.

글로벌 테이블은 현재 미국 동부(버지니아 북부), 미국 동부(오하이오), EU(아일랜드), EU(프랑크푸르트) 리전에서 사용할 수 있으며 2018년에 더 많은 리전이 추가될 예정입니다. 교차 리전 복제를 위한 데이터 전송 요금과 함께 읽기 용량 및 스토리지에 대한 통상적인 DynamoDB 요금을 지불하면 됩니다. 쓰기 용량은 복제된 쓰기 용량 단위로 청구됩니다.

온 디맨드 백업
이 기능은 장기 보관 및 데이터 보존에 대한 규정 요구 사항을 준수하도록 만들어졌습니다. 프로비저닝된 처리 용량을 소비하거나 애플리케이션의 응답에 영향을 주지 않고 클릭(또는 API 호출) 한 번으로 백업을 만들 수 있습니다. 백업은 내구성이 뛰어난 형태로 저장되며 새 테이블을 만드는 데 사용할 수 있습니다.

이제 DynamoDB 콘솔에 백업 섹션이 포함됩니다.

[Create backup]을 클릭하고 백업 이름을 지정하기만 하면 됩니다.

백업은 즉시 사용할 수 있습니다! 백업은 Amazon에서 관리하는 키로 암호화되며 모든 테이블 데이터, 프로비저닝된 용량 설정, 로컬 및 글로벌 보조 인덱스 설정 및 스트림이 포함됩니다. Auto Scaling 또는 TTL 설정, 태그, IAM 정책, CloudWatch 측정치 또는 CloudWatch 경보는 포함되지 않습니다.

일부 고객이 0.5페타바이트에 가까운 테이블을 가지고 있는 상황에서 이 작업이 어떻게 즉시 이루어질 수 있는지 궁금할 수 있습니다. 보이지는 않지만 DynamoDB가 전체 스냅샷을 생성하고 모든 변경 로그를 저장합니다. 백업 생성은 테이블의 현재 메타데이터와 함께 타임스탬프를 저장하는 작업만큼 간단합니다.

저의 백업입니다.

새 테이블로 복원하는 방법은 이와 같습니다.

다음은 DynamoDB 백업과 관련하여 몇 가지 유의해야 할 사항입니다.

  • 설정 – 새 테이블을 만든 후 DynamoDB가 몇 가지 설정 작업(책상에서 점심 식사를 하는 시간이면 충분)을 수행해야 첫 번째 백업을 생성할 수 있습니다.
  • 복원 – 복원 시간은 테이블의 크기에 따라 달라지며, 30분에서 몇 시간(매우 큰 테이블의 경우)에 이릅니다.
  • 가용성 – 현재 미국 동부(버지니아 북부), 미국 동부(오하이오), 미국 서부(오레곤), EU(아일랜드) 리전에 최초로 이 새로운 기능을 선보이고 있으며, 조속한 시일 내에 계정 단위로 제공할 계획입니다.
  • 요금 – 기가바이트-월 단위로 백업 스토리지 비용을 지불하고 복원하는 데이터 양에 따라 복원이 진행됩니다.

지금 일부 리전에서 바로 사용 가능하며, 향후 계속 가능 리전이 확대될 것입니다.

Jeff;

이 글은 AWS re:Invent 2017 신규 서비스 소식으로 Amazon DynamoDB Update – Global Tables and On-Demand Backup의 한국어 번역입니다.

Amazon Neptune – 완전 관리형 그래프 데이터베이스 서비스

최근 애플리케이션 데이터 구조와 알고리즘 중에서 특히 그래프(Graph)는 하루가 다르게 발전하고 있습니다. 최근 다양한 기업들은 소셜 미디어나 데이터 추천 등 복잡한 관계 데이터를 지속적으로 생성하고 수집합니다. 그러나, 개발자들은 복잡한 관계 기반 데이터를 기존 데이터베이스에서 모델링하게 되는데, 이로 인해 관계를 추가할 때마다 비용이 많이 들고 성능을 점점 저하시키는 극도로 복잡한 쿼리가 발생합니다. AWS는 갈수록 복잡해지는 최신 데이터 세트, 관계 및 패턴을 처리하고자 하는 고객의 요구를 지속적으로 받아왔습니다.

Amazon Neptune 소개

오늘 Amazon Neptune의 제한적 프리뷰 버전을 출시합니다. Amazon Neptune은 빠르고 안정적인 그래프 데이터베이스 서비스로, 고도로 연결된 데이터 세트 간의 관계로부터 쉽게 통찰력을 얻을 수 있습니다. 즉, 수십억 개의 관계를 저장하고 몇 밀리초의 지연 시간으로 그래프 기반 데이터를 쿼리하는 데 최적화된, 특수 목적의 고성능 그래프 데이터베이스 엔진입니다.

Amazon Neptune은 완전 관리형 데이터베이스로 제공되므로 고객은 유지 보수, 패치 적용, 백업 및 복원 같은 지루하고 반복적인 작업보다 애플리케이션 업무에 집중할 수 있습니다. 이 서비스는 가용성 증대를 위해 빠른 장애 조치, 지정 시간 복구 및 다중 AZ 배포를 지원합니다. 읽기 복제본을 최대 15개 지원하므로 쿼리 처리량을 초당 수십만 개의 쿼리로 확장할 수 있습니다. Amazon Neptune은 Amazon Virtual Private Cloud 내에서 실행되며, 유휴 데이터를 암호화할 수 있어, 전송 중이거나 유휴 상태인 데이터의 무결성을 완벽하게 달성할 수 있습니다.

이 서비스에는 흥미로운 기능이 있지만 여러분에게는 그래프 데이터베이스가 익숙하지 않은 주제일 수 있으므로 지금부터 관련 용어를 검토하는 시간을 갖겠습니다.

그래프 데이터베이스 기초

그래프 데이터베이스는 키-값 쌍으로 저장되는 속성을 가질 수 있는 정점(노드)과 간선(관계 또는 연결)의 저장소입니다. 그래프 데이터베이스는 연결된 데이터, 컨텍스트 데이터, 관계 중심 데이터에 유용합니다. 대표적인 분야로 소셜 미디어 네트워크, 추천 엔진, 자동차 운전 안내 시스템, 물류, 진단, 사기 탐지 및 게놈 시퀀싱 등이 있습니다.

Amazon Neptune은 그래프 설명 및 쿼리 방식으로 두 가지 개방형 표준을 지원합니다.

  • Apache TinkerPop3 스타일 속성 그래프는 Gremlin으로 쿼리됩니다. Gremlin은 그래프 순회 언어로서, 쿼리는 노드의 엣지(Edge)에 따라 별개의 단계로 구성된 순회입니다. TinkerPop에서 작동하도록 설계된 기존 도구와 클라이언트를 사용하면 Neptune을 빠르게 시작할 수 있습니다.
  • RDF(Resource Description Framework)SPARQL로 쿼리됩니다. SPARQL은 W3C의 시맨틱 웹 표준을 기반으로 하는 선언적 언어입니다. subject->predicate->object 모델을 따릅니다. 특히 Neptune은 RDF 1.1, SPARQL Query 1.1, SPARQL Update 1.1 및 SPARQL Protocol 1.1 표준을 지원합니다.

SPARQL 또는 TinkerPop에서 작동하는 기존 애플리케이션이 있는 경우 애플리케이션이 연결되는 엔드포인트를 업데이트하기만 하면 Neptune을 사용할 수 있습니다. Amazon Neptune을 시작하는 방법을 알려드리겠습니다.

Amazon Neptune 시작하기

먼저 Neptune 콘솔로 이동한 다음 “Launch Neptune”을 클릭하여 시작 마법사를 시작합니다.

이 첫 번째 화면에서는 인스턴스의 이름을 지정하고 인스턴스 유형을 선택합니다. 그런 다음 고급 옵션을 구성합니다. 이전에 인스턴스 기반 AWS 데이터베이스 서비스(Amazon Relational Database Service(RDS) 또는 Amazon ElastiCache)를 실행해본 적이 있다면 대부분의 과정이 익숙하게 느껴질 것입니다.

Amazon Neptune은 VPC에서 안전하게 실행되며 편리한 액세스를 위해 EC2 인스턴스를 추가할 수 있는 자체 보안 그룹을 만들 수 있습니다.

다음으로 파라미터 그룹, 포트, 클러스터 이름 등 몇 가지 추가 옵션을 구성할 수 있습니다.

이 다음 화면에서는 KMS 기반의 저장 시 암호화, 장애 조치 우선 순위, 백업 보존 기간을 설정할 수 있습니다.

RDS와 마찬가지로 서비스에서 데이터베이스의 유지 관리를 처리할 수 있습니다.

인스턴스의 프로비저닝이 완료되면 클러스터의 세부 정보 페이지에서 연결 엔드포인트를 찾을 수 있습니다. 저의 경우 triton.cae1ofmxxhy7.us-east-1.rds.amazonaws.com입니다.

Amazon Neptune 사용

위에서 설명한 것처럼 Amazon Neptune에서는 두 종류의 쿼리 엔진을 사용할 수 있습니다. gremlin 엔드포인트에 연결하려면 /gremlin 엔드포인트를 사용해 다음 작업을 수행할 수 있습니다.


curl -X POST -d '{"gremlin":"g.V()"}' https://your-neptune-endpoint:8182/gremlin

마찬가지로 /sparql을 이용해 SPARQL 엔드포인트에 연결할 수 있습니다.


curl -G https://your-neptune-endpoint:8182/sparql --data-urlencode 'query=select ?s ?p ?o where {?s ?p ?o}'

데이터를 쿼리하기 전에 데이터베이스를 채워야 합니다. AWS re:Invent를 모델링하고 대량 로딩 API를 사용해 데이터를 삽입한다고 가정해봅시다. 속성 그래프의 경우, Neptune은 로딩 노드, 노드 속성, 엣지, 엣지 속성에 대해 Amazon Simple Storage Service(S3)에 저장된 CSV를 지원합니다.

일반적인 정점 CSV의 형식은 이와 같습니다.

~label,name,email,title,~id
Attendee,George Harrison,george@thebeatles.com,Lead Guitarist,1
Attendee,John Lennon,john@thebeatles.com,Guitarist,2
Attendee,Paul McCartney,paul@thebeatles.com,Lead Vocalist,3

엣지 CSV 형식은 이와 같습니다.

~label,~from,~to ,~id
attends,2,ARC307,attends22
attends,3,SRV422,attends27

이제 유사한 구조의 CSV를 Neptune에 로드하기 위해 다음과 같이 실행하겠습니다.

curl -H 'Content-Type: application/json' \
https://neptune-endpoint:8182/loader -d '
{
    "source": "s3://super-secret-reinvent-data/vertex.csv",
    "format": "csv",
    "region": "us-east-1",
    "accessKey": "AKIATHESEARENOTREAL",
    "secretKey": "ThEseARE+AlsoNotRea1K3YSl0l1234coVFefE12"  
}'

그러면 다음 결과가 반환될 것입니다.

{
    "status" : "200 OK",
    "payload" : {
        "loadId" : "2cafaa88-5cce-43c9-89cd-c1e68f4d0f53"
    }
}

이 결과를 가져와 로딩 상태를 쿼리할 수 있습니다. curl https://neptune-endpoint:8182/loader/2cafaa88-5cce-43c9-89cd-c1e68f4d0f53

{
    "status" : "200 OK",
    "payload" : {
        "feedCount" : [{"LOAD_COMPLETED" : 1}],
        "overallStatus" : {
            "fullUri" : "s3://super-secret-reinvent-data/stuff.csv",
            "runNumber" : 1,
            "retryNumber" : 0,
            "status" : "LOAD_COMPLETED",
            "totalTimeSpent" : 1,
            "totalRecords" : 987,
            "totalDuplicates" : 0,
            "parsingErrors" : 0,
            "datatypeMismatchErrors" : 0,
            "insertErrors" : 0
        }
    }
}

이 특정 데이터 직렬화 형식에 대해서는 이 로딩 프로세스를 내 엣지에도 반복합니다.

RDF의 경우 Neptune은 Turtle, N-Triples, N-Quads 및 RDF/XML 등 네 가지 직렬화를 지원합니다. 하나의 로딩 API를 통해 이 모든 것을 로드할 수 있습니다.

이제 데이터베이스에 데이터가 있으니 쿼리를 실행할 수 있습니다. Gremlin에서 그래프 순회로 쿼리를 작성합니다. 저는 폴 매카트니의 열렬한 팬으로서 그가 참여하는 모든 세션을 찾아보려고 합니다.
g.V().has("name","Paul McCartney").out("attends").id()

그러면 “Paul McCartney”라는 값의 “name” 속성을 가진 모든 노드를 찾는 그래프 순회가 정의됩니다(단 하나뿐입니다!). 다음으로 “참석” 유형의 해당 노드에서 모든 엣지를 따라 결과 노드의 ID를 가져옵니다.


==>ENT332
==>SRV422
==>DVC201
==>GPSBUS216
==>ENT323

위 내용을 통해 그래프 데이터베이스 기능의 간략한 개요를 파악하셨기를 바랍니다. 그래프 데이터베이스는 많은 고객들에게 새로운 가능성을 제공하며, Amazon Neptune을 사용하면 대용량 데이터를 쉽게 저장하고 쿼리할 수 있습니다.

Randall;

이 글은 AWS re:Invent 2017 신규 서비스 소식으로 Amazon Neptune – A Fully Managed Graph Database Service의 한국어 번역입니다.

Amazon AppSync 출시 – 실시간 및 오프라인 기능을 갖춘 데이터 기반 앱 개발 서비스

요즘과 같은 시대에는 우리의 삶을 더욱 편안하게 만들어주는 모바일 디바이스와 애플리케이션 없이 산다는 게 불가능에 가깝습니다. 점점 휴대폰에 의존하고, 모바일 애플리케이션 시장은 수백만 개의 앱이 나올 정도의 규모로 급성장했습니다. 모바일 개발자에게 이러한 현상은 앱 사용자가 원하는 품질과 실시간 경험을 제공하는 애플리케이션을 빌드해야 함을 의미합니다. 따라서 다중 사용자 데이터 동기화, 오프라인 네트워크 지원 및 데이터 검색과 같은 기능을 포함하여 모바일 애플리케이션을 개발하는 것은 기본이 되었습니다.

최근에 InfoQ, DZone 및 모바일 개발 블로그인 AlleviateTech에 올라온 모바일 개발 트렌드에 관한 글들을 읽어보았는데, 이들에 따르면 앞서 언급한 기능을 제공하는 데 있어 핵심 요소 중 하나가 클라우드 기반 모바일 애플리케이션이라는 것입니다.  모바일 데이터 동기화 및 데이터 스토리지와 관련이 있는 만큼 이는 정말로 사실인 듯합니다.

그렇기 때문에 클라우드상의 데이터 집약적 서비스를 기반으로 하는 혁신적인 모바일 애플리케이션 빌드를 위한 새로운 서비스를 소개하기에 최적의 타이밍이라고 생각합니다. 바로 AWS AppSync입니다.

AWS AppSync는 실시간 데이터 쿼리, 동기화, 통신 및 오프라인 프로그래밍 기능을 위한 종합 관리형 서버리스 GraphQL 서비스입니다. 익숙하지 않은 분들을 위해 개방형 GraphQL 사양에 관한 몇 가지 정보를 간략하게 공유하고자 합니다. GraphQL은 실시간 데이터 검색과 동적 쿼리 실행을 가능케 하는 응답형 데이터 쿼리 언어이자 데이터 원본 쿼리용 서버 측 런타임입니다. GraphQL을 사용하여, 클라이언트 애플리케이션을 빌드할 때 사용할 응답형 API를 빌드할 수 있습니다. GraphQL은 애플리케이션 계층에서 작동하여 스키마 정의를 위한 유형 시스템을 제공합니다.

이러한 스키마는 작업이 데이터에서 어떻게 수행되고 데이터가 검색 시 어떻게 구성되는지를 정의하는 사양 역할을 합니다. 추가로 GraphQL에는 선언적 코딩 모델이 있는데, React, React Native, iOS 및 Android를 포함한 여러 클라이언트 라이브러리와 프레임워크가 이를 지원합니다.

이제 GraphQL 개방형 표준 쿼리 언어의 기능은 다음을 통한 풍부한 관리형 서비스에서 확보할 수 있습니다. AWS AppSync를 통해 개발자는 여러 데이터 원본 전체의 데이터 검색 및 조작을 손쉽게 간소화하여 빠르게 프로토타입을 만들고, 강력한 협업 다중 사용자 애플리케이션을 개발 및 생성할 수 있습니다. AppSync는 디바이스 연결 시 데이터 업데이트를 유지합니다. 그러면서도 개발자가 연결이 가능할 때 데이터를 로컬로 캐싱하고 로컬 데이터를 동기화함으로써 오프라인에서 작동하는 솔루션을 만들 수 있도록 합니다.

AWS AppSync의 핵심 개념 몇 가지와 이 서비스가 어떻게 작동하는지 살펴보겠습니다.

AppSync 개념

  • AWS AppSync 클라이언트: 작업을 정의하고, 요청의 권한 부여 세부 정보를 래핑하고, 오프라인 비즈니스 로직를 관리하는 서비스 클라이언트
  • 데이터 원본: 데이터 스토리지 시스템 또는 데이터 저장 트리거
  • 자격 증명: GraphQL 프록시에 대한 요청과 함께 제공되는 권한을 지닌 자격 증명 세트와 식별 컨텍스트
  • GraphQL 프록시: 요청 처리 및 매핑, 충돌 해결 처리 및 세분화된 액세스 제어 관리를 위한 GraphQL 엔진 구성 요소
  • 작업: AppSync에서 지원되는 세 가지 GraphQL 작업 중 하나
    • 쿼리: 데이터에 대한 읽기 전용 가져오기 호출
    • 변형: 가져오기 이후 발생한 데이터 쓰기
    • 구독: 이벤트에 대응하여 데이터를 수신하는 장시간 연결
  • 조치: GraphQL 구독으로부터 연결된 구독자로 보내는 알림.
  • 리졸버: 요청 및 응답 매핑 템플릿을 사용하여 데이터 원본에 대한 페이로드를 변환 및 실행하는 기능

사용 방법

스키마가 생성되어 원하는 GraphQL API의 유형 및 기능을 정의하고 리졸버 기능과 연결됩니다.  스키마는 기존 데이터 원본을 미러링하여 생성될 수 있습니다. 또는 AWS AppSync가 스키마 정의를 기반으로 자동적으로 테이블을 생성할 수 있습니다. 개발자는 또한 백엔드 데이터 원본에 관한 지식을 보유하지 않고도 GraphQL의 데이터 검색 기능을 사용할 수 있습니다. 스키마 정의가 수립된 후, AWS AppSync 클라이언트는 쿼리 작업과 같은 작업 요청과 함께 구성될 수 있습니다. 클라이언트는 식별 컨텍스트 및 자격 증명과 함께 작업 요청을 GraphQL 프록시에 제출합니다. GraphQL 프록시가 이 요청을 리졸버로 전달하면, 리졸버가 Amazon DynamaoDB 테이블, AWS Lambda 함수 또는 Amazon Elasticsearch를 사용한 검색 기능과 같은 사전 정의된 AWS 데이터 서비스에 대한 요청 페이로드를 매핑하고 실행합니다. 리졸버는 단일 네트워크 내에서 하나 또는 전체 서비스에 대한 호출을 실행하여 CPU 주기 및 대역폭 수요를 최소화하고, 클라이언트에게 응답을 반환합니다. 추가로 클라이언트 애플리케이션은 온디맨드 코드의 데이터 요구 사항을 변경할 수 있고, AppSync GraphQL API는 그에 따라 동적으로 데이터에 대한 요청을 매핑하여 프로토타입 생성과 더욱 빠른 개발이 가능하도록 합니다.

서비스를 간단하게 살펴보기 위해 Amazon AppSync 콘솔로 이동하겠습니다. [Create API] 버튼을 클릭하여 시작하겠습니다.

[Create new API] 화면이 열리면 새 API에 TarasTestApp이라는 이름을 지정하겠습니다. 그리고 지금은 새 서비스를 살펴보는 것이기 때문에 [Sample schema] 옵션을 선택하겠습니다.  화면에 표시된 정보 대화 상자에서 샘플 스키마를 사용하여 AWS AppSync가 자동적으로 DynamoDB 테이블과 IAM 역할을 생성할 것임을 알려줍니다. 또한 저를 대신해서 TarasTestApp API 또한 배포할 것입니다.  콘솔에서 제공된 샘플 스키마를 검토하고 나면 [Create] 버튼을 클릭하여 테스트 API를 생성하겠습니다.

TaraTestApp API가 생성되고 저를 대신하여 프로비저닝된 AWS 리소스와 연결된 후에는 스키마, 데이터 원본 또는 리졸버에 대한 제 데이터 원본 연결을 업데이트할 수 있습니다. 또한 GitHub에서 샘플 리포지토리를 복제하고 그에 따른 GraphQL 스키마를 다운로드함으로써 제 GraphQL API를 iOS, Android, Web 또는 React Native 애플리케이션에 통합할 수 있습니다.  이러한 애플리케이션 샘플은 시작하는 데 있어서 큰 도움이 되고, 오프라인 시나리오에서 기능하도록 사전 구성되어 있습니다.

콘솔의 메뉴 옵션에서 [Schema]를 선택한다면 TarasTestApp GraphQL API 스키마를 업데이트하고 볼 수 있습니다.


추가로 콘솔의 메뉴 옵션에서 [Data Sources]를 선택한다면 존재하는 데이터 원본을 볼 수 있습니다.  이 화면 안에서 저는 원하는 대로 데이터 원본을 업데이트, 삭제 또는 추가할 수 있습니다.

다음으로 메뉴 옵션에서 [Query]를 선택하면 쿼리를 쓰고 테스팅하는 콘솔 도구로 이동합니다. 지금은 샘플 스키마를 선택했고, AWS AppSync 서비스가 저를 위해 대부분의 복잡한 작업을 처리했기 때문에 새로운 GraphQL API에 대한 쿼리를 시도해 보겠습니다.

변형을 사용하여 제 스키마의 이벤트 유형에 대한 데이터를 추가하겠습니다. 이것은 변형이고, 우선 데이터를 쓴 다음 데이터를 읽기 때문에 저는 쿼리가 이름과 위치에 대한 값을 반환하길 원합니다.

스키마의 이벤트 유형에 대해 생성된 DynamoDB 테이블로 이동하면 테이블에 성공적으로 쓰여진 제 쿼리로부터의 값을 볼 수 있습니다. 데이터 원본에서 GraphQL API 스키마를 기반으로 데이터를 쓰고 검색하는 것은 굉장히 간단한 작업이었습니다.


요약

AWS AppSync미리 보기로 사용 가능하며, iOS, Android 및 JavaScript 애플리케이션 개발을 지원합니다.   AppSync 제품 페이지에서 서비스에 대한 자세한 내용을 검토하거나 서비스 관련 AWS 설명서를 읽어보면서 자세히 알아보십시오.

Tara;

이 글은 AWS re:Invent 2017 신규 서비스 소식으로 Introducing AWS AppSync – Build data-driven apps with real-time and off-line capabilities의 한국어 번역입니다.

AWS PrivateLink 업데이트 – 자체 애플리케이션 및 서비스용 VPC 엔드포인트

이번 달 초에 Colm MacCárthaigh을 통해 여러분에게 AWS PrivateLink에 관한 소식을 전하고, 이를 사용하여 Amazon Kinesis Streams, AWS Service Catalog, EC2 Systems Manager, EC2 API, 그리고 VPC 엔드포인트를 통한 ELB API와 같은 AWS 서비스에 액세스하는 방법을 보여주었습니다. 엔드포인트(한  개 이상의 탄력적 네트워크 인터페이스 또는 ENI로 표시)는 VPC 내에 상주하고, VPC 서브넷으로부터 IP 주소를 가져오며, 인터넷이나 NAT 게이트웨이를 필요로 하지 않습니다. 이 모델은 명확하고 이해하기 쉬우며, 안전하면서도 확장까지 가능합니다!

프라이빗 연결용 엔드포인트
이제 PrivateLink 모델을 확장함으로써 여러분이 VPC 엔드포인트를 설정하고 사용하여 자체 서비스 및 다른 사람이 사용 가능하도록 한 서비스에 액세스할 수 있도록 합니다. AWS 서비스용 PrivateLink를 출시하기 전에도 이러한 기능에 대한 요청이 많았기에 굉장히 많이 사용될 것으로 예상합니다. 예를 들어 한 고객은 저희에게 수백 개의 VPC를 만들고, 각각의 VPC가 단일 마이크로서비스(자세히 알아보려면 AWS의 마이크로서비스 기술 백서 참조)를 호스팅 및 제공할 계획이라고 말했습니다.

이제 기업들은 관련 서비스를 만들어 다른 AWS 고객에 대한 판매용 프라이빗 연결을 통한 액세스용으로 제공할 수 있습니다. TCP 트래픽을 허용하는 서비스를 만들고, 이를 네트워크 로드 밸런서 뒤에서 호스팅한 다음, 직접 또는 AWS Marketplace를 통해 서비스를 사용할 수 있습니다. 새로운 구독 요청에 대한 알림을 받고 각각의 허용 또는 거부를 선택할 수 있습니다. 이 기능이 2018년에 강력하고 생동감이 넘치는 클라우드 서비스 공급자 생태계를 만드는 데 일조할 것으로 예상합니다.

서비스 공급자와  사용자는 별도의 VPC와 AWS 계정을 실행한 다음 엔드포인트를 통해 커뮤니케이션합니다. 이때 모든 트래픽은 Amazon의 프라이빗 네트워크를 통해 전송합니다. 서비스 소비자는 중첩되는 IP 주소를 걱정하거나 VPC 피어링을 처리하거나 VPC 게이트웨이를 사용할 필요가 없습니다. 또한, 클라우드 기반 애플리케이션이 온프레미스에서 실행 중인 서비스에 액세스하는 경우, 또는 그 반대의 경우를 허용하기 위해 AWS Direct Connect를 사용하여 기존 데이터 센터를 VPC 중 하나에 연결할 수 있습니다.

서비스 제공 및 사용 방법
신규 기능은  VPC API, VPC CLI 또는 AWS Management Console을 사용하여 모든 것을 설정할 수 있습니다. 이제 콘솔을 사용해서 서비스를 제공하고 활용하는 방법을 보여 드리겠습니다. 단, 시연을 목적으로 하는 것이기 때문에 하나의 AWS 계정에서 두 가지를 모두 하겠습니다.

우선 서비스 제공 방법 부터 살펴보겠습니다. 네트워크 로드 밸런서 뒤에서 실행이 되어야 하고, TCP를 통해 액세스가 가능해야 합니다. EC2 인스턴스, ECS 컨테이너, 또는 온프레미스(IP 대상으로 구성됨)에서 호스팅될 수 있으며, 예상 수준의 수요를 충족할 수 있도록 확장이 가능해야 합니다. 낮은 지연 시간과 내결함성을 위해 리전의 모든 AZ에 대상을 포함한 NLB를 사용하는 것을 권장합니다. 예로 들자면 아래와 같습니다.

VPC 콘솔을 열고 [Endpoint Services]로 이동한 다음 [Create Endpoint Service]를 클릭합니다.

NLB(이 경우에는 단 1개이지만, 2개 이상을 선택할 수 있고, 라운드 로빈 방식으로 사용자에게 매핑됩니다)를 선택합니다. [Acceptance required]를 클릭함으로써 각 요청을 기준으로 제 엔드포인트에 대한 액세스를 제어합니다.

[Create service]를 클릭하면 제 서비스가 즉시 준비됩니다.

이 서비스를 AWS Marketplace에서도 사용할 수 있도록 할 생각이라면 계속 진행하다 여기서 목록을 만들 것입니다. 이 블로그 게시물에서는 생산자도 되고 소비자도 될 것이기 때문에 이 단계는 건너뛰겠습니다. 대신 다음 단계에서 사용할 서비스 이름을 복사하겠습니다.

VPC 대시보드로 돌아가서 [Endpoints]로 이동한 다음 [Create endpoint]를 클릭합니다. [Find service by name]을 선택한 다음 서비스 이름을 붙여 넣고 [Verify]를 클릭하여 계속 진행합니다. 그런 다음 원하는 AZ와 각 AZ의 서브넷을 선택한 다음 보안 그룹을 고르고 [Create endpoint]를 클릭합니다.

엔드포인트 서비스를 만들 때 [Acceptance required]를 선택했기 때문에 연결이 수락을 대기 중입니다.

엔드포인트 서버 측(일반적으로는 별도의 AWS 계정)으로 돌아가면 대기 중인 요청을 확인하고 수락할 수 있습니다.

엔드포인트가 사용 가능한 상태가 되고, 1분 정도 이내에 사용 준비가 됩니다. 서비스를 만들고 유료 기반으로 액세스를 판매하고 있었다면 새로운 고객에 대한 더 큰 규모의 어쩌면 자동화된 온보딩 워크플로우의 일환으로 요청을 수락했을 것입니다.

사용자 측에서는 DNS 이름을 통해 저의 새로운 엔드포인트에 액세스할 수 있습니다.

AWS에서 제공하는 서비스와 AWS Marketplace에 있는 서비스는 분할-수평 DNS를 통해 액세스할 수 있습니다. 이 이름을 통해 서비스에 액세스하면 “최적의” 엔드포인트로 확인되고, 리전 및 가용 영역을 고려합니다.

Marketplace에서 활용하기
이미 언급한 대로 PrivateLink의 이 새로운 기능은 AWS Marketplace의 신규 및 기존 판매업체에 기회를 만들어 줍니다. 다음 SaaS 제품은 이미 엔드포인트로 사용 가능하며, 종류는 더 늘어날 것으로 예상합니다(시작하려면 AWS Marketplace에서의 판매 참조).

정식 출시
PrivateLink의 이 새로운 기능은 바로 오늘부터 사용할 수 있습니다!

Jeff;

이 글은 AWS re:Invent 2017의 신규 서비스로서 AWS PrivateLink Update – VPC Endpoints for Your Own Applications & Services의 한국어 번역입니다.

AWS Cloud9 정식 출시 – 클라우드 기반 통합 개발 환경(IDE)

프로그래밍을 시작할 때 무엇보다 개발 도구가 중요합니다. 단순히 메모장으로는 할 수 없고, 다양한 기능을 가진 코드 편집기와 테스트 파이프라인이 개발 생산성을 높입니다. 처음에 Vim을 배우고 시스템과 복잡한 프로그램을 번갈아 사용할 수 있었던 것이 아직도 기억납니다. 당시 새 PC에 컴파일러와 종속 라이브러리를 설치하는 데, 얼마나 많은 시간이 걸렸는지 기억합니다. 각각 버전을 맞추고, 신규 개발자가 프로젝트에 합류하도록 문서를 작성하는 데 많은 노력을 쏟기도 합니다.

이런 문제를 해결하기 위해, 오늘 웹 브라우저에서 코드 작성, 실행 및 디버깅 모두를 가능케 하는 통합 개발 환경(IDE)인 AWS Cloud9을 출시합니다. Cloud9은 주요 프로그래밍 언어(Javascript, Python, PHP, etc.)에 대한 필수 개발 도구을 미리 배포됩니다. 따라서, 다양한 컴파일러와 도구 체인을 직접 다룰 필요가 없습니다.

Cloud9은 또한 서버리스 애플리케이션 작업을 위한 완벽한 환경을 제공하므로 로컬 및 원격 테스팅 또는 디버깅을 빠르게 전환할 수 있습니다. 인기 오픈 소스인 Ace Editor와 c9.io IDE(작년에 도입)를 기반으로 하는 AWS Cloud9은 매우 강력한 페어 프로그래밍 기능을 통해 협업 클라우드 개발을 손쉽게 하도록 설계되었습니다. 이 글에서 다루기에는 기능이 너무나 많지만, IDE에서 필요한 3가지 요소인 코드 편집, AWS 통합, 그리고 협업 기능에 대해 소개합니다.

코드 편집


Cloud9 기능의 핵심인 Ace Editor를 통해 코드를 빠르고 쉽게 작성할 수 있습니다. 한 가지를 잘하자는 UNIX의 철학을 따르는데, 바로 소스 코드 작성입니다.

여러분이 예상하는 일반적인 IDE 기능을 모두 갖추고 있습니다. 실시간 구문 확인, 자동 들여쓰기, 자동 완료, 코드 폴딩, 분할 창, 버전 제어 통합, 다중 커서 및 선택 등입니다. 특히, 대규모 파일(10만 개 이상 행) 로딩도 빠릅니다. 입력 시 랙이나 다른 문제가 없습니다. 20개 이상의 테마가 내장되어 있어 Sublime Text나 TextMate에서 좋아하는 모든 테마를 가져올 수 있습니다. 40개 이상의 언어 모드와 프로젝트에 대해 사용자 지정이 가능한 실행 구성이 내장되어 있습니다. 그리고, 무엇보다 중요한 것은 Vim 모드가 있다는 것으로 (또는 손가락만 잘 움직인다면 emacs 가용 가능) 원하는 대로 편집기를 움직이도록 하는 키 결합 편집기도 있습니다.

편집기는 강력한 키보드 탐색과 명령을 지원합니다(Sublime Text 또는 ctrlp와 같은 vim 플러그인과 유사). Mac에서 ⌘+P를 통해 퍼지 검색을 사용하여 환경에서 모든 파일을 열 수 있습니다. 포함 ⌘+. 이름 입력을 통해 모든 편집기 명령을 호출하도록 할 수 있는 명령 창을 열 수 있습니다. 창에서 명령에 대한 키 결합이 표시되어 유용합니다. 예를 들어 다음을 누르면 터미널을 열 수 있습니다. ⌥+T. 참, 터미널이 있다는 얘기를 했나요? 리소스 액세스에 대한 AWS CLI 사전 구성에 포함되어 있습니다.

또한 환경에는 자주 사용되는 여러 언어에 대한 사전 설치된 디버깅 도구가 포함됩니다. 하지만 이미 설치된 것만 사용하도록 제한된 것은 아닙니다. 새 프로그램을 추가하고 새로운 실행 구성을 정의하기 쉽습니다.

AWS 서비스와의 통합

AWS Cloud9 IDE는 최초의 IDE로 진정한 “클라우드 네이티브”입니다. 서비스는 추가 요금 없이 제공되며, 기본 컴퓨팅 및 스토리지 리소스에 대한 요금만 지불하면 됩니다. 개발 환경을 생성하면, 인스턴스 유형 및 자동 최대 절전 시간, 또는 선택하는 머신에 대한 SSH 액세스에 대한 설정 정보가 표시됩니다.

AWS에서 실행 중인 경우, 자동 최대 절전 기능을 통해 IDE 사용을 중단하는 즉시 인스턴스를 중단합니다. 개발자 데스크탑을 실행하는 데 비해 비용 절감이 매우 클 수 있습니다. 또한, VPC 내에서 이를 시작하여 클라우드 내부 개발 리소스에 대한 안전한 접근을 제공할 수 있습니다. AWS 외부 또는 기존 인스턴스에서 Cloud9을 실행하고자 하는 경우 서비스에 대한 SSH 액세스를 제공하여 외부 머신에 환경을 생성할 수 있습니다. AWS 계정에 대한 안전한 자동 액세스를 통해 환경이 프로비저닝되므로 자격 증명 (키페어) 복사 문제를 걱정할 필요가 없습니다. 다시 한 번 말씀 드리지만 어디서나 개발 환경을 실행할 수 있습니다.

AWS Cloud9을 통한 서버리스 개발

그동안 Twitch에서 서버리스 애플리케이션 개발에 대한 라이브 코딩을 많이 진행했는데, 배포한 Lambda 함수와 API가 수백 개는 됩니다. Cloud9은 이러한 모든 함수를 통한 작업을 정말 유쾌하게 만듭니다. 어떻게 그렇게 되는지 보여드리겠습니다.

편집기의 오른쪽 상단을 보면 [AWS Resources] 탭이 보입니다. 이를 열면 리전의 모든 Lambda 함수를 볼 수 있습니다(AWS 기본 설정 창에서 리전 기본 설정을 조정하면 다른 리전의 함수를 볼 수 있습니다).

두 번 클릭하면 이러한 원격 함수를 로컬 작업 영역으로 가져올 수 있습니다. 이를 통해 서버리스 애플리케이션의 편집, 테스트 및 디버그를 모두 로컬에서 수행할 수 있습니다.

새로운 애플리케이션 및 함수 또한 손쉽게 만들 수 있습니다. 창 오른쪽 상단에 있는 Lambda 아이콘을 클릭하면 새로운 Lambda 함수를 생성하라는 메시지가 표시되고, Cloud9이 자동으로 Serverless Application Model 템플릿을 생성합니다.

IDE에는 사전 설치된 인기 SAM 로컬 도구에 대한 지원이 포함됩니다. 제 로컬 테스팅 및 서버리스 개발에서 가장 많이 사용하는 것입니다. 터미널이 있기 때문에 추가 도구를 설치하고 기타 서버리스 프레임워크를 사용하기 쉽습니다.

AWS CodeStar에서 환경 시작

AWS CodeStar를 통해 AWS 개발을 위한 엔드 포인트간 간 지속적 배포(CI/CD)을 프로비저닝할 수 있습니다. Codestar는 AWS CodeCommit, CodeBuild, CodePipelineCodeDeploy 서비스 제품군을 사용한 애플리케이션 빌드, 테스팅, 배포 및 관리에 대한 통합 환경을 제공합니다.

이제 클릭 몇 번만으로 Cloud9 환경을 프로비저닝하여 애플리케이션을 개발할 수 있습니다. 환경은 이미 체크아웃된 CodeStar 애플리케이션과 이미 구성된 git 자격 증명에 대한 코드로 사전 구성됩니다.

동료들과 이 환경을 손쉽게 공유할 수 있고, 이를 통해 또 다른 유용한 기능 세트 사용으로도 이어집니다.

동료와 협업 기능

다른 편집기와 차별화되는 AWS Cloud9의 여러 특성 중 하나가 풍부한 협업 도구입니다. 클릭 몇 번만으로 IAM 사용자를 환경으로 초대할 수 있습니다.

어떤 파일을 작업 중인지, 커서가 어디에 있는지를 볼 수 있고, 터미널을 공유할 수도 있습니다. 채팅 기능 또한 유용합니다.

알아야 할 것들

  • 기본 컴퓨팅 및 스토리지를 제외하고 이 서비스에 대한 추가 요금은 없습니다.
  • c9.io는 계속해서 기존 사용자를 대상으로 실행됩니다. c9.io의 모든 기능을 계속 사용할 수 있고, 팀 계정이 있다면 새로운 팀 구성원을 추가할 수 있습니다. 향후에는 c9.io 작업 영역에서 AWS Cloud9로의 손쉬운 마이그레이션을 위한 도구를 제공할 예정입니다.
  • AWS Cloud9은 미국 서부(오레곤), 미국 동부(오하이오), 미국 동부(버지니아 북부), EU(아일랜드), 아시아 태평양(싱가포르) 리전에서 사용할 수 있습니다.

AWS Cloud9을 사용하여 여러분이 개발한 것을 보고 싶습니다!

Randall;

이 글은 AWS re:Invent 2017의 신규 서비스로서 AWS Cloud9 – Cloud Developer Environments 의 한국어 번역입니다.

Amazon SageMaker 출시 – 머신 러닝 기반 서비스 가속화

머신 러닝은 많은 스타트업 및 대기업을 위한 중추적 기술입니다. 수십 년간의 투자와 발전에도 불구하고 머신 러닝 모델을 개발 및 학습하고 유지하는 것은 여전히 다루기 힘들고 까다로운 일입니다. 일반적으로 머신 러닝을 애플리케이션에 통합하는 프로세스에는 전문가 팀이 수개월 동안 불일치 설정을 조정하고 수정하는 과정이 포함됩니다. 기업과 개발자들이 원하는 것은 개발부터 실제 운영까지의 총체적인 파이프라인입니다.

Amazon SageMaker 소개

Amazon SageMaker는 데이터 과학자, 개발자, 머신 러닝 전문가가 모든 규모의 머신 러닝 모델을 간편하게 만들어 학습 및 배포할 수 있는 총체적인 종합 관리형 서비스입니다. 이 서비스는 머신 러닝을 위한 모든 작업의 능률을 대폭 높여 주므로 머신 러닝을 실제 운영 애플리케이션에 신속하게 추가할 수 있습니다.

Amazon SageMaker의 3가지 주요 구성 요소는 다음과 같습니다.

  • 노트북 기반 코딩: 설정 작업이 필요 없는 호스팅형 Jupyter 노트북 IDE로서, 데이터 탐색, 정리 및 사전 처리를 수행합니다. 이러한 IDE를 일반 인스턴스 유형이나 GPU 구동 인스턴스에서 실행할 수 있습니다.
  • 모델 학습: 배포된 모듈 구축, 학습 및 확인 서비스. 기본으로 제공되는 지도(supervised) 및 비지도(unsupervised) 학습 알고리즘과 프레임워크를 사용하거나, 도커 컨테이너를 사용하여 학습을 직접 만들 수 있습니다. 이 학습은 모델 구축 속도를 높이기 위해 수십 개의 인스턴스로 확장할 수 있습니다. 학습 데이터를 S3에서 읽어와서 모델 결과물이 S3에 저장됩니다. 이 모델 결과물은 데이터에 종속된 모델 파라미터이며, 모델에서 추론할 수 있는 코드가 아닙니다. 이렇게 구분되기 때문에 Amazon SageMaker 학습 모델을 IoT 디바이스 같은 다른 플랫폼에 쉽게 배포할 수 있습니다.
  • 모델 호스팅: 모델을 호출하여 실시간 추론을 받기 위한 HTTPs 엔드포인트 모델 호스팅 서비스. 이러한 엔드포인트는 트래픽을 지원하도록 확장할 수 있으며 여러 모델에 대해 동시에 A/B 테스트를 수행할 수 있습니다. 또한 기본 제공되는 SDK를 사용하여 이러한 엔드포인트를 생성하거나, 도커 이미지를 사용하여 구성을 직접 제공할 수 있습니다.

이러한 구성 요소를 별개로 사용할 수 있기 때문에 Amazon SageMaker를 사용하면 기존 파이프라인의 공백을 쉽게 채울 수 있습니다. 즉, 서비스를 전체적으로 이용할 때 사용할 수 있는 몇 가지 강력한 기능이 있습니다.

SageMaker 사용

Apache MXNet 기반 이미지 분류자를 만들어 학습하고 배포하려 합니다. Gluon 언어, CIFAR-10 데이터 세트, ResNet V2 모델 아키텍처를 사용하겠습니다.

Jupyter 노트북을 사용하여 저작


노트북 인스턴스를 만들 경우 이 인스턴스는 딥 러닝에서 일반적인 Anaconda 패키지 및 라이브러리와 함께 제공된 ML 컴퓨팅 인스턴스를 실행하고, 5GB ML 스토리지 볼륨 및 다양한 알고리즘을 보여주는 몇 가지 예제 노트북을 실행합니다. 리소스에 간편하고 안전하게 액세스할 수 있도록 하기 위해 VPC에 ENI를 생성하는 VPC 지원을 선택적으로 구성할 수도 있습니다.

인스턴스가 프로비저닝되면 노트북을 열고 코드 작성을 시작할 수 있습니다.

모델 학습

간결하게 하기 위해 여기서는 실제 모델 학습 코드를 생략할 것이지만, 일반적으로 모든 종류의 Amazon SageMaker 공통 프레임워크 학습의 경우 다음과 같은 간단한 학습 인터페이스를 구현할 수 있습니다.

def train(
    channel_input_dirs, hyperparameters, output_data_dir,
    model_dir, num_gpus, hosts, current_host):
    pass

def save(model):
    pass

Amazon SageMaker 인프라의 ml.p2.xlarge 인스턴스 4개에 배포된 학습 작업을 생성하려고 합니다. 로컬에 필요한 모든 데이터를 이미 다운로드했습니다.

import sagemaker
from sagemaker.mxnet import MXNet
m = MXNet("cifar10.py", role=role, 
          train_instance_count=4, train_instance_type="ml.p2.xlarge",
          hyperparameters={'batch_size': 128, 'epochs': 50, 
                           'learning_rate': 0.1, 'momentum': 0.9})

모델 학습 작업을 만들었으므로 이제 다음을 호출하여 데이터를 제공할 수 있습니다. m.fit("s3://randall-likes-sagemaker/data/gluon-cifar10").

작업 콘솔로 이동하면 작업이 실행 중임을 볼 수 있습니다.

호스팅 및 실시간 추론

모델 학습이 완료되었으므로 이제 예측 생성을 시작할 수 있습니다. 위와 동일한 코드를 사용하여 엔드포인트를 만들고 실행하겠습니다.


predictor = m.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge')

그런 다음 엔드포인트를 호출하는 것은 실행하는 것만큼 간단합니다. predictor.predict(img_input)!

100줄도 안 되는 코드에 머신 러닝 파이프라인이 완성되었습니다.

이제 Amazon SageMaker의 모델 호스팅 구성 요소를 어떻게 사용할 수 있는지를 보여주는 예제를 한 가지 더 살펴보겠습니다.

사용자 지정 도커 컨테이너 사용

Amazon SageMaker는 학습 알고리즘이나 추론 컨테이너를 직접 쉽게 작성할 수 있는 도커 컨테이너용의 간단한 사양을 정의합니다.

여기에서 설명한 아키텍처를 기반으로 하는 기존 모델이 있으며, 실시간 추론을 위해 이 모델을 호스팅하려고 합니다.

추론을 수행할 간단한 Dockerfile과 flask 앱을 만들었습니다.

모델을 불러와 예측을 생성하는 코드는 각각 다를 것이기 때문에 여기서는 생략했습니다. 기본적으로, 입력 URL에서 이미지를 다운로드하여 이 이미지 데이터를 예측용 MXNet 모델에 전달하는 메서드를 만들었습니다.

from flask import Flask, request, jsonify
import predict
app = Flask(__name__)

@app.route('/ping')
def ping():
    return ("", 200)

@app.route('/invocations', methods=["POST"])
def invoke():
    data = request.get_json(force=True)
    return jsonify(predict.download_and_predict(data['url']))

if __name__ == '__main__':
    app.run(port=8080)
FROM mxnet/python:latest
WORKDIR /app
COPY *.py /app/
COPY models /app/models
RUN pip install -U numpy flask scikit-image
ENTRYPOINT ["python", "app.py"]
EXPOSE 8080

이 이미지를 ECR에 넣은 후 Amazon SageMaker의 모델 콘솔로 이동하여 새 모델을 만듭니다.

새 모델을 만든 후 엔드포인트도 할당하겠습니다.

이제 AWS Lambda 또는 다른 애플리케이션에서 직접 엔드포인트를 호출할 수 있습니다. 트위터 계정을 설정하여 이 모델을 공개하고 있습니다. 이 모델이 위치를 추정할 수 있는지 보려면 @WhereML에 사진을 트윗해 보십시오.

import boto3
import json
sagemaker = boto3.client('sagemaker-runtime')
data = {'url': 'https://pbs.twimg.com/media/DPwe4kMUMAAWCd_.jpg'}
result = sagemaker.invoke_endpoint(
    EndpointName='predict',
	Body=json.dumps(data)
)

사용 요금

AWS 프리 티어를 사용하는 고객은 Amazon SageMaker를 무료로 시작할 수 있습니다. 첫 두 달 동안은 매달 250시간의 t2.medium 노트북 사용량, 학습을 위한 50시간의 m4.xlarge 사용량, 호스팅을 위한 125시간의 m4.xlarge 사용량이 제공됩니다. 프리 티어 후에는 리전별로 요금이 다르지만 초 단위 인스턴스 사용량, GB 기준 스토리지 사용량, GB 기준 데이터 전송량(서비스 송수신)으로 청구됩니다.

올해 re:Invent를 위한 블로그 게시물을 작성하기 전에는 최고를 선택하지 말라고 Jeff가 그러더군요. 맞는 말이었습니다. 정말 대단한 몇 가지 출시 중에서도 Amazon SageMaker는 제게 있어 re:Invent 2017의 최고 서비스입니다. 우리 고객들이 이렇게 놀라운 도구를 사용하여 어떤 것을 수행해 낼 수 있을지 정말 기대됩니다.

Randall;

이 글은 AWS re:Invent 2017의 신규 서비스로서 Amazon SageMaker – Accelerating Machine Learning의 한국어 번역입니다.

Amazon EC2 업데이트 – 손 쉬운 스팟 용량 접근 및 가격 변경, 인스턴스 최대 절전 기능 등

EC2 스팟 인스턴스를 통해 AWS 클라우드에서 컴퓨팅 파워를 아낄 수 있습니다. 고객들은 스팟 인스턴스 집합을 사용하여 CI/CD 환경 및 트래픽 생성기, 웹 서버 및 마이크로서비스 호스팅, 영화 렌더링을 구동하고, 많은 유형의 분석 작업을 실행합니다. 그리고 이 모든 것을 온디맨드 인스턴스와 비교하여 크게 절감된 가격으로 실행합니다.

간소화된 접근 방법
오늘은 새롭게 간소화된 스팟 인스턴스 액세스 모델을 소개하겠습니다. 다음을 통해 인스턴스를 시작할 때 스팟 용량을 사용하고 싶어하는 마음이 있을 것입니다. RunInstances 함수, run-instances 명령 또는 AWS 관리 콘솔을 통해 용량을 사용할 수 있는 동안 이행될 요청을 제출하고 싶을 것입니다. 별도의 수고 없이 인스턴스 유형에 대해 온디맨드 가격의 최대 90%를 절감한다면 동일한 예산으로 전체적인 애플리케이션 처리량을 최대 10배 늘릴 수 있는 셈입니다. 이렇게 시작한 인스턴스는 직접 종료하거나 EC2가 이를 온디맨드 사용으로 회수할 때까지 계속해서 실행될 것입니다. 이럴 경우 인스턴스가 일반적으로 2분의 경고가 주어진 다음 회수되기에 애플리케이션 내결함성에 있어 매우 적절합니다.

스팟 시장, 입찰 및 독립 실행형 비동기식 API에 대한 이해가 필요한 이전 모델과는 달리 새로운 모델은 동기식이고 온디맨드만큼 사용하기 쉽습니다. 코드와 스크립트가 인스턴스 ID를 즉시 받고, 요청이 처리 및 수락되었는지 여부를 재확인할 필요가 없습니다.

우리는 이를 최대한 명확하고 간단하게 만들었기 때문에 스팟 용량을 요청하고 사용할 많은 현재 스크립트 및 애플리케이션을 수정하기 쉬울 것으로 기대합니다. 스팟 인스턴스 예산에 대한 추가적인 통제를 행사하고자 한다면 용량 요청을 할 때 최고 가격을 지정하는 옵션이 있습니다. 스팟 용량을 사용하여 Amazon EMR, Amazon ECS 또는 AWS Batch 클러스터를 구동하거나 AWS CloudFormation 템플릿 또는 Auto Scaling 그룹을 통해 스팟 인스턴스를 시작하는 경우 어떠한 변화 없이 이 새로운 모델의 이점을 누릴 수 있습니다.

애플리케이션이 RequestSpotInstances 또는 RequestSpotFleet 를 중심으로 빌드되는 경우 어떠한 변화 없이 계속해서 작동합니다. 하지만 이제 다음 파라미터가 포함되지 않는 요청을 만들 수 있는 옵션이 있습니다. SpotPrice 파라미터입니다.

손쉬운 스팟 가격 변경
오늘 출시의 일환으로 스팟 가격의 변경 방식을 바꾸어 가격이 공급 및 수요의 장기적 추세를 기반으로 점진적으로 변하는 모델로 이동합니다. 앞서 언급한 대로 계속해서 온디맨드 가격의 평균 70~90%를 절감하고, 인스턴스가 실행 중인 기간 동안 적용되는 스팟 가격을 지불하면 됩니다. 스팟 집합 기능을 중심으로 빌드된 애플리케이션은 집합을 생성할 때 지정한 구성을 기반으로 하는 가장 비용 효율적인 풀 전체의 스팟 인스턴스 배치를 자동적으로 다양화합니다.

스팟 실행
명령줄에서 스팟 인스턴스를 시작하려면 스팟 시장을 지정하면 됩니다.

$ aws ec2 run-instances –-market Spot --image-id ami-1a2b3c4d --count 1 --instance-type c3.large 

인스턴스 최대 절전
많은 인 메모리 상태를 유지하는 워크로드를 실행한다면 이 기능이 마음에 드실 것입니다!

인스턴스가 회수될 때에도 인 메모리 상태를 저장하도록 조정하여 용량을 다시 사용할 수 있을 때 인스턴스와 인스턴스에 있는 애플리케이션이 중단된 지점에서 다시 시작하도록 할 수 있습니다. 마치 노트북을 닫았다가 다시 열어서 사용하는 것처럼 말이죠. 이 기능은 Amazon Linux, Ubuntu 또는 Windows Server를 실행하는 C3, C4, 그리고 특정 크기의 R3, R4 및 M4 인스턴스에서 작동하며, EC2 최대 절전 에이전트의 지원을 받습니다.

인 메모리 상태는 인스턴스 시작 시 별도로 확보된 공간을 사용하여 인스턴스의 루트 EBS 볼륨에 기록됩니다. 프라이빗 IP 주소와 탄력적 IP 주소 또한 중지/시작 주기에 걸쳐 유지됩니다.

Jeff;

이 글은 AWS re:Invent 2017 신규 서비스 소식으로 Amazon EC2 Update – Streamlined Access to Spot Capacity, Smooth Price Changes, Instance Hibernation의 한국어 번역입니다.