본문으로 건너뛰기

Producer

1 Kinesis Producers

  • Kinesis Producers는 레코드를 데이터 스트림에 기록하는 역할을 합니다.
  • 데이터 레코드는 다음으로 구성됩니다
    • 시퀀스 번호(샤드 내의 파티션 키당 고유)
    • 파티션 키(데이터를 스트림에 기록할 때 지정해야 함)
    • 데이터 블랍(최대 1MB)

1.1 Producers의 종류

  • AWS SDK: 간단한 프로듀서
    • AWS SDK를 사용하면 쉽게 데이터를 Kinesis 데이터 스트림으로 보낼 수 있습니다.
    • 간단한 구현과 기본 기능을 제공하여 빠르게 시작할 수 있습니다.
  • Kinesis Producer Library (KPL): C++, Java, 배치, 압축, 재시도 등
    • KPL은 AWS SDK를 기반으로 하며, 추가적인 고급 기능을 제공합니다.
    • 데이터를 배치하여 효율적으로 전송하고, 데이터 압축 기능을 통해 전송 비용을 절감할 수 있습니다.
    • 자동 재시도 메커니즘을 제공하여 데이터 전송의 안정성을 높입니다.
    • C++ 및 Java 언어로 제공되며, 대용량 데이터 처리에 적합합니다.
  • Kinesis Agent: 로그 파일 모니터링
    • Kinesis Agent는 로그 파일을 모니터링하고 변경 사항을 자동으로 Kinesis 데이터 스트림으로 전송합니다.
    • 주로 로그 파일과 같은 지속적으로 업데이트되는 파일의 데이터를 스트림으로 전송하는 데 사용됩니다.

1.2 쓰기 처리량

  • 쓰기 처리량: 샤드당 1MB/초 또는 1,000레코드/초
  • PutRecord API: 단일 레코드를 스트림에 전송
  • PutRecords API: 배치를 사용하여 비용을 절감하고 처리량을 증가시킴

1.3 파티션 키

  • 파티션 키는 데이터를 샤드에 분배하는 데 사용됩니다.
  • 같은 파티션 키를 가진 데이터는 동일한 샤드로 전달됩니다(순서 보장).
  • 파티션 키는 데이터를 균등하게 분배하기 위해 고도로 분산되어야 합니다.
  • 파티션 키를 잘못 설정하면 "hot partition" 문제가 발생할 수 있습니다.

2 ProvisionedThroughputExceeded

  • 샤드당 처리량 한도는 1MB/sec 또는 1000레코드/sec입니다.
  • 쓰기 처리량을 초과하면 ProvisionedThroughputExceeded 오류가 발생할 수 있습니다.
  • 해결 방법
    • 고도로 분산된 파티션 키 사용
    • 지수 백오프를 사용한 재시도
    • 샤드 수 증가(스케일링)