View a markdown version of this page

데이터 전송 모범 사례 - Amazon Kinesis Data Streams

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

데이터 전송 모범 사례

다음 모범 사례는 Amazon Kinesis Data Streams에서 데이터 전송을 최대한 활용하는 데 도움이 됩니다. 이러한 권장 사항에서 참조되는 전송 지표의 전체 목록은 섹션을 참조하세요데이터 전송 모니터링.

처리량 및 데이터 신선도

  • 스트림 처리량에 따라 DataFreshnessInSeconds 파라미터를 설정합니다. 값이 낮을수록 전송 빈도가 증가하지만 출력 파일이 작아질 수 있습니다. 값이 높을수록 각 전송 주기에 대해 더 많은 데이터가 누적될 수 있습니다.

  • DataFreshness 지표에 Amazon CloudWatch 경보를 생성하여 전송 지연 시간이 허용 가능한 임계값을 초과하는 시기를 감지합니다.

  • 동일한 Kinesis Data Streams 스트림에서 여러 전송을 생성할 수 있습니다. 각 전송은 독립적으로 작동하므로 여러 대상으로 동시에 데이터를 전송할 수 있습니다.

스키마 관리(Apache Iceberg의 스트리밍 테이블)

  • 전송을 생성하기 전에 AWS Glue 스키마 레지스트리에 스키마를 등록합니다. 전송은 등록된 스키마를 사용하여 대상 테이블 구조를 정의합니다.

  • 배달은 스키마 진화를 지원하지 않습니다. 스키마가 변경되면 업데이트된 스키마를 사용하여 전송을 삭제하고 다시 생성해야 합니다.

  • 생산자 측 스키마 검증을 사용하여 모든 레코드가 스트림에 기록되기 전에 등록된 스키마를 준수하는지 확인합니다. 이렇게 하면 실패한 레코드 전송이 최소화됩니다.

S3 객체 레이아웃(범용 Amazon S3 버킷)

  • 다운스트림 소비자의 쿼리 패턴과 일치하는 출력 키 템플릿을 선택합니다. 예를 들어 쿼리가 시간 범위별로 자주 필터링되는 경우 날짜 기반 접두사를 사용합니다.

  • GZIP 또는 ZSTD 압축을 활성화하여 스토리지 비용을 줄이고 다운스트림 분석 워크로드의 읽기 성능을 개선합니다.

  • 데이터 액세스 패턴에 따라 적절한 Amazon S3 스토리지 클래스를 선택합니다. 자주 액세스하는 데이터의 경우 STANDARD를 사용하고, Amazon S3가 액세스 계층 간에 객체를 자동으로 이동하도록 하려면 INTELLIGENT_TIERING을 사용하고, 밀리초 검색이 필요한 거의 액세스하지 않는 데이터의 경우 GLACIER_IR을 사용합니다.

보안

  • IAM 정책의 범위를 전송이 쓰는 특정 버킷 또는 테이블로 지정합니다. 와일드카드 리소스 ARNs 사용하지 마세요.

  • 전송에 사용되는 IAM 역할의 신뢰 정책에 aws:SourceArn 및 aws:SourceAccount 조건 키를 포함합니다. 이렇게 하면 특정 전송만 역할을 수임할 수 있으므로 혼동된 대리자 문제를 방지할 수 있습니다.

  • AWS CloudTrail 로깅을 활성화하여 모든 전송 API 호출 및 구성 변경 사항을 감사합니다.

  • 민감한 데이터에 고객 관리형 AWS KMS 키를 사용합니다. 이를 통해 키 교체, 액세스 정책 및 감사 추적을 완벽하게 제어할 수 있습니다.

Dead Letter Queue(DLQ)

  • 항상 배달에 대한 배달 못한 편지 대기열을 구성합니다. 대상으로 전송할 수 없는 레코드는 이후 검사를 위해 배달 못한 편지 대기열로 전송됩니다.

  • CloudWatch의 DLQDeliverySuccess 지표(DeliveryToS3.DLQDeliverySuccess 또는 DeliveryToIceberg.DLQDeliverySuccess)를 모니터링하여 레코드가 배달 못한 편지 대기열로 라우팅되는 시기를 감지합니다.

  • 배달 못한 편지 대기열 항목을 정기적으로 검사하여 전송 실패의 패턴을 식별하고 생산자 또는 전송 구성 수준에서 수정 조치를 취합니다.

모니터링

  • 전송 DataFreshness 및 실패한 레코드 지표(DeliveryToS3.FailedRecordCount 또는 DeliveryToIceberg.FailedRowCount)에 대한 CloudWatch 경보를 생성하여 전송 문제를 사전에 감지합니다.

  • 전송에 대해 CloudWatch Logs를 활성화하여 자세한 전송 진단 및 오류 메시지를 캡처합니다.

  • 전송된 바이트 지표(DeliveryToS3.BytesOut 또는 DeliveryToIceberg.BytesOut)를 추적하여 처리량을 모니터링하고 예상치 못한 데이터 볼륨 감소를 식별합니다.