본문 바로가기

Infrastructure/Certificate

[SAA] Amazon DynamoDB

Amazon DynamoDB

이번 장에서는 SAA를 준비하며 Amazon DynamoDB에 대해서 알아보도록 한다.


Overview

  • 완벽하게 관리되고 Multi-AZ에 걸쳐 복제가 가능한 고가용성(HA)
  • NoSQL 데이터베이스로 RDB가 아니지만 트랜잭션을 지원한다.
  • 대규모 워크로드, 분산형 데이터베이스로 확장할 수 있다.
  • 초당 수백만 개의 요청, 수조 개의 행, 100TB 스토리지를 지원한다.
  • 빠르고 일관된 성능(single-digit MS)
  • 보안, 승인 및 관리를 위해 IAM과 통합된다.
  • 저비용 및 자동 확장된다.
  • 유지보수 또는 패치 적용이 없으므로 항상 사용할 수 있다.
  • Standard & Infrequent Access(IA) 테이블 클래스를 지원한다.

Basics

  • DynamoDB는 테이블로 구성되어 있다.
  • 각 테이블에 Primary Key(기본키)가 있으며 생성 시 결정해야 한다.
  • 각 테이블에는 무한한 수의 항목(rows)이 있을 수 있다.
  • 각 항목에는 속성이 있으며 시간 경과에 따라 추가할 수 있고 값은 null일 수 있다.
  • 항목의 최대 크기는 400KB다.
  • 지원되는 데이터 유형은 아래와 같다.
    • Scalar Types: String, Number, Binary, Boolean, Null
    • Document Types: List, Map
    • Set Types: String Set, Number Set, Binary Set
  • 따라서, DynamoDB에서는 스키마를 빠르게 진화시킬 수 있다.

Read/Write Capacity Modes

  • 테이블의 용량(읽기/쓰기 처리량)을 관리하는 방법을 제어한다.
  • Provisioned Mode (default)
    • 초당 읽기/쓰기 횟수를 지정한다.
    • 용량을 미리 계획해야 한다.
    • RCU(Provisioned Read Capacity Units) 및 WCU(Write Capacity Units)에 대해 지불해야 한다.
    • RCU 및 WCU에 대한 Auto-Scaling 모드를 추가할 수 있다.
  • On-Demand Mode
    • 워크로으데 따라 읽기/쓰기가 자동으로 확장한다.
    • 용량을 계획할 필요가 없다.
    • 사용하는 제품에 대한 비용을 더 많이 지불한다.
    • 예측할 수 없는 워크로드, 급격한 워크로드 급증에 적합하다.

Accelerator (DAX)

  • DynamoDB를 위한 완벽하게 관리되고 가용성이 뛰어난 원활한 메모리 내 캐시다.
  • 캐싱을 통해 읽기 혼잡을 해결할 수 있다.
  • 캐시된 데이터에 대한 MS 단위의 대기시간을 보장한다.
  • 애플리케이션의 로직 수정없이 기존 DynamoDB API와 호환된다.
  • 캐시에 대한 5분(기본값) TTL을 가진다.

Accelerator (DAX) vs ElastiCache

Stream Processing

  • 테이블의 항목 수준 수정(생성/수정/삭제) 순서가 매겨진 스트림
  • 사용 사례
    • 실시간으로 변화에 대응(예: 사용자 환영 이메일)
    • 실시간 사용량 분석
    • 파생 테이블에 삽입
    • Region 간 복제 구현
    • DynamoDB 테이블 변경 시 AWS Lambda 호출
  • DynamoDB Streams:
    • 24시간 보존
    • 한정된 소비자(Consumer) 수를 가진다.
    • AWS Lambda 트리거 또는 DynamoDB Stream Kinesis 어댑터를 사용한 프로세스
  • Kinesis Data Streams (신규):
    • 1년 보존
    • 높은 소비자(Consumer) 수를 가진다.
    • AWS Lambda, Kinesis Data Analytics, Kinesis Data Firehose, AWS Glue Streaming ETL을 통한 프로세스...

Global Tables

  • 여러 Region에 짧은 대기 시간으로 DynamoDB 테이블에 액세스할 수 있다.
  • Active-Active 복제가 이루어진다.
  • 애플리케이션은 모든 Region에서 테이블을 읽고 쓸 수 있다.
  • 필수적으로 DynamoDB Streams를 사용하도록 설정해야 한다.

Time To Live (TTL)

  • 만료 타임스탬프 이후 항목을 자동으로 삭제한다.
  • 활용 사례: 최신 항목만 유지하여 저장된 데이터를 줄이고, 규제 의무 준수, 웹 세션 처리 등이 있다.

재해 복구(Disaster Recovery)를 위한 백업

  • PITR(Point-In-Time Recovery)을 사용한 지속적인 백업
    • 지난 35일 동안 옵션으로 활성화할 수 있다.
    • 백업 윈도우 내에서 언제든지 시점 단위로 복구가 가능하다.
    • 복구 프로세스를 통해 새 테이블을 생성할 수 있다.
  • On-Demand 백업
    • 명시적으로 삭제될 때까지 장기 보존을 위한 전체 백업을 진행한다.
    • 성능이나 대기 시간에 영향을 주지 않는다.
    • AWS Backup에서 구성 및 관리가 가능하다.(지역 간 복사 가능)
    • 복구 프로세스가 새 테이블을 생성한다.

Amazon S3와 통합

  • S3로 데이터 내보내기(Export, PITR 활성화 필수)
    • 지난 35일 동안 모든 시점에서 작업이 가능하다.
    • 테이블의 읽기 용량에 영항을 주지 않는다.
    • DynamoDB 위에서 데이터 분석 수행이 가능하다.
    • 감사(Auditing)용 스냅샷을 보관할 수 있다.
    • JSON, ION 형식으로 데이터를 내보낼 수 있다.
  • S3에서 데이터 가져오기(Import)
    • CSV, DynamoDB JSON, ION 형식으로 데이터를 가져올 수 있다.
    • 쓰기 용량을 전혀 사용하지 않는다.
    • 새로운 테이블을 생성한다.
    • 오류가 발생하는 경우 CloudWatch Logs에 기록된다.

  • 아래의 이미지와 같이 DynamoDB와 AWS Lambda를 통합하여 Serverless API를 생성할 수 있다.


참고한 자료

'Infrastructure > Certificate' 카테고리의 다른 글

[SAA] Serverless Architectures  (0) 2023.10.02
[SAA] API Gateway  (0) 2023.10.02
[SAA] AWS Lambda  (0) 2023.10.02
[SAA] Container  (0) 2023.10.02
[SAA] Integration And Messaging  (0) 2023.10.02