'dynamodb 비용' 태그의 글 목록
www.recopick.com

'dynamodb 비용'에 해당되는 글 1건

  1. 2014.10.26 Read/Write Capacity 자동 조절을 이용한 DynamoDB 비용 줄이기

안녕하세요. RecoPick 팀의 김성민입니다.

지난번 DynamoDB의 Write Capacity를 낮춰서 DynamoDB 비용 줄이기 글에 이어서 DynamoDB 비용을 어떻게 또 절감했는지 공유해드리고자 합니다.

지난번 글에서 설명한 것처럼 DynamoDB 비용을 좌우하는 주요 요인이 Write Capacity이기 때문에, 저희 팀에서는 Write Capacity를 줄여서 DynamoDB 비용을 줄였습니다.


하지만 아무리 Write Capacity를 절반 정도로 줄였다고 하더라도, Write 연산이 전혀 없는 시간에 Write Capacity를 일정 수준을 유지해 줘야 하므로 Write 연산이 전혀 없는 시간의 DynamoDB 비용이 여전히 낭비되는 문제가 있었습니다.

마른 수건이라도 한 번 더 짜 본다는 심정으로 Read, 특히 Write 연산이 없는 경우에 DynamoDB 비용을 줄 일 방법이 없을까 고민을 하던 중에 Read/Write 연산이 없는 경우, DynamoDB의 Read/Write Capacity를 낮춰서 비용을 줄일 수 있지 않을까 하는 생각이 들었습니다.

DynamoDB의 Read/Write Capacity 변화를 감시하다가, Read/Write Capacity가 낮아지면 자동으로 Read/Write Provisioned Capacity를 낮추고, 다시 높아지면 올려주면 될 것 같았습니다.

여기서 고려해야 할 점은 DynamoDB의 제약 사항 중, 1일 최대 4회까지 Read 혹은 Write Provisioned Capacity를 낮출 수 있다는 점입니다. Read/Write Provisioned Capacity를 올리는 것은 DynamoDB 비용이 증가하므로, 회수 제한이 없지만, 낮추는 것은 1일 4회로 제한되어 있기 때문에, Read/Write Capacity 변화가 빈번한 경우 자동으로 Read/Write Provisioned Capacity를 조정하기 어렵다는 생각이 들었습니다.

이러한 고민을 하던 중에 Dynamic DynamoDB라는 오픈 소스를 발견했습니다.
Dynamic DynamoDB는 앞서 설명한 것처럼, DynamoDB의 Read/Write Capacity 변화에 따라 Read/Write Capacity를 자동으로 조절해주는 도구입니다.

특히, Read/Write Capacity 증가 시점 및 비율 등을 설정으로 조절할 수 있기 때문에, 1일 4회로 제한된 Read/Write Capacity를 낮출 수 있는 DynamoDB의 제약 조건 내에서도 Provisioned Read/Write Capacity를 자동으로 변경할 수 있었습니다.

아래 그래프는 Dynamic DynamoDB 적용 후, DynamoDB의 Write Capacity 변화 그래프입니다.





Dynamic DynamoDB 설치 및 운영 방법은 Dynamic DynamoDB 문서를 참고 하시면 되기 때문에 자세한 설명은 하지 않겠습니다.


대신 몇 가지 주의하실 점을 설명해 드리자면,


(1) Read/Write 연산이 전혀 없으면서도 Read/Write Capacity를 줄이고자 한다면, allow-scaling-down-Reade-on-0-percentallow-scaling-down-writes-on-0-percent를 true로 설정해야 합니다.


(2) Dynamic DynamoDB는 기본적으로 CloudWatch의 5분 동안의 모니터링 결과를 사용해서 Read/Write Capacity를 조절하는데, CloudWatch 결과의 최신성을 조절하려면, lookback-window-start를 조정하시면 됩니다.

lookback-window-start 값을 5로 하면, now() - 5(분) 에서 now() (분)까지의 Cloud Watch 모니터링 결과를 사용하게 됩니다.

하지만 5분 미만의 Cloud Watch 모니터링 결과를 사용할 수 없으므로, 너무 작게 설정하면, Read/Write Capacity가 자동 조절되지 않습니다.


(3) 1일 4회까지 Read/Write Capacity를 낮출 수 있다는 Dynamo DB 제약 사항을 지키려면,

increase-{reads, writes}-with는 작게 decrease-{reads, writes}-with는 크게 하는 편이 좋습니다.

즉, Batch 작업의 경우, Read/Write가 천천히 증가하다가 작업 종료 시점에 급격하게 줄어들기 때문에, 증가 비율보다 감소 비율을 크게 해서 작업 종료 시점에 Read/Write Capacity를 크게 낮춰서 1일 Read/Write Capacity 감소 횟수를 줄이는 것이 좋습니다.


[참고 자료]







Posted by recopick

댓글을 달아 주세요