Programming

[AWS, Certified Developer Associate] DynamoDB - LSI, GSI, DAX, S3와 연동 사례

빠쿤 2024. 6. 9. 17:55

AWS DynamoDB - LSI (Local Secondary Index)

  • 테이블에 대체 정렬 키 제공 (Alternative Sort Key)
  • 하나의 스칼라 속성으로 존재 (String, Number, Binary)
  • 테이블 당 최대 5개 LSI 가능
  • 테이블 생성 전 정의
  • 테이블로부터 일부 또는 전체 속성 얻을 수 있음 (LSI 생성 시 결정)
  • 메인테이블의 WCU, RCU 사용
  • 특별히 쓰로틀 고려할 것 없음

 

 

AWS DynamoDB - GSI (Global Secondary Index)

  • 테이블에 대체 기본 키 제공 (Alternative Primary Key)
  • non-key 속성의 쿼리 속도 높이는데 유용
  • 하나의 스칼라 속성으로 존재 (String, Number, Binary)
  • 해당 인덱스에 대해서는 반드시 RCU, WCU 프로비저닝 해야함
  • 테이블 생성 후에도 추가 및 생성 가능
  • GSI에서 쓰로틀 발생 시 메인 테이블도 쓰로틀됨

 

 

AWS DynamoDB - Accelerator (DAX)

  • 완전 관리형, 고가용성의 인메모리 캐시
  • 인기있는 데이터 쿼리 시 캐시된 읽기와 쿼리에 대해 마이크로초 지연
  • 애플리케이션 로직 변경 없이 기존 DynamoDB API와 호환 (DAX 클러스터 생성)
  • 핫키 문제 해결에 유용 (RCU 쓰로틀 방지)
  • Application <-> DAX Cluster <-> DynamoDB
  • 기본 TTL 5분
  • 노드로 구성. 최대 10개 노드
  • 프로덕션 권장 사양인 노드가 최소 3개 이상인 다중 AZ 설정 사용 권장 (AZ당 하나씩)
  • vs ElastiCache
    • DAX는 개별 객체 캐시 / 쿼리&스캔 캐시 (간단한 유형의 쿼리)
    • ElastiCache는 복잡한 연산/집계 결과 등 캐시

 

 

AWS DynamoDB - Streams

  • 테이블에서 item level의 수정에 대한 정렬된 스트림
  • KDS, Lambda, Kinesis Client Library applications 등에서 스트림을 읽을 수 있음
  • 보존 주기는 최대 24시간
  • 사용 사례
    • 테이블에서 발생하는 실시간 변경사항에 대응 (환영 이메일 등)
    • 분석
    • 글로벌 테이블과 cross-region replication 구현 등
    • Application -> Table -> DynamoDB Streams -> Kinesis Data Streams -> Kinesis Data Firehose -> Amazon Redshift (분석) / Amazon S3 (아카이빙) / Amazon ElasticSearch (인덱싱)
    • 사용자 지정 로직을 태우려면 DynamoDB Streams를 EC2에서 실행되는 KCL App or Lambda에서 읽어 처리 가능 (SNS로 보내 메시지, 알림 처리 가능 / 필터링, 변환을 통해 다시 DynamoDB 테이블에 저장)

 

 

AWS DynamoDB - S3와 연동

  • 큰 사이즈의 객체를 DynamoDB에 저장
    • DynamoDB 테이블에는 400KB 데이터까지만 저장 가능
    • 이미지, 영상 등을 저장하기에는 부적합
    • S3에 이미지, 영상 저장 -> DynamoDB에 메타데이터 저장 (url 등, S3에 대한 포인터 역할)
  • DynamoDB를 S3 객체 메타데이터의 인덱스로 사용
    • S3에 저장 -> 알림을 통해 람다 수행 -> 람다는 DynamoDB에 S3 객체의 메타데이터 저장
    • S3 버킷의 특정 타임스탬프로 객체 검색 / 사용자 사용 총 스토리지 / 속성에 따라 객체를 리스팅 / 업로드된 S3 객체 검색 등의 애플리케이션 요청에 대해 DynamoDB 테이블 쿼리를 통해 결과를 빠르게 찾고 S3 버킷에서 필요한 객체를 검색

 

 


Reference

Udemy - AWS Certified Developer Associate 시험 합격을 위한 모든 것!