Amazon DynamoDB 기능

왜 DynamoDB일까요?

Amazon DynamoDB키 값문서 데이터 모델을 지원하는 서버리스 NoSQL 데이터베이스 서비스의 일종입니다. 개발자는 DynamoDB를 사용하여 소규모로 시작하여 전 세계로 규모를 조정할 수 있는 최신 서버리스 애플리케이션을 구축할 수 있습니다. DynamoDB는 자동화된 수평적 스케일링을 통해 거의 모든 크기의 테이블을 지원하도록 규모를 조정합니다.

가용성, 내구성 및 내결함성이 기본적으로 제공되고 해제할 수 없으므로 이러한 기능에 맞게 애플리케이션을 설계할 필요가 없습니다.

DynamoDB는 기존의 관계형 데이터베이스에서는 역부족인 인터넷 규모의 고성능 애플리케이션을 실행할 수 있도록 설계되었습니다. 10년 넘게 선구적인 혁신 투자를 통해 DynamoDB는 10밀리초 미만의 일관된 성능과 최대 99.999%의 가용성으로 무한한 확장성을 제공합니다.

새로운 특성 및 기능에 대해 알아보려면 DynamoDB의 새로운 소식 발표를 참조하세요.

무제한의 확장성을 갖춘 서버리스 성능

DynamoDB는 키-값과 문서 데이터 모델을 모두 지원합니다. DynamoDB는 NoSQL 데이터베이스로서 유연한 스키마를 가지고 있어 항목마다 다른 속성을 가질 수 있습니다. 유연한 스키마를 사용하면 관계형 데이터베이스에서와 같이 테이블 스키마를 재정의해야 하는 부담 없이 비즈니스 요구 사항 변경에 따라 쉽게 조정할 수 있습니다.

DynamoDB를 사용하면, 서버를 프로비저닝하거나 패치를 적용하거나 관리할 필요가 없으며, 소프트웨어를 설치하거나 관리하거나 운영할 필요도 없습니다. DynamoDB는 버전(메이저, 마이너 또는 패치)과 유지 관리 기간이 없으며, 가동 중지 시간이 없는 유지 보수를 제공합니다. DynamoDB 온디맨드 요금은 종량제 요금을 제공하고, 0으로 규모를 조정하고, 용량에 맞게 자동으로 테이블 크기를 조정하고, 별도의 관리 없이 성능을 유지합니다.

DynamoDB는 복잡한 비즈니스 로직이 요구되는 애플리케이션에 대해 원자성, 일관성, 격리 및 내구성(ACID) 트랜잭션을 지원하는 등, 미션 크리티컬 워크로드를 위한 기능이 내장되어 있습니다. DynamoDB는 트랜잭션에 대해 네이티브 서버 측 지원을 제공하므로, 개발자가 테이블 내에서 그리고 전체 테이블에 걸쳐 모두 변경하거나 전혀 변경하지 않고 간편하게 조정할 수 있습니다.

DynamoDB는 트랜잭션당 100개의 작업을 지원하여 개발자 생산성을 향상합니다. 개발자는 트랜잭션 지원을 통해 DynamoDB의 규모, 성능 및 엔터프라이즈 이점을 광범위한 미션 크리티컬 워크로드로 확장할 수 있습니다.

DynamoDB 글로벌 테이블은 99.999%의 가용성으로 원하는 AWS 리전 전체에서 데이터의 액티브-액티브 복제를 제공합니다. 글로벌 테이블은 다중 활성 방식이므로 모든 복제본에서 읽고 쓸 수 있고, 글로벌로 배포된 애플리케이션은 선택한 리전에서 데이터에 로컬로 액세스할 수 있으므로 10밀리초 미만의 읽기 및 쓰기 성능을 달성할 수 있습니다.

또한 글로벌 테이블은 다중 리전 워크로드를 수용할 수 있도록 용량 규모를 자동으로 조정합니다. 글로벌 테이블은 애플리케이션의 다중 리전 복원력을 향상시키며 조직의 비즈니스 연속성 전략의 일부로 간주되어야 합니다.

DynamoDB Streams는 변경 데이터 캡처 기능입니다. 애플리케이션이 테이블의 항목을 생성, 업데이트 또는 삭제할 때마다 DynamoDB Streams는 거의 실시간으로 모든 항목 수준 변경을 시간순으로 기록하므로, 이벤트 기반 아키텍처 애플리케이션이 변경 사항을 사용하고 조치를 취하는 데 적합합니다. 모든 변경 사항이 중복 제거되어 24시간 동안 저장됩니다.

또한 애플리케이션은 이 로그에 액세스하여 데이터 항목이 수정되기 전과 후에 표시된 데이터 항목을 거의 실시간으로 볼 수 있습니다. DynamoDB Streams는 각 스트림 레코드가 스트림에 정확히 한 번 표시되도록 하고, 수정된 각 항목에 대해 스트림 레코드가 항목의 실제 수정과 동일한 순서로 표시되도록 합니다.

다른 모든 데이터베이스 시스템과 마찬가지로 항목 모음인 테이블을 생성하는 것으로 시작합니다. DynamoDB에는 테이블의 각 항목에 고유한 프라이머리 키가 있습니다. 또한 하나 이상의 보조 키가 있어 많은 애플리케이션에서 다른 속성을 사용하여 데이터를 보다 효율적으로 검색할 수 있다는 이점이 있습니다. DynamoDB는 글로벌 및 로컬 보조 인덱스를 모두 생성할 수 있는 옵션을 제공하며, 이를 통해 보조 또는 대체 키를 사용하여 테이블의 데이터를 쿼리할 수 있습니다.

글로벌 보조 인덱스를 스파스 인덱스라고도 합니다. 데이터에 액세스하는 방법에 대한 유연성을 극대화할 뿐만 아니라 더 저렴한 비용과 우수한 성능으로 더 낮은 쓰기 처리량을 프로비저닝할 수 있습니다.

보안 및 신뢰성

DynamoDB는 리소스에 대한 액세스를 인증하고 권한을 부여하는 데 AWS Identity and Access Management(IAM)를 사용합니다. IAM 정책과 리소스 기반 정책을 지정하고, 정책의 태그를 사용하여 속성 기반 액세스 제어(ABAC)를 정의하고, ID에 따라 테이블의 특정 항목 및 속성에 대한 읽기 또는 쓰기 액세스를 제한하여 세분화된 액세스 권한을 지원하는 조건을 지정할 수 있습니다.

DynamoDB는 저장된 모든 고객 데이터를 기본적으로 암호화합니다. 저장 중 암호화 기능은 AWS Key Management Service(AWS KMS)에 저장된 암호화 키를 사용하여 데이터 보안을 강화합니다. AWS Database Encryption SDK를 추가하면 속성 수준 암호화를 수행하여 테이블 내 데이터에 대한 세분화된 액세스 제어를 추가로 적용할 수 있습니다. DynamoDB를 사용하면 엄격한 암호화 규정 준수 및 규제 요구 사항이 필요한, 보안에 민감한 애플리케이션을 구축하는 데 도움이 됩니다.

암호화 키는 기본 스토리지에 대한 무단 액세스로부터 데이터를 보호하여 추가 데이터 보호 계층을 제공합니다. DynamoDB에서 사용자 데이터를 암호화하는 데 AWS 소유 키(기본 암호화 유형), AWS 관리형 키, 고객 관리형 키 중 무엇을 사용할지 지정할 수 있습니다. AWS KMS 키를 사용한 기본 암호화는 추가 비용 없이 제공됩니다.

시점 복구(PITR) 기능을 사용하면 실수로 쓰거나 삭제하지 못하게 하여 DynamoDB 테이블을 보호할 수 있습니다. PITR은 DynamoDB 테이블 데이터를 지속적으로 백업하므로, 이전 35일 동안 두 번째 시점까지 테이블을 복원할 수 있습니다.

PITR은 프로비저닝된 용량을 사용하지 않으며 애플리케이션의 성능이나 가용성에 영향을 미치지 않습니다. AWS Management Console에서 한 단계만으로 또는 API 직접 호출 한 번만으로 간단히 PITR을 활성화하거나 백업 및 복원 작업을 시작할 수 있습니다.

온디맨드 백업 및 복원을 통해 DynamoDB 테이블의 전체 데이터 백업을 만들고 이를 아카이빙하면 기업은 물론 정부의 규제 요건을 준수하는 데도 도움이 됩니다. 프로덕션 애플리케이션의 성능 또는 가용성에 영향을 주지 않고 몇 메가바이트에서 수백 테라바이트에 이르는 테이블 데이터를 백업할 수 있습니다. AWS Backup 통합을 사용하면 계정 간과 리전 간에 온디맨드 백업을 복사하고, 백업에 대한 비용 할당 태깅을 생성하며, 백업을 콜드 스토리지로 전환할 수 있습니다.

DynamoDB는 VPC 내 연결 또는 온프레미스 데이터 센터로부터의 연결에 게이트웨이 가상 프라이빗 클라우드(VPC) 엔드포인트 및 인터페이스 VPC 엔드포인트를 지원합니다. AWS PrivateLink로 활성화된 인터페이스 VPC 엔드포인트를 통해 온프레미스 애플리케이션에서 DynamoDB로의 프라이빗 네트워크 연결을 구성할 수 있습니다. 이렇게 하면 DynamoDB에 대한 프라이빗 연결을 간소화하고 규정 준수를 유지할 수 있습니다.

비용 효율성

DynamoDB는 각 테이블에 대해 온디맨드와 프로비저닝의 용량 모드를 제공합니다.

  • 예측이 어렵고 사용률이 높을지 확신할 수 없는 워크로드의 경우, 온디맨드 용량 모드를 사용하면 용량을 관리하고 사용량에 대해서만 비용을 지불할 수 있습니다.
  • 프로비저닝된 용량 모드를 사용하는 테이블에는 읽기 및 쓰기 용량을 설정해야 합니다. 지정한 프로비저닝된 용량을 충분히 사용할 것으로 확신할 경우에는 프로비저닝된 용량 모드가 더 비용 효율적입니다. 

온디맨드 용량 모드를 사용하는 테이블의 경우, DynamoDB는 워크로드가 이전에 도달했던 트래픽 수준으로 증가하거나 감소하면서 즉시 워크로드를 수용합니다. 워크로드 트래픽 수준이 새로운 피크를 기록할 경우에는 DynamoDB가 워크로드를 수용하기 위해 신속하게 조정을 수행합니다. 또한 개별 온디맨드 테이블과 관련 보조 인덱스의 최대 읽기 또는 쓰기(또는 둘 다) 처리량을 선택적으로 구성하여 비용과 성능의 균형을 쉽게 맞출 수 있습니다. 새로운 테이블과 기존 테이블에 모두 온디맨드 용량 모드를 사용할 수 있으며, 코드를 변경하지 않고 기존 DynamoDB API를 계속 사용할 수 있습니다.

자주 액세스하지 않는 데이터의 경우 Amazon DynamoDB Standard-IA 테이블 클래스를 사용하면 DynamoDB 비용을 최대 60% 절감할 수 있습니다. 스토리지 비용이 저렴한 Standard-IA 테이블은 애플리케이션 로그, 기록 게이밍 데이터, 이전 소셜 미디어 게시물 등과 같이 자주 액세스하지 않는 데이터의 장기 스토리지를 위해 설계되었습니다. Amazon DynamoDB Standard 테이블과 가용성, 내구성 및 성능이 동일하며, 이는 대부분의 워크로드에 대한 기본 옵션이자 가장 비용 효율적인 옵션입니다.

프로비저닝된 용량을 사용하는 테이블의 경우에는 DynamoDB가 애플리케이션의 성능 사용량을 모니터링하여 이전에 설정한 용량을 기준으로 처리량과 스토리지의 오토 스케일링을 제공합니다.

  • 애플리케이션 트래픽이 증가할 경우 DynamoDB는 처리량을 늘려 작업 부하를 수용합니다.
  • 애플리케이션 트래픽이 감소할 경우에는 DynamoDB가 축소 조정하므로 사용하지 않은 용량에 대해 요금을 절약할 수 있습니다.

AWS 서비스와의 통합

Amazon Simple Storage Service(Amazon S3)에서 대량 가져오기 및 내보내기를 사용하면 DynamoDB 테이블을 한 애플리케이션, 계정 또는 리전에서 다른 애플리케이션, 계정 또는 리전으로 이동, 변환 및 복사하기 위해 코드를 작성할 필요가 없으므로 데이터를 더 잘 활용할 수 있습니다. 대량 가져오기 및 내보내기는 테이블의 읽기 또는 쓰기 용량을 사용하지 않으므로 추가 용량을 계획하거나 프로비저닝할 필요가 없습니다. 대량 가져오기 및 내보내기 프로세스는 DynamoDB에서 완벽하게 관리합니다.

Amazon S3에서 대량 가져오기를 사용하면 CSV, DynamoDB JSON, Amazon Ion 등의 지원되는 형식을 사용하여 메가바이트에서 테라바이트에 이르는 모든 규모의 데이터를 가져올 수 있습니다. Amazon S3에서 대량 가져오기를 통해 고객은 프로비저닝된 용량을 사용하는 클라이언트 기반 쓰기에 비해 최대 66%를 절약할 수 있습니다.

Amazon S3로 대량 내보내기를 사용하면 지난 35일 동안의 특정 시점에 대해 PITR이 활성화된 테이블에서 초 단위로 데이터를 내보낼 수 있습니다. DynamoDB에서 Amazon S3로 데이터를 내보내면 Amazon Athena, Amazon SageMaker 등의 다른 AWS 서비스를 사용하여 데이터를 분석하고 유용한 인사이트를 확보할 수 있습니다.

Amazon Kinesis Data Streams for DynamoDB는 DynamoDB 테이블의 항목 수준 변경을 캡처하여 실시간 대시보드를 지원하고, 지표를 생성하고, 데이터를 데이터 레이크로 전달합니다. Kinesis Data Streams를 이용하면 실시간 로그 집계, 실시간 비즈니스 분석 및 IoT 데이터 캡처와 같은 고급 스트리밍 애플리케이션을 구축할 수 있습니다.

또한 Kinesis Data Streams를 통해 Amazon Kinesis Data Firehose를 사용하여 DynamoDB 데이터를 Amazon S3, Amazon OpenSearch Service, Amazon Redshift 등의 다른 AWS 서비스에 자동으로 전송할 수 있습니다.

데이터베이스 성능을 쉽게 모니터링할 수 있도록 DynamoDB는 원시 데이터베이스 성능 데이터를 수집하고 처리하는 Amazon Cloudwatch와 통합됩니다. CloudWatch를 사용하여 DynamoDB 데이터베이스의 지표와 경보에 대한 사용자 지정 뷰와 대시보드를 생성할 수 있습니다. 이 모니터링 기능은 기본적으로 제공되며 무료로 제공됩니다. 지표 성능에 따라 자동으로 전송되는 경보를 생성할 수도 있습니다.

Amazon CloudWatch Contributor Insights를 사용하면 누가 또는 무엇이 데이터베이스 및 애플리케이션 성능에 영향을 미치는지 신속하게 식별할 수 있습니다. 이 기능을 사용하면 운영 이벤트 중에 문제를 더 쉽고 빠르게 격리, 진단 및 해결할 수 있습니다.

FAQ

DynamoDB만의 고유한 장점으로는 10밀리초 미만의 성능과 최대 99.999%의 가용성을 제공하는 검증된 완전관리형 ‘0으로 규모 조정’ 서버리스 데이터베이스가 있습니다. DynamoDB는 규모에 따른 일관된 성능과 함께 가장 엄격한 요구사항을 가진 글로벌 애플리케이션에 필요한 내장 보안, 내구성 및 신뢰성도 제공합니다.

사용 편의성을 갖춘 DynamoDB는 무한한 확장성과 일관되고 빠른 성능을 추구하는 새로운 현대적 애플리케이션과 기존 인터넷 규모 애플리케이션 양쪽 모두를 위해 자주 선택됩니다.

DynamoDB는 개발자용으로 구축되었으며 서버리스이므로 기술 문서를 사용하여 간단하게 설정할 수 있습니다.