DAX Cost Optimization

0

Customer who is using DAX for several months is asking for guidance on Cost optimization. I’m still waiting for more details but the basic setup is 3 Instances across three AZs. In their words:

We utilize the DAX cluster with 90% CPU utilization in two time windows during the day

(1) window of about 6 hours

(2) window of about 2 hours.

The window lengths are not precise but approximations to enable our discussion. So, we utilize 90% of the DAX cluster only for approximately 8 hours during a day. For the remaining 16 hours, our CPU utilization is down to about 2%.

We have to pay for the full cluster for the entire 24 hours every day because the cluster is always running whether we utilize 90% of it or 2% of it. This is a problem because for about 16 hours every day, we are paying for a 98% un-utilized cluster. Is it possible to optimize the cost in a way so that we don't pay when we do not utilize the cluster. We would be happy to get some guidance from you for cost optimization.

I'm currently investigating Horizontal scaling. It can be possible to have multiple smaller instances for example 6 or 9 during peak times and scale down to 3 in low utilization periods. This depends from the size of the dataset and how well DAX can handle these scaling requests.

What worries me a bit is that I didn’t find anything written about this approach. If anyone has done this (with or without success) or can point me to another approach (adding DAX only during Peak times?) I would like to here about it.

Thanks

AWS
asked 4 years ago2475 views
1 Answer
0
Accepted Answer

Scaling the number of nodes could work to help optimize cost, but there is no native way to manage this so it would require custom logic/management. In general, DAX is more efficient with fewer larger nodes rather than many smaller nodes. Typically, the DAX cluster size is not driven by dataset size, but rather by throughput (object size relative to cache hits & misses) of reads and writes. Each node is a replica so the dataset is not sharded across the cluster.

It would be helpful to understand the purpose of DAX in their design. If it is for latency, what is the latency requirement for the read calls? Direct calls to a DynamoDB table have very consistent low ms latency that might be low enough to achieve their performance requirement and could be more cost effective.

ref:

DAX Scaling

DAX Sizing

answered 4 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions