Amazon QLDB에서 저널 데이터 스트리밍 - Amazon Quantum Ledger Database(QLDB)

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

Amazon QLDB에서 저널 데이터 스트리밍

Amazon QLDB는 저널이라고 하는 변경 불가능한 트랜잭션 로그를 데이터 스토리지에 사용합니다. 저널은 커밋된 데이터의 모든 변경 내용을 추적하고 시간이 지나면서 완전하고 확인 가능한 시간대별 변경 기록을 유지합니다.

QLDB에서 저널에 커밋된 모든 문서 수정본을 수집하고 이 데이터를 Amazon Kinesis Data Streams에 거의 실시간으로 전송할 수 있는 스트림을 QLDB에서 생성할 수 있습니다. QLDB 스트림은 원장의 저널에서 Kinesis 데이터 스트림 리소스로의 지속적인 데이터 흐름입니다.

그런 다음 Kinesis 스트리밍 플랫폼 또는 Kinesis Client Library를 사용하여 스트림을 사용하고, 데이터 레코드를 처리하고, 데이터 콘텐츠를 분석할 수 있습니다. QLDB 스트림은 제어, 블록 요약, 수정 세부 정보 등 세 가지 유형의 레코드로 Kinesis Data Streams에 데이터를 씁니다. 자세한 내용은 Kinesis의 QLDB 스트림 레코드을 참조하십시오.

일반 사용 사례

스트리밍을 사용하면 저널 데이터를 다른 서비스와 통합하면서 QLDB를 확인 가능한 단일 진실 공급원으로 사용할 수 있습니다. 다음은 QLDB 저널 스트림이 지원하는 몇 가지 일반적인 사용 사례입니다.

  • 이벤트 기반 아키텍처 – 분리된 구성 요소를 사용하여 이벤트 기반 아키텍처 스타일로 애플리케이션을 빌드합니다. 예를 들어, 은행은 AWS Lambda 함수를 사용하여 계정 잔액이 임계값 아래로 떨어지면 고객에게 알리는 알림 시스템을 구현할 수 있습니다. 이러한 시스템에서는 계정 잔액이 QLDB 원장에 유지되며 잔액 변경 사항은 저널에 기록됩니다. 이 AWS Lambda 함수는 저널에 커밋되어 Kinesis 데이터 스트림으로 전송되는 밸런스 업데이트 이벤트를 소비하면 알림 로직을 트리거할 수 있습니다.

  • 실시간 분석 – 이벤트 데이터에 대한 실시간 분석을 실행하는 Kinesis 소비자 애플리케이션을 빌드합니다. 이 기능을 사용하면 거의 실시간으로 통찰력을 얻고 변화하는 비즈니스 환경에 신속하게 대응할 수 있습니다. 예를 들어, 전자 상거래 웹 사이트는 제품 판매 데이터를 분석하고 판매량이 한도에 도달하는 즉시 할인된 제품에 대한 광고를 중단할 수 있습니다.

  • 기록 분석– 과거 이벤트 데이터를 재생하여 Amazon QLDB의 저널 지향 아키텍처를 활용합니다. 과거 어느 시점에서든 QLDB 스트림을 시작하도록 선택할 수 있으며, 이 경우 해당 시점 이후의 모든 수정본이 Kinesis Data Streams에 전달됩니다. 이 기능을 사용하면 기록 데이터에 대한 분석 작업을 실행하는 Kinesis 소비자 애플리케이션을 빌드할 수 있습니다. 예를 들어 전자 상거래 웹 사이트는 필요에 따라 분석을 실행하여 이전에 포착되지 않았던 과거 판매 지표를 생성할 수 있습니다.

  • 목적별 데이터베이스로 복제 – QLDB 저널 스트림을 사용하여 QLDB 원장을 다른 목적별 데이터 스토어에 연결합니다. 예를 들어 Kinesis 스트리밍 데이터 플랫폼을 사용하여 QLDB 문서에 대한 전체 텍스트 검색 기능을 제공할 수 있는 Amazon OpenSearch Service와 통합할 수 있습니다. 또한 사용자 지정 Kinesis 소비자 애플리케이션을 빌드하여 저널 데이터를 다양한 구체화된 뷰를 제공하는 다른 목적별 데이터베이스에 복제할 수 있습니다. 예를 들어 관계형 데이터의 경우 Amazon Aurora로, 그래프 기반 데이터의 경우 Amazon Neptune으로 복제합니다.

스트림 사용

Kinesis Data Streams를 사용하여 대량의 데이터 레코드 스트림을 지속적으로 소비, 처리 및 분석할 수 있습니다. Kinesis 스트리밍 데이터 플랫폼에는 Kinesis Data Streams 외에도 아마존 데이터 파이어호스 아파치 플링크용 아마존 매니지드 서비스가 포함되어 있습니다. 이 플랫폼을 사용하여 Amazon OpenSearch 서비스, Amazon Redshift, Amazon S3 또는 Splunk와 같은 서비스에 데이터 레코드를 직접 보낼 수 있습니다. 자세한 내용을 알아보려면 Amazon Kinesis Data Streams 개발자 안내서Amazon Kinesis Streams 주요 개념을 참조하세요.

Kinesis Client Library(KCL)를 사용하여 사용자 지정 방식으로 데이터 레코드를 처리하는 스트림 소비자 애플리케이션을 빌드할 수도 있습니다. KCL은 하위 수준의 Kinesis Data Streams API에 유용한 추상화를 제공하여 코딩을 단순화합니다. KCL에 대한 자세한 내용은 Amazon Kinesis Data Streams 개발자 안내서Kinesis Client Library를 사용을 참조하세요.

전송 보증

QLDB 스트림은 전송을 보장합니다. at-least-once QLDB 스트림에서 생성된 각 데이터 레코드는 Kinesis Data Streams에 한 번 이상 전송됩니다. Kinesis 데이터 스트림에는 동일한 레코드가 여러 번 표시될 수 있습니다. 따라서 사용 사례에 필요한 경우 소비자 애플리케이션 계층에 중복 제거 로직이 있어야 합니다.

순서 또한 보장되지 않습니다. 경우에 따라 Kinesis 데이터 스트림에서 QLDB 블록 및 수정본이 순서대로 생성되지 않을 수 있습니다. 자세한 내용은 중복 및 out-of-order 레코드 처리을 참조하십시오.

전송 지연 시간 고려 사항

QLDB 스트림은 일반적으로 거의 실시간으로 Kinesis Data Streams에 업데이트를 전송합니다. 하지만 다음 시나리오에서는 새로 커밋된 QLDB 데이터가 Kinesis 데이터 스트림으로 전송되기 전에 추가 지연이 발생할 수 있습니다.

  • Kinesis는 Kinesis Data Streams 프로비저닝에 따라 QLDB에서 스트리밍되는 데이터를 제한할 수 있습니다. 예를 들어, 단일 Kinesis 데이터 스트림에 쓰는 QLDB 스트림이 여러 개 있고 QLDB의 요청률이 Kinesis 스트림 리소스의 용량을 초과하는 경우, 이 문제가 발생할 수 있습니다. Kinesis의 제한은 온디맨드 프로비저닝을 사용할 때도 15분 이내에 처리량이 이전 최고치의 두 배 이상으로 증가하는 경우 발생할 수 있습니다.

    Kinesis 지표 WriteProvisionedThroughputExceeded를 모니터링하여 초과 처리량을 측정할 수 있습니다. 자세한 내용과 가능한 해결 방법은 Kinesis Data Streams에서 제한 오류를 해결하려면 어떻게 해야 하나요? 섹션을 참조하세요.

  • QLDB 스트림을 사용하면 시작 날짜 및 시간이 과거이고 종료 날짜 및 시간이 없는 무기한 스트림을 만들 수 있습니다. 설계상 QLDB는 지정된 시작 날짜 및 시간의 모든 이전 데이터가 성공적으로 전송된 후에만 Kinesis Data Streams에 새로 커밋된 데이터를 내보내기 시작합니다. 이 시나리오에서 추가 지연이 감지되면 이전 데이터가 전송될 때까지 기다리거나 나중의 시작 날짜 및 시간부터 스트림을 시작할 수도 있습니다.

데이터 스트림 시작하기

다음은 Kinesis Data Streams로 저널 데이터 스트리밍을 시작하는 데 필요한 단계에 대한 상위 수준의 개요입니다.

  1. Kinesis Data Streams 리소스를 생성합니다. 지침은 Amazon Kinesis Data Streams 개발자 안내서데이터 스트림 만들기 및 업데이트를 참조하세요.

  2. QLDB가 Kinesis 데이터 스트림에 대한 쓰기 권한을 맡을 수 있도록 허용하는 IAM 역할을 생성합니다. 지침은 QLDB의 스트림 권한 섹션을 참조하세요.

  3. QLDB 저널 스트림을 생성합니다. 지침은 QLDB에서 스트림 생성 및 관리 섹션을 참조하십시오.

  4. 이전 섹션 스트림 사용에서 설명한 대로 Kinesis 데이터 스트림을 사용합니다. Kinesis 클라이언트 라이브러리 사용 방법을 보여주는 코드 예제는 또는 AWS Lambda을 참조하십시오. QLDB에서 스트림을 사용한 개발