AWS

AWS DynamoDB란?

Somaz 2024. 11. 27. 11:36
728x90
반응형

Overview

Amazon DynamoDB는 AWS가 제공하는 완전관리형 서버리스 NoSQL 데이터베이스로,

대규모 애플리케이션에서 실시간 성능과 높은 확장성을 요구할 때 이상적인 선택이다.


테이블 기반의 비정형 데이터 저장 구조와 자동 확장 기능, 그리고 AWS 서비스와의 밀접한 통합을 통해 빠르고 안정적인 데이터 처리를 가능하게 한다.

 

특히 게임, IoT, 모바일 백엔드, 전자상거래 등 다양한 실시간 기반 워크로드에서 활발히 사용되고 있으며, DynamoDB Streams와 Lambda를 활용하면 이벤트 기반 아키텍처도 손쉽게 구축할 수 있다.

 

 

이 글에서는 DynamoDB의 핵심 개념, 기능, 사용 사례, 다른 데이터베이스와의 비교 등을 통해 전반적인 이해를 돕고자 한다.

 

 

 

출처 : https://rockset.com/blog/live-dashboards-dynamodb-streams-lambda-elasticache/

 

 

 

 

📅 관련 글

2022.02.13 - [AWS] - AWS IAM (Identity and Access Management) 개요 및 설정 방법

2022.02.07 - [AWS] - AWS EC2 인스턴스 생성

2022.02.13 - [AWS] - AWS S3 (Simple Storage Service) 개요 및 활용 방법

2023.03.30 - [AWS] - AWS Secrets Manager란?(OAuth, SSO)

2023.03.29 - [AWS] - AWS CLI 정리

2023.03.28 - [AWS] - AWS IAM이란?

2023.03.28 - [AWS] - AWS S3 권한이란?

2023.03.28 - [AWS] - AWS S3란?(개념, 속성)

2023.03.30 - [AWS] - AWS Cloudfront란? / Canary 및 Blue-Green 배포

2023.04.03 - [AWS] - AWS VPC란?

2023.05.26 - [AWS] - AWS IRSA(IAM Roles for Service Accounts)란?

2024.11.07 - [AWS] - AWS Ingress Annotations 정리

2024.11.04 - [AWS] - AWS Assume Role이란?

2024.11.16 - [AWS] - AWS Network ACL vs Security Group

2024.11.21 - [AWS] - ALB access Log 활성화 → S3 권한 설정 및 로그 저장

2024.11.24 - [AWS] - EKS Pod Identity Addon

2024.11.27 - [AWS] - AWS DynamoDB란?

2025.01.03 - [AWS] - AWS DynamoDB Local 설치

 

 

 

 

 

 


 

 

 

 

 

AWS DynamoDB란?

 

Amazon DynamoDB는 AWS에서 제공하는 완전 관리형 NoSQL 데이터베이스 서비스이다. 최신 애플리케이션에 고성능, 확장성 및 안정성을 제공하도록 설계되었다. DynamoDB는 서버리스이므로 인프라를 관리할 필요가 없으며 모든 규모의 워크로드를 처리할 수 있도록 자동으로 확장한다.

 

 

 

 

 


 

 

 

 

 

 

DynamoDB의 주요 기능

  • 확장성 및 성능
    • 자동 조정: DynamoDB는 애플리케이션 요구 사항에 따라 읽기/쓰기 용량을 자동으로 조정
    • 낮은 대기 시간: 한 자릿수 밀리초의 응답 시간을 제공하므로 실시간 애플리케이션에 적합

 

  • 유연한 데이터 모델
    • NoSQL: DynamoDB는 비관계형 데이터베이스입니다. 즉, 엄격한 스키마를 적용하지 않는다. 대신 데이터는 키-값 쌍 또는 문서로 테이블에 저장된다.
    • 기본 키: 테이블은 다음 중 하나의 기본 키로 정의
      • 파티션 키(해시 키): 항목을 고유하게 식별하는 데 사용되는 단일 속성
      • 파티션 및 정렬 키(복합 키): 보다 세분화된 액세스 패턴을 위한 두 가지 속성의 조합

 

  • 서버리스
    • 서버를 프로비저닝, 관리 또는 확장할 필요가 없습니다. AWS는 모든 기본 인프라를 처리한다.

 

  • 저장 내구성
    • 데이터는 한 지역의 여러 가용 영역에 자동으로 복제되어 높은 내구성과 가용성을 보장한다.

 

  • 고가용성
    • 내장된 내결함성 및 분산 아키텍처를 통해 DynamoDB는 높은 가용성을 유지할 수 있다.

 

  • 보안
    • 암호화: 저장 데이터와 전송 중인 데이터는 AWS Key Management Service(KMS)를 사용하여 암호화된다.
    • 액세스 제어: 세분화된 액세스 제어를 위해 AWS Identity and Access Management(IAM)와 통합되었다.

 

 

 

 

 


 

 

 

 

 

 

DynamoDB의 핵심 개념

  • Tables
    • 테이블은 데이터의 모음
    • 각 테이블은 기본 키를 정의

 

  • Items
    • 테이블의 각 행을 Items 이라고 한다.
    • Items은 속성으로 구성된다.

 

  • Attributes
    • Attributes는 Items 내의 개별 필드이다.
    • Attributes는 문자열, 숫자, 목록, 지도 등과 같은 다양한 데이터 유형을 저장할 수 있다.

 

  • Indexes
    • 인덱스를 사용하면 보다 유연한 쿼리가 가능
    • GSI(Global Secondary Index): 기본 키가 아닌 속성에 대한 쿼리를 허용
    • LSI(로컬 보조 인덱스): 대체 정렬 키를 사용하여 동일한 파티션 키 내에서 쿼리를 지원

 

  • Provisioned vs. On-Demand Capacity
    • Provisioned 모드: 읽기/쓰기 용량을 미리 지정
    • On-Demand 모드: 워크로드에 맞게 자동으로 확장되며 사용한 만큼만 비용을 지불하면 된다.

 

  • Streams
    • DynamoDB 스트림은 항목에 대한 변경 사항(삽입, 업데이트, 삭제)을 캡처하고 실시간 처리를 위해 AWS Lambda를 트리거할 수 있다.

 

 

 

 

 


 

 

 

 

 

 

DynamoDB 사용 사례

  • 웹 및 모바일 애플리케이션
    • 사용자 프로필, 세션 관리 및 활동 피드에 DynamoDB를 사용

 

  • 게임
    • 게임 상태, 사용자 진행 상황, 순위표를 저장

 

  • IoT 애플리케이션
    • IoT 장치의 데이터 스트림을 관리

 

  • 전자상거래
    • 제품 카탈로그, 주문 내역 및 재고 관리를 저장

 

  • 이벤트 기반 애플리케이션
    • DynamoDB 스트림을 AWS Lambda와 결합하여 실시간 애플리케이션을 구축

 

 

 

 

 


 

 

 

 

 

 

DynamoDB의 장점

  • 서버리스 : 말 그대로 서버리스이다. 인프라에 대한 관리가 필요없다.
  • 확장성: 초당 몇 건의 요청부터 수백만 건까지 트래픽을 처리
  • AWS 서비스와의 통합: Lambda, API Gateway 등과 원활하게 작동
  • 유연한 가격: 온디맨드 모드로 사용한 만큼만 지불하거나 프로비저닝된 용량과 예약된 용량으로 비용을 절감

 

DynamoDB의 제한 사항

  • 제한된 쿼리 기능: 기본 키 또는 보조 인덱스를 통한 쿼리만 지원합니다. 복잡한 조인이나 집계에는 적합하지 않다.
  • 비용: 지속적으로 트래픽이 많은 애플리케이션의 경우 주문형 모드는 비용이 많이 들 수 있다.
  • 내장 조인 없음: NoSQL 데이터베이스로서 조인 및 다중 행 트랜잭션과 같은 관계형 데이터베이스 기능이 부족(though DynamoDB supports single-partition transactions)

 

 

 

 

 


 

 

 

 

 

 

DynamoDB vs. Other Databases

Feature DynamoDB RDS MongoDB (on AWS)
Type NoSQL Relational NoSQL
Schema Flexible Fixed Schema Flexible
Scaling Automatic Manual Manual/Automatic
Performance Low-latency Query Optimization Low-latency
Use Cases Real-Time Apps Relational Use Cases Document Storage

 

 

 

 

 


 

 

 

 

 

마무리

DynamoDB는 “완전관리형 + 확장성 + 저지연”이라는 3가지 요소를 모두 만족시키는 고성능 NoSQL 서비스다.


복잡한 인프라 관리나 DB 튜닝 없이도 높은 트래픽과 빠른 응답이 필요한 서비스를 안정적으로 운영할 수 있다는 점에서, 현대의 클라우드 네이티브 애플리케이션에 매우 적합하다.

하지만 제한적인 쿼리 기능, 고비용 구조(특히 온디맨드), 관계형 기능의 부족 등은 미리 고려해야 할 부분이다.


따라서 DynamoDB는 단순한 키 기반 조회가 주가 되는 경우에 가장 효율적이며, 복잡한 조인이나 분석 쿼리가 필요한 경우에는 RDS나 Redshift 등과의 하이브리드 구성을 고려해볼 수 있다.

 

여러 AWS 서비스들과 자연스럽게 통합되는 DynamoDB는 클라우드 기반 마이크로서비스, IoT, 실시간 대시보드 같은 환경에서 확실한 가치를 발휘할 수 있다.

 


DynamoDB를 이해하고 잘 활용하면, 서버리스 아키텍처의 핵심 기반을 단단히 마련할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 


Reference

https://rockset.com/blog/live-dashboards-dynamodb-streams-lambda-elasticache/

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html

728x90
반응형

'AWS' 카테고리의 다른 글

AWS DynamoDB Local 설치  (2) 2025.01.03
EKS Pod Identity Addon  (0) 2024.11.24
ALB access Log 활성화 → S3 권한 설정 및 로그 저장  (0) 2024.11.21
AWS Network ACL vs Security Group  (0) 2024.11.16
AWS Ingress Annotations 정리  (0) 2024.11.07