DynamoDB Accelerator [DAX] - The Ultimate Guide
Written by Nishani Dissanayake
Published on May 11th, 2022
Time to 10x your DynamoDB productivity with Dynobase [learn more]
Performance is an essential factor in determining the overall quality of every application we develop. As its name suggests, DynamoDB Accelerator, more commonly known as DAX, is a performance booster that improves an application's response time from milliseconds to microseconds. So, it makes this a fantastic feature you must learn how to use when working with DynamoDB.
What is DynamoDB Accelerator (DAX)?
DynamoDB Accelerator is an in-memory cache for Amazon DynamoDB. It is fully managed and is highly available. When used, DynamoDB Accelerator can give up to 10 times performance improvement even at million requests per second. So, it is ideal for high-performance read applications to reap maximum benefits.
DynamoDB Accelerator is also compatible with existing DynamoDB API calls allowing the user to focus more on the application itself rather than modifying the application logic. In addition, the developers do not have to perform cluster management, manage cache invalidation, or data population as DAX performs all the hard work to add in-memory acceleration.
Each DAX cluster can contain 1 to 10 nodes. The user can add nodes to increase the throughput based on the requirement. DynamoDB Accelerator is one of the best cost-effective solutions for maximizing the performance in DynamoDB.
When to Use DynamoDB Accelerator (DAX)?
- When building applications that require the fastest possible response time for reads like trading applications and social gaming.
- When an application requires repeated reads over a large set of data, the DynamoDB database reads capacity may exceed, and other applications accessing the same data set may face adverse effects. Example: Performing a lengthy analysis of sales data.
- When the application requires a lot of reads, the cost is high with the requirement of many read capacity units. It may cost a lot when increasing the provisioned read throughput of the application. But we can instead offload the activity into a DynamoDB Accelerator cluster.
- DAX is ideal for applications like e-commerce websites where the requirement of frequent reads for only a few items may arise. This requirement can happen when a particular item is on sale or when there is a set of top-rated items.
When Not to Use DynamoDB Accelerator (DAX)?
- When the application does not perform many reads but is write-intensive.
- If the application already has a different caching solution with client-side logic of its own for working.
- When there is no need for the response for reads in microsecond speed.
- When there is a requirement for strongly consistent reads.
How to Use DynamoDB Accelerator (DAX)?
1. Navigate to the DynamoDB console and create a new DAX cluster.
After giving a name and a description, we have to pick the node type and the node family. Next, we must create a subnet group required to place the cluster nodes.
After setting up the subnet group, we can create or choose an IAM role and a policy to permit access to the DynamoDB tables for DAX.
After reviewing the setup, we can proceed to create the cluster, and the cluster will then be ready within several minutes.
2. Update the application to use DAX SDK -> configure the application to use the cluster's endpoint.
After that, once the application is running, the Metrics tab in the console shows how the cache is performing. The metrics tab contains much information, including the cache misses, cache hits, and error counts.
3. Create alarms based on the metrics.
We can create CloudWatch alarms for the metrics to monitor any unusual fluctuations.
- After the first two steps, DynamoDB Accelerator handles the processes independently, and it does not require the user to make any functional application code changes. The alarms, metrics, and dashboard make cluster monitoring easy and fast.
DynamoDB Accelerator (DAX) Performance
The usual response time of DynamoDB is in milliseconds. However, when using DynamoDB Accelerator, we can achieve a performance boost up to 10 times, reducing the response time to microseconds. DynamoDB + DAX is the perfect combination for achieving such a performance enhancement even at millions of requests per second with read-heavy workloads.
DynamoDB Accelerator allows the applications to run fast and smoothly even when a highly trending post or a famous news story sends an unexpectedly high amount of requests. The best part is there is no tuning required to achieve this. And there is no need to rewrite the application to access the cache when using DAX.
DynamoDB Accelerator (DAX) Pricing
DynamoDB Accelerator pricing determines per every node-hour consumed by the user. DynamoDB measures this from the time a node launches until the user terminates it, and it considers all the partial hours as total hours in the calculations. And you have to pay for each node in the cluster based on the number of hours the node is active.
The pricing starts at $0.269 per hour for each node in the regions of US East (N. Virginia) and US West (Oregon).
DynamoDB Accelerator (DAX) Best Practices
- Try to have at least three nodes in different availability zones in your DAX cluster: Having multiple nodes across separate regions ensures high data availability.
- Ensure DAX is securely encrypted at rest: Encryption at rest provides an additional layer of security over the data.
- Periodically revisit and maintain the DAX cluster scaling decisions: We have to estimate traffic and perform load testing and production monitoring as the workload can change over time, making the initial scaling inadequate or incorrect.
DynamoDB DAX vs Redis
Redis is also a NoSQL database known for delivering sub-millisecond requests per second. DynamoDB Accelerator (DAX) is an in-memory cache for NoSQL DynamoDB databases that improve the single-digit millisecond performance of DynamoDB to microseconds even with heavy workloads.
In terms of advantages of Redis, it is open-source licensed, it can act automatically as cache, and is highly scalable with automatic sharding. On the other hand, AWS fully manages DAX, can scale horizontally or vertically, and is highly secure.
Redis does not have built-in encryption and can be expensive when scaling due to memory limits. But it is also a good choice and has a massive community of users worldwide. If the project environment mainly focuses on AWS and NoSQL, then DAX would be an ideal solution with DynamoDB and its high-performance reads.
DynamoDB DAX vs ElastiCache
Even though both DynamoDB DAX and ElastiCache are fully-managed products of Amazon. There are several differences between these two cache types regarding how and when they are applicable.
DAX is suitable for heavy workloads, especially where there are intensive reads. It is the in-memory cache ideal to use with DynamoDB. However, ElastiCache supports both Redis and Memcached. And when compared to DynamoDB DAX, there is more heavy work to do, including managing invalidations in ElastiCache.
Which regions are DynamoDB Accelerator (DAX) available?
DAX is available in US East (N. Virginia), US East (Ohio), EU (Ireland), Asia Pacific (Singapore), Asia Pacific (Tokyo), US West (Oregon), US West (N. California), South America (São Paulo), Asia Pacific (Sydney), and Asia Pacific (Mumbai) regions.
Is it possible to use DynamoDB Accelerator (DAX) sometimes?
No matter how fast and effective DynamoDB Accelerator (DAX) is, there are certain instances where we can't use it. For example, we cannot use it for any operation regarding managing tables. And it's best not to use DAX when an application already has another caching solution with client-side logic.
And also, there is no support for the EC2-Classic platform. (DAX only supports EC2-VPC)
What are the issues with using DynamoDB Accelerator (DAX)?
- DAX only works with DynamoDB, making the use of DynamoDB for the application compulsory.
- The writes made to DAX are a little slow compared to writing directly to DynamoDB.
- Not as suitable for write-intensive applications.
Does DynamoDB Accelerator (DAX) require VPC?
Yes. The users cannot directly connect to the DAX clusters through the internet because of security reasons. To launch a DAX cluster, the user has to use a Virtual Private Cloud (VPC), and then they can control the access to the cluster by using Amazon VPC security groups.