일반

Q: Amazon Kinesis Data Analytics란 무엇입니까?
Amazon Kinesis Data Analytics는 Apache Flink를 통해 실시간으로 스트리밍 데이터를 변환하고 분석할 수 있는 가장 쉬운 방법입니다. Apache Flink는 데이터 스트림 처리를 위한 오픈 소스 프레임워크 및 엔진입니다. Amazon Kinesis Data Analytics는 Apache Flink 애플리케이션을 빌드 및 관리하고 다른 AWS 서비스와 통합하는 데 따르는 복잡성을 줄여줍니다.

Amazon Kinesis Data Analytics는 스트리밍 애플리케이션의 지속적 실행에 필요한 모든 작업을 처리하며, 수신 데이터의 볼륨과 처리량에 맞춰 자동으로 확장됩니다. Amazon Kinesis Data Analytics를 사용하면 서버를 관리할 필요가 없고, 최소 요금이나 설치 비용도 없으며, 스트리밍 애플리케이션이 소비하는 리소스에 대해서만 결제하면 됩니다.
 
Q: 실시간 스트림 처리란 무엇이고 왜 필요합니까?
실시간 데이터 원본의 폭발적인 증가로 인해 회사들이 데이터를 수집하는 속도가 더 빨라지고 있습니다. 모바일 및 웹 애플리케이션의 로그 데이터, 전자 상거래 플랫폼의 구매 데이터 또는 IoT 디바이스의 센서 데이터를 처리할 때 데이터를 실시간으로 수집하면 고객, 조직 및 비즈니스의 현재 상황을 파악할 수 있습니다.
 
Q: Kinesis Data Analytics로 어떤 작업을 할 수 있습니까?
많은 사용 사례에 대해 Kinesis Data Analytics를 사용하여 지속적으로 데이터를 처리하고 며칠 또는 몇 주가 아닌 몇 초 또는 몇 분 만에 통찰력을 얻을 수 있습니다. Kinesis Data Analytics를 사용하면 로그 분석, 클릭스트림 분석, IoT(사물 인터넷), 광고 기술, 게임 등을 위한 엔드 투 엔드 스트림 처리 애플리케이션을 신속하게 구축할 수 있습니다. 가장 일반적인 사용 사례 4가지로는 스트리밍 ETL(Extract-Transform-Load), 지속적 지표 생성, 반응형 실시간 분석 및 대화형 데이터 스트림 쿼리가 있습니다.
 
스트리밍 ETL
스트리밍 ETL 애플리케이션을 통해 실시간으로 데이터 레이크 또는 데이터 웨어하우스에 로드하기 전에 원시 데이터를 정리, 보강, 조직 및 변형하여 배치 ETL 단계를 절감 또는 제거할 수 있습니다. 이러한 애플리케이션은 제공 전에 작은 레코드를 더 큰 파일로 버퍼링하고, 스트림 및 테이블 간 정교한 조인을 수행할 수 있습니다. 예를 들어, Amazon Managed Streaming for Apache Kafka(Amazon MSK)에 저장된 IoT 센서 데이터를 지속적으로 읽는 애플리케이션을 빌드하고, 센서 유형별로 데이터를 조직하며, 중복 데이터를 제거하고, 특정 스키마별로 데이터를 정규화하며, 데이터를 Amazon S3에 제공할 수 있습니다.
 
지속적 지표 생성
지속적 지표 생성 애플리케이션을 통해 시간에 따른 데이터의 추세를 모니터링 및 이해할 수 있습니다. 애플리케이션은 스트리밍 데이터를 중요 정보로 집계하고, 이를 보고 데이터베이스 및 모니터링 서비스와 원활하게 통합하여 애플리케이션과 사용자에게 실시간으로 서비스를 제공합니다. Kinesis Data Analytics에서 SQL 또는 Apache Flink 코드를 사용하여 일정 시간 동안 시계열 분석을 지속적으로 생성할 수 있습니다. 예를 들어 모바일 게임의 경우 1분 간격으로 상위 플레이어를 계산해서 Amazon DynamoDB로 전송하는 방법으로 라이브 순위표를 만들 수 있습니다. 또는 5분 간격으로 웹 사이트의 고유 방문자 수를 계산하고 처리된 결과를 Amazon Redshift에 전송함으로써 웹 사이트에 대한 트래픽을 추적할 수 있습니다.
 
반응형 실시간 분석
반응형 실시간 분석 애플리케이션은 특정 지표가 미리 정의된 임계값에 도달하는 경우 또는 고급 사례에서 애플리케이션이 기계 학습 알고리즘을 사용하여 이상을 탐지하는 경우 실시간 경보 또는 알림을 전송합니다. 이러한 애플리케이션을 통해 모바일 앱에서 사용자 이탈을 예측하고 저하된 시스템을 식별하는 등 실시간으로 비즈니스의 변화에 즉시 반응할 수 있습니다. 예를 들어 시간이 지나면서 애플리케이션이 고객 관련 API의 가용성 또는 성공률을 계산한 후, 결과를 Amazon CloudWatch로 전송할 수 있습니다. 특정 범주에 해당하는 이벤트를 찾은 후 Amazon Kinesis Data Streams 및 Amazon Simple Notification Service(SNS)를 사용하여 적절한 고객에게 자동으로 알림을 전송하도록 애플리케이션을 구축할 수도 있습니다.
 
대화형 데이터 스트림 분석
대화형 분석을 사용하면 스트리밍 데이터를 실시간으로 탐색할 수 있습니다. 임시 쿼리 또는 프로그램을 통해 Amazon MSK 또는 Amazon Kinesis Data Streams의 스트림을 검사하고 이러한 스트림 내의 데이터 형태를 시각화할 수 있습니다. 예를 들어 시간대별 평균을 계산하는 실시간 지표의 동작을 보고 선택한 대상으로 집계 데이터를 전송할 수 있습니다. 대화형 분석은 스트림 처리 애플리케이션의 반복 개발에도 도움이 됩니다. 구축하는 쿼리는 새 데이터가 도착할 때마다 지속적으로 업데이트됩니다. Amazon Kinesis Data Analytics Studio를 사용하면 이러한 쿼리를 배포하여 자동 조정 및 내구성이 우수한 상태 백업이 활성화된 상태로 지속적으로 실행할 수 있습니다.
 
Q: Kinesis Data Analytics용 Apache Flink 애플리케이션을 시작하려면 어떻게 해야 합니까?
Amazon Kinesis Data Analytics 콘솔에 로그인하여 새로운 스트림 처리 애플리케이션을 생성합니다. AWS CLIAWS SDK도 사용할 수 있습니다. 애플리케이션을 생성한 후에는 선호하는 통합 개발 환경으로 이동하고, AWS에 연결한 다음 오픈 소스 Apache Flink 라이브러리와 원하는 언어의 AWS SDK를 설치합니다. Apache Flink는 데이터 스트림 처리를 위한 오픈 소스 프레임워크이자 엔진이며, AWS SDK와 함께 작동합니다. 확장 가능한 라이브러리에는 window 및 aggregate 같은 25개 이상의 사전 구축된 스트림 처리 연산자와 함께, Amazon MSK, Amazon Kinesis Data Streams, Amazon Kinesis Data Firehose 같은 AWS 서비스 통합이 포함되어 있습니다. 구축 이후 Amazon Kinesis Data Analytics에 코드를 업로드하면 서비스에서 수신 데이터의 볼륨 및 처리량에 대응하는 자동 크기 조정을 포함하여 지속적인 실시간 애플리케이션 실행에 필요한 모든 것을 처리합니다.
 
Q: Amazon Kinesis Data Analytics Studio를 시작하려면 어떻게 해야 합니까?
Amazon Kinesis Data Analytics 콘솔에서 시작하고 새로운 Studio 노트북을 생성할 수 있습니다. 노트북을 시작한 후 Apache Zeppelin에서 노트북을 열어 SQL, Python 또는 Scala로 즉시 코드를 작성할 수 있습니다. 내장된 통합 및 사용자 지정 커넥터를 통한 다른 다양한 소스로 Amazon Kinesis Data Streams, Amazon MSK 및 Amazon S3의 노트북 인스턴스를 사용하여 대화형으로 애플리케이션을 개발할 수 있습니다. Apache Flink가 Flink SQL 및 Table API에서 지원하는 모든 연산자를 사용하여 데이터 스트림의 임시 쿼리를 수행하고 스트림 처리 애플리케이션을 개발할 수 있습니다. 준비가 되면 클릭 몇 번으로 노트북에서 자동 조정 및 내구성 있는 상태를 통해 지속적으로 실행 중인 스트림 처리 애플리케이션으로 코드를 손쉽게 승격할 수 있습니다.
 
Q: Kinesis Data Analytics용 Apache Beam 애플리케이션을 시작하려면 어떻게 해야 합니까?
Apache Beam을 사용하여 Kinesis Data Analytics 애플리케이션을 생성하는 작업은 Apache Flink를 시작하는 방법과 매우 비슷합니다. 위 질문의 지침에 따르십시오. 개발자 안내서의 지침에 따라 Apache Beam에서 애플리케이션을 실행하는 데 필요한 구성 요소를 설치해야 합니다. Apache Beam에서 실행하는 경우에만 Kinesis Data Analytics는 Java SDK를 지원합니다.
 
Q: Kinesis Data Analytics for 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 개발자 안내서에서 한도를 참조하십시오. Apache Flink 애플리케이션의 서비스 한도에 대한 자세한 내용은 Amazon Kinesis Data Analytics for Apache Flink 개발자 안내서의 한도 섹션을 참조하십시오.
 
Q: Amazon Kinesis Data Analytics는 스키마 등록을 지원합니까?
예. Amazon Kinesis Data Analytics for Apache Flink 애플리케이션에서 Apache Flink DataStream Connectors를 통해 AWS Glue의 서버리스 기능인 AWS Glue 스키마 레지스트리를 사용할 수 있습니다. Apache Kafka/Amazon MSK 및 Amazon Kinesis Data Streams를 싱크 또는 소스로 Amazon Kinesis Data Analytics for Apache Flink 워크로드와 통합할 수 있습니다. 스키마 레지스트리 사용 설명서를 확인하여 시작하고 자세히 알아보십시오.

주요 개념

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

애플리케이션 관리

Q: Kinesis Data Analytics 애플리케이션의 작업 및 성능을 모니터링하려면 어떻게 해야 합니까?
AWS는 Flink Dashboard for Apache Flink 애플리케이션에 대한 액세스를 포함하여 Kinesis Data Analytics 애플리케이션을 모니터링하는 데 사용할 수 있는 다양한 도구를 제공합니다. 이러한 도구 중 일부를 구성하여 모니터링을 수행할 수 있습니다. 애플리케이션 모니터링 방법에 대한 자세한 내용은 다음을 참조하십시오.
 
Q: Kinesis Data Analytics 애플리케이션에 대한 액세스를 어떻게 관리하고 제어합니까?
Kinesis Data Analytics가 애플리케이션에 지정되어 있는 스트리밍 데이터 원본에서 레코드를 읽기 위해서는 권한이 필요합니다. 또한, Kinesis Data Analytics가 애플리케이션 출력을 애플리케이션 출력 구성에 지정되어 있는 대상에 작성하기 위해서는 권한이 필요합니다. Kinesis Data Analytics가 맡을 수 있는 IAM 역할을 생성하여 이러한 권한을 부여할 수 있습니다. 이 역할에 부여하는 권한은 Kinesis Data Analytics가 역할을 맡았을 때 수행할 수 있는 작업을 결정합니다. 자세한 내용은 다음을 참조하십시오.
  • Amazon Kinesis Data Analytics for Apache Flink 개발자 안내서의 권한 부여.
  • Amazon Kinesis Data Analytics Studio 개발자 안내서의 권한 부여.
  • Amazon Kinesis Data Analytics for SQL 개발자 안내서의 권한 부여.
 
Q: Kinesis Data Analytics는 내 애플리케이션을 어떻게 확장합니까?
Kinesis Data Analytics는 대부분의 시나리오에서 소스 스트림의 데이터 처리량과 쿼리의 복잡성을 수용할 수 있도록 애플리케이션을 탄력적으로 조정합니다. Kinesis Data Analytics는 Amazon Kinesis 처리 단위(KPU)의 형태로 용량을 프로비저닝합니다. 1개의 KPU는 1개의 vCPU와 4GB 메모리를 제공합니다.
 
Apache Flink 애플리케이션 및 Studio 노트북의 경우 Kinesis Data Analytics는 애플리케이션에서 체크포인트로 사용하고 임시 디스크를 통해 사용 가능한 KPU당 50GB의 실행 중인 애플리케이션 스토리지를 할당합니다. 체크포인트는 애플리케이션 중단으로부터 즉각적인 복구에 사용되는 실행 중인 애플리케이션의 최신 백업입니다. 또한 API의 Parallelism 및 ParallelismPerKPU 파라미터를 사용하여 Apache Flink 애플리케이션 작업(원본으로부터 읽기 또는 연산자 실행)에 대한 Kinesis Data Analytics의 병렬 실행을 제어할 수 있습니다. Parallelism은 작업의 동시 인스턴스 수를 정의합니다. 모든 연산자, 원본 및 싱크는 정의된 병렬 처리를 실행하고, 기본값은 1입니다. ParallelismPerKPU는 애플리케이션의 Kinesis 처리 단위(KPU)당 예약될 수 있는 병렬 작업의 수를 정의하며, 기본값은 1입니다. 자세한 내용은 Apache Flink용 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 애플리케이션을 구축 및 관리하는 데 사용할 수 있는 모범 사례는 무엇입니까?
Apache Flink 모범 사례에 대한 자세한 내용은 Apache Flink용 Amazon Kinesis Data Analytics 개발자 안내서의 모범 사례 섹션을 참조하십시오. 이 섹션에서는 내결함성, 성능, 로깅, 코딩 등에 대한 모범 사례를 다룹니다.
 
Amazon Kinesis Data Analytics Studio 모범 사례에 대한 자세한 내용은 Amazon Kinesis Data Analytics Studio 개발자 안내서의 모범 사례 섹션을 참조하세요. 이 섹션에서는 SQL, Python 및 Scala 애플리케이션의 모범 사례 및 샘플, 코드를 지속적으로 실행되는 스트림 처리 애플리케이션으로 배포할 때의 요구 사항, 성능, 로깅 및 기타 정보를 다룹니다. 
 
SQL 모범 사례에 대한 자세한 내용은 Amazon Kinesis Data Analytics for SQL 개발자 안내서의 모범 사례 섹션을 참조하세요. 이 섹션에서는 애플리케이션 관리, 입력 스키마 정의, 출력에 연결 및 애플리케이션 코드 작성을 다룹니다.
 
Q: Apache Flink용 Kinesis Data Analytics 애플리케이션에서 Amazon VPC를 통해 리소스에 액세스할 수 있습니까?
예. Amazon VPC를 통해 리소스에 액세스할 수 있습니다. Amazon Kinesis Data Analytics 개발자 안내서의 Amazon VPC 사용 섹션에서 VPC 액세스를 위해 애플리케이션을 구성하는 방법에 대해 학습할 수 있습니다.
 
Q: Apache Flink용 Kinesis Data Analytics 애플리케이션 하나에서 여러 VPC에 액세스할 수 있습니까?
아니요. 서브넷이 여러 개 지정된 경우, 모두 같은 VPC에 있어야 합니다. 해당 VPC를 피어링해서 다른 VPC에 연결할 수 있습니다.
 
Q: VPC에 연결된 Kinesis Data Analytics for Apache Flink 애플리케이션에서 인터넷 및 AWS 서비스 엔드포인트에도 액세스할 수 있습니까?
특정 VPC에 있는 리소스에 액세스하도록 구성된 Kinesis Data Analytics for Apache Flink 애플리케이션 및 Kinesis Data Analytics Studio 노트북은 기본 구성으로 인터넷에 액세스할 수 없습니다. 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의 수를 자동으로 조정합니다. 메모리 및 컴퓨팅 수요가 처리 복잡성과 처리된 스트리밍 데이터의 처리량에 따라 다르기 때문입니다.
 
Apache Flink 및 Apache Beam 애플리케이션의 경우 애플리케이션 오케스트레이션에 대해 애플리케이션당 단일 추가 KPU 요금이 청구됩니다. 또한 Apache Flink 및 Apache Beam 애플리케이션의 경우 실행 중인 애플리케이션 스토리지 및 내구성 있는 애플리케이션 백업에 대해 요금이 청구됩니다. 실행 중인 애플리케이션 스토리지는 Amazon Kinesis Data Analytics의 상태 저장 처리 기능에 사용되며, 월별 GB당 요금이 청구됩니다. 내구력이 뛰어난 애플리케이션 백업은 선택 사항으로, 월별 GB당 요금이 청구되고 애플리케이션에 대한 특정 시점 복구를 제공합니다.
 
Amazon Kinesis Data Analytics Studio의 경우 개발 또는 대화형 모드에서 애플리케이션 오케스트레이션에 대한 추가 KPU 1개와 대화형 개발에 대한 KPU 1개에 대한 요금이 부과됩니다. 애플리케이션 스토리지 실행 요금도 부과됩니다. 내구성이 뛰어난 애플리케이션 백업에는 요금이 부과되지 않습니다.
 
요금에 대한 자세한 내용은 Amazon Kinesis Data Analytics 요금 페이지를 참조하세요.
 
Q: AWS 프리 티어에서 Kinesis Data Analytics를 사용할 수 있습니까?
Kinesis Data Analytics는 현재 AWS 프리 티어에서 사용할 수 없습니다. AWS 프리 티어는 AWS 서비스 그룹을 무료로 체험해 볼 수 있는 프로그램입니다.
 
Q: 실행은 되고 있지만 소스의 데이터를 처리하고 있지 않은 Kinesis Data Analytics 애플리케이션에 대해서도 요금이 부과됩니까?
Apache Flink 및 Apache Beam 애플리케이션의 경우 Kinesis Data Analytics 애플리케이션이 실행 중인 경우 최소 2개의 KPU와 50GB의 실행 중인 애플리케이션 스토리지에 대한 요금이 부과됩니다. 
 
Kinesis Data Analytics Studio 노트북에서 애플리케이션이 실행 중인 경우 최소 3개의 KPU와 50GB의 실행 중인 애플리케이션 스토리지에 대한 요금이 부과됩니다.
 
SQL 애플리케이션의 경우 Kinesis Data Analytics 애플리케이션이 실행되고 있는 경우 최소 1개의 KPU에 대한 요금이 부과됩니다.
 
Q: Kinesis Data Analytics 비용 외에 발생할 수 있는 다른 비용이 있습니까?
Kinesis Data Analytics는 완전관리형 스트림 처리 솔루션으로서, 데이터를 읽어오는 스트리밍 소스와 처리된 데이터를 작성하는 대상과는 독립적입니다. 애플리케이션에서 읽고 쓰는 서비스에 대해서는 별도로 요금이 청구됩니다.
Q: Apache Flink란 무엇입니까?
Apache Flink는 스트림 및 배치 데이터 처리를 위한 오픈 소스 프레임워크 및 엔진입니다. 손쉬운 스트리밍 애플리케이션 빌드가 가능하도록 하는데, 강력한 연산자를 제공하고 중복 처리와 같은 주요 스트리밍 문제를 해결하기 때문입니다. Apache Flink는 데이터 스트림에 배포된 계산에 대한 데이터 배포, 커뮤니케이션 및 내결함성을 제공합니다.
 
Q: 애플리케이션은 어떻게 개발합니까?
먼저 AWS SDK, Apache Flink 및 AWS 서비스에 대한 커넥터가 포함된 오픈 소스 라이브러리를 다운로드할 수 있습니다. Apache Flink용 Amazon Kinesis Data Analytics 개발자 안내서에서 라이브러리 다운로드 및 첫 번째 애플리케이션 생성 방법에 대한 지침을 얻을 수 있습니다.
 
Q: 내 애플리케이션 코드는 어떤 형태입니까?
데이터 스트림 및 스트림 연산자를 사용하여 Apache Flink 코드를 작성합니다. 애플리케이션 데이터 스트림은 코드 사용에 대한 처리를 수행하는 데이터 구조입니다. 데이터는 원본에서 애플리케이션 데이터 스트림으로 지속적으로 흐릅니다. 하나 이상의 스트림 연산자를 사용하여 변형, 파티션, 집계, 조인 및 윈도우를 포함한 애플리케이션 데이터 스트림의 처리를 정의합니다. 데이터 스트림 및 연산자는 연쇄 및 병렬 체인에 통합될 수 있습니다. 의사 코드를 사용하는 간단한 예가 아래에 표시되어 있습니다.
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: 어떤 연산자가 지원됩니까?
Apache Flink용 Kinesis Data Analytics에는 25개 이상의 Apache Flink 연산자가 포함되어 있으며, Map, KeyBy, aggregations, Window Join 및 Window를 포함한 다양한 사용 사례를 해결하는 데 사용될 수 있습니다. Map을 통해 임의 처리를 수행하고 수신 데이터 스트림으로부터 하나의 요소를 가져와 다른 요소로 생성할 수 있습니다. KeyBy는 유사한 데이터 지점을 함께 처리할 수 있도록 하는 특정 키를 사용하여 데이터를 논리적으로 조직합니다. Aggregations는 sum, min 및 max와 같은 여러 키에 걸친 처리를 수행합니다. Window Join은 두 데이터 스트림을 해당되는 키와 윈도우에 조인합니다. Window는 5분에 걸쳐 고유 항목의 수를 세는 것과 같이 키와 논리적 시간 기간 작업을 사용하여 날짜를 그룹화합니다.
 
이러한 연산자가 필요에 맞지 않는 경우 사용자 지정 연산자를 빌드할 수 있습니다. Apache Flink용 Amazon Kinesis Data Analytics의 연산자 섹션에서 더 많은 예를 확인할 수 있습니다. Apache Flink 설명서의 연산자 섹션에서 Apache Flink의 전체 연산자 목록을 확인할 수 있습니다.
 
Q: Apache Flink용 Kinesis Data Analytics 애플리케이션에서 지원되는 통합은 무엇입니까?
최소의 코드로 사전 구축된 통합을 설정하거나 자체 통합을 구축하여 실제로 모든 데이터 원본에 연결할 수 있습니다. Apache Flink 기반 오픈 소스 라이브러리는 데이터 처리 제공을 위해 스트리밍 소스 및 대상 또는 싱크를 지원합니다. 또한 비동기식 입력/출력 연결자를 통한 데이터 보강 지원도 포함합니다. 오픈 소스 라이브러리에 포함된 특정 연결자의 목록은 아래와 같습니다.
  • 스트리밍 데이터 원본: Amazon Managed Streaming for Apache Kafka(Amazon MSK), Amazon Kinesis Data Streams
  • 대상 또는 싱크: Amazon Kinesis Data Streams, Amazon Kinesis Data Firehose, Amazon DynamoDB, Amazon Elasticsearch Service 및 Amazon S3(파일 싱크 통합을 통함)

Apache Flink에는 또한 Apache Kafka, Apache Casssandra, Elasticsearch 등을 포함한 다른 커넥터가 포함되어 있습니다.
 
Q: Apache Flink용 Kinesis Data Analytics 애플리케이션에서 스트림 및/또는 주제 전체에 데이터를 복제할 수 있습니까?
예. Apache Flink용 Kinesis Data Analytics 애플리케이션을 사용하여 Amazon Kinesis Data Streams, Amazon MSK 및 기타 시스템 간에 데이터를 복제할 수 있습니다. 설명서에 제공된 예제에서 하나의 Amazon MSK 주제를 읽고 다른 주제에 쓰는 방법을 확인할 수 있습니다.
 
Q: 사용자 지정 통합이 지원됩니까?
파일, 디렉터리, 소켓 또는 인터넷을 통해 액세스할 수 있는 무언가로부터 읽고 쓸 수 있도록 하는 프리미티브 세트에 빌드하여 애플리케이션에 원본 또는 대상을 추가할 수 있습니다. Apache Flink는 데이터 원본데이터 싱크에 대해 이러한 프리미티브를 제공합니다. 프리미티브에는 데이터를 지속적으로 또는 한 번, 동기식 또는 비동기식으로 읽고 쓰는 기능과 같은 구성이 포함되어 있습니다. 예를 들어 기본 파일 기반 원본 통합을 확장하여 Amazon S3로부터 지속적으로 읽는 애플리케이션을 설정할 수 있습니다.
 
Q: Apache Flink용 Kinesis Data Analytics 애플리케이션에서는 어떤 전달 모델을 지원합니까?
Kinesis Data Analytics의 Apache Flink 애플리케이션은 애플리케이션이 소스 및 싱크를 포함한 멱등적 연산자를 사용하여 구축된 경우 "정확히 1회" 전달 모델을 사용합니다. 따라서 처리된 데이터는 단 한 번만 다운스트림 결과에 영향을 미칩니다. 체크포인트는 현재 애플리케이션 상태를 저장하고, Apache Flink용 Kinesis Data Analytics 애플리케이션에서 애플리케이션 위치를 복구하여 오류가 없는 실행과 동일한 의미 체계를 제공합니다. Apache Flink 애플리케이션용 체크포인트는 Apache Flink의 체크포인트 지정 기능을 통해 제공됩니다. 기본적으로 Apache Flink용 Kinesis Data Analytics 애플리케이션은 Apache Flink의 정확히 1회 의미 체계를 사용합니다. Apache Flink의 정확히 1회 의미 체계를 활용하는 원본, 연산자 및 싱크를 사용하여 설계한 애플리케이션은 정확히 1회 처리 의미 체계를 지원합니다.
 
Q: 애플리케이션 스토리지에서 로컬 스토리지로 액세스할 수 있습니까?
예. Apache Flink용 Kinesis Data Analytics 애플리케이션은 애플리케이션에 Kinesis 처리 단위(KPU)당 50GB의 실행 중인 애플리케이션 스토리지를 제공합니다. Kinesis Data Analytics는 애플리케이션을 통해 스토리지를 크기 조정합니다. 실행 중인 애플리케이션 스토리지는 체크포인트를 사용한 애플리케이션 상태 저장에 사용됩니다. 또한 데이터 캐싱 또는 다른 목적을 위해 임시 디스크를 사용하도록 애플리케이션 코드에 액세스하는 것도 가능합니다. Kinesis Data Analytics는 체크포인트(예: 연산자, 원본, 싱크)를 통해 언제든 실행 중인 애플리케이션 스토리지에서 데이터를 제거할 수 있습니다. 실행 중인 애플리케이션 스토리지에 저장된 모든 데이터는 저장 시 암호화됩니다.
 
Q: Apache Flink용 Kinesis Data Analytics는 어떻게 애플리케이션을 자동으로 백업합니까?
Kinesis Data Analytics는 체크포인트 및 스냅샷을 사용하여 실행 중인 애플리케이션의 상태를 자동으로 백업합니다. 체크포인트는 현재 애플리케이션 상태를 저장하고, Apache Flink용 Kinesis Data Analytics 애플리케이션에서 애플리케이션 위치를 복구하여 오류가 없는 실행과 동일한 의미 체계를 제공합니다. 체크포인트는 실행 중인 애플리케이션 스토리지를 활용합니다. 스냅샷은 애플리케이션에 대한 특정 시점 복구를 저장합니다. 스냅샷은 내구성 있는 애플리케이션 백업을 활용합니다.
 
Q: 애플리케이션 스냅샷은 무엇입니까?
스냅샷을 통해 특정 이전 시점에 대해 애플리케이션을 생성 및 복원할 수 있습니다. 이를 통해 이전 애플리케이션 상태를 유지 관리하고 언제든 애플리케이션을 롤백할 수 있습니다. 0개부터 수천 개에 이르기까지 보유하는 스냅샷의 수를 제어합니다. 스냅샷은 내구성 있는 애플리케이션 백업을 사용하고 Kinesis Data Analytics의 요금은 크기에 따라 부과됩니다. Kinesis Data Analytics는 기본적으로 스냅샷에 저장된 데이터를 암호화합니다. API를 통해 개별 스냅샷을 삭제하거나 애플리케이션을 삭제하여 전체 스냅샷을 삭제할 수 있습니다.
 
Q: 지원되는 Apache Flink 버전은 무엇입니까?
Amazon Kinesis Data Analytics for Apache Flink 애플리케이션은 Apache Flink 1.6, 1.8, 1.11 및 1.13(권장)을 지원합니다. 
 
Q: Kinesis Data Analytics for Flink 1.13에 대해 어떤 구성 요소 버전이 지원됩니까?
Kinesis Data Analytics의 Apache Flink 1.13은 Java Development Kit 버전 11, Python 3.8 및 Scala 2.12를 지원합니다. 자세한 내용은 AWS 개발자 안내서의 애플리케이션 생성 섹션에서 확인할 수 있습니다.
Q: Apache Flink 애플리케이션에 대한 Kinesis Data Analytics를 Apache Beam에서 실행할 수 있습니까?
예. Kinesis Data Analytics는 Apache Beam Java SDK 버전 2.32를 사용하여 구축된 스트리밍 애플리케이션을 지원합니다. Apache Beam은 여러 실행 엔진에서 실행할 수 있는 스트리밍 및 배치 데이터 처리 애플리케이션을 정의하기 위한 통합된 오픈 소스 모델입니다. Java로 Apache Beam 스트리밍 애플리케이션을 구축하고, Amazon Kinesis Data Analytics, 온프레미스에서 실행되는 Apache Spark 및 Apache Software Foundation에서 지원하는 기타 실행 엔진에서 Apache Flink 1.13을 사용하여 실행할 수 있습니다.

Amazon Kinesis Analytics Studio 애플리케이션 구축

Q: Studio 애플리케이션은 어떻게 개발합니까?
Amazon Kinesis Data Analytics Studio, Amazon Kinesis Data Streams 또는 Amazon MSK 콘솔에서 시작할 수 있습니다. 클릭 몇 번으로 서버리스 노트북을 시작하여 즉시 데이터 스트림을 쿼리하고 대화형 데이터 분석을 수행할 수 있습니다.

대화형 데이터 분석: 노트북에서 SQL, Python 또는 Scala로 코드를 작성하여 몇 초의 쿼리 응답 시간으로 스트리밍 데이터와 상호 작용할 수 있습니다. 내장된 시각화를 사용하여 노트북 안에서 데이터를 탐색하고 스트리밍 데이터에 대한 실시간 인사이트를 볼 수 있으며 Apache Flink로 구동되는 스트림 처리 애플리케이션을 손쉽게 개발할 수 있습니다.

코드를 프로덕션 애플리케이션으로 실행할 준비가 되면 클릭 한 번으로 서버 없이 초당 GB 단위의 데이터를 처리하는 스트림 처리 애플리케이션으로 전환할 수 있습니다.

스트림 처리 애플리케이션: 코드를 프로덕션으로 승격할 준비가 되면 클릭하여 코드를 구축할 수 있습니다. 노트북 인터페이스에서 [스트림 처리 애플리케이션으로 배포(Deploy as stream processing application)]를 클릭하거나 CLI에서 단일 명령을 실행하면 Studio가 Amazon Kinesis Data Analytics for Apache Flink 애플리케이션에서와 마찬가지로 자동 조정 및 내구성이 우수한 상태가 활성화된 상태로 스트림 처리 애플리케이션을 대규모로 실행하는 데 필요한 모든 인프라 관리를 처리합니다.

Q: 내 애플리케이션 코드는 어떤 형태입니까?
Apache Flink의 Table API를 사용하여 노트북에서 선호하는 언어(SQL, Python 또는 Scala)로 코드를 작성할 수 있습니다. Table API는 확장된 SQL 기능을 지원하는 상위 수준의 추상화이자 관계형 API입니다. 선택, 필터링, 조인, 그룹화, 집계 등과 같은 익숙한 작업과 함께 창 작업과 같은 스트림 관련 개념을 제공합니다. %<interpreter>를 사용하여 노트북 섹션에서 사용할 언어를 지정하고 여러 언어를 손쉽게 전환할 수 있습니다. 인터프리터는 노트북의 각 섹션에 대한 언어 또는 데이터 처리 엔진을 지정하는 데 사용되는 Apache Zeppelin 플러그인입니다. 사용자 정의 함수를 구축하고 참조하여 코드 기능을 개선할 수도 있습니다.

Q: 지원되는 SQL 작업은 무엇입니까?
스캔 및 필터링(SELECT, WHERE), 집계(GROUP BY, GROUP BY WINDOW,HAVING), 설정(UNION, UNIONALL, INTERSECT, IN, EXISTS), 주문(ORDER BY, LIMIT), 조인(INNER, OUTER, 시간 한정 기간 –BETWEEN, AND, 임시 테이블 조인 – 시간대별 변경을 추적하는 테이블), 상위 N개 항목, 중복 제거 및 패턴 인식과 같은 SQL 작업을 수행할 수 있습니다. GROUP BY, OUTER JOIN 및 상위 N개 항목과 같은 일부 쿼리는 스트리밍 데이터의 ‘업데이트 결과’입니다. 즉, 스트리밍 데이터가 처리되는 동안 결과가 지속적으로 업데이트됩니다. CREATE, ALTER 및 DROP과 같은 다른 DDL 문도 지원됩니다. 쿼리 및 샘플의 전체 목록은 https://ci.apache.org/projects/flink/flink-docs-release-1.13/docs/dev/table/sql/queries/overview를 참조하세요.

Q: Python 및 Scala는 어떻게 지원됩니까?
Apache Flink의 Table API는 Python 문자열 및 Scala 표현식을 사용한 언어 통합을 통해 Python 및 Scala를 지원합니다. 지원되는 작업은 선택, 주문, 그룹화, 조인, 필터링 및 창 작업을 포함하여 지원되는 SQL 작업과 매우 유사합니다. 전체 작업 및 샘플 목록은 https://ci.apache.org/projects/flink/flink-docs-release-1.13/docs/dev/table/tableapi/를 참조하세요.

Q: 지원되는 Apache Flink 및 Apache Zeppelin 버전은 무엇입니까?
Kinesis Data Analytics Studio는 Apache Flink 1.13 및 Apache Zeppelin 0.9를 지원합니다.

Q: Kinesis Data Analytics Studio 애플리케이션에서 기본적으로 통합되는 지원은 무엇입니까?

  • 데이터 원본: Amazon Managed Streaming for Apache Kafka(Amazon MSK), Amazon Kinesis Data Streams, Amazon S3
  • 대상 또는 싱크: Amazon MSK, Amazon Kinesis Data Streams 및 Amazon S3

Q: 사용자 지정 통합이 지원됩니까?
추가 단계를 수행하고 Apache Flink 코드(Python, Scala 또는 Java)를 추가하여 Amazon Elasticsearch Service, Amazon ElastiCache for Redis, Amazon Aurora, Amazon Redshift, Amazon DynamoDB, Amazon Keyspaces와 같은 대상을 포함하는 모든 Apache Flink 지원 통합에 대한 연결을 정의하는 방법으로 추가 통합을 구성할 수 있습니다. Studio 애플리케이션을 생성하거나 구성할 때 이 사용자 지정 커넥터에 대한 실행 파일을 연결할 수 있습니다.

Q: Kinesis Data Analytics Studio로 개발해야 합니까? 아니면 Kinesis Data Analytics SQL로 개발해야 합니까?
시작할 때는 Kinesis Data Analytics Studio를 사용하는 것이 좋습니다. 정확히 한 번 처리하는 보다 포괄적인 스트림 처리 경험을 제공하기 때문입니다. Kinesis Data Analytics Studio는 선택한 언어(SQL, Python 및 Scala)로 스트림 처리 애플리케이션을 개발할 수 있고, GB/s 처리로 확장되며, 몇 시간, 심지어 며칠에 걸쳐 장기 실행되는 계산을 지원하고, 몇 초 안에 코드 업데이트를 수행하며, 여러 입력 스트림을 처리하고, Amazon Kinesis Data Streams 및 Amazon MSK를 포함한 다양한 입력 스트림과 연동됩니다.

Kinesis Data Analytics SQL 애플리케이션 구축

새로운 프로젝트의 경우 Kinesis Data Analytics for SQL Applications 대신 최신 Kinesis Data Analytics Studio를 사용하는 것이 좋습니다. Kinesis Data Analytics Studio에서는 고급 분석 기능을 손쉽게 사용하여 정교한 스트림 처리 애플리케이션을 몇 분 안에 구축할 수 있습니다.

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는 애플리케이션당 최대 3개의 대상을 지원합니다. 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 결과를 전송하려면 어떻게 해야 합니까?
Kinesis Data Analytics for 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 시작하기

Kinesis Data Analytics 요금 페이지로 이동하기
비용 계산

Amazon Kinesis Data Analytics 요금 페이지로 이동하십시오.

시작하기 안내서 검토
시작 안내서 검토

SQL 또는 Apache Flink에 대한 단계별 안내서에서 Amazon Kinesis Data Analytics의 사용 방법을 알아보십시오.

콘솔에서 구축 시작
스트리밍 애플리케이션 구축 시작

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