-
[DynamoDB (1)] DynamoDB란? DynamoDB 사용 조건, DynamoDB 핵심 개념 설명AWS 2023. 2. 16. 18:05
1. 정의
1.1. DynamoDB란?
- DynamoDB는 무한대에 가까운 items 속에서 하나 혹은 몇개의 items을 primary key로 빠르게 찾는 것을 잘하는 AWS NoSQL 서비스
- 서버 구성, 확인, 용량 기획 등이 필요 없다. (Fully Managed Serverless)
- 규모에 따른 스케일링 기능을 제공한다.
- 모든 규모에서 10ms 미만 성능을 제공한다.
- 읽기, 쓰기 용량이 증가함에 따라, 성능도 같이 증가한다.
- PutItem, GetItem은 항상 10ms 이내로 응답 되고, Query는 20~30ms내에 리턴된다.
- 초당 수천, 수백만개 요청 가변적으로 처리할 수 있다.
- 전역 테이블 사용하여 전역 복제 자동화 제공 (글로벌 레플리케이션 생성/삭제 간편)
1.2. DynamoDB 사용에 필요 조건
- 대량의 Range 쿼리, 집계 쿼리, FULLTEXT 검색 같은 일은 부적절하다.
- 애플리케이션의 종류가 OLTP(다수 트랜잭션 처리) 라면 적절하다.
- OLAP와 같은 분석, 통계가 필요하다면 부적절하다.
- DynamoDB는 NoSQL 서비스로 관계 디비와 달리 모든 데이터 엑세스 패턴을 예상하고, 결과 값을 알고 있어야한다.
OLTP? OLAP? : 참고 → https://too612.tistory.com/511
1.3. 사용할때 생각해야할 핵심
- 애플리케이션의 Use Case 확인하고 적용할 것. (1.2 사용에 필요 조건 참고)
- 데이터의 life cycle 관리 설정
- TTL 설정 기능 지원
- dynamoDB에서 제공하는 데이터를 자동으로 삭제해주는 기능이다.
- TTL 통한 삭제는 비용이 무료. (삭제할때 쓰기 비용이 무려 무료)
- 백그라운드에서 실행되어서 읽기 / 쓰기가 쓰루풋에 영향을 주지 않는다.
- 단,삭제하도록 설정한 시간에서 최대 48시간 소요되어 삭제 될 수 있다.
- BackUp/Archival 설정
- 특정 시점으로 복구 지원한다. (최대 30일)
- 용량 관계 없이 온디멘드로 데이터에 대한 백업 Scheduler 기능을 지원한다.
- TTL 설정 기능 지원
- 데이터 모델링하기
- Entity별로 테이블을 만들지 말고 하나의 큰 테이블만을 사용한다.(Single Table)
- 관계형 디자인 패턴을 피한다.
- 운영, 관리 편하려고 사용하는데, 테이블이 관계를 가지면 관리가 어렵다.
- 동시에 여러 파티션 조회, 사용량 알림 등이 올 확률이 올라감
- 데이터 Access Pattern 식별
- 읽기 / 쓰기 워크로드를 이해해야 테이블 모델링을 잘하고, 서비스를 최대로 활용할 수 있다.
- Primary Key 디자인
- 키 디자인이 필요하다. RDB와 다르게 공식이 없다. 10명이 디자인하면 10개의 다른 결과 나온다. 모든 직원이 함께 Review → Repeat → Review 반복 필요
- 가격 정책 설정하기
- DynamoDB 가격 정책은 2가지
- 1) 프로비저닝 모드
-
- DynamoDB는 다른 DB와 다르게 Read capacity, Write capacity를 기준으로 비용이 책정된다. 여기서 말하는 capacity는 초당 얼마나 많은 read/write를 할 수 있는가에 대한 것이고, 다른 말로 하면 초당 얼마나 많은 데이터를 read/write를 허용할지 미리 정해둔 값만큼 지불하게 된다. (미리 정해놓고 쓰는 것이 가격상 이점이 있다.)
- 내가 설정한 capacity를 넘어서면 AWS에서 알림을 받아서 더 키우기도 하고, 마케팅 캠페인이 시작되기 전 capacity를 미리 올려두고 하는 방식으로 고객 패턴에 따른 가격 설정을 할 수 있다.
-
- 2) 온디맨드 모드
- 필요한 만큼 자동으로 스케일링 제공 → 유연한 대응 가능하지만 프로비저닝 보다 비용적으로 비싸다. 트래픽을 예측하기 힘든 경우에 사용한다.
1.4. 그 외 부가적인 기능
- 엔터프라이즈 기능 제공
- DynamoDB Accelerator (DAX)를 이용하면 읽기 캐시를 추가해 성능을 더 개선할 수 있다.
- ACID 트랜잭션
- 저장 중 암호화
- S3로 데이터 축출 (클릭 몇번으로 가능)
- CloudTrail (로깅 기능 2021년부터 제공)
- 글로벌 복제 가능
- 국가 정책상, 데이터 복제 금지 규정이 많아서 개인정보가 있는 데이터와 없는 데이터의 분리가 중요
- NoSQL workbench (다운 받으면 모델링 시각적으로 해볼 수 있음)
###########
2. DynamoDB 목적
- 소프트웨어는 그 고유의 목적을 가지고 있다.
- RDBMS로 비즈니스가 잘 돌아가는데 DynamoDB는 왜 등장 했을까?
2.1. 비즈니스적 이유에 따른 등장 이유
2.2. 기술적 발전에 의한 NoSQL 등장
[RDBMS vs NoSQL]
- RDBMS가 등장한 1970-80년대에는 컴퓨터의 3대 요소 CPU, Memory, Disk중에 CPU보다 DISK가 비쌌다. 따라서 정규화로 DISK 사용을 최소화하고 런타임에서 CPU 리소스를 많이 쓰도록 했다.
- DISK 사용 최소화 위한, 데이터 모델 정규화 노력
- 조인으로 ad-hoc 쿼리 가능
- 대부분의 오픈소스 RDBMS는 대부분 아래와 같이 클러스터 구성
- 1개의 쓰기 노드 / 여러개의 복제본의 읽기 노드
- 트래픽이 증가하면 스케일업 → 샤딩 할지, 파티셔닝 할지 → 시간, 라이선스 비용 지불, 전문인력 필요
- 1개의 쓰기 노드 / 여러개의 복제본의 읽기 노드
- DISK 사용 최소화 위한, 데이터 모델 정규화 노력
- NoSQL은 2000년 중반 DISK 가격이 1GB당 1$ 아래로 떨어지면서 디스크를 많이 사용하고 런타임에서 CPU 사용을 줄이는 방식으로 탄생. NoSQL은 처음부터 스케일 아웃을 생각하고 등장
- DymanoDB
샤딩 할지, 파티셔닝 할지 → 시간, 라이선스 비용 지불, 전문인력 필요-> Fully Manged Serverless로 제공
"기술 발전으로 등장한 Key-Value NoSQL DynamoDB"
Reference
- AWS Korea 영상 세미나
- DynamoDB 기초 : https://www.youtube.com/watch?v=t_8NmwAy4D0
- DynamoDB 디자인패턴, Key 디자인 : https://www.youtube.com/watch?v=I7zcRxHbo98
- 기초 사용법
- DynamoDB 입문 Deep Dive : https://aerocode.net/298
- DynamoDB 언제 써야할까
반응형'AWS' 카테고리의 다른 글
EC2에 JAVA 17, Jenkins 설치하기 (0) 2023.05.01 [DynamoDB (2)] DynamoDB 사용하기전 핵심 개념 (2) 2023.02.16 AWS CloudFront Caching 하기 (0) 2022.07.15 CloudFront 주요 기능 정리 (0) 2022.07.15 AWS CodeCommit 사용하기, 그리고 AWS의 accessKey, secretAccessKey를 안전하게 관리하기 (0) 2022.03.02