일반

Q: Amazon Kinesis Data Analytics란 무엇입니까?
Amazon Kinesis Data Analytics는 스트리밍 데이터를 분석하고, 실행 가능한 통찰력을 확보하고, 비즈니스 및 고객 요구 사항에 실시간으로 대응할 수 있는 가장 쉬운 방법입니다. Amazon Kinesis Data Analytics는 스트리밍 애플리케이션과 다른 AWS 서비스와의 빌드, 관리 및 통합의 복잡성을 줄입니다. 내장 템플릿 및 일반 처리 함수에 대한 연산자를 사용하여 SQL 쿼리 및 정교한 Java 애플리케이션을 빠르게 빌드하여 규모에 관계없이 데이터를 조직, 변형, 집계 및 분석할 수 있습니다.
 
Amazon Kinesis Data Analytics는 실시간 애플리케이션의 지속적 실행에 필요한 모든 작업을 처리하며, 수신 데이터의 볼륨과 처리량에 맞춰 자동으로 확장됩니다. Amazon Kinesis Data Analytics에서는 스트리밍 애플리케이션에서 사용한 리소스에 대한 비용만 지불하면 됩니다. 최소 요금이나 설치 비용이 없습니다.
 
Q: 실시간 스트림 처리란 무엇이고 왜 필요합니까?
실시간 데이터 원본이 폭발적으로 증가하면서 너무나도 빠른 속도로 데이터가 유입되고 있습니다. 모바일 및 웹 애플리케이션의 로그 데이터이든, 전자 상거래 사이트의 구매 데이터 또는 IoT 디바이스의 센서 데이터이든, 모든 데이터는 고객, 조직 및 비즈니스가 지금 무엇을 하고 있는지 알 수 있는 정보를 기업에 제공합니다. 데이터가 도달함과 동시에 이에 대한 가시성을 확보함으로써 실시간으로 비즈니스를 모니터링하고 새 비즈니스 기회를 빠르게 활용할 수 있습니다. 예를 들어 고객이 특정 시간에 있을 수 있는 장소를 기반으로 프로모션을 제안하거나 소셜 감성을 모니터링하고 고객의 태도를 변화시켜 새로운 기회를 식별하고 행동으로 옮길 수 있습니다.
 
이러한 기회를 활용하려면 기존에 정적 저장 데이터에 사용했던 분석 도구와는 다른, 즉 실시간 스트리밍 데이터를 수집 및 분석할 수 있는 분석 도구 세트가 필요합니다. 기존 분석에서는 정보를 수집하여 데이터베이스에 저장한 후, 몇 시간, 며칠 또는 몇 주 후에 이를 분석합니다. 실시간 데이터 분석을 위해서는 다른 접근 방식과 다른 도구 및 서비스가 필요합니다. 저장된 데이터에 대해 데이터베이스 쿼리를 실행하는 대신, 스트리밍 분석 서비스는 데이터가 저장되기 전에 지속적으로 데이터를 처리합니다. 스트리밍 데이터는 놀라운 속도로 이동하며 그 속도는 계속해서 변합니다. 스트리밍 분석 서비스는 데이터가 수신되는 대로 처리해야 하며, 수신 속도는 시간당 수백 만개의 이벤트인 경우가 대부분입니다.
 
Q: Kinesis Data Analytics로 어떤 작업을 할 수 있습니까?
많은 사용 사례에 대해 Kinesis Data Analytics를 사용하여 지속적으로 데이터를 처리하고 며칠 또는 몇 주가 아닌 몇 초 또는 몇 분 만에 통찰력을 얻을 수 있습니다. Kinesis Data Analytics를 사용하면 로그 분석, 클릭스트림 분석, IoT(사물 인터넷), 광고 기술, 게임 등을 위한 엔드 투 엔드 스트림 처리 애플리케이션을 신속하게 구축할 수 있습니다. 가장 일반적인 사용 사례 3가지로는 스트리밍 ETL(Extract-Transform-Load), 지속적 지표 생성 및 반응형 분석이 있습니다.
 
스트리밍 ETL
스트리밍 ETL 애플리케이션을 통해 실시간으로 데이터 레이크 또는 데이터 웨어하우스에 로드하기 전에 원시 데이터를 정리, 보강, 조직 및 변형하여 배치 ETL 단계를 절감 또는 제거할 수 있습니다. 이러한 애플리케이션은 제공 전에 작은 레코드를 더 큰 파일로 버퍼링하고, 스트림 및 테이블 간 정교한 조인을 수행합니다. 예를 들어 Amazon Kinesis Data Streams에 저장된 IoT 센서 데이터를 지속적으로 읽는 애플리케이션을 빌드하고, 센서 유형별로 데이터를 조직하고, 중복 데이터를 제거하고, 특정 스키마별로 데이터를 정규화하며, 데이터를 Amazon S3에 제공할 수 있습니다.
 
지속적 지표 생성
지속적 지표 생성 애플리케이션을 통해 시간에 따른 데이터의 추세를 모니터링 및 이해할 수 있습니다. 애플리케이션은 스트리밍 데이터를 중요 정보로 집계하고, 이를 보고 데이터 및 모니터링 서비스와 원활하게 통합하여 애플리케이션과 사용자에게 실시간으로 서비스를 제공합니다. Kinesis Data Analytics에서 SQL 또는 Java 코드를 사용하여 일정 시간 동안 시계열 분석을 지속적으로 생성할 수 있습니다. 예를 들어 모바일 게임의 경우 1분 간격으로 상위 플레이어를 계산하여 이를 Amazon DynamoDB로 전송함으로써 라이브 순위표를 만들 수 있습니다. 또는 5분 간격으로 웹 사이트의 고유 방문자 수를 계산하고 처리된 결과를 Amazon Redshift에 전송함으로써 웹 사이트에 대한 트래픽을 추적할 수 있습니다.
 
반응형 실시간 분석
반응형 실시간 분석 애플리케이션은 특정 지표가 미리 정의된 임계값에 도달하는 경우 또는 고급 사례에서 애플리케이션이 기계 학습 알고리즘을 사용하여 이상을 탐지하는 경우 실시간 경보 또는 알림을 전송합니다. 이러한 애플리케이션을 통해 모바일 앱에서 사용자 이탈을 예측하고 저하된 시스템을 식별하는 등 실시간으로 비즈니스의 변화에 즉시 반응할 수 있습니다. 예를 들어 시간이 지나면서 애플리케이션이 고객 관련 API의 가용성 또는 성공률을 계산한 후, 결과를 Amazon CloudWatch로 전송할 수 있습니다. 특정 범주에 해당하는 이벤트를 찾은 후 Amazon Kinesis Data Streams 및 Amazon SNS(Simple Notification Service)를 사용하여 적절한 고객에게 자동으로 알림을 전송하도록 애플리케이션을 구축할 수도 있습니다.
 
Q: Kinesis Data Analytics용 Java 애플리케이션을 시작하려면 어떻게 해야 합니까?
Amazon Kinesis Data Analytics 콘솔에 로그인하여 새로운 스트림 처리 애플리케이션을 생성합니다. AWS CLIAWS SDK도 사용할 수 있습니다. 애플리케이션을 생성한 이후 선호하는 통합 개발 환경으로 이동하고, AWS에 연결한 다음 오픈 소스 Java 라이브러리를 설치합니다. 오픈 소스 라이브러리는 데이터 스트림 처리를 위한 오픈 소스 프레임워크이자 엔진인 Apache Flink와 AWS SDK를 기반으로 합니다. 확장 가능한 라이브러리에는 window 및 aggregate와 같은 25개 이상의 사전 빌드된 스트림 처리 연산자, Amazon Kinesis Data Streams 및 Amazon Kinesis Data Firehose와 같은 AWS 서비스 통합이 포함되어 있습니다. 빌드 이후 Amazon Kinesis Data Analytics에 코드를 업로드하면 서비스에서 수신 데이터의 볼륨 및 처리량에 대응하는 자동 크기 조정을 포함하여 지속적인 실시간 애플리케이션 실행에 필요한 모든 것을 처리합니다.
 
Q: Kinesis Data Analytics용 SQL 애플리케이션을 시작하려면 어떻게 해야 합니까?
Amazon Kinesis Data Analytics 콘솔에 로그인하여 새로운 스트림 처리 애플리케이션을 생성합니다. AWS CLIAWS SDK도 사용할 수 있습니다. 다음과 같은 간단한 세 가지 단계로 엔드 투 엔드 애플리케이션을 구축할 수 있습니다. 1) 수신 스트리밍 데이터 구성, 2) SQL 쿼리 작성, 3) 결과를 로드할 위치 지정. Kinesis Data Analytics는 JSON, CSV 및 TSV와 같은 표준 데이터 형식을 인식하고 기본 스키마를 자동으로 생성합니다. 이 스키마를 미세 조정하거나, 입력 데이터가 비정형인 경우에는 AWS의 직관적 스키마 편집기를 사용하여 새로운 스키마를 정의할 수 있습니다. 그런 다음 사용자가 표준 SQL 쿼리를 작성할 수 있도록 Kinesis Data Analytics에서 이 스키마를 입력 스트림에 적용하고 입력 스트림이 지속적으로 업데이트되는 SQL 테이블처럼 보이게 만듭니다. AWS SQL 편집기를 사용하여 쿼리를 작성할 수 있습니다.
 
SQL 편집기에서는 라이브 데이터의 구문 검사 및 테스트를 비롯하여 각종 부가 기능을 지원합니다. 또한, AWS에서는 간단한 스트림 필터에서 고급 이상 탐지 및 상위 K 분석에 이르기까지 모든 기능에 대한 SQL 코드가 포함된 템플릿을 제공합니다. Kinesis Data Analytics에서는 필요한 데이터 처리량을 제공할 수 있도록 모든 인프라를 프로비저닝하고 탄력적으로 조정합니다. 사용자는 인프라를 계획, 프로비저닝 또는 관리할 필요가 없습니다.
 
Q: Kinesis Data Analytics의 한도로는 어떤 것이 있습니까?
Kinesis Data Analytics는 대부분 시나리오에서 소스 스트림의 데이터 처리량과 쿼리의 복잡성을 수용할 수 있도록 애플리케이션을 탄력적으로 확장 및 축소합니다. 서비스 한도에 대한 자세한 내용은 SQL용 Amazon Kinesis Data Analytics 개발자 안내서에서 한도를 참조하십시오. Java 애플리케이션의 서비스 한도에 대한 자세한 내용은 Java용 Amazon Kinesis Data Analytics 개발자 안내서의 한도 섹션을 참조하십시오.

주요 개념

Q: Kinesis Data Analytics 애플리케이션이란 무엇입니까?
애플리케이션은 사용자가 작업하는 Kinesis Data Analytics 엔터티입니다. Kinesis Data Analytics 애플리케이션은 실시간으로 스트리밍 데이터를 계속해서 읽고 처리합니다. 수신 스트리밍 데이터를 처리하고 출력을 생성하도록 사용자가 SQL 또는 Java를 사용하여 애플리케이션 코드를 작성합니다. 그러면 Kinesis Data Analytics가 출력을 구성된 대상에 작성합니다.
 
각 애플리케이션은 세 가지 기본 요소로 구성됩니다.
 
입력 – 애플리케이션의 스트리밍 소스. 입력 구성에서 스트리밍 소스를 인애플리케이션 데이터 스트림에 매핑합니다. 데이터는 데이터 원본에서 인애플리케이션 데이터 스트림으로 흐릅니다. 애플리케이션 코드를 사용하여 이러한 인애플리케이션 데이터 스트림을 처리하고, 처리된 데이터를 후속 인애플리케이션 데이터 또는 대상으로 전송합니다. Java 애플리케이션용 애플리케이션 내부에, 그리고 SQL 애플리케이션용 API를 통해 입력을 추가합니다.
 
애플리케이션 코드 – 입력을 처리하고 출력을 생성하는 일련의 Java 연산자 또는 SQL 문. 가장 단순한 형태로 애플리케이션 코드는 스트리밍 소스와 연결된 인애플리케이션 데이터 스트림으로부터 읽고 출력과 연결된 애플리케이션 내 데이터 스트림에 쓰는 하나의 Java 연산자 또는 SQL 문이 될 수 있습니다. 최초 인애플리케이션 데이터 스트림을 여러 개의 스트림으로 분할하고 이러한 별개의 스트림에 추가 논리를 적용하는 Java 또는 SQL 코드를 작성할 수 있습니다.
 
출력 – 중간 결과를 저장하도록 하나 이상의 인애플리케이션 스트림을 생성할 수 있습니다. 그런 다음 선택 사항으로 특정 인애플리케이션 스트림의 데이터를 외부 대상에 유지하도록 애플리케이션 출력을 구성할 수 있습니다. Java 애플리케이션용 애플리케이션 코드 또는 SQL 애플리케이션용 API 내부에 출력을 추가합니다.
 
Q: 인애플리케이션 데이터 스트림이란 무엇입니까?
인애플리케이션 데이터 스트림은 사용자가 처리를 수행하도록 애플리케이션에 데이터를 지속적으로 저장하는 엔터티입니다. 애플리케이션은 지속적으로 인애플리케이션 데이터 스트림을 쓰고 읽습니다. Java 애플리케이션의 경우 스트림 연산자를 통해 데이터를 처리함으로써 인애플리케이션 스트림과 상호 작용합니다. 연산자는 하나 이상의 데이터 스트림을 새로운 데이터 스트림으로 변형합니다. SQL 애플리케이션의 경우 SQL 문을 사용함으로써 SQL 테이블과 같은 방식으로 인애플리케이션 스트림과 상호 작용합니다. 하나 이상의 데이터 스트림에 SQL 문을 적용하고 새로운 데이터 스트림에 결과를 삽입합니다.
 
Q: 지원되는 애플리케이션 코드는 무엇입니까?
Java 애플리케이션의 경우 Kinesis Data Analytics는 Apache FlinkAWS SDK를 사용하여 빌드된 Java 애플리케이션을 지원합니다. SQL 애플리케이션의 경우 Kinesis Data Analytics는 ANSI SQL을 지원하며 스트리밍 데이터를 좀 더 손쉽게 사용할 수 있도록 표준 SQL에 대한 일부 확장을 지원합니다.

애플리케이션 관리

Q: Kinesis Data Analytics 애플리케이션의 작업 및 성능을 모니터링하려면 어떻게 해야 합니까?
AWS에서는 Kinesis Data Analytics 애플리케이션을 모니터링하는 데 사용할 수 있는 다양한 도구를 제공합니다. 이러한 도구 중 일부를 구성하여 모니터링을 수행할 수 있습니다. 애플리케이션 모니터링에 대한 자세한 내용은 다음을 참조하십시오.
 
Q: Kinesis Data Analytics 애플리케이션에 대한 액세스를 어떻게 관리하고 제어합니까?
Kinesis Data Analytics가 애플리케이션에 지정되어 있는 스트리밍 데이터 원본에서 레코드를 읽기 위해서는 권한이 필요합니다. 또한, Kinesis Data Analytics가 애플리케이션 출력을 애플리케이션 출력 구성에 지정되어 있는 대상에 작성하기 위해서는 권한이 필요합니다. Kinesis Data Analytics가 맡을 수 있는 IAM 역할을 생성하여 이러한 권한을 부여할 수 있습니다. 이 역할에 부여하는 권한은 Kinesis Data Analytics가 역할을 맡았을 때 수행할 수 있는 작업을 결정합니다. 자세한 정보는 다음을 참조하십시오.
  • Java용 Amazon Kinesis Data Analytics 개발자 안내서의 권한 부여.
  • SQL용 Amazon Kinesis Data Analytics 개발자 안내서의 권한 부여.
 
Q: Kinesis Data Analytics는 내 애플리케이션을 어떻게 확장합니까?
Kinesis Data Analytics는 대부분의 시나리오에서 소스 스트림의 데이터 처리량과 쿼리의 복잡성을 수용할 수 있도록 애플리케이션을 탄력적으로 조정합니다. Kinesis Data Analytics는 Amazon Kinesis 처리 단위(KPU)의 형태로 용량을 프로비저닝합니다. 하나의 KPU는 하나의 vCPU 및 4GB 메모리를 제공합니다.
 
Java 애플리케이션의 경우 Kinesis Data Analytics는 애플리케이션에서 체크포인트로 사용하고 임시 디스크를 통해 사용 가능한 KPU당 50GB의 실행 중인 애플리케이션 스토리지를 할당합니다. 체크포인트는 애플리케이션 중단으로부터 즉각적인 복구에 사용되는 실행 중인 애플리케이션의 최신 백업입니다. 또한 API의 Parallelism 및 ParallelismPerKPU 파라미터를 사용하여 Java 애플리케이션 작업(원본으로부터 읽기 또는 연산자 실행)에 대한 Kinesis Data Analytics의 병렬 실행을 제어할 수 있습니다. Parallelism은 작업의 동시 인스턴스 수를 정의합니다. 모든 연산자, 원본 및 싱크는 정의된 병렬 처리를 실행하고, 기본값은 1입니다. ParallelismPerKPU는 애플리케이션의 Kinesis 처리 단위(KPU)당 예약될 수 있는 병렬 작업의 수를 정의하고, 기본값은 1입니다. 자세한 내용은 Java용 Amazon Kinesis Data Analytics 개발자 안내서의 규모 조정을 참조하십시오.
 
SQL 애플리케이션의 경우 각 스트리밍 소스는 해당 인애플리케이션 스트림에 매핑됩니다. 대부분 고객에게 필요하지는 않지만, 입력 병렬 처리 파라미터를 지정하여 소스가 매핑된 인애플리케이션 스트림의 수를 늘리면 KPU를 좀 더 효율적으로 사용할 수 있습니다. Kinesis Data Analytics는 스트리밍 데이터 원본의 파티션(예: Amazon Kinesis 데이터 스트림의 샤드)을 지정된 인애플리케이션 데이터 스트림 수에 따라 균등하게 할당합니다. 예를 들어 샤드가 10개인 Amazon Kinesis 데이터 스트림을 스트리밍 데이터 원본으로 사용하고 2개의 입력 병렬 처리를 지정한 경우, Kinesis Data Analytics는 Amazon Kinesis 샤드 5개를 "SOURCE_SQL_STREAM_001" 및 "SOURCE_SQL_STREAM_002"라는 2개의 인애플리케이션 스트림에 각각 할당합니다. 자세한 내용은 SQL용 Amazon Kinesis Data Analytics 개발자 안내서의 애플리케이션 입력 구성 섹션을 참조하십시오.
 
Q: 내 Kinesis Data Analytics 애플리케이션을 구축 및 관리하는 데 사용할 수 있는 모범 사례는 무엇입니까?
SQL 모범 사례에 대한 자세한 내용은 SQL용 Amazon Kinesis Data Analytics 개발자 안내서의 모범 사례 섹션을 참조하십시오. 이 섹션은 애플리케이션 관리, 입력 스키마 정의, 출력에 연결, 애플리케이션 코드 작성에 대한 내용은 다룹니다.

요금 및 결제

Q: Kinesis Data Analytics의 요금은 어떻게 됩니까?
Amazon Kinesis Data Analytics에서는 사용한 만큼만 비용을 지불합니다. Amazon Kinesis Data Analytics에서는 리소스를 프로비저닝할 필요가 없고, 최소 비용도 없습니다.
 
스트리밍 애플리케이션 실행에 사용하는 Amazon Kinesis 처리 단위(또는 KPU)의 개수에 따라 시간당 요금이 청구됩니다. 단일 KPU는 하나의 vCPU의 컴퓨팅 및 4GB의 메모리로 구성된 스트림 처리 용량 단위입니다. Amazon Kinesis Data Analytics에서 스트림 처리 애플리케이션의 요구에 따라 KPU의 수를 자동으로 조정합니다. 메모리 및 컴퓨팅 수요가 처리 복잡성과 처리된 스트리밍 데이터의 처리량에 따라 다르기 때문입니다.
 
Java 애플리케이션의 경우 애플리케이션 오케스트레이션에 사용된 애플리케이션당 단일 추가 KPU 요금이 청구됩니다. 또한 Java 애플리케이션의 경우 실행 중인 애플리케이션 스토리지 및 내구성 있는 애플리케이션 백업에 대해 요금이 청구됩니다. 실행 중인 애플리케이션 스토리지는 Amazon Kinesis Data Analytics의 상태 저장 처리 기능에 사용되며, 월별 GB당 요금이 청구됩니다. 내구성 있는 백업은 선택 사항으로, 월별 GB당 요금이 청구되고, 애플리케이션에 대한 특정 시점 복구를 제공합니다.
 
요금에 대한 자세한 내용은 Amazon Kinesis Data Analytics 요금 페이지를 참조하십시오.
 
Q: AWS 프리 티어에서 Kinesis Data Analytics를 사용할 수 있습니까?
Kinesis Data Analytics는 현재 AWS 프리 티어에서 사용할 수 없습니다. AWS 프리 티어는 AWS 서비스 그룹을 무료로 체험해 볼 수 있도록 하는 프로그램입니다.
 
Q: 실행은 되고 있지만 소스의 데이터를 처리하고 있지 않은 Kinesis Data Analytics 애플리케이션에 대해서도 요금이 부과됩니까?
SQL 애플리케이션의 경우 Kinesis Data Analytics 애플리케이션이 실행되고 있는 경우 최소 1개의 KPU에 대한 요금이 부과됩니다. Java 애플리케이션의 경우 Kinesis Data Analytics 애플리케이션이 실행 중인 경우 최소 2개의 KPU와 50GB의 실행 중인 애플리케이션 스토리지에 대한 요금이 부과됩니다.
 
Q: Kinesis Data Analytics 비용 외에 발생할 수 있는 다른 비용이 있습니까?
Kinesis Data Analytics는 완전관리형 스트림 처리 솔루션으로서, 데이터를 읽어오는 스트리밍 소스와 처리된 데이터를 작성하는 대상과는 독립적입니다. 애플리케이션에서 읽고 쓰는 서비스에 대해서는 별도로 요금이 청구됩니다.

Java 애플리케이션 빌드

Java 애플리케이션에 대한 애플리케이션 코드 작성

Q: Apache Flink란 무엇입니까?
Apache Flink는 스트림 및 배치 데이터 처리를 위한 오픈 소스 프레임워크 및 엔진입니다. 손쉬운 스트리밍 애플리케이션 빌드가 가능하도록 하는데, 강력한 연산자를 제공하고 중복 처리와 같은 주요 스트리밍 문제를 해결하기 때문입니다. Apache Flink는 데이터 스트림에 배포된 계산에 대한 데이터 배포, 커뮤니케이션 및 내결함성을 제공합니다.
 
Q: 애플리케이션은 어떻게 개발합니까?
AWS SDK, Apache Flink 및 AWS 서비스에 대한 연결자가 포함된 오픈 소스 라이브러리를 다운로드하는 것부터 시작할 수 있습니다. Java용 Amazon Kinesis Data Analytics 개발자 안내서에서 라이브러리 다운로드 및 첫 번째 애플리케이션 생성 방법에 대한 지침을 얻을 수 있습니다.
 
Q: 내 애플리케이션 코드는 어떤 형태입니까?
데이터 스트림 및 스트림 연산자를 사용하여 Java 코드를 작성합니다. 애플리케이션 데이터 스트림은 Java 코드 사용에 대한 처리를 수행하는 데이터 구조입니다. 데이터는 원본에서 애플리케이션 데이터 스트림으로 지속적으로 흐릅니다. 하나 이상의 스트림 연산자를 사용하여 변형, 파티션, 집계, 조인 및 윈도우를 포함한 애플리케이션 데이터 스트림의 처리를 정의합니다. 데이터 스트림 및 연산자는 연쇄 및 병렬 체인에 통합될 수 있습니다. 의사 코드를 사용하는 간단한 예가 아래에 표시되어 있습니다.
DataStream <GameEvent> rawEvents = env.addSource(
	New KinesisStreamSource(“input_events”));
DataStream <UserPerLevel> gameStream =
	rawEvents.map(event - > new UserPerLevel(event.gameMetadata.gameId, 
			event.gameMetadata.levelId,event.userId));
gameStream.keyBy(event -> event.gameId)
            .keyBy(1)
            .window(TumblingProcessingTimeWindows.of(Time.minutes(1)))
            .apply(...) - > {...};
gameStream.addSink(new KinesisStreamSink("myGameStateStream"));
Q: 연산자를 어떻게 사용합니까?
연산자는 애플리케이션 데이터 스트림을 입력으로 가져오고 처리된 데이터를 애플리케이션 데이터 스트림에 출력으로 보냅니다. 연산자는 여러 단계를 통해 애플리케이션을 빌드하기 위해 통합될 수 있고, 구현 및 운영을 위해 분산 시스템에 대한 고급 지식을 필요로 하지 않습니다.
 
Q: 어떤 연산자가 지원됩니까?
Java용 Kinesis Data Analytics에는 25개 이상의 Apache Flink 연산자가 포함되어 있으며, Map, KeyBy, aggregations, Window Join 및 Window를 포함한 다양한 사용 사례를 해결하는 데 사용될 수 있습니다. Map을 통해 임의 처리를 수행하고 수신 데이터 스트림으로부터 하나의 요소를 가져와 다른 요소로 생성할 수 있습니다. KeyBy는 유사한 데이터 지점을 함께 처리할 수 있도록 하는 특정 키를 사용하여 데이터를 논리적으로 조직합니다. Aggregations는 sum, min 및 max와 같은 여러 키에 걸친 처리를 수행합니다. Window Join은 두 데이터 스트림을 해당되는 키와 윈도우에 조인합니다. Window는 5분에 걸쳐 고유 항목의 수를 세는 것과 같이 키와 논리적 시간 기간 작업을 사용하여 날짜를 그룹화합니다.
 
요구를 충족하지 못하는 경우 사용자 지정 연산자를 빌드할 수 있습니다. Java용 Amazon Kinesis Data Analytics의 연산자 섹션에서 더 많은 예를 확인할 수 있습니다. Apache Flink 설명서의 연산자 섹션에서 Apache Flink의 전체 연산자 목록을 확인할 수 있습니다.
 
Q: Kinesis Data Analytics Java 애플리케이션에서 지원되는 통합은 무엇입니까?
최소한의 코드로 통합을 설정할 수 있습니다. Apache Flink 기반 오픈 소스 라이브러리는 데이터 처리 제공을 위해 스트리밍 소스 및 대상 또는 싱크를 지원합니다. 또한 비동기식 입력/출력 연결자를 통한 데이터 보강 지원이 포함됩니다. 오픈 소스 라이브러리에 포함된 AWS별 연결자의 목록은 아래와 같습니다.
  • 스트리밍 데이터 원본: Amazon Kinesis Data Streams
  • 대상 또는 싱크: Amazon Kinesis Data Streams, Amazon Kinesis Data Firehose, Amazon DynamoDB 및 Amazon S3(파일 싱크 통합을 통함).
 
Apache Flink에는 또한 Apache Kafka, Apache Casssandra, Elasticsearch 등을 포함한 다른 연결자가 포함되어 있습니다.
 
Q: 사용자 지정 통합이 지원됩니까?
파일, 디렉터리, 소켓 또는 인터넷을 통해 액세스할 수 있는 무언가로부터 읽고 쓸 수 있도록 하는 프리미티브 세트에 빌드하여 애플리케이션에 원본 또는 대상을 추가할 수 있습니다. Apache Flink는 데이터 원본데이터 싱크에 대해 이러한 프리미티브를 제공합니다. 프리미티브에는 데이터를 지속적으로 또는 한 번, 동기식 또는 비동기식으로 읽고 쓰는 기능과 같은 구성이 포함되어 있습니다. 예를 들어 기본 파일 기반 원본 통합을 확장하여 Amazon S3로부터 지속적으로 읽는 애플리케이션을 설정할 수 있습니다.
 
Q: Java 애플리케이션용 Kinesis Data Analytics에서는 어떤 전달 모델을 지원합니까?
Kinesis Data Analytics의 Java 애플리케이션은 애플리케이션이 소스 및 싱크를 포함한 멱등적 연산자를 사용하여 빌드된 경우 “정확한 1회” 전달 모델을 사용합니다. 따라서 처리된 데이터는 단 한 번만 다운스트림 결과에 영향을 미칩니다. 체크포인트는 현재 애플리케이션 상태를 저장하고, Java 애플리케이션용 Kinesis Data Analytics에서 애플리케이션 위치를 복구하여 오류가 없는 실행과 동일한 의미 체계를 제공합니다. Java 애플리케이션용 체크포인트는 Apache Flink의 체크포인트 지정 기능을 통해 제공됩니다. 기본적으로 Java 애플리케이션용 Kinesis Data Analytics는 Apache Flink의 정확한 1회 의미 체계를 사용합니다. Apache Flink의 정확한 1회 의미 체계를 활용하는 원본, 연산자 및 싱크를 사용하여 설계한 경우 애플리케이션은 정확히 1회 처리를 지원합니다.
 
Q: 애플리케이션 스토리지에서 로컬 스토리지로 액세스할 수 있습니까?
예. Java 애플리케이션용 Kinesis Data Analytics는 애플리케이션에 Kinesis 처리 단위(KPU)당 50GB의 실행 중인 애플리케이션 스토리지를 제공합니다. Kinesis Data Analytics는 애플리케이션을 통해 스토리지를 크기 조정합니다. 실행 중인 애플리케이션 스토리지는 체크포인트를 사용한 애플리케이션 상태 저장에 사용됩니다. 또한 데이터 캐싱 또는 다른 목적을 위해 임시 디스크를 사용하도록 애플리케이션 코드에 액세스하는 것도 가능합니다. Kinesis Data Analytics는 체크포인트(예: 연산자, 원본, 싱크)를 통해 언제든 실행 중인 애플리케이션 스토리지에서 데이터를 제거할 수 있습니다. 실행 중인 애플리케이션 스토리지에 저장된 모든 데이터는 저장 시 암호화됩니다.
 
Q: Java용 Kinesis Data Analytics는 어떻게 애플리케이션을 자동으로 백업합니까?
Kinesis Data Analytics는 체크포인트 및 스냅샷을 사용하여 실행 중인 애플리케이션의 상태를 자동으로 백업합니다. 체크포인트는 현재 애플리케이션 상태를 저장하고, Java 애플리케이션용 Kinesis Data Analytics에서 애플리케이션 위치를 복구하여 오류가 없는 실행과 동일한 의미 체계를 제공합니다. 체크포인트는 실행 중인 애플리케이션 스토리지를 활용합니다. 스냅샷은 애플리케이션에 대한 특정 시점 복구를 저장합니다. 스냅샷은 내구성 있는 애플리케이션 백업을 활용합니다.
 
Q: 애플리케이션 스냅샷은 무엇입니까?
스냅샷을 통해 특정 이전 시점에 대해 애플리케이션을 생성 및 복원할 수 있습니다. 이를 통해 이전 애플리케이션 상태를 유지 관리하고 언제든 애플리케이션을 롤백할 수 있습니다. 0개부터 수천 개에 이르기까지 보유하는 스냅샷의 수를 제어합니다. 스냅샷은 내구성 있는 애플리케이션 백업을 사용하고 Kinesis Data Analytics의 요금은 크기에 따라 부과됩니다. Kinesis Data Analytics는 기본적으로 스냅샷에 저장된 데이터를 암호화합니다. API를 통해 개별 스냅샷을 삭제하거나 애플리케이션을 삭제하여 전체 스냅샷을 삭제할 수 있습니다.
 
Q: 지원되는 Apache Flink 버전은 무엇입니까?
Java 애플리케이션용 Amazon Kinesis Data Analytics는 Apache Flink 1.6 및 Java 버전 8을 지원합니다.

SQL 애플리케이션 빌드

SQL 애플리케이션에 대한 입력 구성

Q: Kinesis Data Analytics SQL 애플리케이션에서 지원되는 입력 유형은 무엇입니까?
Kinesis Data Analytics의 SQL 애플리케이션에서는 스트리밍 데이터 원본과 참조 데이터 원본이라는 두 가지 유형의 입력을 지원합니다. 스트리밍 데이터 원본은 지속적으로 생성되는 데이터로, 애플리케이션에서 읽고 처리합니다. 참조 데이터 원본은 정적 데이터로, 애플리케이션은 스트리밍 소스에서 수신되는 데이터를 보강하는 데 이를 사용합니다. 각 애플리케이션은 스트리밍 데이터 원본과 참조 데이터 원본을 각각 하나씩만 가질 수 있습니다. 애플리케이션은 Amazon Kinesis Data Streams 또는 Amazon Kinesis Data Firehose를 비롯하여 스트리밍 데이터 원본의 새로운 데이터를 지속적으로 읽고 처리합니다. 애플리케이션은 SQL JOIN을 통해 스트리밍 데이터 원본을 보강하려는 목적으로 참조 데이터 원본(Amazon S3 등) 전체를 읽습니다.
 
Q: 참조 데이터 원본이란 무엇입니까?
참조 데이터 원본은 정적 데이터로, 애플리케이션은 스트리밍 소스에서 수신되는 데이터를 보강하는 데 이를 사용합니다. 참조 데이터는 S3 버킷에 객체로 저장합니다. SQL 애플리케이션이 시작되면 Kinesis Data Analytics에서 S3 객체를 읽고 인애플리케이션 SQL 테이블을 생성하여 참조 데이터를 저장합니다. 그러면 애플리케이션 코드에서 이를 인애플리케이션 스트림에 조인할 수 있습니다. UpdateApplication API를 호출하여 데이터를 SQL 테이블에 업데이트할 수 있습니다.
 
Q: SQL 애플리케이션에서 스트리밍 데이터 원본을 설정하려면 어떻게 해야 합니까?
스트리밍 데이터 원본은 Amazon Kinesis 데이터 스트림 또는 Amazon Kinesis Data Firehose 전송 스트림이 될 수 있습니다. Kinesis Data Analytics SQL 애플리케이션은 새로운 데이터가 수신되는 대로 계속해서 스트리밍 데이터 원본에서 실시간으로 데이터를 읽습니다. 데이터는 인애플리케이션 스트림을 통해 SQL 코드에서 액세스할 수 있습니다. 인애플리케이션 스트림은 SQL 테이블처럼 작동합니다. 여기에서 데이터를 생성, 삽입 및 선택할 수 있기 때문입니다. 하지만 인애플리케이션 스트림은 스트리밍 데이터 원본의 새로운 데이터로 계속 업데이트된다는 것이 다릅니다.
 
AWS Management Console을 사용하여 스트리밍 데이터 원본을 추가할 수 있습니다. 소스에 대한 자세한 내용은 SQL용 Kinesis Data Analytics 개발자 안내서의 애플리케이션 입력 구성 섹션을 참조하십시오.
 
Q: SQL 애플리케이션에서 참조 데이터 원본을 설정하려면 어떻게 해야 합니까?
Amazon S3 객체가 참조 데이터 원본이 될 수 있습니다. Kinesis Data Analytics SQL 애플리케이션은 실행을 시작할 때 S3 객체 전체를 읽습니다. 테이블을 통해 SQL 코드에서 데이터를 액세스할 수 있습니다. 참조 데이터 원본의 가장 일반적인 사용 사례는 SQL JOIN을 사용하여 스트리밍 데이터 원본에서 수신되는 데이터를 보강하는 것입니다.
 
AWS CLI를 사용하여 S3 버킷, 객체, IAM 역할 및 연결된 스키마를 지정함으로써 참조 데이터 원본을 추가할 수 있습니다. Kinesis Data Analytics에서는 애플리케이션이 시작될 때 이 데이터를 로드하고, 업데이트 API 호출이 수행될 때마다 다시 로드합니다.
 
Q: SQL 애플리케이션에 대해 어떤 데이터 형식이 지원됩니까?
Kinesis Data Analytics의 SQL 애플리케이션에서는 DiscoverInputSchema API를 사용하여 스키마를 탐지하고 UTF-8 인코딩 JSON 및 CSV 레코드를 자동으로 구문 분석할 수 있습니다. 이 스키마는 인애플리케이션 스트림에 삽입될 때 스트림으로부터 읽는 데이터에 함께 적용됩니다.
 
구분 기호를 사용하지 않거나 CSV 이외의 다른 구분 기호를 사용하는 기타 UTF-8 인코딩 데이터의 경우 또는 검색 API가 스키마를 모두 검색하지는 못한 경우, 대화식 스키마 편집기를 사용하여 스키마를 정의하거나 문자열 조작 함수를 사용하여 데이터를 구조화할 수 있습니다. 자세한 내용은 SQL용 Amazon Kinesis Data Analytics 개발자 안내서의 스키마 검색 기능 및 관련 편집 사용 섹션을 참조하십시오.
 
Q: 내 입력 스트림은 어떻게 SQL 코드에 노출됩니까?
SQL용 Kinesis Data Analytics는 사용자가 지정한 스키마를 적용하고, 스트리밍 원본의 경우에는 하나 이상의 인애플리케이션 스키마에 데이터를 삽입하고 참조 원본의 경우에는 단일 SQL 테이블에 데이터를 삽입합니다. 인애플리케이션 스트림의 기본 개수는 사용 사례 대부분의 수요를 충족할 수 있는 수입니다. CloudWatch 지표 MillisBehindLatest에 정의된 바와 같이 애플리케이션이 소스 스트림의 최신 데이터를 처리하지 못하는 경우에는 이 수를 늘려야 합니다. 소스 스트림의 처리량과 쿼리 복잡성 둘 다 필요한 인애플리케이션 스트림의 수에 영향을 줍니다. 소스 스트림에 매핑된 인애플리케이션 스트림의 수를 지정하는 파라미터를 입력 병렬 처리라고 부릅니다.

SQL 애플리케이션에 대한 애플리케이션 코드 작성

Q: 내 SQL 애플리케이션 코드는 어떤 형태입니까?
애플리케이션 코드는 입력을 처리하고 출력을 생성하는 일련의 SQL 문입니다. 이 SQL 문은 인애플리케이션 스트림과 참조 테이블로 운영됩니다. 인애플리케이션 스트림은 지속적으로 업데이트되는 테이블과 같습니다. 이 테이블에서 SELECT 및 INSERT SQL 작업을 수행할 수 있습니다. 구성된 소스와 대상은 인애플리케이션 스트림을 통해 SQL 코드에 노출됩니다. 또한, 인애플리케이션 스트림을 추가로 생성하여 중간 쿼리 결과를 저장할 수 있습니다.
 
다음 패턴을 적용하여 인애플리케이션 스트림을 사용할 수 있습니다.
  • SELECT 문은 언제나 INSERT 문의 컨텍스트에서 사용합니다. 행을 선택할 때 결과를 다른 인애플리케이션 스트림에 삽입합니다.
  • INSERT 문은 펌프 컨텍스트에서 사용합니다. 펌프를 사용하여 INSERT 문이 지속되도록 하고 인애플리케이션 스트림에 작성합니다.
  • 펌프를 사용하여 인애플리케이션 스트림을 연결함으로써 하나의 인애플리케이션 스트림에서 선택하여 다른 인애플리케이션 스트림에 삽입합니다.
 
다음 SQL 코드는 작동하는 간단한 애플리케이션을 제공합니다.
CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (
    ticker_symbol VARCHAR(4),
    change DOUBLE,
    price DOUBLE);

CREATE OR REPLACE PUMP "STREAM_PUMP" AS 
  INSERT INTO "DESTINATION_SQL_STREAM"    
    SELECT STREAM ticker_symbol, change, price    
    FROM "SOURCE_SQL_STREAM_001";
애플리케이션 코드에 대한 자세한 내용은 SQL용 Amazon Kinesis Data Analytics 개발자 안내서의 애플리케이션 코드 섹션을 참조하십시오.
 
Q: Kinesis Data Analytics는 SQL 코드 작성에 어떤 도움이 됩니까?
Kinesis Data Analytics에는 스트리밍 필터, 시간 텀블링, 이상 탐지 등을 비롯하여 일반 사용 사례용 분석 템플릿 라이브러리가 포함되어 있습니다. AWS Management Console에 있는 SQL 편집기에서 이 템플릿에 액세스할 수 있습니다. 애플리케이션을 생성한 후 SQL 편집기로 이동하면 콘솔의 왼쪽 위 모서리에 템플릿이 있습니다.
 
Q: Kinesis Data Analytics에서 실시간 이상 탐지를 수행하려면 어떻게 해야 합니까?
Kinesis Data Analytics에는 이상 탐지를 비롯하여 몇 가지 고급 분석용으로 사전에 구축된 SQL 함수가 포함되어 있습니다. SQL 코드에서 이 함수를 호출하기만 하면 실시간으로 이상 현상을 탐지할 수 있습니다. Kinesis Data Analytics는 Random Cut Forest 알고리즘을 사용하여 이상 탐지를 구현합니다. Random Cut Forest에 대한 자세한 내용은 스트리밍 데이터 이상 탐지 백서를 참조하십시오.

SQL 애플리케이션의 대상 구성

Q: 어떤 대상이 지원됩니까?
SQL용 Kinesis Data Analytics는 애플리케이션당 최대 4개의 대상을 지원합니다. SQL 결과를 Amazon S3, Amazon Redshift 및 Amazon Elasticsearch Service(Amazon Kinesis Data Firehose를 통해), 그리고 Amazon Kinesis Data Streams에 유지할 수 있습니다. SQL 결과를 Amazon Kinesis Data Streams에 전송하여 Kinesis Data Analytics에서 직접 지원하지 않는 대상에 작성하고, AWS Lambda와의 통합을 활용하여 원하는 대상에 전송할 수 있습니다.
 
Q: 대상은 어떻게 설정합니까?
애플리케이션 코드에서 SQL 문의 출력을 하나 이상의 인애플리케이션 스트림에 작성합니다. 원하는 경우 출력 구성을 애플리케이션에 추가하여 특정 인애플리케이션 스트림에 작성된 모든 항목이 최대 4개의 외부 대상에 유지되도록 할 수 있습니다. 이러한 외부 대상은 Amazon S3 버킷, Amazon Redshift 테이블, Amazon Elasticsearch Service 도메인(Amazon Kinesis Data Firehose를 통해) 및 Amazon Kinesis 데이터 스트림이 될 수 있습니다. 각 애플리케이션은 최대 4개의 대상을 지원할 수 있으며 위의 대상을 원하는 조합으로 구성할 수 있습니다. 자세한 내용은 SQL용 Amazon Kinesis Data Analytics 개발자 안내서의 출력 스트림 구성 섹션을 참조하십시오.
 
Q: 내가 선호하는 대상이 직접 지원되지 않습니다. 이 대상으로 SQL 결과를 전송하려면 어떻게 해야 합니까?
AWS Lambda를 사용하여 직접 지원되지 않는 대상에 작성할 수 있습니다. 결과를 Amazon Kinesis 데이터 스트림에 작성한 후 AWS Lambda를 사용하여 처리된 결과를 읽고 원하는 대상으로 전송하는 것이 좋습니다. 자세한 내용은 SQL용 Amazon Kinesis Data Analytics 개발자 안내서의 예제: AWS Lambda 통합 섹션을 참조하십시오. 또는 Kinesis Data Firehose 전송 스트림을 사용하여 데이터를 Amazon S3로 로드한 후 AWS Lambda 함수를 트리거하여 해당 데이터를 읽고 원하는 대상으로 전송할 수도 있습니다. 자세한 내용은 AWS Lambda 개발자 안내서의 Amazon S3를 AWS Lambda와 함께 사용 섹션을 참조하십시오.
 
Q: Kinesis Data Analytics에서는 어떤 전달 모델을 지원합니까?
Kinesis Data Analytics의 SQL 애플리케이션에서는 "최소한 한 번" 전달 모델을 사용하여 애플리케이션 출력을 구성된 대상에 전송합니다. Kinesis Data Analytics 애플리케이션은 내부 체크포인트를 사용합니다. 체크포인트는 데이터 손실 없이 출력 레코드가 대상이 전달된 특정 시점을 말합니다. Kinesis Data Analytics에서는 필요에 따라 체크포인트를 사용하여 애플리케이션 출력이 구성된 대상으로 최소한 한번은 전달되도록 합니다. 전달 모델에 대한 자세한 내용은 SQL용 Amazon Kinesis Data Analytics 개발자 안내서의 애플리케이션 출력 구성 섹션을 참조하십시오.

다른 스트림 처리 솔루션과 비교

Q: Amazon Kinesis Data Analytics는 Amazon Kinesis Client Library를 사용하여 자체 애플리케이션을 실행하는 것과 어떻게 다릅니까?
Amazon Kinesis Client Library(KCL)는 Amazon Kinesis 데이터 스트림의 데이터를 읽고 처리하는 소비자 애플리케이션을 구축할 수 있도록 지원하는 사전에 구축된 라이브러리입니다. KCL은 데이터 스트림 볼륨 변화에 따른 조정, 스트리밍 데이터 로드 밸런싱, 분산 서비스 조직화 및 내결함성 있는 데이터 처리와 같은 복잡한 문제를 처리합니다. KCL을 사용하면 애플리케이션을 개발하는 동안 비즈니스 논리에 집중할 수 있습니다.
 
Kinesis Data Analytics에서는 실시간 스트리밍 데이터를 처리 및 쿼리할 수 있습니다. 표준 SQL을 사용하여 데이터 스트림을 처리하므로 새로운 프로그래밍 언어를 배울 필요가 없습니다. Kinesis Data Analytics를 수신 데이터 스트림에 지정하고, SQL 쿼리를 작성한 후, 결과를 로드할 위치를 지정하기만 하면 됩니다. Kinesis Data Analytics에서는 KCL을 사용하여 기본 애플리케이션의 일부로서 스트리밍 데이터 원본의 데이터를 읽습니다. Kinesis Data Analytics는 KCL 사용과 관련된 여러 가지 좀 더 복잡한 개념(예: 체크포인트)뿐만 아니라 사용자에게서 이를 추출합니다.
 
완전관리형 솔루션을 원하고 SQL을 사용하여 데이터 스트림의 데이터를 처리하길 원한다면 Kinesis Data Analytics를 사용해야 합니다. Kinesis Data Analytics에서 지원하지 않는 요구 사항을 적용하여 사용자 지정 처리 솔루션을 구축해야 하고 이에 따른 소비자 애플리케이션을 관리할 수 있다면 KCL을 사용하십시오.

서비스 수준 계약

Q: Amazon Kinesis Data Analytics SLA는 무엇을 보장합니까?

Amazon Kinesis Data Analytics SLA는 Amazon Kinesis Data Analytics의 월간 가동률을 최소 99.9% 보장합니다.

Q: SLA 서비스 크레딧을 수령할 자격이 있는지 어떻게 알 수 있습니까?

같은 리전 내에서 작업을 실행하고 있는 하나 이상의 가용 영역의 월간 가동률이 월별 청구 주기 동안 99.9%보다 낮은 경우, Amazon Kinesis Data Analytics SLA에 따라 Amazon Kinesis Data Analytics의 SLA 크레딧 지급 대상이 됩니다.

SLA 이용 약관과 요청 제출 방법에 대한 자세한 내용은 Amazon Kinesis SLA 세부 정보 페이지를 참조하십시오.

Amazon Kinesis Data Analytics 시작하기

Product-Page_Standard-Icons_01_Product-Features_SqInk
비용 계산

요금 페이지로 이동하기

자세히 알아보기 
Product-Page_Standard-Icons_01_Product-Features_SqInk
시작 안내서 검토

단계별 안내서에서 Amazon Kinesis Data Analytics를 사용하는 방법을 배웁니다.

Product-Page_Standard-Icons_03_Start-Building_SqInk
스트리밍 애플리케이션 구축 시작

Amazon Kinesis Data Analytics 콘솔에서 첫 번째 스트리밍 애플리케이션을 구축합니다.