목차

Amazon DynamoDB
- 완전 관리형 데이터베이스
- 다중 AZ간 데이터 복제, 가용성 높음
- NoSQL 데이터베이스 → 관계형 데이터베이스가 아님 → 트랜잭션 지원함
- 방대한 워크로드로 확장 가능, 데이터베이스가 내부에서 분산되기 때문이다
- 초당 수백만개 요청을 처리하고, 수조 개의 행, 수백 TB 스토리지를 가짐
- 성능 - 한 자릿수 밀리초이며 일관성이 높음
- 보안 - 모든 기능이 IAM과 통합됨 ( 보안, 권한 부여, 관리 기능들 )
- 저비용, 자동 확장 기능
- 유지관리나 패치 없이도 항상 사용할 수 있음
- 테이블을 생성하여 해당 테이블의 용량만 설정하면 됨
- 테이블 종류 2가지 :
- Standard 클래스 : 액세스가 빈번한 데이터
- IA 테이블 클래스 : 액세스가 빈번하지 않은 데이터
DynamoDB - Basics
- 테이블로 구성되며 데이터베이스를 생성할 필요가 없음
- Aurora, RDB와 달리 이미 데이터베이스가 존재함
- 테이블 생성시 각 테이블에 기본키가 부여됨 (기본키는 생성시 결정됨)
- 각 테이블에 데이터를 추가함. 행을 무한히 추가할 수 있음
- 각 항목은 속성을 가지며 속성은 열에 표시됨
- 속성은 나중에 추가할 수 있고 null이 될 수도 있음 (RDS, Aurora는 열 추가 과정이 복잡함)
- 항목의 최대크기 : 400 KB
- 큰 객체에 적합하지 않음
- 데이터 유형
- Scalar 유형 : String, Number, Binary, Boolean, Null
- Document 유형 : List, Map
- Set 유형 : String Set, Number Set, Binary Set
- 그러므로, 스키마를 빠르게 전개해야할 때 적합함
DynamoDB - 테이블 예시

- 기본키(Primary Key) : 파티션 키, 정렬키 (선택)
- 항목(Attirbutes) : null로 설정하거나 나중에 추가할 수 있음
DynamoDB - 읽기/쓰기 용량 모드
- 테이블 용량 관리 방식을 제어하는 데는 2가지 모드가 있음
- 프로비저닝 모드 (default)
- 미리 용량을 프로비저닝함
- 초당 읽기/쓰기 요청 수를 예측해서 미리 지정하면 이것이 테이블 용량이 됨
- 미리 용량을 계획하고 프로비저닝된 RCU(Read Capacity Units, 읽기 용량 단위), WCU(Write Capacity Units, 쓰기 용량 단) 만큼의 비용을 지불함
- 오토 스케일링 기능 : 테이블 로드에 따라 자동으로 확장/감소시킴
- 로드를 예측 가능하고 서서히 전개되며 비용 절감시 적합
- 온디맨드 모드
- 읽기/쓰기 용량이 워크로드에 따라 자동 확장
- 미리 용량 계획 X, RCU/WCU 없음
- 사용한 만큼 모든 읽기/쓰기 비용을 지불
- 비쌈, 워크로드 예측 불가능하거나 급격한 증가시 사용
- 갑자기 1분 내에 수백개를 수천개의 트랜잭션으로 확장해야할 때 사용
- 하루에 5개의 트랜잭션만 사용할때
DynamoDB Accelerator (DAX)

- 고가용성, 완전 관리형 무결절 인메모리 캐시
- 읽기 작업이 많을 때 데이터를 캐싱하여 읽기 혼잡을 해결
- 캐시데이터에 마이크로초 지연시간을 제공
- 애플리케이션 로직 변경할 필요 X (기존 DynamoDB API를 제공)
- 캐시의 기본 TTL : 5분 (변경 가능)
DynamoDB Accelerator(DAX) vs ElastiCache

- 두 서비스는 상호보완적임
- DAX
- DynamoDB 앞에 있고 개별객체 캐시와 쿼리와 스캔 캐시를 처리하는데 유용
- 대용량 연산 저장시 좋음
- DynamoDB에 캐싱 솔루션 추가시 DAX를 사용
- ElastiCache
- 집계 결과를 저장할 때 좋음
DynamoDB - 스트림 처리
- 테이블의 모든 수정사항, 생성/업데이트/삭제를 포함한 스트림을 생성
- 사용 사례
- 실시간 반응 - DynamoDB 테이블 변경사항을 실시간으로 반응 (예를들어 새 사용자 등록시 환영메일을 보냄)
- 실시간 사용자 분석, 파생 테이블 삽입
- 리전 간 복제 실행
- DynamoDB 테이블 변경 사항에 대해 lambda 함수를 실행
- DynamoDB Streams
- 보존기간 : 24시간
- 소비자 수 제한
- Lambda 트리거와 함께 사용 or 자체적 읽기 실행하려면 DynamoDB Stream Kinesis 어댑터를 사용함
- Kinesis Data Streams (최신)
- 보존기간 : 1년
- 더 많은 소비자 수
- 더 많은 데이터 처리방법 : Lambda, kinesis Data Analytics, Kinesis Firehose, Glue Streaming ETL
DynamoDB Streams

- 애플리케이션이 DynamoDB 테이블에서 작업을 생성/업데이트/삭제시 데이터가 DynamoDB Streams나 Kinesis Data Streams로 전송됨
- Kinesis Data Streams 선택:
- Kinesis Data Firehose 사용 가능
- 분석 목적 : Redshift로 전송
- 아카이빙 : S3
- 인덱싱/검색 목적 : OpenSearch
- Kinesis Data Firehose 사용 가능
- DynamoDB Stream 선택:
- 처리 계층을 둠
- KCL Adapter / Lambda : EC2에서 애플리케이션 실행
- 메시징/알림 : SNS로 전
- 필터링/변환 : DynamoDB 테이블로 전송
- 인덱싱/검색 목적 : OpenSearch
DynamoDB Global Table

- 여러 리전 간 복제 가능
- 두 테이블간 양방향 복제
- 둘중 하나에만 쓰기해도 됨
- 복수의 리전에서 짧은 지연 시간으로 액세스
- 다중 활성 복제 : 모든 리전에서 테이블을 읽기/쓰기 가능
- 글로벌 테이블 활성화하려면 DynamoDB 스트림 활성화해야 리전 간 테이블 복제할 수 있는 인프라가 구축됨
DynamoDB - TTL

- 만료 타임스탬프가 지나면 자동으로 항목을 삭제
- 사용 사례:
- 최근 항목만 저장
- 2년후 데이터 삭제
- 웹 세션 핸들링, 로그인시 세션 정보를 중앙 저장소인 DynamoDB에 두시간동안 저장
DynamoDB - 재해 복구를 위한 백업
- 지정 시간 복구 (PITR)을 사용해 지속적인 백업
- 활성화시 35일간 지속
- 활성화시 백업 기간 내에는 언제든 지정시간 복구 실행
- 복구 진행시 새로운 테이블을 생성
- 온디맨드 백업 옵션
- 직접 삭제할 때까지 보존됨
- DynamoDB 성능, 지연시간에 영향X
- AWS Backup 에서 구성 관리할 수 있음 (리전간 백업을 복사할 수 있음)
- 백업 복구 진행시 새로운 테이블이 생성됨
DynamoDB - S3와의 통합

- S3로 테이블 내보내기 ( 이를 위해선 지정 시간 복구 기능(PITR)을 활성화해야함)
- 35일 이내 어떤 시점으로든 테이블 내보내기 가능
- 테이블의 읽기 용량/성능에 영향X
- DynamoDB를 S3로 내보내기하여 데이터 분석 수행
- 감사 목적의 스냅샷 확보
- DynamoDB로 다시 가져오기전에 데이터 ETL같은 대규모 변경 실행
- DynamoDB JSON / ION 형식으로 내보냄

- S3로부터 테이블 가져오기
- S3에서 CSV, DynamoDB JSON, ION 형식으로 내보내기
- 쓰기 용량 소비하지 않고 새로운 테이블 생성
- 발생한 오류는 CloudWatch Logs에 기록됨
'DevOps > AWS' 카테고리의 다른 글
[AWS SAA] Direct Connect란? 키워드 간단 정리 (0) | 2025.02.12 |
---|---|
[AWS SAA] VPC 엔드포인트란? 키워드 간단 정리 (0) | 2025.02.12 |
[AWS SAA] NACL과 보안그룹의 차이점은? 간단 키워드 정리 (0) | 2025.02.12 |
[AWS SAA] Amazon DataSync란? 키워드 간단 정리 (0) | 2025.02.12 |
[AWS SAA] Amazon FSx란? 키워드 간단 정리 (0) | 2025.02.11 |

Amazon DynamoDB
- 완전 관리형 데이터베이스
- 다중 AZ간 데이터 복제, 가용성 높음
- NoSQL 데이터베이스 → 관계형 데이터베이스가 아님 → 트랜잭션 지원함
- 방대한 워크로드로 확장 가능, 데이터베이스가 내부에서 분산되기 때문이다
- 초당 수백만개 요청을 처리하고, 수조 개의 행, 수백 TB 스토리지를 가짐
- 성능 - 한 자릿수 밀리초이며 일관성이 높음
- 보안 - 모든 기능이 IAM과 통합됨 ( 보안, 권한 부여, 관리 기능들 )
- 저비용, 자동 확장 기능
- 유지관리나 패치 없이도 항상 사용할 수 있음
- 테이블을 생성하여 해당 테이블의 용량만 설정하면 됨
- 테이블 종류 2가지 :
- Standard 클래스 : 액세스가 빈번한 데이터
- IA 테이블 클래스 : 액세스가 빈번하지 않은 데이터
DynamoDB - Basics
- 테이블로 구성되며 데이터베이스를 생성할 필요가 없음
- Aurora, RDB와 달리 이미 데이터베이스가 존재함
- 테이블 생성시 각 테이블에 기본키가 부여됨 (기본키는 생성시 결정됨)
- 각 테이블에 데이터를 추가함. 행을 무한히 추가할 수 있음
- 각 항목은 속성을 가지며 속성은 열에 표시됨
- 속성은 나중에 추가할 수 있고 null이 될 수도 있음 (RDS, Aurora는 열 추가 과정이 복잡함)
- 항목의 최대크기 : 400 KB
- 큰 객체에 적합하지 않음
- 데이터 유형
- Scalar 유형 : String, Number, Binary, Boolean, Null
- Document 유형 : List, Map
- Set 유형 : String Set, Number Set, Binary Set
- 그러므로, 스키마를 빠르게 전개해야할 때 적합함
DynamoDB - 테이블 예시

- 기본키(Primary Key) : 파티션 키, 정렬키 (선택)
- 항목(Attirbutes) : null로 설정하거나 나중에 추가할 수 있음
DynamoDB - 읽기/쓰기 용량 모드
- 테이블 용량 관리 방식을 제어하는 데는 2가지 모드가 있음
- 프로비저닝 모드 (default)
- 미리 용량을 프로비저닝함
- 초당 읽기/쓰기 요청 수를 예측해서 미리 지정하면 이것이 테이블 용량이 됨
- 미리 용량을 계획하고 프로비저닝된 RCU(Read Capacity Units, 읽기 용량 단위), WCU(Write Capacity Units, 쓰기 용량 단) 만큼의 비용을 지불함
- 오토 스케일링 기능 : 테이블 로드에 따라 자동으로 확장/감소시킴
- 로드를 예측 가능하고 서서히 전개되며 비용 절감시 적합
- 온디맨드 모드
- 읽기/쓰기 용량이 워크로드에 따라 자동 확장
- 미리 용량 계획 X, RCU/WCU 없음
- 사용한 만큼 모든 읽기/쓰기 비용을 지불
- 비쌈, 워크로드 예측 불가능하거나 급격한 증가시 사용
- 갑자기 1분 내에 수백개를 수천개의 트랜잭션으로 확장해야할 때 사용
- 하루에 5개의 트랜잭션만 사용할때
DynamoDB Accelerator (DAX)

- 고가용성, 완전 관리형 무결절 인메모리 캐시
- 읽기 작업이 많을 때 데이터를 캐싱하여 읽기 혼잡을 해결
- 캐시데이터에 마이크로초 지연시간을 제공
- 애플리케이션 로직 변경할 필요 X (기존 DynamoDB API를 제공)
- 캐시의 기본 TTL : 5분 (변경 가능)
DynamoDB Accelerator(DAX) vs ElastiCache

- 두 서비스는 상호보완적임
- DAX
- DynamoDB 앞에 있고 개별객체 캐시와 쿼리와 스캔 캐시를 처리하는데 유용
- 대용량 연산 저장시 좋음
- DynamoDB에 캐싱 솔루션 추가시 DAX를 사용
- ElastiCache
- 집계 결과를 저장할 때 좋음
DynamoDB - 스트림 처리
- 테이블의 모든 수정사항, 생성/업데이트/삭제를 포함한 스트림을 생성
- 사용 사례
- 실시간 반응 - DynamoDB 테이블 변경사항을 실시간으로 반응 (예를들어 새 사용자 등록시 환영메일을 보냄)
- 실시간 사용자 분석, 파생 테이블 삽입
- 리전 간 복제 실행
- DynamoDB 테이블 변경 사항에 대해 lambda 함수를 실행
- DynamoDB Streams
- 보존기간 : 24시간
- 소비자 수 제한
- Lambda 트리거와 함께 사용 or 자체적 읽기 실행하려면 DynamoDB Stream Kinesis 어댑터를 사용함
- Kinesis Data Streams (최신)
- 보존기간 : 1년
- 더 많은 소비자 수
- 더 많은 데이터 처리방법 : Lambda, kinesis Data Analytics, Kinesis Firehose, Glue Streaming ETL
DynamoDB Streams

- 애플리케이션이 DynamoDB 테이블에서 작업을 생성/업데이트/삭제시 데이터가 DynamoDB Streams나 Kinesis Data Streams로 전송됨
- Kinesis Data Streams 선택:
- Kinesis Data Firehose 사용 가능
- 분석 목적 : Redshift로 전송
- 아카이빙 : S3
- 인덱싱/검색 목적 : OpenSearch
- Kinesis Data Firehose 사용 가능
- DynamoDB Stream 선택:
- 처리 계층을 둠
- KCL Adapter / Lambda : EC2에서 애플리케이션 실행
- 메시징/알림 : SNS로 전
- 필터링/변환 : DynamoDB 테이블로 전송
- 인덱싱/검색 목적 : OpenSearch
DynamoDB Global Table

- 여러 리전 간 복제 가능
- 두 테이블간 양방향 복제
- 둘중 하나에만 쓰기해도 됨
- 복수의 리전에서 짧은 지연 시간으로 액세스
- 다중 활성 복제 : 모든 리전에서 테이블을 읽기/쓰기 가능
- 글로벌 테이블 활성화하려면 DynamoDB 스트림 활성화해야 리전 간 테이블 복제할 수 있는 인프라가 구축됨
DynamoDB - TTL

- 만료 타임스탬프가 지나면 자동으로 항목을 삭제
- 사용 사례:
- 최근 항목만 저장
- 2년후 데이터 삭제
- 웹 세션 핸들링, 로그인시 세션 정보를 중앙 저장소인 DynamoDB에 두시간동안 저장
DynamoDB - 재해 복구를 위한 백업
- 지정 시간 복구 (PITR)을 사용해 지속적인 백업
- 활성화시 35일간 지속
- 활성화시 백업 기간 내에는 언제든 지정시간 복구 실행
- 복구 진행시 새로운 테이블을 생성
- 온디맨드 백업 옵션
- 직접 삭제할 때까지 보존됨
- DynamoDB 성능, 지연시간에 영향X
- AWS Backup 에서 구성 관리할 수 있음 (리전간 백업을 복사할 수 있음)
- 백업 복구 진행시 새로운 테이블이 생성됨
DynamoDB - S3와의 통합

- S3로 테이블 내보내기 ( 이를 위해선 지정 시간 복구 기능(PITR)을 활성화해야함)
- 35일 이내 어떤 시점으로든 테이블 내보내기 가능
- 테이블의 읽기 용량/성능에 영향X
- DynamoDB를 S3로 내보내기하여 데이터 분석 수행
- 감사 목적의 스냅샷 확보
- DynamoDB로 다시 가져오기전에 데이터 ETL같은 대규모 변경 실행
- DynamoDB JSON / ION 형식으로 내보냄

- S3로부터 테이블 가져오기
- S3에서 CSV, DynamoDB JSON, ION 형식으로 내보내기
- 쓰기 용량 소비하지 않고 새로운 테이블 생성
- 발생한 오류는 CloudWatch Logs에 기록됨
'DevOps > AWS' 카테고리의 다른 글
[AWS SAA] Direct Connect란? 키워드 간단 정리 (0) | 2025.02.12 |
---|---|
[AWS SAA] VPC 엔드포인트란? 키워드 간단 정리 (0) | 2025.02.12 |
[AWS SAA] NACL과 보안그룹의 차이점은? 간단 키워드 정리 (0) | 2025.02.12 |
[AWS SAA] Amazon DataSync란? 키워드 간단 정리 (0) | 2025.02.12 |
[AWS SAA] Amazon FSx란? 키워드 간단 정리 (0) | 2025.02.11 |