DynamoDB Accelerator (DAX)
- DAX는 DynamoDB를 위한 고가용성의 완전 관리형 무결절 인메모리 캐시이다.
- DynamoDB 테이블에 읽기 작업이 많을 때, DAX 클러스터를 생성하고 데이터를 캐싱하여 읽기 혼잡을 해결한다.
- DAX는 캐시 데이터에 마이크로초 수준의 지연 시간을 제공한다.
- DAX 클러스터는 기존 DynamoDB API와 호환되므로 애플리케이션 로직을 변경할 필요가 없다.
- DynamoDB 테이블과 애플리케이션이 있을 때, 몇몇 캐시 노드가 연결된 DAX 클러스터를 생성하면 백그라운드에서 DAX 클러스터가 Amazon DynamoDB 테이블에 연결된다.
- 캐시의 기본 TTL은 5분으로 설정되어 있으나 변경할 수 있다.
DynamoDB Accelerator (DAX) vs ElastiCache
- ElastiCache가 아니라 DAX를 사용하는 이유는 뭘까?
- DAX는 DynamoDB 앞에 있고 개별 객체 캐시와 쿼리와 스캔 캐시를 처리하는 데 유용하다.
- 예를 들어 집계 결과를 저장할 때는 Amazon ElastiCache가 좋고, Amazon DynamoDB는 대용량의 연산을 저장할 때 좋다.
- 두 서비스는 상호 보완적인 성격을 띈다.
- DynamoDB에 캐싱 솔류션을 추가할 때는 보통 DynamoDB Accelerator를 사용한다.
DynamoDB - Stream Processing
- DynamoDB에서는 스트림 처리도 가능하다.
- 테이블의 모든 수정 사항 즉, 생성, 업데이터, 삭제를 포함한 스트림을 생성할 수 있다.
- 사용자 테이블에 새로운 사용자가 등록됐을 때 환영 이메일을 보내는 등 DynamoDB 테이블의 변경 사항에 실시간으로 반응하는 데 활용할 수 있다.
- 실시간으로 사용 분석을 하거나 파생 테이블을 삽입할 수도 있다.
- 리전 간 복제를 실행하거나 DynamoDB 테이블 변경 사항에 대해 Lambda 함수를 실행할 수도 있다.
- DynamoDB에는 두 가지 스트림 처리가 있다.
- DynamoDB Stream
: 보존 기간이 24시간이고, 소비자 수가 제한된다.
: Lambda 트리거와 함께 사용하면 좋다.
: 자체적으로 읽기를 실행하려면 DynamoDB Stream Kinesis 어댑터를 사용한다.
- Kinesis Data Stream
: 이 스트림은 보전 기간이 1년이고, 더 많은 수의 소비자 수를 갖고 데이터를 처리하는 방법이 훨씬 많다.
: AWS Lambda 함수 Kinesis Data Analytics, Kinesis Data Friehose, Glue 스트리밍 등으로
DynamoDB Streams
- 애플리케이션이 DynamoDB 테이블에서 작업을 생성, 업데이트, 삭제하면 이는 DynamoDB 스트림이나 Kinesis Data Stream로 전송된다.
- Kinesis Data Stream을 선택하면 Kinesis Data Firehose를 사용할 수 있다.
- 그런 다음 분석 목적으로 데이터를 Amazon Redshift로 전송하고 데이터를 아카이빙하려면 Amazon S3로 전송한다.
- Amazon OpenSearch로 보내면 인덱싱이나 검색을 할 수 있다.
- DynamoDB 스트림을 사용하면 처리 계층을 둘 수 있다.
- EC2 인스턴스에서 애플리케이션을 실행하려면 KCL Adapter나 Lambda 함수를 사용한다.
- 처리 계층에서 SNS로 알림을 보내거나 DynamoDB 테이블을 필터링하거나 변환할 수 있다.
- Amazon OpenSearch로 처리 계층의 데이터를 전송할 수도 있다.
- Kinesis Data Stream에서 EC2 인스턴스로 읽거나 Kinesis Data Stream에서 Kinesis Data Analytics를 사용할 수도 있다. 등등 여러 변형이 가능하다.
DynamoDB Global Tables
- 글로벌 테이블은 여러 리전 간에 복제가 가능한 테이블이다.
- 테이블을 US-EAST-1과 AP-SOUTHEAST-2에 둘 수 있다.
- 두 테이블 간에는 양방향 복제가 가능하다.
- US-EAST-1이나 AP-SOUTHEAST-2 테이블 둘 중 하나에 쓰기를 하면 된다는 뜻이다. - DynamoDB 글로벌 테이블은 복수의 리전에서 짧은 지연 시간으로 액세스할 수 있게 해준다.
- 다중 활성 복제가 가능하므로 애플리케이션이 모든 리전에서 테이블을 읽고 쓸 수 있다는 뜻이다.
- 글로벌 테이블을 활성화하려면 DynamoDB 스트림을 활성화해야 리전간 테이블을 복제할 수 있는 기본 인프라가 구축된다.
DynamoDB - Time To Live (TTL)
- TTL이라는 기능은 만료 타임스탬프가 지나면 자동으로 항목을 삭제하는 기능이다.
- 가령 SessionData라는 테이블에서 ExpTime(TTL)이라는 만료 기간 속성이 있을 것이다. 이 안에 타임 스탬프가 들어가는 것이다.
- TTL을 정의한 다음, 에포크 타임스탬프에서의 현재 시간이 ExpTime 열을 넘어설 경우 해당 항목을 만료 처리하고 삭제 처리를 진행하는 개념이다.
- 데이터 테이블의 항목이 일정 시간 후에 삭제되도록 하는 것이다.
- 사용 사례
- 최근 항목만 저장하도록 하거나 2년 후 데이터를 삭제해야 한다는 규정을 따라야 할 때 사용한다.
- 웹 세션 핸들링
: 사용자가 웹사이트에 로그인했을 때 해당 세션을 중앙 저장소인 DynamoDB에 두 시간 동안 저장하는 것이다.여기에 세션 데이터를 저장하면 모든 애플리케이션이 액세스할 수 있고 두 시간 후에 세션이 갱신되지 않으면 만료되어 해당 테이블에서 삭제될 것이다.)
DynamoDB - 재해 복구를 위한 백업
- 지정 시간 복구(PITR)
- 지속적인 백업을 할 수 있다.
- 활성화를 선택할 수 있고 35일 동안 지속된다.
- 활성화하면 백업 기간 내에는 언제든 지정 시간 복구를 실행할 수 있다.
- 복구를 진행할 경우 새로운 테이블을 생성한다. - 온디맨드 백업
- 이 백업은 직접 삭제할 때까지 보존된다.
- 온디맨드 백업은 DynamoDB의 성능이나 지연시가에 영향을 주지 않는다.
- 백업을 좀 더 제대로 관리할 수 있는 방법 중 하나로 'AWS Backup' 서비스가 있다.
: 백업에 수명 주기 정책을 활성화할 수 있고, 재해 복구 목적으로 리전 간 백업을 복사할 수 있다.
: 이 옵션 또한 백업으로 복구를 진행하면 새로운 테이블이 생성된다.
DynamoDB - Amazon S3 간 통합
- S3에 테이블을 내보낸다.
- 지정 시간 복구 기능(PITR)을 꼭 활성해 해야 한다.
- DynamoDB 테이블을 S3로 내보내고 가령 쿼리를 수행하려면 Amazon Athena 엔진을 사용한다.
- 지속적인 백업을 활성화한 상태이므로 최근 35일 이내 어떤 시점으로든 테이블을 내보낼 수 있다.
- 테이블을 내보내도 테이블의 읽기 용량이나 성능에 영향을 주지 않는다.
- DynamoDB를 Amazon S3로 먼저 내보내기하여 데이터 분석을 수행할 수 있다.
- 감사 목적으로 스냅샷을 확보할 수도 있고 데이터를 DynamoDB로 다시 가져오기 전에 데이터 ETL 등 대규모 변경을 실행할 수도 있다.
- 내보낼 때는 DynamoDB JSON이나 ION 형식을 이용해야 한다. - S3에서 테이블을 가져올 수도 있다.
- S3에서 CSV, JSON 그리고 ION 형식으로 내보낸 다음 새로운 DynamoDB 테이블을 생성하는 식이다.
- 쓰기 용량을 소비하지 않고 새로운 테이블이 생성한다.
- 가져올 때 발생한 오류는 모두 CloudWatch Logs에 기록된다.
'AWS(Amazon Web Service)' 카테고리의 다른 글
[AWS] 솔루션 설계자 관점의 Serverless - Step Functions (0) | 2024.12.17 |
---|---|
[AWS] 솔루션 설계자 관점의 Serverless - API Gateway (0) | 2024.12.16 |
[AWS] 솔루션 설계자 관점의 Serverless - DynamoDB (0) | 2024.12.14 |
[AWS] 솔루션 설계자 관점의 Serverless - RDS 람다 호출 및 이벤트 알림 (0) | 2024.12.13 |
[AWS] 솔루션 설계자 관점의 Serverless - Lambda in VPC (0) | 2024.12.12 |