Amazon Kinesis Producer Library를 사용하여 생산자 개발 - Amazon Kinesis Data Streams

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

Amazon Kinesis Producer Library를 사용하여 생산자 개발

Amazon Kinesis Data Streams 생산자는 Kinesis 데이터 스트림에 사용자 데이터 레코드를 입력하는(데이터 수집이라고도 함) 애플리케이션입니다. Kinesis Producer Library(KPL)는 개발자가 Kinesis 데이터 스트림에 대한 높은 쓰기 처리량을 달성할 수 있도록 생산자 애플리케이션 개발을 간소화합니다.

CloudWatchAmazon에서 KPL을 모니터링할 수 있습니다. 자세한 내용은 Amazon CloudWatch로 Kinesis Producer Library 모니터링 단원을 참조하십시오.

참고

최신 KPL 버전으로 업그레이드하는 것이 좋습니다. KPL은 모두 최신 종속성 및 보안 패치, 버그 수정, 이전 버전과 호환되는 새 기능이 포함된 최신 릴리스로 정기적으로 업데이트됩니다. 자세한 내용은 https://github.com/awslabs/ amazon-kinesis-producer /releases/를 참조하십시오.

KPL의 역할

KPL은 Kinesis easy-to-use 데이터 스트림에 쓰는 데 도움이 되는 고도로 구성 가능한 라이브러리입니다. 이 라이브러리는 생산자 애플리케이션 코드와 Kinesis Data Streams API 작업 간에 중간 역할을 합니다. KPL은 다음과 같은 기본 작업을 수행합니다.

  • 자동 및 구성 가능한 재시도 메커니즘을 사용하여 하나 이상의 Kinesis 데이터 스트림에 쓰기

  • 레코드를 수집하고 PutRecords를 사용하여 요청당 여러 샤드에 여러 레코드 쓰기

  • 사용자 레코드를 집계하여 페이로드 크기 증가 및 처리량 향상

  • Kinesis Client Library(KCL)와 자연스럽게 통합하여 소비자에서 배치 처리된 레코드 분해

  • 생산자 성과에 대한 가시성을 제공하기 위해 사용자를 대신하여 Amazon CloudWatch 지표를 제출합니다.

KPL은 AWS SDK에서 사용할 수 있는 Kinesis Data Streams API와 다릅니다. Kinesis Data Streams API는 Kinesis Data Streams의 여러 가지 측면(스트림 생성, 리샤딩, 데이터 넣기 및 가져오기 포함)을 관리하는 데 도움이 되는 반면, KPL은 특히 데이터 수집을 위한 추상화 계층을 제공합니다. Kinesis Data Streams API에 대한 자세한 내용은 Amazon Kinesis API 참조를 확인하세요.

KPL 사용의 장점

다음 목록은 Kinesis Data Streams 생산자 개발을 위해 KPL을 사용할 때 경험할 수 있는 몇 가지 장점을 보여줍니다.

동기 또는 비동기 사용 사례에서 KPL을 사용할 수 있습니다. 특별히 동기 동작을 사용할 이유가 없다면 고성능 비동기 인터페이스를 사용하는 것이 좋습니다. 두 사용 사례와 예제 코드에 대한 자세한 내용은 KPL을 사용하여 Kinesis 데이터 스트림에 쓰기를 참조하십시오.

성능 이점

KPL은 고성능 생산자를 구축하는 데 도움이 됩니다. Amazon EC2 인스턴스가 수백 또는 수천 개의 저전력 디바이스에서 100바이트 이벤트를 수집하고 Kinesis 데이터 스트림에 레코드를 쓰기 위해 프록시 역할을 한다고 가정해 보세요. 이 EC2 인스턴스는 초당 수천 개의 이벤트를 데이터 스트림에 써야 합니다. 필요한 처리량을 달성하기 위해 생산자는 소비자 측에서 이루어지는 레코드 분해 및 재시도 로직 외에도 일괄 처리나 멀티스레딩과 같은 복잡한 로직을 구현해야 합니다. KPL은 이 모든 작업을 수행합니다.

소비자 측 사용 편의성

Java에서 KCL을 사용하는 소비자 측 개발자의 경우 추가 작업 없이 KPL이 통합됩니다. KCL이 여러 KPL 사용자 레코드로 이루어진 집계된 Kinesis Data Streams 레코드를 검색할 때 KPL을 자동으로 간접적으로 호출하여 개별 사용자 레코드를 추출한 후 사용자에게 반환합니다.

KCL 대신 API 작업 GetRecords를 직접 사용하는 소비자 측 개발자의 경우 KPL Java 라이브러리를 통해 개별 사용자 레코드를 추출한 후 사용자에게 반환할 수 있습니다.

생산자 모니터링

CloudWatch Amazon 및 KPL을 사용하여 Kinesis Data Streams 생산자를 수집, 모니터링 및 분석할 수 있습니다. KPL은 사용자를 CloudWatch 대신하여 처리량, 오류 및 기타 지표를 내보내며 스트림, 샤드 또는 프로듀서 수준에서 모니터링하도록 구성할 수 있습니다.

비동기 아키텍처

KPL은 레코드를 Kinesis Data Streams로 보내기 전에 버퍼링할 수 있으므로 실행을 계속하기 전에 레코드가 서버에 도착했는지 확인하기 위해 차단하고 대기하도록 호출자 애플리케이션을 강제하지 않습니다. KPL에 레코드를 넣는 호출은 언제나 즉시 반환되며 전송할 레코드 또는 서버에서 수신할 응답을 기다리지 않습니다. 대신 나중에 Kinesis Data Streams로 레코드를 보낸 결과를 수신하는 Future 객체가 생성됩니다. 이는 SDK의 비동기 클라이언트와 동일한 동작입니다. AWS

KPL을 사용하지 말아야 할 경우

KPL은 라이브러리 내에 RecordMaxBufferedTime까지 추가 처리 지연을 일으킬 수 있습니다(사용자 구성 가능). RecordMaxBufferedTime 값이 클수록 패킹 효율이 높아지고 성능이 향상됩니다. 이 추가 지연을 허용할 수 없는 애플리케이션은 AWS SDK를 직접 사용해야 할 수도 있습니다. Kinesis Data Streams와 함께 AWS SDK를 사용하는 방법에 대한 자세한 내용은 을 참조하십시오. AWS SDK for Java와 Amazon Kinesis Data Streams API를 사용하여 생산자 개발 RecordMaxBufferedTime 및 그 밖에 사용자가 구성할 수 있는 KPL의 속성에 대한 자세한 내용은 Kinesis Producer Library 구성 섹션을 참조하세요.