What is Amazon DynamoDB? - Amazon DynamoDB

What is Amazon DynamoDB?

Amazon DynamoDB는 모든 규모에서 10밀리초 미만의 성능을 제공하는 서버리스, NoSQL, 완전관리형 데이터베이스입니다.

DynamoDB는 관계형 데이터베이스의 규모 조정 및 운영 복잡성을 극복하기 위한 요구 사항을 해결합니다. DynamoDB는 규모와 관계없이 일관된 성능이 필요한 운영 워크로드에 맞게 특별히 구축되고 최적화되었습니다. 예를 들어, DynamoDB는 사용자가 10명이든 1억 명이든 상관없이 장바구니 사용 사례에 대해 일관된 한 자릿수 밀리초 성능을 제공합니다. 2012년에 출시된 DynamoDB는 비용을 절감하고 대규모로 성능을 개선하면서 관계형 데이터베이스에서 벗어날 수 있도록 지속적으로 지원합니다.

모든 규모, 산업, 지역의 고객이 DynamoDB를 통해 소규모로 시작하여 전 세계로 확장할 수 있는 최신 서버리스 애플리케이션을 빌드합니다. DynamoDB는 거의 모든 크기의 테이블을 지원하도록 규모를 조정할 수 있는 동시에 일관된 10밀리초 미만의 성능과 고가용성을 제공합니다.

Amazon Prime Day와 같은 이벤트가 있을 때 DynamoDB는 Alexa, Amazon.com 사이트, 모든 Amazon 주문 처리 센터를 포함하여 트래픽이 많은 여러 Amazon 자산 및 시스템을 지원합니다. 이러한 이벤트에서 DynamoDB API는 Amazon 자산 및 시스템의 직접 호출 수조 건을 처리했습니다. DynamoDB는 초당 50만 개 이상의 최대 트래픽이 요청되는 테이블을 통해 수백 명의 고객에게 지속적으로 서비스를 제공합니다. 또한, 테이블 크기가 200TB를 초과하는 수백 명의 고객에게 서비스를 제공하고 시간당 10억 개 이상의 요청을 처리합니다.

DynamoDB의 특징

Serverless

DynamoDB를 사용하면 서버를 프로비저닝하거나 소프트웨어를 패치, 관리, 설치, 유지 보수 또는 운영할 필요가 없습니다. DynamoDB는 가동 중지가 발생하지 않는 유지 관리를 제공합니다. 버전(메이저, 마이너 또는 패치)이 없으며 유지 관리 기간도 없습니다.

DynamoDB의 온디맨드 용량 모드는 읽기 및 쓰기 요청에 사용량에 따른 요금이 적용되므로, 사용하는 만큼에 대해서만 비용을 지불하면 됩니다. 온디맨드를 사용하면 DynamoDB는 즉시 테이블을 스케일 업하거나 스케일 다운하여 용량을 조정하고 관리 없이도 성능을 유지합니다. 또한, 0으로 스케일 다운하므로 테이블에 트래픽이 없고 콜드 스타트가 없을 때는 처리량에 대한 비용을 지불하지 않아도 됩니다.

NoSQL

NoSQL 데이터베이스인 DynamoDB는 기존의 관계형 데이터베이스보다 향상된 성능, 확장성, 관리성 및 유연성을 제공하도록 특별히 구축되었습니다. 다양한 사용 사례를 지원하기 위해 DynamoDB는 키-값 및 문서 데이터 모델을 모두 지원합니다.

관계형 데이터베이스와 달리 DynamoDB는 JOIN 연산자를 지원하지 않습니다. 쿼리에 응답하는 데 필요한 처리 능력과 데이터베이스 왕복 횟수를 줄이려면 데이터 모델을 비정규화하는 것이 좋습니다. NoSQL 데이터베이스인 DynamoDB는 강력한 읽기 일관성ACID 트랜잭션을 제공하여 엔터프라이즈급 애플리케이션을 빌드합니다.

완전관리형

완전관리형 데이터베이스 서비스인 DynamoDB는 차별화되지 않은 과중한 데이터베이스 관리 작업을 처리하므로, 사용자는 고객을 위한 가치 창출에 집중할 수 있습니다. 설정, 구성, 유지 관리, 고가용성, 하드웨어 프로비저닝, 보안, 백업, 모니터링 등을 처리합니다. 이렇게 하면 DynamoDB 테이블을 생성할 때 프로덕션 워크로드에 즉시 사용할 수 있습니다. DynamoDB는 업그레이드가 필요하지 않고 가동 중지가 발생하지 않으면서 가용성, 신뢰성, 성능, 보안 및 기능을 지속적으로 개선합니다.

규모를 따지지 않는 한 자릿수 밀리초의 성능

DynamoDB는 모든 규모에서 10밀리초 미만의 성능을 제공하여 관계형 데이터베이스의 성능과 확장성을 개선하기 위해 특별히 개발되었습니다. 이러한 규모와 성능을 달성하기 위해 DynamoDB는 고성능 워크로드에 최적화되어 있으며 효율적인 데이터베이스 사용을 장려하는 API를 제공합니다. JOIN 작업과 같이 규모에 비해 비효율적이고 성능이 떨어지는 기능은 생략됩니다. DynamoDB는 사용자 수가 100명이든 1억 명이든 상관없이 일관된 10밀리초 미만의 애플리케이션 성능을 제공합니다.

DynamoDB 사용 사례

모든 규모, 산업, 지역의 고객이 DynamoDB를 통해 소규모로 시작하여 전 세계로 확장할 수 있는 최신 서버리스 애플리케이션을 빌드합니다. DynamoDB는 운영 오버헤드가 거의 또는 전혀 없이 모든 규모에서 일관된 성능이 필요한 사용 사례에 적합합니다. 다음 목록은 DynamoDB를 사용할 수 있는 몇 가지 사용 사례를 보여줍니다.

  • 금융 서비스 애플리케이션 - 실시간 거래 및 라우팅, 대출 관리, 토큰 생성, 거래 원장과 같은 애플리케이션을 빌드하는 금융 서비스 회사를 예로 들어 보겠습니다. DynamoDB 전역 테이블을 사용하면 애플리케이션이 이벤트에 응답하고 선택한 AWS 리전의 트래픽을 빠른 읽기 및 쓰기 성능을 통해 로컬로 처리할 수 있습니다.

    DynamoDB는 가용성 요구 사항이 가장 엄격한 애플리케이션에 적합합니다. 스토리지 또는 처리량 증가, 버전 관리 및 라이선싱을 위해 인스턴스 규모를 수동으로 조정해야 하는 운영 부담을 없애줍니다.

    DynamoDB 트랜잭션을 사용하여 단일 요청으로 하나 이상의 테이블에서 원자성, 격리, 내구성(ACID)을 달성할 수 있습니다. (ACID) 트랜잭션은 금융 거래 처리 또는 주문 이행을 포함하는 워크로드에 적합합니다. DynamoDB는 늘어나거나 줄어드는 워크로드를 즉시 수용하기 때문에 거래 시간과 같은 시장 상황에 맞게 데이터베이스 규모를 효율적으로 조정할 수 있습니다.

  • 게임 애플리케이션 - 게임 회사는 게임 상태, 플레이어 데이터, 세션 기록, 순위표와 같은 게임 플랫폼의 모든 부분에 DynamoDB를 사용할 수 있습니다. DynamoDB가 선택받은 이유는 서버리스 아키텍처가 제공하는 확장성, 일관된 성능, 손쉬운 운영 때문입니다. DynamoDB는 성공적인 게임을 지원하는 데 필요한 스케일 아웃 아키텍처에 매우 적합합니다. 게임의 처리량 규모를 인/아웃으로 빠르게 조정합니다(콜드 스타트 없이 0으로 규모 조정). 이 확장성은 트래픽이 최고치에 맞춰 스케일 아웃하든, 게임플레이 사용량이 적을 때 스케일 백하든 관계없이 아키텍처의 효율성을 최적화합니다.

  • 스트리밍 애플리케이션 - 미디어 및 엔터테인먼트 회사는 DynamoDB를 콘텐츠, 콘텐츠 관리 서비스에 대한 메타데이터 인덱스로 사용하거나 실시간에 가까운 스포츠 통계를 제공하는 데 사용합니다. 또한, DynamoDB를 통해 사용자 감시 목록 및 북마크 서비스를 실행하고 매일 수십억 건의 고객 이벤트를 처리하여 추천을 생성합니다. 이러한 고객은 DynamoDB의 확장성, 성능 및 복원력을 활용할 수 있습니다. DynamoDB는 증가하거나 줄어드는 워크로드 변화에 따라 규모를 조정하여 모든 수준의 수요를 뒷받침할 수 있는 스트리밍 미디어 사용 사례를 지원합니다.

다양한 업계의 고객이 DynamoDB를 사용하는 방법에 대해 자세히 알아보려면 Amazon DynamoDB CustomersThis is My Architecture를 참조하세요.

DynamoDB의 기능

전역 테이블을 사용한 다중 활성 복제

전역 테이블99.999% 가용성으로 선택한 AWS 리전에 걸쳐 데이터의 다중 활성 복제 기능을 제공합니다. 전역 테이블은 자체 복제 솔루션을 구축하고 유지 관리하지 않고도 다중 리전의 다중 활성 데이터베이스를 배포할 수 있는 완전관리형 솔루션을 제공합니다. 전역 테이블에서는 테이블을 사용할 수 있는 AWS 리전을 지정할 수 있습니다. DynamoDB는 진행 중인 데이터 변경 사항을 이러한 모든 테이블에 복제합니다.

전 세계에 분산된 애플리케이션은 선택한 리전의 로컬 데이터에 액세스하여 10밀리초 미만의 읽기 및 쓰기 성능을 달성할 수 있습니다. 전역 테이블은 다중 활성의 성격을 띠므로, 기본 테이블이 필요하지 않습니다. 즉, 리전 간에 애플리케이션을 장애 조치할 때 복잡하거나 지연된 장애 조치나 데이터베이스 가동 중지 시간이 발생하지 않습니다.

ACID 트랜잭션

DynamoDB는 업무상 중요한 워크로드를 위해 구축되었습니다. 여기에는 복잡한 비즈니스 로직이 필요한 애플리케이션을 위한 (ACID) 트랜잭션 지원이 포함됩니다. DynamoDB는 트랜잭션에 대한 기본적인 서버측 지원을 제공하여 테이블 내 및 테이블 간에 여러 항목을 조정된 양자택일 방식으로 변경하는 개발자 경험을 간소화합니다.

이벤트 기반 아키텍처를 위한 변경 데이터 캡처

DynamoDB는 항목 수준 변경 데이터 캡처(CDC) 레코드의 스트리밍을 거의 실시간으로 지원합니다. CDC용 DynamoDB StreamsDynamoDB용 Amazon Kinesis Data Streams라는 2가지 스트리밍 모델을 제공합니다. 애플리케이션이 테이블의 항목을 생성, 업데이트 또는 삭제할 때마다 스트림은 모든 항목 수준 변경의 시간 순서 시퀀스를 거의 실시간으로 기록합니다. 따라서 DynamoDB Streams는 이벤트 기반 아키텍처를 사용하는 애플리케이션이 변경 사항을 적용하고 이에 따라 조치를 취하는 데 이상적입니다.

보조 인덱스

DynamoDB는 글로벌 및 로컬 보조 인덱스를 모두 생성할 수 있는 옵션을 제공하므로, 대체 키를 사용하여 테이블 데이터를 쿼리할 수 있습니다. 이러한 보조 인덱스를 사용하면 프라이머리 키 이외의 속성을 사용하여 데이터에 액세스할 수 있어 데이터에 최대한 유연하게 액세스할 수 있습니다.

서비스 통합

DynamoDB는 여러 AWS 서비스와 광범위하게 통합되어 데이터에서 더 많은 가치를 얻고, 차별화되지 않은 부담스러운 작업을 제거하고, 워크로드를 대규모로 운영할 수 있도록 지원합니다. 몇 가지 예로는 AWS CloudFormation, Amazon CloudWatch, Amazon S3, AWS Identity and Access Management(IAM), AWS Auto Scaling 등이 있습니다. 다음 섹션에서는 DynamoDB를 사용하여 수행할 수 있는 몇 가지 서비스 통합을 설명합니다.

서버리스 통합

DynamoDB는 엔드 투 엔드 서버리스 애플리케이션을 빌드하기 위해 여러 서버리스 AWS 서비스와 기본적으로 통합됩니다. 예를 들어, DynamoDB와 AWS Lambda를 통합하여 DynamoDB Streams의 이벤트에 자동으로 응답하는 코드 조각인 트리거를 만들 수 있습니다. 트리거를 사용하면 DynamoDB 테이블의 데이터 수정에 응답하는 이벤트 기반 애플리케이션을 빌드할 수 있습니다. 비용 최적화를 위해 Lambda가 DynamoDB 스트림에서 처리하는 이벤트를 필터링할 수 있습니다.

다음 목록은 DynamoDB를 사용한 서버리스 통합의 몇 가지 예제를 보여줍니다.

Amazon S3로 데이터 가져오기 및 내보내기

DynamoDB를 Amazon S3와 통합하면 분석 및 기계 학습을 위해 Amazon S3 버킷으로 데이터를 쉽게 내보낼 수 있습니다. DynamoDB는 전체 테이블 내보내기 및 증분 내보내기를 지원하여 지정된 기간 사이에 변경, 업데이트 또는 삭제된 데이터를 내보낼 수 있습니다. Amazon S3에서 새 DynamoDB 테이블로 데이터를 가져올 수도 있습니다.

제로 ETL 통합

DynamoDB는 Amazon Redshift와의 제로 ETL 통합Amazon OpenSearch Service를 지원합니다. 이러한 통합을 통해 DynamoDB 테이블 데이터에 대해 복잡한 분석을 실행하고 고급 검색 기능을 사용할 수 있습니다. 예를 들어, DynamoDB 데이터에 대해 전체 텍스트 및 벡터 검색과 시맨틱 검색을 수행할 수 있습니다. 제로 ETL 통합은 DynamoDB에서 실행되는 프로덕션 워크로드에 영향을 주지 않습니다.

캐싱

DynamoDB Accelerator(DAX)는 DynamoDB용으로 구축된 완전관리형 고가용성 캐싱 서비스입니다. DAX는 초당 요청 수가 몇백만 개인 경우에도 몇 밀리초에서 몇 마이크로초까지 최대 10배의 개선된 성능을 제공합니다. DAX는 사용자가 캐시 무효화, 데이터 채우기 또는 클러스터 관리를 신경 쓸 필요 없이 DynamoDB 테이블에 인메모리 가속을 추가하는 데 필요한 모든 번거로운 작업을 수행합니다.

보안

DynamoDB는 IAM을 사용하여 DynamoDB 리소스에 대한 액세스를 안전하게 제어할 수 있습니다. IAM을 사용하면 리소스에 액세스할 수 있는 DynamoDB 사용자를 제어하는 권한을 중앙에서 관리할 수 있습니다. IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어합니다. DynamoDB는 IAM을 사용하기 때문에 사용자 이름이나 암호 없이 DynamoDB에 액세스할 수 있습니다. 복잡한 암호 교체 정책을 관리할 필요가 없으므로, 보안 태세가 단순해집니다. 또한, IAM을 사용하면 세분화된 액세스 제어를 통해 속성 수준에서 권한을 부여할 수 있습니다. IAM Access Analyzer퍼블릭 액세스 차단(BPA)을 지원하여 리소스 기반 정책을 정의함으로써 정책 관리를 간소화할 수 있습니다.

기본적으로 DynamoDB는 저장된 모든 고객 데이터를 암호화합니다. 저장 중 암호화AWS Key Management Service(AWS KMS)에 저장된 암호화 키를 사용하여 데이터의 보안을 강화합니다. 저장 시 암호화를 사용하면 엄격한 암호화 규정 준수 및 규제 요구 사항이 필요한, 보안에 민감한 애플리케이션을 구축할 수 있습니다. 암호화된 테이블에 액세스하면 DynamoDB가 테이블 데이터를 투명하게 해독합니다. 암호화된 테이블을 사용 또는 관리하기 위해 코드나 애플리케이션을 변경할 필요가 없습니다. DynamoDB는 사용자가 기대하는 한 자릿수 밀리초 지연 시간을 지속적으로 제공하며, 모든 DynamoDB 쿼리는 암호화된 데이터에서 원활하게 작동합니다.

DynamoDB가 AWS 소유 키(기본 암호화 유형)와 AWS 관리형 키 또는 고객 관리형 키 중에서 어떤 것으로 사용자 데이터를 암호화하도록 할지 지정할 수 있습니다. AWS 소유 KMS 키를 사용한 기본 암호화는 추가 비용 없이 사용할 수 있습니다. 클라이언트측 암호화의 경우 AWS 데이터베이스 암호화 SDK를 사용할 수 있습니다.

DynamoDB는 또한 HIPAA, PCI DSS, GDPR을 포함한 여러 규정 준수 표준을 준수하므로, 규제 요구 사항을 충족할 수 있습니다.

복원력

기본적으로 DynamoDB는 3개의 가용 영역에 데이터를 자동으로 복제하여 높은 내구성과 99.99% 가용성 SLA를 제공합니다. 나아가 DynamoDB는 비즈니스 연속성 및 재해 복구 목표를 달성하는 데 도움이 되는 추가 기능을 제공합니다.

DynamoDB에는 데이터 복원력과 백업 요구 사항을 지원하는 다음 기능이 포함되어 있습니다.

글로벌 테이블

DynamoDB 전역 테이블은 99.999%의 가용성 SLA와 다중 리전 복원력을 제공합니다. 이를 통해 복원력이 뛰어난 애플리케이션을 빌드하고 최저 Recovery Time Objective(RTO) 및 Recovery Point Objective(RPO)에 맞게 애플리케이션을 최적화할 수 있습니다. 또한, 전역 테이블은 AWS Fault Injection Service(AWS FIS)와 통합되어 전역 테이블 워크로드에 대한 결함 주입 실험을 수행합니다. 예를 들어, 모든 복제 테이블에 대한 전역 테이블 복제를 일시 중지할 수 있습니다.

연속 백업과 특정 시점으로 복구

연속 백업은 초당 세분화를 제공하고 특정 시점으로 복구를 개시할 수 있습니다. 특정 시점으로 복구를 사용하면 최근 35일 중 원하는 최신 시점으로 테이블을 복원할 수 있습니다.

연속 백업과 특정 시점으로 복구를 시작하는 경우에는 프로비저닝된 용량을 사용하지 않습니다. 또한, 애플리케이션의 성능이나 가용성에도 영향을 미치지 않습니다.

온디맨드 백업 및 복원

온디맨드 백업 및 복원 기능을 사용하면 장기 보존을 위한 테이블의 전체 백업과 규정 준수 요구를 위한 아카이브를 생성할 수 있습니다. 백업은 테이블 성능에 영향을 주지 않으므로, 모든 크기의 테이블을 백업할 수 있습니다. AWS Backup 통합과 함께 AWS Backup를 사용하여 DynamoDB 온디맨드 백업을 자동으로 예약, 복사, 태그 지정하고 수명 주기를 관리할 수 있습니다. AWS Backup를 사용하면 계정 및 리전 전체에 온디맨드 백업을 복사하고 비용 최적화를 위해 오래된 백업을 콜드 스토리지로 전환할 수 있습니다.

DynamoDB 액세스

AWS Management Console, AWS Command Line Interface, DynamoDB용 NoSQL Workbench 또는 DynamoDB API를 사용하여 DynamoDB로 작업할 수 있습니다.

DynamoDB 요금

DynamoDB는 활성화하기로 선택한 모든 선택적 기능과 함께 테이블의 데이터 읽기, 쓰기 및 저장에 대한 요금을 청구합니다. DynamoDB에는 테이블에 읽기 및 쓰기를 처리하기 위한 각각의 청구 옵션이 있는 온디맨드프로비저닝 용량 모드가 있습니다.

또한, DynamoDB는 25GB의 스토리지를 제공하는 프리 티어를 제공합니다. 나아가 프리 티어에는 25개의 프로비저닝된 쓰기 및 25개의 프로비저닝된 읽기 용량 유닛(WCU, RCU)이 포함되어 있어 매월 2억 개의 요청을 처리하기에 충분합니다.

자세한 내용은 Amazon DynamoDB 요금을 참조하세요.

DynamoDB 시작하기

DynamoDB를 처음 사용할 경우 먼저 다음의 주제를 읽는 것이 좋습니다.

  • DynamoDB 시작하기 - DynamoDB 설정, 샘플 테이블 생성, 데이터 업로드 프로세스를 안내합니다. 이 주제에서는 AWS Management Console, AWS CLI, NoSQL Workbench, DynamoDB API를 사용하여 몇 가지 기본 데이터베이스 작업을 수행하는 방법에 대한 정보도 제공합니다.

  • DynamoDB 핵심 구성 요소 - DynamoDB의 기본 개념을 설명합니다.

  • DynamoDB를 사용한 설계 및 아키텍처 설계 모범 사례 - NoSQL 설계, DynamoDB Well-Architected 렌즈, 테이블 설계 및 기타 여러 DynamoDB 기능에 대한 권장 사항을 제공합니다. 이러한 모범 사례는 DynamoDB를 사용할 때 성능을 극대화하고 처리 비용을 최소화하는 데 도움이 됩니다.

또한, DynamoDB에 익숙해지려면 처음부터 끝까지 완벽한 절차를 제시하는 다음 자습서를 검토하는 것이 좋습니다. AWS 프리 티어로 이 자습서를 이수할 수 있습니다.

DynamoDB로 마이그레이션하기 위한 리소스, 도구 및 전략에 대한 자세한 내용은 DynamoDB로 마이그레이션을 참조하세요. 최신 블로그와 백서를 읽으려면 Amazon DynamoDB 리소스를 참조하세요.