Kinesis Data Streams 용어와 개념

Kinesis Data Streams 용어와 개념

Kinesis Data Streams를 쓸 때는 데이터가 어떻게 흐르는지, 그 안의 구성 요소가 각각 뭘 뜻하는지 아는 게 중요해요. 큰 그림을 먼저 보면, 프로듀서(producer) 가 데이터를 계속 Kinesis Data Streams로 밀어 넣고 컨슈머(consumer) 가 그 데이터를 실시간으로 처리해요. 컨슈머는 Amazon EC2에서 도는 자체 애플리케이션이나 Amazon Data Firehose delivery stream일 수 있고, 처리 결과는 Amazon DynamoDB, Amazon Redshift, Amazon S3 같은 AWS 서비스에 저장할 수 있어요.

이제 Kinesis Data Streams에서 빠질 수 없는 용어들을 하나씩 정리해 볼게요.

출처: 공식문서

본문

Kinesis Data Stream

Kinesis data stream샤드들의 모음이에요. 각 샤드는 데이터 레코드의 시퀀스를 갖고 있고, 각 데이터 레코드는 Kinesis Data Streams가 부여한 sequence number를 가져요.

Data Record

data record는 Kinesis data stream에 저장되는 데이터의 단위예요. sequence number, partition key, 그리고 data blob(변경할 수 없는 bytes 시퀀스)으로 구성돼요. Kinesis Data Streams는 blob 안의 데이터를 검사하거나 해석하거나 변경하지 않아요. data blob은 최대 1MB까지 커질 수 있어요.

Kinesis Data Streams Application

만들 수 있는 컨슈머는 공유 팬아웃(shared fan-out)강화 팬아웃(enhanced fan-out) 두 종류가 있어요. 두 유형이 어떻게 다른지, 각각 어떻게 만드는지는 데이터 읽어 오기 문서에서 다뤄요.

Kinesis Client Library

Kinesis Client Library(KCL)는 애플리케이션에 컴파일되어 스트림에서 장애 허용(fault-tolerant) 소비를 가능하게 해요. KCL은 모든 샤드마다 그 샤드를 처리하는 record processor가 돌고 있는지 보장하고, 스트림에서 데이터를 읽는 작업을 단순화해 줘요. KCL은 데이터 소비와 관련된 메타데이터를 Amazon DynamoDB 테이블에 저장하는데, 데이터를 처리하는 애플리케이션마다 테이블을 세 개씩 만들어요.

Application Name

Amazon Kinesis Data Streams application의 이름은 그 애플리케이션을 식별해요. 각각의 애플리케이션은 애플리케이션이 쓰는 AWS 계정과 리전에 스코프된 유일한 이름을 가져야 해요. 이 이름은 Amazon DynamoDB의 컨트롤 테이블 이름이자 Amazon CloudWatch 지표의 네임스페이스로 쓰여요.

Server-Side Encryption

Kinesis Data Streams는 프로듀서가 스트림에 데이터를 넣을 때 민감한 데이터를 자동으로 암호화할 수 있어요. 이때 AWS KMS 마스터 키를 사용해요.

Data delivery

Data delivery는 관리할 인프라 없이 Kinesis data stream에서 분석·저장 목적지로 스트리밍 데이터를 전달하는 완전관리형 기능이에요. 프로비저닝할 커넥터나 컨슈머 애플리케이션, 컴퓨팅 리소스가 없어요. Kinesis Data Streams가 스트림에서 읽고 레코드를 버퍼링·집계한 뒤 몇 분 안에 구성한 목적지로 전달해요. Data delivery는 두 가지 목적지 유형을 지원해요: Apache Iceberg의 streaming tables, 그리고 general purpose Amazon S3 buckets.

  • Iceberg 형식의 streaming tables로 전달 — ETL 파이프라인 없이 스트리밍 데이터를 쿼리 가능한 Apache Iceberg 테이블로 계속 구체화(materialize)해요. Amazon S3 Tables 위에 Apache Iceberg 테이블로 record를 실시간 반영하죠. 이렇게 만들어진 데이터는 Apache Spark, Trino, Apache Flink, Amazon Athena 같은 어떤 엔진으로도 스트리밍 데이터 위에서 실시간 분석할 수 있어요.
  • Amazon S3로 전달 — 스트리밍 데이터를 원본 포맷 그대로 general purpose S3 bucket에 전달해 백업·아카이빙·하위 데이터 처리에 써요.

더 알아보기