본문 바로가기
서버/SAA-C03

[SAA-C03] KDS(Kinesis Data Streams) 성능 향상

by jamong1014 2024. 5. 24.
반응형

사례

한 빅데이터 분석 업체가 Kinesis Data Streams(KDS)을 사용하여 농업 과학 기업의 필드 장치에서 IoT 데이터를 받아 처리하고 있습니다. 들어온 데이터 스트림은 다양한 컨슈머 애플리케이션에서 사용되고 있는데, 엔지니어들이 프로듀서와 데이터 스트림 컨슈머 사이에서 데이터 전달 속도의 성능 저하를 발견했습니다.

솔루션 아키텍트의 관점에서 주어진 사례의 성능 문제를 개선하기에 적합한 방식은 무엇입니까?

 

본론

Kinesis Data Streams는 프로듀서(IoT 장치 등)에서 실시간으로 발생한 데이터들을 스트림 형태로 수신하고 저장하는 플랫폼이다. 스트림은 샤드로 구성되어 있으며 KDS에 도착한 데이터는 레코드 형태로 저장됨.

 

이 레코드는 특정 샤드에 할당되고, 각 샤드는 데이터를 순차적으로 저장하고, 시퀀스 번호를 부여해서 데이터의 순서를 보장

 

여기서 컨슈머 애플리케이션은 KDS에서 데이터를 읽고 처리하는 애플리케이션 또는 시스템을 말함

(각 컨슈머는 읽은 데이터를 분석, 저장, 모니터링 등의 작업을 수행)

 

사례에서 보면 프로듀서와 데이터 스트림 컨슈머 사이에서 데이터 전달 속도의 성능 저하를 발견했다는데 여기서 중요한 점은 전달 속도이다.

 

기본적으로 KDS에서는 여러 컨슈머가 동일한 샤드에서 데이터를 읽을 때 데이터 전송량을 공유해야 한다.

즉 한 샤드에서 너무 많은 컨슈머가 데이터를 읽으려고 할 때 데이터 전송 용량이 제한될 수 있다는 소리이다.

이로 인해서 처리량이 충분하지 않아 애플리케이션의 성능이 저장될 수 있다.

 

여기서 적절한 솔루션은 향상된 팬아웃 기능을 사용하는 것이다.

샤드의 처리량은 쓰기/읽기 각각 1MB/2MB인데 팬아웃 기능을 이용하게 되면 각 컨슈머가 독립적으로 2MB/초의 데이터 전송 용량을 가지게 된다.

 

즉 동시에 여러 컨슈머가 동일한 샤드에서 동시에 데이터를 읽어도 각 컨슈머가 충분한 전송 용량을 확보할 수 있어서 데이터 처리 속도가 향상되는 것이다.

 

 

Amazon Kinesis Data Streams, 고속 스트리밍을 위해 향상된 팬아웃 및 HTTP/2 지원 추가 | Amazon Web Services

몇 주 전 Amazon Kinesis Data Streams(KDS)를 위한 두 가지의 중요한 성능 개선 기능, 즉 향상된 팬 아웃 및 HTTP/2 데이터 검색 API를 출시했습니다. 향상된 팬아웃을 사용하면 개발자가 각 스트림 소비자(

aws.amazon.com

 


하지만 무조건 팬아웃 기능을 활성화해야 하는 건 아니다.

상황에 따라서 다르겠지만 단일 컨슈머를 이용할 경우는 하나의 컨슈머에서 모든 읽기 처리 속도를 이용할 수 있기 때문에 필요 없을 수 있고, 응용 프로그램의 처리량이 낮고 데이터 읽기 요구 사항이 간단한 경우에도 팬 아웃 기능을 사용하지 않을 수 있다.

 

그리고 향상된 팬아웃을 사용하여 검색한 데이터 양과 샤드당 등록된 고객 수를 기반으로 향상된 팬아웃 요금을 지불함.

 

1. Kinesis Data Streams을 Kinesis Data Firehose로 교체한다.

이 지문은 틀린 지문이다.

Kinesis Data Firehose는 스트리밍 데이터를 데이터 레이크, 데이터 스토어, 분석 도구에 안정적으로 로딩할 수 있는 솔루션이다.

 

S3, Redshift, ElasticSearch, Splunk에만 쓸 수 있다.

즉 KDF에서 나오는 데이터를 소비하는 애플리케이션은 가질 수 없다. 이 역할은 KDS가 하는 것이기 때문

 

2. Kinesis Data Streams을 SQS 표준 대기열로 교체한다. OR Kinesis Data Streams을 SQS FIFO 대기열로 교체한다.

이 지문도 틀린 지문이다.

Amazon Simple Queue Service(SQS)는 마이크로서비스, 분산 시스템, 서버리스 애플리케이션을 디커플링하고 스케일링할 수 있게 해주는 완벽히 관리되는 메시지 대기열화 서비스이다.

 

SQS는 두 가지 유형의 메시지 대기열을 제공하는데 표준 대기열은 처리 속도가 극대화되고 순서가 최적화되며 최소한 한 번 전달이 이루어짐.

SQS FIFO 대기열은 메시지가 전송된 순서대로 정확히 한 번 처리되도록 보장하기 위해 고안된 것.

다수의 애플리케이션이 동시에 동일한 스트림을 소비하고 있으므로, 제시된 활용 사례에서는 SQS 표준 대기열과 SQS FIFO가 모두 적합하지 않다.

반응형

댓글