AWS DynamoDB 개요 및 주요 특징
1. 개요
Amazon DynamoDB는 완전 관리형(NoSQL) 데이터베이스 서비스로, 높은 가용성, 자동 확장성, 빠른 응답 속도를 제공합니다. 다중 AZ(가용 영역) 복제를 통해 내구성을 보장하며, 서버리스(Serverless) 환경에서 운영이 가능합니다.
2. 주요 특징
2.1. 고가용성 및 내구성
- DynamoDB는 다중 AZ(Availability Zone) 간 자동 복제를 지원하여, 장애 발생 시에도 데이터가 손실되지 않고 지속적으로 사용할 수 있습니다.
2.2. NoSQL 기반, 트랜잭션 지원
- DynamoDB는 NoSQL 데이터베이스이지만, ACID 트랜잭션을 지원하여 일관성과 무결성이 중요한 애플리케이션에서도 활용될 수 있습니다.
- 문서(Document) 및 키-값(Key-Value) 데이터 모델을 지원합니다.
2.3. 보안 (IAM과 통합)
- AWS IAM(Identity and Access Management)과 통합되어 있어 세밀한 접근 제어가 가능합니다.
- 암호화 기능(기본 제공)을 통해 저장된 데이터를 보호합니다.
2.4. 오토스케일링(Auto Scaling)
- 워크로드 증가 시 자동 확장(Auto Scaling) 기능을 통해 읽기/쓰기 용량을 동적으로 조정할 수 있습니다.
- 프로비저닝(Provisioned) 모드에서는 특정 용량을 미리 할당하며, 온디맨드(On-Demand) 모드에서는 사용량에 따라 자동 확장됩니다.
2.5. 테이블 및 데이터 구조
- DynamoDB는 테이블(Table) 단위로 데이터를 저장하며, 각 테이블은 다음과 같은 구조를 가집니다.
- 기본 키(Primary Key): 데이터를 구분하는 고유 키 (생성 시 결정)
- 항목(Item): 테이블 내에서 하나의 레코드에 해당
- 속성(Attribute): 각 항목에 포함되는 데이터 (나중에 동적으로 추가 가능)
- 관계형 데이터베이스(RDBMS)와 달리 스키마리스(Schema-less) 구조로, 속성을 유연하게 추가/제거할 수 있습니다.
2.6. 스토리지 및 성능
- 큰 객체(파일, 이미지, 동영상 등)를 저장하는 데는 적합하지 않으며, 문자열(String), 숫자(Number), 리스트(List) 등의 데이터 유형을 효율적으로 처리할 수 있습니다.
- DynamoDB Streams를 사용하면 테이블 변경 사항을 실시간으로 캡처하고, AWS Lambda 및 EventBridge와 연계하여 이벤트 기반 처리를 할 수 있습니다.
3. 테이블 예시 (시각화)
아래는 "고객 주문 테이블"을 예시로 든 DynamoDB 테이블 구조입니다.
OrderID (파티션 키) | CustomerID (정렬 키) | ProductName | Quantity | OrderDate |
---|
ORD123 | CUST001 | iPhone 15 | 1 | 2024-02-19 12:30 |
ORD124 | CUST002 | Galaxy S24 | 2 | 2024-02-19 14:00 |
ORD125 | CUST001 | MacBook Pro | 1 | 2024-02-20 09:45 |
- 파티션 키(Primary Key):
OrderID
- 정렬 키(Sort Key, 선택사항):
CustomerID
- 속성(Attribute):
ProductName
, Quantity
, OrderDate
- 테이블을 생성할 때 기본 키를 미리 결정해야 하며, 이후에도 속성을 자유롭게 추가할 수 있습니다.
4. 읽기/쓰기 용량 및 요금 모델
DynamoDB는 두 가지 용량 모드를 제공합니다.
4.1 프로비저닝 모드 (Provisioned Mode)
- 미리 지정한 읽기/쓰기 용량을 기반으로 운영됩니다.
- 트래픽이 예측 가능한 경우 적합하며, 초과 요청이 발생하면 처리 속도가 제한될 수 있습니다.
- *자동 스케일링(Auto Scaling)**을 지원하여 일정 범위 내에서 자동으로 확장됩니다.
4.2 온디맨드 모드 (On-Demand Mode)
- 워크로드 변화에 따라 자동 확장됩니다.
- 트래픽 예측이 어려운 경우 적합하며, 사용한 만큼 비용이 청구됩니다.
- 미리 용량을 설정할 필요가 없음 → 초기 설정이 간편함.
모드 | 특징 | 요금 청구 방식 |
---|
프로비저닝 모드 | 특정 용량을 설정, Auto Scaling 가능 | 미리 설정한 용량 기준 |
온디맨드 모드 | 자동 확장, 사전 설정 불필요 | 사용량 기준 |
5. DynamoDB 활용 사례
DynamoDB는 다음과 같은 분야에서 많이 사용됩니다.
✅ 실시간 데이터 처리 → 주문, 결제 트랜잭션 기록
✅ 세션 저장소 → 사용자의 로그인 상태 유지
✅ IoT 데이터 수집 → 센서에서 수집된 데이터를 빠르게 저장
✅ 게임 리더보드 → 사용자 점수 및 순위 관리
✅ 이벤트 기반 시스템 → EventBridge 및 Lambda와 연계
6. 결론
DynamoDB는 높은 확장성, 자동 복제, 트랜잭션 지원, 다양한 용량 모드 제공 등의 강력한 기능을 갖춘 NoSQL 데이터베이스입니다.
워크로드에 따라 프로비저닝 모드와 온디맨드 모드를 선택할 수 있으며, EventBridge, Lambda 등의 AWS 서비스와 통합하여 이벤트 기반 애플리케이션을 구축할 수 있습니다.
DynamoDB는 스키마리스 구조, 오토스케일링, 다중 AZ 복제 등의 특성을 활용하여 서버리스 환경에서 강력한 데이터베이스 솔루션으로 자리 잡고 있습니다.