KPL 주요 개념 - Amazon Kinesis Data Streams

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

KPL 주요 개념

다음 섹션에는 Kinesis Producer Library(KPL)를 이해하고 활용하는 데 필요한 개념과 용어가 나와 있습니다.

레코드

이 안내서에서는 KPL 사용자 레코드와 Kinesis Data Streams 레코드를 구별합니다. 한정자 없이 레코드라는 용어를 사용할 때는 KPL 사용자 레코드를 의미하고 Kinesis Data Streams 레코드를 언급할 때 Kinesis Data Streams 레코드라고 명시적으로 말합니다.

KPL 사용자 레코드는 사용자에게 특정 의미를 갖는 데이터 blob입니다. 예를 들어, 웹 사이트에서 UI 이벤트를 나타내는 JSON BLOB이나 웹 서버의 로그 항목이 있습니다.

Kinesis Data Streams 레코드는 Kinesis Data Streams 서비스 API에서 정의한 Record 데이터 구조의 인스턴스입니다. 파티션 키, 시퀀스 번호 및 데이터 BLOB이 여기에 포함됩니다.

배칭

일괄 처리는 개별 항목으로 반복 작업을 하는 대신 여러 항목으로 단일 작업을 수행하는 것을 의미합니다.

이 컨텍스트에서 '항목'은 레코드이며 작업은 항목을 Kinesis Data Streams로 전송하는 것입니다. 일괄 처리가 아닌 상황에서는 각 Kinesis Data Streams 레코드를 개별 Kinesis Data Streams 레코드에 배치하고 HTTP 요청 하나를 만들어 Kinesis Data Streams로 전송합니다. 일괄 처리를 통해 각 HTTP 요청이 레코드 하나가 아니라 여러 개를 전달할 수 있습니다.

KPL에서 지원하는 배치 처리 유형은 다음 두 가지입니다.

  • 집계 – 단일 Kinesis Data Streams 레코드에 여러 레코드를 저장합니다.

  • 수집 - API 작업 PutRecords를 사용하여 Kinesis 데이터 스트림에 있는 하나 이상의 샤드로 여러 Kinesis Data Streams 레코드를 전송합니다.

두 유형의 KPL 배치 처리는 동시에 존재하도록 설계되었으며 서로 독립적으로 활성화하거나 비활성화할 수 있습니다. 기본적으로 둘 다 활성화됩니다.

집계

집계는 Kinesis Data Streams 레코드에 있는 여러 레코드의 스토리지를 의미합니다. 집계를 통해 고객이 API 호출당 전송되는 레코드 수를 늘릴 수 있으므로 생산자 처리량이 효과적으로 증가합니다.

Kinesis Data Streams 샤드는 최대 1,000개의 초당 Kinesis Data Streams 레코드 또는 1MB의 처리량을 지원합니다. 초당 Kinesis Data Streams 레코드 제한은 1KB 미만의 레코드와 고객을 바인딩합니다. 레코드 집계를 통해 고객이 여러 레코드를 Kinesis Data Streams 레코드 하나로 결합할 수 있어 샤드당 처리량을 향상시킬 수 있습니다.

리전 us-east-1의 샤드 하나가 현재 초당 레코드 1,000개의 일정한 속도로 실행되며 각 레코드가 512바이트라고 가정해 보겠습니다. KPL 집계를 사용하면 레코드 1,000개를 Kinesis Data Streams 레코드 10개로 압축하여 RPS를 10(각각 50KB로)으로 줄일 수 있습니다.

수집

수집은 자체 HTTP 요청에 각각의 Kinesis Data Streams 레코드를 전송하는 대신 여러 Kinesis Data Streams 레코드를 배치 처리하고 API 작업 PutRecords를 직접적으로 호출하여 단일 HTTP 요청으로 전송하는 것을 의미합니다.

그러면 여러 HTTP 요청을 따로 만드는 오버헤드가 줄어들기 때문에 수집을 사용하지 않는 것보다 처리량이 늘어납니다. 사실 PutRecords 자체는 이 목적을 위해 특별히 고안되었습니다.

수집은 Kinesis Data Streams 레코드 그룹과 함께 사용된다는 점에서 집계와 다릅니다. 수집 중인 Kinesis Data Streams 레코드에 사용자로부터 받은 여러 레코드가 들어 있을 수 있습니다. 다음과 같이 관계를 시각화할 수 있습니다.

record 0 --| record 1 | [ Aggregation ] ... |--> Amazon Kinesis record 0 --| ... | | record A --| | | ... ... | | record K --| | record L | | [ Collection ] ... |--> Amazon Kinesis record C --|--> PutRecords Request ... | | record S --| | | ... ... | | record AA--| | record BB | | ... |--> Amazon Kinesis record M --| ... | record ZZ--|