◇ 공부 기록용으로 작성하였으니 틀린점, 피드백 주시면 감사하겠습니다 ◇
DynamoDB란?? →→ https://jibinary.tistory.com/277
DynamoDB Capacity Units
Capacity Units는 DynamoDB에서 읽기 및 쓰기 처리량을 측정하고 관리하는 단위이다.
Capacity Units는 DynamoDB의 Provisioned Capacity Mode에서 설정한다.
(OnDemand 모드는 자동으로 Auto Scailing되기 때문에 따로 Capacity를 설정할 필요가 없다. 즉 Capacity Units 설정 필요 없다)
DynamoDB의 성능과 비용은 주로 이 Capacity Units에 의해 결정된다.
Capacity Units | 의미 |
WCU (Write Capacity Units) | 1 초 동안 최대 1KB의 데이터를 1번 기록할 수 있는 용량 |
RCU (Read Capacity Units) | 1 초 동안 최대 4KB의 데이터를 1번 읽을 수 있는 용량 |
1 RCU... 1초 동안 4KB 크기의 항목을 한 번 읽는 데 필요한 용량
1 RCU... 1초 동안 4KB 크기의 항목을 한 번 읽는 데 필요한 용량
DynamoDB에서 읽기 요청(read operations)은 3 가지 유형이 있다:
- strongly consistent read: 항상 최신 데이터를 반환해야하기때문에, 4 KB까지의 항목에 대해 1개의 읽기 단위(RCU)가 필요하다.
- eventually consistent read: 천천히 동작하기에, 4 KB까지의 항목에 대해 0.5개의 읽기 단위(RCU)가 필요하다
- transactional read: 여러 항목을 동시에 읽고 수정할 수 있다, 4 KB까지의 항목에 대해 2개의 읽기 단위가 필요하다
10 RCU가 있을 경우에는, 10RCU x 4KB = 40
- strongly consistent read = 40/4KB = 10 strongly consistent read
- eventually consistent read = 40/2KB = 20 eventually consistent read
- transactional read = 40/8KB = 5 transactional read
주요 포인트:
- 더 많은 Capacity Units을 할당하면 더 많은 데이터를 더 빨리 처리할 수 있지만, 이에 따라 비용도 증가한다.
- RCU와 WCU는 각각 따로 설정하며 요구 사항에 따라 적절한 수준으로 설정해야 한다. (그에 따라 비용이 지불되기 때문에)
- DynamoDB의 온디맨드 모드(On-demand)에서는 Capacity Units을 설정하지 않고 DynamoDB가 자동으로 처리량을 조정하며, 사용한 만큼 요금이 부과된다.
🤨 SAA-C03 문제
Amazon EC2 인스턴스에서 실행 중인 애플리케이션이 Amazon DynamoDB에 있는 테이블에 대해 읽기 및 쓰기 작업을 수행하고 있습니다. DynamoDB의 용량 유닛(Capacity Units)은 읽기 및 쓰기 모두 50으로 설정되어 있지만, 가장 많은 요청이 발생하는 시간대에 1초에 100KB의 쓰기 작업이 발생하는 것으로 확인되었습니다. 애플리케이션 쪽에서 큰 변경을 가하지 않고, 비용을 최대한 절감하면서 이 문제를 해결하려면 어떻게 해야 할까요?
- DynamoDB 설정을 변경하여 RCU는 그대로 두고 WCU를 100으로 설정한다.
- EC2 인스턴스를 늘려 하나의 애플리케이션이 처리하는 작업량을 줄인다.
- DynamoDB의 용량이 Auto Scaling 되도록 설정한다.
- 파티션을 늘려 테이블에 대한 쓰기 작업이 분산되도록 한다.
정답
정답. 3번
DynamoDB의 용량이 자동으로 확장되도록 설정한다.
Amazon DynamoDB의 테이블에 대한 쓰기 및 읽기 처리량은 "Capacity Unit"이라는 단위로 관리된다.
이는 1초 동안 얼마나 많은 읽기 및 쓰기 작업을 예약할지를 설정하는 것으로, 용량이 클수록 비용이 더 많이 발생한다.
문제에서는 요청의 피크 시간대에 100KB/초의 쓰기 요청이 발생하고 있지만, WCU는 50으로 설정되어 있기 때문에50KB/초의 쓰기만 가능하다.
애플리케이션에 영향을 주지 않고 더 많은 요청을 처리하려면 Capacity Unit을 확장해야 한다.
하지만 항상 큰 용량 유닛을 유지하면 요청이 적은 시간대에 불필요한 비용이 발생할 수 있다.
이런 경우, Capacity Unit을 Auto Scaling 자동 스케일(확장 및 축소)하도록 설정할 수 있다.
자동 스케일을 설정함으로써 항상 높은 성능을 유지할 필요 없이, 비용을 절감하면서도 높은 요청 처리량을 유지할 수 있다.
오답
1번. DynamoDB의 설정을 변경하여 RCU는 그대로 두고 WCU를 100으로 설정한다
용량 유닛을 증가시키면 읽기 및 쓰기 작업이 발생하지 않더라도 설정된 만큼의 요금이 부과된다.
따라서 문제에서 제시된 "비용을 가능한 한 절감하고 싶다"는 요구에 부합하지 않습니다.
2번. EC2 인스턴스를 늘려 하나의 애플리케이션이 처리하는 작업량을 줄인다
쓰기 작업을 분산시키더라도 WCU 50에 대해 100KB/초의 쓰기 작업이 발생하는 것은 변하지 않는다.
4번. 파티션을 늘려 테이블에 대한 쓰기 작업이 분산되도록 한다
DynamoDB의 데이터는 AWS에 의해 파티션이라는 단위로 분할되지만, 이는 백그라운드에서 수행되기 때문에 사용자가 구체적으로 조작할 수는 없다.
'클라우드(AWS) > SAA-C03' 카테고리의 다른 글
[AWS SAA-C03] 오답 풀이 #010 (AWS Config와 CloudTrail의 차이점) (0) | 2024.08.17 |
---|---|
[AWS SAA-C03] 오답 풀이 #009 (AWS Directory Service와 Amazon FSx for Windows File Server의 활용 차이) (0) | 2024.08.17 |
[AWS] VPC의 Private IP 주소, Public IP 주소, Elastic IP 주소에 대한 정리 (0) | 2024.08.09 |
[AWS SAA-C03] 오답 풀이 #007 (S3 Presigned URL: 미리 서명된 URL) (0) | 2024.08.07 |
[AWS SAA-C03] 오답 풀이 #006 (API Gateway와 VPC Link란?) (0) | 2024.08.07 |