개요

aws서비스를 배울 때 제일 먼저 봐야하고 중요한건 limit인 것 같다. 특히 ddb의 경우 전부 파악하고 있지 않으면 정말 피눈물을 흘릴 수도 있으니 꼭 알아두고 실수하지 않도록 하자.

Item Size Limit

한 아이템의 사이즈가 400KB를 넘을 수 없다.

내가 구축했던 db의 경우 400KB를 넘는 경우가 심심찮게 있어 이런 경우 아이템 data는 s3에 저장하고 아이템 value에는 s3 주소를 넣어두었다. 그 후 R/W할 땐 ddb에 연결되어있는 api에서 해당 부분을 처리해서 사용할 수 있도록 하였다.

unit test 구축 시 아이템 사이즈를 넘기는 경우에 대한 시나리오 테스트를 추가하는 것을 추천한다.

Page size limit for Query & Scan

한번에 읽어올 수 있는 양은 1MB제한이 있다.

따라서 ddb에 대한 api를 만들 때 해당 부분을 고려하여 꼭 LastEvaluatedKey를 사용해 limit설정을 해주어야 한다.

Partition throughput limits

dynamodb는 데이터가 여러개의 파티션으로 저장된다. 그래서 데이터 양이 늘어도 일관된 속도를 유지할 수 있으나 읽기 용량 단위(RCU)와 쓰기 용량 단위(WCU)에 제한이 있다. 단일 파티션당 3000RCU, 1000WCU로 한 파티션에 작업이 몰리지 않도록 주의해야한다. 특히 기존 사용하던 db에서 이전하는 경우 데이터 사용에 대한 request 조사를 확실히 하여 데이터를 모델링하고 사용하여야 한다. 이렇게 한 파티션에 사용이 몰리는 경우 이 파티션을 hot partitioin이라고 한다. 핫 파티션을 해결하려면 데이터 모델링을 잘 하거나 DAX를 사용하는 등의 방법이 있다.