DynamoDB Streams Kinesis 어댑터를 사용하여 스트림 레코드 처리 - Amazon DynamoDB

DynamoDB Streams Kinesis 어댑터를 사용하여 스트림 레코드 처리

Amazon Kinesis 어댑터 사용은 Amazon DynamoDB의 스트림을 소비할 때 권장되는 방법입니다. DynamoDB Streams API는 대규모로 스트리밍 데이터를 실시간으로 처리하는 서비스인 Kinesis Data Streams의 API와 유사합니다. 두 서비스 모두 데이터 스트림이 샤드로 구성되어 있습니다. 샤드란 스트림 레코드의 컨테이너입니다. 두 서비스의 API에는 ListStreams, DescribeStream, GetShardsGetShardIterator 작업이 포함되어 있습니다. (이러한 DynamoDB Streams 작업은 Kinesis Data Streams의 해당 작업과 유사하지만 100% 동일하지는 않습니다.)

Kinesis Client Library(KCL)를 사용하여 Kinesis Data Streams의 애플리케이션을 작성할 수 있습니다. KCL은 하위 수준의 Kinesis Data Streams API에 유용한 추상화를 제공하여 코딩을 단순화합니다. KCL에 대한 자세한 내용은 Amazon Kinesis Data Streams 개발자 안내서Kinesis Client Library를 사용하여 소비자 개발을 참조하세요.

AWS SDK for Java v1.x가 포함된 현재 KCL 버전 1.x는 안정성과 성능을 보장하기 위해 수명 주기 내내 계속 완벽하게 지원됩니다. 기존 SDK를 사용하는 경우 AWS SDK for Java v1.x를 사용하는 기존 애플리케이션은 AWS SDK 및 도구 유지 관리 정책에 따라 전환 기간 동안 의도한 대로 계속 작동합니다.

DynamoDB Streams 사용자는 KCL에 있는 디자인 패턴을 활용하여 DynamoDB Streams 샤드와 스트림 레코드를 처리할 수 있습니다. 이렇게 하려면 DynamoDB Streams Kinesis 어댑터를 사용합니다. Kinesis 어댑터는 DynamoDB Streams의 레코드를 사용 및 처리하는 데 KCL을 사용할 수 있도록 Kinesis Data Streams 인터페이스를 구현합니다. DynamoDB Streams Kinesis 어댑터를 설정하고 설치하는 방법에 대한 지침은 GitHub 리포지토리를 참조하세요.

다음 다이어그램은 이러한 라이브러리가 서로 상호 작용하는 방법을 보여 줍니다.

DynamoDB Streams 레코드 처리를 위한 DynamoDB Streams, Kinesis Data Streams 및 KCL 간의 상호 작용입니다.

DynamoDB Streams Kinesis 어댑터가 준비되어 있으면 DynamoDB Streams 엔드포인트로 원활하게 전달되는 API 호출을 통해 KCL 인터페이스 개발을 시작할 수 있습니다.

애플리케이션이 시작되면 KCL을 호출하여 작업자를 인스턴스화합니다. 작업자에게 애플리케이션의 구성 정보를 제공해야 합니다. 제공해야 하는 구성 정보에는 스트림 서술자와 AWS 자격 증명, 제공하는 레코드 프로세서 클래스의 이름 등이 있습니다. 레코드 프로세서에서 코드를 실행하면 작업자는 다음 작업을 수행합니다.

  • 스트림에 연결합니다

  • 스트림 내 샤드를 열거합니다.

  • 샤드 연결을 다른 작업자(있는 경우)와 조정합니다.

  • 관리하는 모든 샤드의 레코드 프로세서를 인스턴스화합니다

  • 스트림에서 레코드를 가져옵니다.

  • 해당하는 레코드 프로세서로 레코드를 푸시합니다

  • 처리된 레코드에 대해 체크포인트를 수행합니다

  • 작업자 인스턴스 수가 변경되면 샤드-작업자 연결을 조정합니다

  • 샤드가 분할되면 샤드-작업자 연결을 조정합니다.

참고

여기에 나온 KCL 개념에 대한 설명은 Amazon Kinesis Data Streams 개발자 안내서Kinesis Client Library를 사용하여 소비자 개발을 참조하세요.

AWS Lambda에 스트림을 사용하는 방법에 대한 자세한 내용은 DynamoDB Streams 및 AWS Lambda 트리거 단원을 참조하세요.