Amazon Web Services 한국 블로그

AWS DeepLens – 딥러닝 실습을 위한 동영상 카메라

개발자에게 평생 학습은 매우 중요합니다. 기술 변화는 빠르게 일어나고 있으며, 그러한 변화에 뒤쳐지지 않으려면 학습은 필수적입니다.과거 오랜 기간 동안 인공 지능은 학문적인 주제였지만, 지금은 실질적인 적용과 실제 배포가 중요한 시대가 되었습니다.

컴퓨터 비전딥 러닝을 비롯하여 머신 러닝의 실제 적용 사례를 고려했을 때, 기술적인 성숙 단계에 들어섰으며, 이제 실제 경험을 쌓고 기술을 연마하기 시작할 때라고 말할 수 있습니다. 컴퓨터 비전과 딥 러닝은 모두 최신 기술이고 구상하는 데 시간이 훨씬 덜 걸리지만, IoT서버리스 컴퓨팅은 개발의 일부이므로 반드시 고려해야 합니다.

새로운 AWS DeepLens
오늘은 현장에서 사용하는 인터넷 디바이스에서 직접 딥 러닝 모델을 실행하는 새로운 비디오 카메라인 AWS DeepLens에 대해 살펴보고자 합니다. 이를 통해 실전 앱을 구축함과 동시에 AI, IoT 및 서버리스 컴퓨팅에 대한 실제 경험을 쌓을 수 있습니다. AWS DeepLens는 최첨단 하드웨어와 정교한 온보드 소프트웨어를 결합하여 앱에서 AWS Greengrass, AWS Lambda 및 여러 AWS AI와 인프라 서비스를 활용할 수 있게 합니다.

먼저 하드웨어 구성에 대해 많은 노력을 쏟았습니다. 1080P 비디오를 캡처할 수 있는 4메가픽셀 카메라와 함께 2D 마이크, Intel Atom® Processor는 100기가플롭 이상의 컴퓨팅 파워를 제공하며, 온보드 딥 러닝 모델을 통해 1초에 수십 개의 수신 비디오 프레임을 실행할 수 있습니다. DeepLens는 이중 밴드 Wi-Fi, USB 및 마이크로 HDMI 포트를 통해 잘 연결됩니다. 요약하면 사전 훈련을 받은 모델과 코드를 위한 8기가바이트 메모리가 이를 강력하면서도 간단한 디바이스입니다.

소프트웨어를 살펴보면 AWS DeepLens는 Ubuntu 16.04를 실행하며, Greengrass Core(Lambda 런타임, 메시지 관리자 )가 미리 로드되어 있습니다. 또한 디바이스에 최적화된 MXNet 버전이 있고, TensorFlowCaffe2 등의 기타 프레임워크를 사용할 수도 있습니다. Intel® clDNN 라이브러리는 컴퓨터 비전 및 기타 AI 워크로드를 위한 딥 러닝 프리미티브 세트를 제공하며, Intel Atom® 프로세서의 특수 기능을 활용하여 추론 기능을 가속화합니다.

테스트를 진행 할 수 있는 데이터도 제공합니다. AWS DeepLens에서 실행되는 앱을 구축할 때 이미지 감지 및 인식을 위한 사전 훈련을 받은 모델 세트를 활용할 수 있습니다. 이러한 모델을 통해 고양이와 개, 얼굴, 가정 및 일상에서 사용하는 다양한 물체, 모션과 동작은 물론 심지어 핫도그까지 감지할 수 있습니다. 이러한 모델을 계속 훈련하여 앞으로 점점 더 진화되도록 만들 예정입니다. 다음은 초기 모델 세트입니다.

이러한 모든 하드웨어, 소프트웨어 및 데이터가 한데 모여 AWS DeepLens를 엣지 디바이스  사례로 활용 가능합니다. 현장에서 다양한 외부 행동을 감지하여 온보드 딥 러닝 모델을 통해 수신 비디오와 오디오를 지연 시간이 거의 없이 신속하게 실행할 수 있으며, 보다 컴퓨팅 집약적인 높은 수준의 처리를 위해 클라우드를 활용할 수 있습니다. 예를 들어, DeepLens에서 얼굴 감지를 수행한 후 Amazon Rekognition에서 얼굴 감지를 처리하게 할 수 있습니다.

수많은 샘플 코드(Lambda 함수)를 통해 실제 서비스 환경에서 배포할 수 있습니다. AWS DeepLens는 디바이스별 고유 인증서와 IAM으로 구동되는 AWS 서비스 및 리소스에 대한 세분화된 액세스 제어를 제공하는 강력하고 안전한 디바이스입니다.

사용 절차 1 – 디바이스 등록
여러분이 디바이스를 가지고 있다면 어떻게 사용 가능한지 절차를 알아봅니다. 먼저 DeepLens 콘솔에서 디바이스를 등록을 시작하는 프로세스를 살펴보겠습니다. 콘솔에서 [Register device]를 클릭합니다.

그런 다음 카메라 이름을 입력하고 [Next]를 클릭합니다.

그런 다음 [Download certificate]를 클릭하고 이를 안전한 곳에 저장합니다.

다음으로 필요한 IAM 역할을 만들고(콘솔에서 쉽게 할 수 있음), 적절한 메뉴에서 각 역할을 선택합니다.

이제 DeepLens를 실습할 준비가 됩니다. 랩톱 전원을 켜고 디바이스의 네트워크에 연결한 후, 내장 포털에 액세스하여 프로세스를 완료합니다. 콘솔에서 다음 단계를 간략히 설명합니다.

이때 DeepLens는 완전히 작동하는 엣지 디바이스입니다. 디바이스의 인증서를 통해 AWS에 서명된 안전한 호출을 할 수 있습니다. Greengrass Core가 실행 중이고, 수락할 준비가 되었으며, Lambda 함수를 실행합니다.

DeepLens 프로젝트 생성
모두 연결 및 설정되었으면 첫 번째 프로젝트를 생성할 수 있습니다. [Projects]로 이동하고 [Create new project]를 클릭합니다.

그런 다음 프로젝트 템플릿을 선택하거나 빈 프로젝트로 시작합니다. [cat and dog recognition]을 선택해 보겠습니다. 선택한 후 [Next]를 클릭합니다.

콘솔에서 프로젝트의 이름을 지정하고 사용자 지정할 수 있습니다. 보시다시피 이 프로젝트는 Lambda 함수와 위에서 나열한 사전 훈련을 받은 모델 중 하나를 참조합니다. 기본값이 모두 괜찮으므로 [Create]를 클릭합니다.

이제 카메라에 프로젝트를 배포합니다.

개와 고양이 학습 데이터 처리
이 함수는 카메라에서 실행되고, MQTT 주제에 출력이 게시됩니다. 다음은 cat and dog recognition 함수의 내부 루프에서 발췌한 것입니다(처리 중인 일부 오류 제거).

while doInfer:
    # Get a frame from the video stream
    ret, frame = awscam.getLastFrame()
    numFrames += 1

    # Resize frame to fit model input requirement
    frameResize = cv2.resize(frame, (224, 224))

    # Run model inference on the resized frame
    inferOutput = model.doInference(frameResize)

    # Publish a message to the cloud for every 100 frames
    if numFrames >= 10:
        msg = "Infinite inference is running. Sample result of the last frame is\n"
        # Output inference result of the last frame to cloud
        # The awsca module can parse the output from some known models
        outputProcessed = model.parseResult(modelType, inferOutput)

        # Get top 5 results with highest probiblities
        topFive = outputProcessed[modelType][0:2]
        msg += "label    prob"
        for obj in topFive:
            msg += "\n{}   {}".format(outMap[obj["label"]], obj["prob"])

        client.publish(topic=iotTopic, payload=msg)
        numFrames = 0;

말한 바와 같이 이를 수정하거나 처음부터 시작할 수 있습니다. 보시다시피 매우 손쉽게 시작할 수 있습니다.

여러분이 직접 DeepLens를 사용해 보면 어떤 결과가 나올지 정말 궁금합니다. 자세히 알아보고 집에서 AWS DeepLens를 연습해 보려면 AWS re:Invent에서 16개의 DeepLens 워크숍 중 하나에 꼭 참석하십시오.

사전 주문하기
2018년에 미국에서 처음으로 AWS DeepLens 배송을 시작할 예정입니다. 가격 및 구매 가능 여부에 대해 자세히 알아보거나 사전 주문하려면 DeepLens 페이지를 참조하십시오.

Jeff;

이 글은 AWS re:Invent 2017 신규 서비스 소식으로 AWS DeepLens – Get Hands-On Experience with Deep Learning With Our New Video Camera의 한국어 번역입니다.

Amazon Rekognition Video 출시 – 딥 러닝 기반 동영상 장면 인식 기능

작년 이맘때 쯤 re:Invent 2016에서 Amazon Rekognition 서비스를 발표했습니다. 당시 공개된 Amazon Rekognition Image는 딥 러닝을 사용하여 확장 가능한 이미지 인식 및 분석을 제공하는 클라우드 서비스입니다. Amazon Rekognition Image를 통해 객체 및 장면 감지, 실시간 얼굴 인식, 유명 인사 인식, 이미지 조정은 물론 텍스트 인식을 구축하고 애플리케이션과 시스템에 통합할 수 있습니다.

Amazon Rekognition 이미지 서비스는 딥 러닝 신경망 모델을 사용하여 만들어졌고, Prime Photos에서 매일 수십억 개의 이미지를 분석할 수 있도록 하는 것과 동일한 기술을 기반으로 합니다. Rekognition을 공개할 당시 일차적으로 역점을 둔 것은 이미지에 대한 확장 가능한 자동화된 분석, 검색 및 분류를 제공하는 것이었습니다. 그러한 기본 기능을 바탕으로 추가적인 기능을 발표합니다.

Amazon Rekognition Video 공개

Amazon Rekognition Video는 확장 가능한 컴퓨터 비전 분석을 S3에 저장된 비디오는 물론 라이브 비디오 스트림에 도입하는 새로운 비디오 분석 서비스 기능입니다.

Rekognition video를 통해 비디오에서 수천 개의 객체, 얼굴 및 콘텐츠를 정확하게 감지, 추적, 인식, 추출 및 조정할 수 있습니다. 이 새로운 기능은 비디오 내의 객체에 대한 정확한 정보를 제공할 뿐만 아니라, 비디오의 시각적 개체, 시간 및 모션 등의 맥락을 사용하여 활동 감지와 인물 추적을 수행하는 최초의 비디오 분석 서비스를 구현한다는 점에서 더욱 돋보입니다.

이러한 딥 러닝 기반 기능을 사용하여 비디오에서 수행되는 활동에 대한 더 완벽한 통찰을 이끌어낼 수 있습니다. 예를 들어 이 서비스 기능은 비디오에 사람, 차, 나무가 있음을 식별할 수 있을 뿐만 아니라, 비디오에서 사람이 차 쪽으로 달리고 있음을 추론할 수 있습니다. 이 기능을 통해 사용자에게 제공할 수 있는 다양한 서비스 시나리오를 상상해 볼 수 있습니다.

비동기식 Amazon Rekognition Video API를 사용하여 비디오 분석을 수행하는 프로세스는 다음과 같습니다.

  1. Rekognition Video Start 작업 API는 .mp4 또는 .mov 비디오에서 호출됩니다. 비디오는 H.264 코덱으로 인코딩해야 합니다. Start 작업 API는 다음과 같습니다.
    • StartPersonTracking
    • StartFaceDetection
    • StartLabelDetection
    • StartCelebrityRecognition
    • StartContentModeration
  2. Amazon Rekognition Video는 비디오를 처리하고, Amazon SNS 주제에 start 작업 API 요청의 완료 상태를 게시합니다.
  3. Amazon SQS 대기열 또는 AWS Lambda 함수에서 지정한 SNS 주제를 구독하여 API 완료 결과에 대한 알림을 검색합니다.
  4. SNS 알림에 제공된 JobID를 사용하여 비디오를 처리한 Start 작업 API와 연결된 Get 작업 API를 호출합니다. 이 JobID는 Start API 응답의 일부로도 제공됩니다. Get 작업 API는 다음과 같습니다.
    • GetPersonTracking
    • GetFaceDetection
    • GetLabelDetection
    • GetCelebrityRecognition
    • GetContentModeration
  5. Get 작업 API에서 반환된 JSON을 통해 비디오 분석 결과와 해당되는 경우 다음 번 결과 모음에 대한 페이지 매김 토큰을 검색합니다.

AWS CLI, AWS SDK 및/또는 REST API를 사용하여 Amazon Rekognition Video의 비디오 분석 기능을 활용할 수 있습니다. 새로운 서비스에 대해 배우려면 직접 뛰어들어 해보는 것보다 더 좋은 방법은 없습니다. 그런 의미에서 직접 해보겠습니다.

우선, Run by Foo Fighters와 Wild Thoughts by DJ Khaled라는 .mp4 파일 형식의 뮤직 비디오 두 개를 제 S3 노래 버킷에 업로드하여 시작하겠습니다. 이 노래들은 재생 목록에서 돌아가면서 재생됩니다. 제 음악적 취향은 폭넓고 다양합니다.

Rekognition Video의 알림에 대한 SNS 주제와 SNS 주제에서 알림을 받을 SQS 대기열을 만들겠습니다.


이제 내 SQS 대기열 RekognitionVideoQueue에서 내 SNS 주제 SNS-RekogntionVideo-Topic을 구독할 수 있습니다.


이제 AWS CLI를 사용하여 내 비디오 DJ_Khaled-Wild_Thoughts.mp4에 대해 start-face-detection API 작업을 호출하고, 이 API 응답에서 내 JobId를 가져오겠습니다.

SNS 주제에서 내 RekognitionVideoQueue SQS 대기열로 메시지가 수신되었다는 알림을 받고 해당 메시지의 StatusSUCCEEDED이면, get-face-detection API 작업을 호출하여 JobId로 비디오 분석 결과를 가져올 수 있습니다.


또한 start-label-detectionget-label-detection API 작업을 호출하고 내 다른 비디오인 Foo_Fighters-Run.mp4에 대한 비디오 분석을 수행하여 해당 비디오의 프레임에서 감지된 객체에 대한 정보를 가져올 수 있습니다.

요약

이제 Rekognition Video를 통해 휴대폰, 카메라, IoT 비디오 센서 및 실시간 라이브 스트림 비디오 처리로 캡처된 비디오를 사용하여 확장 가능하고 정확도가 높은 비디오 분석 솔루션을 만들 수 있습니다. 이 새로운 딥 러닝 비디오 기능은 비디오에서 객체, 얼굴 및 활동을 감지하는 데 필요한 모든 작업을 자동화하며, 다른 AWS 서비스 통합을 통해 다양한 워크로드에 적합한 강력한 미디어 애플리케이션을 구축할 수 있습니다.

Amazon Rekognition 및 새로운 Rekognition Video 기능에 대해 자세히 알아보려면 해당 제품 페이지의 시작하기 단원 또는 AWS 설명서의 Rekognition 개발자 안내서를 확인하십시오.

Tara;

이 글은 AWS re:Invent 2017 신규 서비스 소식으로 Welcoming Amazon Rekognition Video: Deep-Learning Based Video Recognition 의 한국어 번역입니다.

T2 무제한(Unlimited) 기능 – 피크에도 고성능 컴퓨팅 활용하기

2014년 여름에 T2 인스턴스에 대해 처음으로 소개하고, 대부분 IT 업무에서 지속적인 컴퓨팅 파워가 크게 요구되지 않고 가끔 더 많은 컴퓨팅이 필요할 때 사용할 수 있는 이제 버스팅 모델을 선보였습니다. T2 인스턴스는 현재 인기가 매우 높아져서 마이크로 서비스, 지연 시간이 짧은 대화형 애플리케이션, 가상 데스크톱, 빌드 및 스테이징 환경, 프로토타입 등을 호스팅하는 데 사용되고 있습니다.

신규 T2 무제한(Unlimited) 기능 출시
오늘 T2에서 제공하는 버스트 모델을 확장하여, 이제 최대한 낮은 비용으로 원하는 기간 동안 높은 CPU 성능을 유지할 수 있는 기능을 추가합니다. 사용하시려면 인스턴스를 시작할 때, 이 기능을 활성화하면 되고, 이미 실행 중인 인스턴스에 대해 이 기능을 활성화할 수도 있습니다. 24시간 동안 평균 CPU 사용률이 기준선보다 낮을 경우, 중간에 급증하는 모든 사용량이 시간당 T2 인스턴스 가격에 포함됩니다. 인스턴스가 장기간에 걸쳐 높은 CPU 사용률로 실행될 경우 소액의 시간당 요금이 청구됩니다. 예를 들어, t2.micro 인스턴스를 평균 15% 사용률(기준선보다 5% 높음)로 24시간 동안 실행할 경우 6센트(vCPU-시간당 5센트 * 1 vCPU * 5% * 24시간)의 추가 요금이 청구됩니다.

EC2 콘솔에서 T2 Unlimited 인스턴스를 시작하려면 T2 인스턴스를 선택한 다음 [T2 Unlimited] 옆에 있는 [Enable]을 클릭합니다.

T2 Standard에서 실행 중인 인스턴스를 T2 Unlimited로 전환하는 방법은 다음과 같습니다.

CPU 크레딧 계산 기준
원래 T2 인스턴스는 실행될 때마다 CPU 크레딧을 누적하였다가 최대 코어 속도로 실행할 때 CPU 크레딧을 사용합니다. 이때 크레딧 공급이 고갈되면 기준 레벨로 속도가 느려집니다. 하지만, T2 Unlimited 인스턴스에서는 하루 분량의 크레딧을 미리 빌려서 추가 버스팅을 수행할 수 있습니다. 이 값은 CloudWatch에 CPUSurplusCreditBalance라는 신규 측정치로 기록합니다. 잔여 크레딧 레벨이 하루 분량으로 증가하면 인스턴스에서는 전체 코어 성능을 계속 제공합니다. vCPU별로 시간당 $0.05(Linux) 또는 $0.096(Windows)의 요금이 청구됩니다. 청구되는 이 초과 크레딧은 새 CPUSurplusCreditsCharged 측정치에 의해 기록합니다. 지정된 시간 내에 초과 크레딧을 다 쓴 경우 한 시간 미만의 버스팅 시간에 대해 밀리초 단위로 요금이 청구됩니다. 따라서, 추가적으로 비용을 절감할 수 있습니다.

나머지 CPUSurplusCreditBalance에 대한 요금은 인스턴스를 종료하거나 T2 Standard로 구성할 때 처리됩니다. 누적된 CPUCreditBalance는 T2 Standard로 전환하는 동안 유지됩니다.

T2 Unlimited 모델은 CloudWatch 측정치를 조회하는 수고를 덜어주기 위해 설계되었지만, 원하는 경우 직접 확인해도 됩니다. 예를 들어, t2.nano의 시간의 흐름에 따른 크레딧에 대해 알아보겠습니다. 먼저 CPU 사용률이 100%로 증가하면 인스턴스에서는 5분마다 5크레딧을 소비합니다(1크레딧은 1 VCPU 분에 해당).

크레딧이 생성과 동시에 소비되고 있으므로 CPU 크레딧 잔고는 0으로 유지됩니다. 이 때, CPUSurplusCreditBalance 측정치에 의해 추적되는 초과 크레딧 잔고가 72까지 증가합니다. 이 초과 크레딧 잔고는 향후 크레딧에서 임차한 크레딧을 나타냅니다.

초과 크레딧 잔고가 72가 되면 더 이상 크레딧을 임차할 수 없으며, 추가 CPU 사용량에 대해서는 시간이 끝날 때 청구되며 이는 CPUSurplusCreditsCharged 측정치에 의해 추적됩니다. 인스턴스에서는 5분마다 5크레딧을 소비하고 0.25크레딧을 획득합니다. 따라서 5분의 버스팅당 4.75 VCPU 분의 순수 요금이 청구됩니다.

원한다면 언제든지 T2 Standard 및 T2 Unlimited 간에 각 인스턴스를 전환할 수 있습니다. CPUSurplusCreditsCharged를 제외한 모든 크레딧 잔고는 유지되며 이월됩니다. T2 Unlimited 인스턴스는 언제든지 버스팅할 수 있으므로 새로 시작된 T2 Standard 인스턴스에 제공되는 30분 크레딧이 제공되지 않습니다. 각 AWS 계정에서 매일 초기 CPU 크레딧을 사용하여 제한된 수의 T2 Standard 인스턴스를 시작할 수 있으므로, T2 Unlimited 인스턴스는 자동 스케일링 그룹과 다수의 인스턴스를 매일 동작하는 시나리오용으로 더 적합합니다.

정식 출시
T2 Unlimited 인스턴스는 현재 미국 동부(버지니아 북부), 미국 동부(오하이오), 미국 서부(캘리포니아 북부), 미국 서부(오리건), 캐나다(중부), 남아메리카(상파울루), 아시아 태평양(싱가포르), 아시아 태평양(시드니), 아시아 태평양(도쿄), 아시아 태평양(뭄바이), 아시아 태평양(서울), EU(프랑크푸르트), EU(아일랜드)EU(런던) 리전에서 시작할 수 있습니다.

Jeff;

이 글은 AWS re:Invent 2017 신규 서비스 소식으로 T2 Unlimited – Going Beyond the Burst with High Performance 의 한국어 번역입니다.

Kubernetes를 위한 Amazon Elastic Container Service 서비스 출시 예고

AWS에서 Kubernetes를 실행하는 AWS 고객이 매우 많으며, Cloud Native Computing Foundation 조사에 따르면 Kubernetes 워크로드의 63%가 AWS에서 실행하고 있습니다. AWS가 Kubernetes를 실행하기 좋은 지점이기는 하지만, 고객이 Kubernetes 클러스터를 관리하기 위해서는 적잖은 수동 구성 및 관리가 필요합니다. Kubernetes 마스터 및 클러스터를 설치하여 운영해야 하며, 클러스터에서 가용성을 높이려면 서로 다른 가용 영역(AZ)에서 Kubernetes 마스터를 3개 이상 실행해야 합니다.

각각의 마스터는 다른 마스터와 통신하고, 정보를 안정적으로 공유하고, 로드 밸런스 조치를 취하고, 장애가 발생하면 다른 마스터에게 장애 조치를 취하도록 구성해야 합니다. 이런 작업 동안에도 마스터 및 작업자 소프트웨어의 업그레이드 및 패치 적용을 관리해야 합니다. 이는 인프라 운영에 관한 상당한 전문 지식과 노력이 필요하며, 이 과정을 쉽게 만들어달라는 고객 요청이 있었습니다.

Amazon Elastic Container Service for Kubernetes(EKS)소개

Kubernetes용 Amazon Elastic Container Service(Amazon EKS)는 Kubernetes 클러스터를 별도 관리할 필요 없이 쉽게 사용할 수 있도록 지원하는 완전 관리형 서비스입니다.

몇 가지 특징적인 기능을 꼽자면, 첫째 Amazon EKS는 오픈 소스 Kubernetes 소프트웨어의 업스트림 버전을 실행하므로 Kubernetes 커뮤니티에서 모든 기존 플러그인과 도구를 사용할 수 있습니다. 온프레미스 데이터 센터에서 실행 중인지 퍼블릭 클라우드에서 실행 중인지에 상관없이, Amazon EKS에서 실행 중인 애플리케이션은 표준 Kubernetes 환경에서 실행 중인 애플리케이션과 완벽하게 호환됩니다.

즉, 코드를 전혀 수정하지 않고 Kubernetes 애플리케이션을 Amazon EKS로 쉽게 마이그레이션할 수 있습니다. 둘째, Amazon EKS는 단일 장애 지점을 방지하기 위해 3개 AZ에 걸쳐 3개의 마스터를 사용해 K8을 자동으로 실행합니다. 이 다중 AZ 아키텍처는 AWS 가용 영역 손실에 대한 복원력을 제공합니다.

셋째, Amazon EKS에서는 비정상 마스터도 자동으로 검색하여 교체하고 마스터에 대한 버전 업그레이드 및 패치를 자동으로 실행합니다. 마지막으로 Amazon EKS는 Elastic Load Balancing 부하 분산, IAM 인증, Amazon VPC 격리, AWS PrivateLink 프라이빗 네트워크 액세스, AWS CloudTrail 로깅 등 수많은 주요 AWS 기능과 통합됩니다.

컨테이너 운영 방법
이제 어떤 식으로 작동하는지 살펴봅시다. Amazon EKS는 Heptio와의 협업을 통해 IAM 인증을 Kubernetes RBAC(Kubernetes의 기본 역할 기반 액세스 제어 시스템)와 통합합니다.

RBAC 역할을 각 IAM 엔터티에 직접 할당하여 Kubernetes 마스터에 대한 액세스 권한을 세분화하여 제어할 수 있습니다. 그러면 kubectl 같은 표준 Kubernetes 도구를 사용하여 Kubernetes 클러스터를 손쉽게 관리할 수 있습니다.

Amazon VPC에서 직접 Kubernetes 마스터에 액세스하려는 경우, AWS PrivateLink를 사용할 수도 있습니다. PrivateLink를 사용하면 Kubernetes 마스터와 Amazon EKS 서비스 엔드포인트는 Amazon VPC에 프라이빗 IP 주소와 함께 탄력적 네트워크 인터페이스로 표시됩니다.

그러면 퍼블릭 IP 주소를 사용하거나 트래픽이 인터넷을 통과하도록 요구하지 않고도 Amazon VPC에서 직접 Kubernetes 마스터와 Amazon EKS 서비스에 액세스할 수 있습니다.

끝으로, AWS에서 각자의 Kubernetes 클러스터에 사용할 수 있는 오픈 소스 CNI 플러그인도 구축했습니다. 따라서 기본적으로 Kubernetes 포드와 함께 Amazon VPC 네트워킹을 사용할 수 있습니다.

Amazon EKS를 사용하면 AWS Management Console에서 몇 번의 클릭만으로 Kubernetes 클러스터를 쉽게 시작할 수 있습니다. Amazon EKS가 업그레이드, 패치 적용 및 가용성 증대 등 나머지 문제를 관리합니다. 현재 Amazon EKS는 미리보기 버전으로 제공됩니다. 여러분의 포럼에서 피드백을 기다리겠습니다.

— Deepak Singh, General Manager of AWS Container Services

이 글은 AWS re:Invent 2017 신규 서비스 소식으로 Amazon Elastic Container Service for Kubernetes 의 한국어 번역입니다.

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 의 한국어 번역입니다.

AWS 주간 소식 모음 – 2017년 12월 11일

안녕하세요! 여러분~ 매주 월요일 마다 지난 주에 업데이트된 국내 AWS 관련 콘텐츠를 정리해 드립니다.  AWS 클라우드에 대한 새로운 소식을 확인하시는데 많은 도움 되시길 바랍니다. 혹시 빠지거나 추가할 내용이 있으시면, 저에게 메일 주시면 추가 공유해 드리겠습니다.AWS코리아 블로그

AWS코리아 발표 자료

AWS 추천 콘텐츠

AWS 최신 뉴스

AWS 제품별 블로그(영문)

AWS 주요 행사 온라인 세미나

AWS 마케팅 행사

 

AWS 공인 교육 일정

 

AWSKRUG 소모임

AWS 주요 파트너사 블로그

AWS 관련 새 소식을 확인하고 싶으시다면, 매주 업데이트 되는 AWS 주간 소식 모음을 살펴 보시기 바랍니다! 좀 더 빠르게 새소식을 접하시고 싶다면, 공식 트위터공식 페이스북을 팔로우 하세요!

이번 한주도 즐겁게 보내시고, 다음주에 다시 만나요!.

– AWS코리아 마케팅팀;

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의 한국어 번역입니다.