View a markdown version of this page

Amazon Kinesis Data Streams 용어 및 개념 - Amazon Kinesis Data Streams

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon Kinesis Data Streams 용어 및 개념

Amazon Kinesis Data Streams를 시작하기 전에 관련 아키텍처와 용어를 알아봅니다.

Kinesis Data Streams의 상위 수준 아키텍처 검토

다음 다이어그램은 Kinesis Data Streams의 상위 수준 아키텍처를 보여줍니다. 생산자가 계속해서 Kinesis Data Streams에 데이터를 푸시하고 소비자가 실시간으로 데이터를 처리합니다. 소비자(예: Amazon EC2 또는 Amazon Data Firehose 전송 스트림에서 실행되는 사용자 지정 애플리케이션)는 Amazon DynamoDB, Amazon Redshift 또는 Amazon S3와 같은 AWS 서비스를 사용하여 결과를 저장할 수 있습니다.

Kinesis Data Streams 상위 수준 아키텍처 다이어그램

Kinesis Data Streams의 용어 숙지

Kinesis 데이터 스트림

Kinesis 데이터 스트림은 샤드의 집합입니다. 샤드마다 데이터 레코드 시퀀스가 있습니다. 각 데이터 레코드에는 Kinesis Data Streams에서 할당한 시퀀스 번호가 있습니다.

데이터 레코드

데이터 레코드는 Kinesis 데이터 스트림에 저장되는 데이터의 단위입니다. 데이터 레코드는 시퀀스 번호, 파티션 키 및 변경할 수 없는 바이트 시퀀스인 데이터 blob으로 구성됩니다. Kinesis Data Streams는 어떤 방식으로든 blob의 데이터를 검사, 해석 또는 변경하지 않습니다. 데이터 blob은 최대 1MB일 수 있습니다.

용량 모드

데이터 스트림 용량 모드는 용량이 관리되는 방식과 데이터 스트림 사용에 대한 요금이 청구되는 방식을 결정합니다. 현재 Kinesis Data Streams에서 데이터 스트림에 대해 온디맨드 용량 모드와 프로비저닝된 용량 모드 중에서 선택할 수 있습니다. 자세한 내용은 스트리밍할 올바른 모드 선택 단원을 참조하십시오.

온디맨드 모드에서 Kinesis Data Streams는 필요한 처리량을 제공하기 위해 샤드를 자동으로 관리합니다. 사용한 실제 처리량에 대해서만 요금이 부과되며 Kinesis Data Streams는 증가하거나 감소할 때 워크로드의 처리량 요구 사항을 자동으로 수용합니다. 자세한 내용은 온디맨드 표준 모드의 기능 및 사용 사례 단원을 참조하십시오.

프로비저닝된 모드에서는 데이터 스트림의 샤드 수를 지정해야 합니다. 데이터 스트림의 총 용량은 해당 샤드 용량의 합계입니다. 필요에 따라 데이터 스트림의 샤드 수를 늘리거나 줄일 수 있으며 샤드 수에 대해 시간당 요금이 부과됩니다. 자세한 내용은 프로비저닝된 모드 기능 및 사용 사례 단원을 참조하십시오.

보존 기간

보존 기간은 데이터 레코드를 스트림에 추가한 후 데이터 레코드에 액세스할 수 있는 시간의 길이입니다. 스트림 보존 기간은 기본적으로 생성 후 24시간으로 설정됩니다. IncreaseStreamRetentionPeriod 작업을 사용하여 보존 기간을 최대 8,760시간(365일)까지 늘릴 수 있으며 DecreaseStreamRetentionPeriod 작업을 사용하여 보존 기간을 최소 24시간까지 줄일 수 있습니다. 24시간을 초과하여 보존 기간을 설정하면 스트림에 추가 요금이 적용됩니다. 자세한 내용은 Amazon Kinesis Data Streams 요금을 참조하십시오.

생산자

생산자는 레코드를 Amazon Kinesis Data Streams에 저장합니다. 예를 들어, 스트림에 로그 데이터를 보내는 웹 서버가 생산자입니다.

소비자

소비자는 Amazon Kinesis Data Streams의 레코드를 가져와서 처리합니다. 이 소비자를 Amazon Kinesis Data Streams 애플리케이션이라고 합니다.

Amazon Kinesis Data Streams 애플리케이션

Amazon Kinesis Data Streams 애플리케이션은 EC2 인스턴스의 플릿에서 공통적으로 실행되는 스트림의 소비자입니다.

공유 팬아웃 소비자와 향상된 팬아웃 소비자의 두 가지 유형 소비자를 개발할 수 있습니다. 두 유형 간의 차이와 각 유형의 소비자를 만드는 방법을 살펴보려면 Amazon Kinesis Data Streams에서 데이터 읽기 단원을 참조하십시오.

Kinesis Data Streams 애플리케이션의 출력은 다른 스트림의 입력이 될 수 있으며 실시간으로 데이터를 처리하는 복잡한 토폴로지를 생성할 수 있도록 해줍니다. 또한 애플리케이션은 다양한 다른 AWS 서비스로 데이터를 전송할 수 있습니다. 스트림 하나에 여러 애플리케이션이 있을 수 있으며 각 애플리케이션이 동시에 독립적으로 스트림의 데이터를 소비할 수 있습니다.

샤드

샤드는 스트림에서 고유하게 식별되는 데이터 레코드 시퀀스입니다. 스트림은 하나 이상의 샤드로 구성되며 각 샤드는 고정된 용량 단위를 제공합니다. 각 샤드는 읽기의 경우 초당 최대 5개의 트랜잭션, 초당 최대 2MB의 총 데이터 읽기 속도, 쓰기의 경우 초당 최대 1,000개의 레코드, 초당 최대 1MB의 총 데이터 쓰기 속도를 지원할 수 있습니다(파티션 키 포함). 스트림의 데이터 용량은 스트림에 지정하는 샤드 수의 함수입니다. 스트림의 총 용량은 해당 샤드의 용량의 합계입니다.

데이터 속도가 증가하면 스트림에 할당된 샤드 수를 늘리거나 줄일 수 있습니다. 자세한 내용은 스트림 리샤딩 단원을 참조하십시오.

파티션 키

파티션 키는 스트림 내의 샤드에서 데이터를 그룹화하는 데 사용됩니다. Kinesis Data Streams는 스트림에 속하는 데이터 레코드를 여러 샤드로 분리합니다. 각 데이터 레코드와 연결된 파티션 키를 사용하여 해당 데이터 레코드가 속한 샤드를 확인합니다. 파티션 키는 각 키에 대한 최대 길이 제한이 256자인 유니코드 문자열입니다. 파티션 키를 128비트 정수 값에 매핑하고 샤드의 해시 키 범위를 사용하여 연결된 데이터 레코드를 샤드에 매핑하기 위해 MD5 해시 함수가 사용됩니다. 애플리케이션이 데이터를 스트림에 넣을 때는 파티션 키를 지정해야 합니다.

시퀀스 번호

각 데이터 레코드에는 샤드 내 파티션 키별로 고유한 시퀀스 번호가 있습니다. Kinesis Data Streams는 client.putRecords 또는 client.putRecord를 사용하여 스트림에 쓴 후 시퀀스 번호를 할당합니다. 같은 파티션 키의 시퀀스 번호는 일반적으로 시간이 지나면서 증가합니다. 쓰기 요청 간의 기간이 길수록 시퀀스 번호가 커집니다.​

참고

같은 스트림에 있는 데이터 세트의 인덱스로 시퀀스 번호를 사용할 수 없습니다. 데이터 세트를 논리적으로 분리하려면 파티션 키를 사용하거나 데이터 세트마다 별도의 스트림을 만드십시오.

Kinesis Client Library

Kinesis Client Library는 결함이 있어도 정상적으로 스트림의 데이터를 소비할 수 있도록 애플리케이션에 컴파일됩니다. Kinesis Client Library는 각 샤드에 대해 해당 샤드를 실행하고 처리하는 레코드 프로세서가 있도록 보장합니다. 또한 라이브러리는 스트림에서 데이터를 읽는 과정을 간소화합니다. Kinesis Client Library는 Amazon DynamoDB 테이블을 사용하여 데이터 소비와 관련된 메타데이터를 저장합니다. 데이터를 처리하는 애플리케이션마다 테이블 세 개를 만듭니다. 자세한 내용은 Kinesis Client Library 사용 단원을 참조하십시오.

애플리케이션 이름

Amazon Kinesis Data Streams 애플리케이션의 이름은 애플리케이션을 식별합니다. 각 애플리케이션에는 애플리케이션에서 사용하는 AWS 계정 및 리전으로 범위가 지정된 고유한 이름이 있어야 합니다. 이 이름은 Amazon DynamoDB에 있는 제어 테이블의 이름과 Amazon CloudWatch 지표의 네임스페이스로 사용됩니다.

서버 측 암호화

Amazon Kinesis Data Streams는 생산자가 민감한 데이터를 스트림에 입력할 때 자동으로 암호화할 수 있습니다. Kinesis Data Streams는 암호화에 AWS KMS 마스터 키를 사용합니다. 자세한 내용은 Amazon Kinesis Data Streams의 데이터 보호 단원을 참조하십시오.

참고

암호화된 스트림에서 읽거나 쓰려면 마스터 키에 액세스할 권한이 생산자 및 소비자 애플리케이션에 있어야 합니다. 생산자 및 소비자 애플리케이션에 권한을 부여하는 데 대한 자세한 내용은 사용자 생성 KMS 키 사용 권한를 참조하십시오.

참고

서버 측 암호화를 사용하면 AWS Key Management Service (AWS KMS) 비용이 발생합니다. 자세한 내용은 AWS Key Management Service 요금을 참조하세요.

데이터 전송

데이터 전송은 관리할 인프라 없이 Kinesis 데이터 스트림의 스트리밍 데이터를 분석 또는 스토리지 대상으로 전송하는 완전 관리형 기능입니다. 프로비저닝할 커넥터, 소비자 애플리케이션 또는 컴퓨팅 리소스가 없습니다. Kinesis Data Streams는 스트림에서 읽고, 레코드를 버퍼링 및 집계하고, 몇 분 내에 구성된 대상으로 전송합니다. 데이터 전송은 Apache Iceberg의 스트리밍 테이블과 범용 Amazon S3 버킷이라는 두 가지 대상 유형을 지원합니다. 자세한 내용은 Amazon Kinesis Data Streams의 스트리밍 테이블 및 S3 전송 단원을 참조하십시오.

Iceberg 형식으로 스트리밍 테이블로 전송

스트리밍 데이터를 ETL 파이프라인 없이 Amazon S3 Tables에서 쿼리 가능한 Apache Iceberg 테이블로 지속적으로 구체화합니다. 스트리밍 테이블로의 전송은 스트림 레코드를 Amazon S3 Tables의 Apache Iceberg 테이블로 지속적으로 구체화합니다. 내장된 지능형 인라인 압축은 작은 파일 확산을 제거하고 데이터 신선도를 저하시키지 않으면서 쿼리 성능을 예측 가능하게 유지합니다. 스트리밍 데이터에 대한 실시간 분석을 위해 Apache Spark, Trino, Apache Flink 또는 Amazon Athena를 포함한 모든 엔진으로 데이터를 쿼리하거나 변환합니다.

Amazon S3으로 전송

백업, 아카이브 및 다운스트림 데이터 처리를 위해 소스 형식의 스트리밍 데이터를 Amazon S3 버킷에 전송합니다. Amazon S3로 전송하면 스트리밍 레코드가 원래 소스 형식으로 범용 Amazon S3 버킷에 직접 전송됩니다. 이 기능을 사용하여 장기 데이터 보존, 규정 준수 아카이브, 재생 및 재처리 워크플로 또는 다운스트림 배치 처리 파이프라인의 스테이징 계층으로 사용할 수 있습니다. 스트리밍 테이블로의 전송과 함께 Amazon S3의 전체 충실도 원시 백업과 함께 분석을 위한 실시간 쿼리 가능 테이블로 완전한 레이크하우스 아키텍처를 구축할 수 있습니다.