Key features
- Performance : 읽기 및 쓰기 작업에 대해 한 자릿수 밀리초의 지연 시간을 제공하므로 처리량이 많은 실시간 애플리케이션에 매우 적합합니다.
- Scalabilty : 다운타임 없이 초당 수백만 건의 요청을 처리하도록 쉽게 수평 확장할 수 있습니다.
- Flexibility : 문서 및 key-value 구조를 모두 지원하므로 다양한 형식으로 데이터를 저장하고 검색할 수 있습니다.
- Security : Encryption at rest를 지원하고 데이터에 대한 엑세스를 제어하기 위한 IAM 역할 및 정책 생성을 허용합니다.
- Global tables : Global table은 자동 충돌 해결과 함께 완벽하게 관리되는 다중 리전 및 다중 마스터 데이터베이스를 제공합니다.
- Backup and restore : On-demand 백업 및 PITR(Point-in-time Recovery)을 사용하면 언제든지 테이블의 전체 백업을 생성하고 지난 35일 내의 원하는 시점으로 복원할 수 있습니다.
- In-memory caching : DAX는 DDB 테이블에서 읽기 트래픽을 오프로드하여 읽기 지연 시간을 줄이고 읽기 처리량을 늘리는 데 사용할 수 있는 완전 관리형 인 메모리 캐시입니다.
Best Practices
- 올바른 파티션 키 선택: 파티션 키는 여러 파티션에 데이터를 배포하는 데 사용되는 키입니다. 올바른 파티션 키를 선택하면 테이블의 성능과 확장성에 큰 영향을 미칠 수 있습니다.
- 정렬 키를 사용하여 데이터 정렬 및 필터링: 정렬 키를 사용하여 파티션 내의 데이터를 정렬하고 정렬 키를 기반으로 항목을 필터링할 수 있습니다.
- 올바른 읽기 및 쓰기 용량 사용: DynamoDB는 테이블에 대한 트래픽을 기반으로 읽기 및 쓰기 용량을 자동으로 조정하지만 자체적으로 프로비저닝된 용량을 설정하여 비용을 제어할 수도 있습니다.
- provisioned vs on-demand
- pattern이 정형화 되면 provisioned 권장
- 중간중간 사용하지 않는 구간이 많다면, on-deman 권장
- BatchWriteItem 및 BatchGetItem 작업을 사용하여 읽기 및 쓰기 요청 수 줄이기: 이러한 작업을 통해 단일 요청에서 여러 읽기 및 쓰기 작업을 수행할 수 있으므로 요청 수와 그에 따른 비용이 줄어듭니다.
- Use the Global Secondary Indexes(GSI) to access your data in different ways: GSI는 테이블에 하나 이상의 인덱스를 생성하는 데 사용되므로 다양한 쿼리 및 정렬 순서와 같은 다양한 방식으로 데이터에 액세스할 수 있습니다.
- On-demand 백업 및 PITR(Point-in-time Recovery)를 사용하여 데이터를 보호하십시오.
- DynamoDB Accelerator(DAX)를 사용하여 DynamoDB 테이블에서 읽기 트래픽을 오프로드하여 읽기 지연 시간을 줄이고 읽기 처리량을 늘립니다.
- AWS CloudWatch를 사용하여 DynamoDB 성능 및 사용량을 모니터링하고 모든 문제에 대해 알림을 받도록 경보를 설정하십시오.
- DynamoDB 리소스에 대한 세분화된 액세스 제어를 위해 IAM을 사용합니다.
- 배포 전에 응용 프로그램을 테스트하여 예상 로드를 처리할 수 있는지 확인하고 프로덕션 환경에서 성능을 모니터링하여 발생할 수 있는 문제를 식별하고 해결합니다.