
들어가며
이번에는 DynamoDB를 사용할 때 반드시 이해해야 하는 WCU(Write Capacity Unit) 와 RCU(Read Capacity Unit) 에 대해 알아보겠습니다.
DynamoDB는 RDS처럼 CPU나 메모리 성능으로 처리량을 관리하지 않습니다. 대신 읽기와 쓰기에 필요한 처리 용량을 WCU와 RCU라는 단위로 관리합니다. 따라서 데이터 크기와 요청 수에 따라 필요한 용량을 계산할 수 있어야 하며, 이는 AWS DEA 시험에서도 자주 출제되는 내용입니다.
1. WCU와 RCU란?
- WCU (Write Capacity Unit) : 데이터를 저장하거나 수정할 때 사용하는 처리 용량
- RCU (Read Capacity Unit) : 데이터를 조회할 때 사용하는 처리 용량
즉,
- 데이터를 많이 저장하면 WCU를 많이 사용하고,
- 데이터를 많이 조회하면 RCU를 많이 사용합니다.
2. WCU 계산 방법
WCU는 1KB 데이터를 1초에 1번 저장할 수 있는 용량을 의미합니다.
필요한 WCU = 올림[(아이템 크기 (KB) / 1)] × 초당 요청 수 × 아이템 수
2-1) 예제 1
예를 들어 사용자 활동 로그를 DynamoDB에 저장한다고 가정해보겠습니다.
하나의 Item 크기가 2.3KB이고, 초당 300건의 Write 요청이 발생한다면 WCU는 다음과 같이 계산됩니다.
DynamoDB의 WCU는 1KB 단위로 계산되기 때문에 2.3KB는 3KB로 올림 처리됩니다.
따라서 하나의 Write 요청에는 3 WCU가 필요합니다.
초당 300건의 Write 요청이 발생하므로 필요한 WCU는 3 × 300 = 900 WCU입니다.
WCU = (2.3KB/1KB) * 300 => 3KB(올림 적용) * 300 = 900
여기서 중요한 점은 1KB를 초과하면 올림하여 계산한다는 것입니다.
| 데이터 크기 | 필요한 WCU |
| 500B | 1 KB |
| 1KB | 1 KB |
| 1.5KB | 2 KB |
| 2KB | 2 KB |
| 2.3KB | 3 KB |
3. RCU 계산 방법
RCU는 4KB 데이터를 읽기 위한 처리 용량입니다.
3-1) Strongly Consistent Read
RCU = (Item 크기 /4KB) × 초당 Read 요청 수
Strongly Consistent Read는 항상 가장 최신 데이터를 반환하는 읽기 방식입니다.
데이터를 저장한 직후 조회하더라도 방금 저장한 최신 데이터를 즉시 확인할 수 있습니다. 따라서 금융 거래, 결제, 재고 관리처럼 데이터의 정확성이 중요한 서비스에서 주로 사용됩니다.
다만 최신 데이터를 보장하는 만큼 Eventually Consistent Read보다 더 많은 RCU를 사용합니다.
Strongly Consistent Read의 기준은 다음과 같습니다.
- 4KB 이하 데이터 조회
- 초당 1회 읽기
- 1 RCU 사용
계산 예제
예를 들어 4KB 크기의 주문 정보를 초당 500번 조회한다고 가정해보겠습니다.
4KB 데이터는 조회 1회당 1RCU를 사용하므로, 500회의 조회에는 500RCU가 필요합니다.
RCU =(4KB/4KB) * 500
데이터 크기가 8KB라면 4KB 단위로 계산하기 때문에 조회 1회당 2RCU가 필요합니다.
이 데이터를 초당 300번 조회한다면 필요한 RCU는 2 × 300 = 600RCU입니다.
RCU =(8KB/4KB) * 300
3-2)Eventually Consistent Read
RCU = ( Item 크기 ÷ 4KB) × (초당 Read 요청 수 ÷ 2)
Eventually Consistent Read는 최신 데이터가 즉시 반영되지 않을 수 있지만, 동일한 RCU로 Strongly Consistent Read보다 두 배 많은 읽기 요청을 처리할 수 있습니다.
상품 목록, 게시글, 뉴스, 로그 조회처럼 약간의 지연이 서비스에 큰 영향을 주지 않는 경우 많이 사용됩니다.
Eventually Consistent Read의 가장 큰 특징은 Strongly Consistent Read보다 RCU를 절반만 사용한다는 점입니다.
기준은 다음과 같습니다.
- 4KB 이하 데이터 조회
- 초당 2회 읽기
- 1RCU 사용
계산 예제
4KB 크기의 게시글 데이터를 초당 500번 조회한다고 가정해보겠습니다.
Strongly Consistent Read라면 500RCU가 필요하지만, Eventually Consistent Read는 같은 1RCU로 2번의 조회가 가능하므로 필요한 RCU는 250RCU입니다.
Strongly Consistent Read RCU = (4KB ÷ 4KB) × (500) = 500RCU
Eventually Consistent Read RCU = (4KB ÷ 4KB) × (500 ÷ 2) = 250RCU
또 다른 예로 8KB 크기의 데이터를 초당 300번 조회한다면 Strongly Consistent Read는 600RCU가 필요하지만, Eventually Consistent Read는 절반인 300RCU만 필요합니다.
Strongly Consistent Read RCU = (8KB ÷ 4KB) × (300) = 600RCU
Eventually Consistent Read RCU = (8KB ÷ 4KB) × (500 ÷ 2) = 300RCU
즉, 최신 데이터가 반드시 필요하지 않은 서비스라면 Eventually Consistent Read를 사용하여 동일한 처리량을 더 적은 비용으로 처리할 수 있습니다.
4. WCU와 RCU 계산 시 알아둘 점
- WCU는 1KB 단위로 올림 계산
- RCU는 4KB 단위로 계산
- Eventually Read는 Strong Read보다 RCU를 절반 사용
- 데이터 크기가 커질수록 필요한 Capacity도 증가
- 처리량을 초과하면 Throttling이 발생할 수 있음
마치며
이번 글를 정리하며 DynamoDB는 단순히 데이터를 저장하는 서비스가 아니라, 읽기와 쓰기 처리량을 WCU와 RCU라는 단위로 관리한다는 점을 이해할 수 있었습니다.특히 데이터 크기에 따라 필요한 Capacity가 달라지고, Strongly Consistent Read와 Eventually Consistent Read에 따라 RCU 사용량이 달라진다는 점을 배울 수 있었습니다. 이러한 개념은 비용과 성능을 함께 고려해야 하는 DynamoDB의 특징을 이해하는 데 중요한 부분이라고 생각합니다.
'Data Engineering > AWS' 카테고리의 다른 글
| DynamoDB Index 이해하기 | LSI, GSI 그리고 Index와 Throttling (1) | 2026.06.29 |
|---|---|
| DynamoDB 트래픽 관리 | Throttling, On-Demand, Provisioned, Auto Scaling 이해하기 (0) | 2026.06.29 |
| DynamoDB란? (0) | 2026.06.28 |
| AWS EFS란? (0) | 2026.06.26 |
| AWS EBS란? (0) | 2026.06.26 |