Amazon ElastiCache

Last updated
Amazon ElastiCache
Developer(s) Amazon.com
Initial releaseAugust 22, 2011;12 years ago (2011-08-22). [1]
Available inEnglish
Type Cloud Storage
Website aws.amazon.com/elasticache/

Amazon ElastiCache is a fully managed in-memory data store and cache service by Amazon Web Services (AWS). The service improves the performance of web applications by retrieving information from managed in-memory caches, instead of relying entirely on slower disk-based databases. ElastiCache supports two open-source in-memory caching engines: Memcached and Redis (also called "ElastiCache for Redis"). [2]

Contents

As a web service running in the computing cloud, Amazon ElastiCache is designed to simplify the setup, operation, and scaling of memcached and Redis deployments. Complex administration processes like patching software, backing up and restoring data sets and dynamically adding or removing capabilities are managed automatically. Scaling ElastiCache resources can be performed by a single API call. [3]

Amazon ElastiCache was first released on August 22, 2011, [4] supporting memcached. This was followed by support for reserved instances on April 5, 2012 [5] and Redis on September 4, 2013. [6]

Uses

As a managed database service with multiple supported engines, Amazon ElastiCache has a wide range of uses, including

Performance acceleration

Database limitations are often a bottleneck for application performance. By placing Amazon ElastiCache between an application and its database tier, database operations can be accelerated. [7]

Cost reduction

Using ElastiCache for database performance acceleration can significantly reduce the infrastructure needed to support the database. In many cases, the cost savings outweigh the cache costs. Expedia was able to use ElastiCache to reduce provisioned DynamoDB capacity by 90%, reducing total database cost by 6x. [8] [9]

Processing time series data

Using the Redis engine, ElastiCache can rapidly process time-series data, quickly selecting newest or oldest records or events within range of a point-in-time. [10]

Leaderboards

Leaderboards are an effective way to show a user quickly where they currently stand within a gamified system. For systems with large numbers of gamers, calculating and publishing player ranks can be challenging. Using Amazon ElastiCache with the Redis engine can enable high-speed at scale for leaderboards. [11]

Rate limitation

Some APIs only allow a limited number of requests per time period. Amazon ElastiCache for Redis engine can use incremental counters and other tools to throttle API access to meet restrictions. [12]

Atomic counter

Programs can use incremental counters to limit allowed quantities, such as the maximum number of students enrolled in a course or ensuring a game has at least 2 but not more than 8 players. Using counters can create a race condition where an operation is allowed because a counter was not updated promptly. Using the ElastiCache for Redis atomic counter functions, where a single operation both checks and increments the counter's value, prevents race conditions. [13]

Chat rooms and message boards

ElastiCache for Redis supports publish-subscribe patterns, which enable the creation of chat rooms and message boards where messages are automatically distributed to interested users. [14]

Deployment options

Amazon ElastiCache can use on-demand cache nodes or reserved cache nodes.

On-demand nodes provide cache capacity by the hour, with resources in the AWS cloud assigned when a cache node is provisioned. An on-demand node can be removed from service by its owner at any time. Each month, the owner will be billed for the hours used. [15]

Reserved nodes require a 1-year or 3-year commitment, which dedicates cache resources to the owner. The hourly cost of reserved nodes is significantly lower than the hourly cost of on-demand nodes. [16]

Performance

An efficient cache can significantly increase application's performance and user navigation speed. Amazon CloudWatch exposes ElastiCache performance metrics that can be tracked. [17]

Key performance metrics

Metric collection

Many ElastiCache metrics can be collected from AWS via CloudWatch or directly from the cache engine, whether Redis or Memcached, with a monitoring tool integrating with it: [18]

Using the online management console is the simplest way to monitor ElastiCache with CloudWatch. It allows to set up basic automated alerts and to get a visual picture of recent changes in individual metrics.

Metrics related to ElastiCache can also be retrieved using command lines. It can be used for spot checks and ad hoc investigations.

The third way to collect ElastiCache metrics is via a dedicated monitoring tool integrating with Amazon CloudWatch.

Notable customers

Users of Amazon ElastiCache include Airbnb, [19] Expedia, [20] Zynga, [21] Tinder, [22] FanDuel, [23] and Mapbox [24]

Limitations

As an AWS service, ElastiCache is designed to be accessed exclusively from within AWS, though it is possible to connect the service to applications and databases that are not hosted by AWS. [25]

Alternatives

Other vendors provide cloud data cache services comparable to Amazon ElastiCache, including Azure Cache for Redis, Redis Ltd (company behind open source Redis and Redis Enterprise), Redis To Go, IBM Compose, Oracle Application Container Cloud Service, and Rackspace ObjectRocket.

Related Research Articles

Memcached is a general-purpose distributed memory-caching system. It is often used to speed up dynamic database-driven websites by caching data and objects in RAM to reduce the number of times an external data source must be read. Memcached is free and open-source software, licensed under the Revised BSD license. Memcached runs on Unix-like operating systems and on Microsoft Windows. It depends on the libevent library.

<span class="mw-page-title-main">Amazon Elastic Compute Cloud</span> Cloud computing platform

Amazon Elastic Compute Cloud (EC2) is a part of Amazon.com's cloud-computing platform, Amazon Web Services (AWS), that allows users to rent virtual computers on which to run their own computer applications. EC2 encourages scalable deployment of applications by providing a web service through which a user can boot an Amazon Machine Image (AMI) to configure a virtual machine, which Amazon calls an "instance", containing any software desired. A user can create, launch, and terminate server-instances as needed, paying by the second for active servers – hence the term "elastic". EC2 provides users with control over the geographical location of instances that allows for latency optimization and high levels of redundancy. In November 2010, Amazon switched its own retail website platform to EC2 and AWS.

Google App Engine is a cloud computing platform as a service for developing and hosting web applications in Google-managed data centers. Applications are sandboxed and run across multiple servers. App Engine offers automatic scaling for web applications by automatically allocating more resources to the web application for handling additional demand as the amount of requests increases for an application.

Eucalyptus is a paid and open-source computer software for building Amazon Web Services (AWS)-compatible private and hybrid cloud computing environments, originally developed by the company Eucalyptus Systems. Eucalyptus is an acronym for Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems. Eucalyptus enables pooling compute, storage, and network resources that can be dynamically scaled up or down as application workloads change. Mårten Mickos was the CEO of Eucalyptus. In September 2014, Eucalyptus was acquired by Hewlett-Packard and then maintained by DXC Technology. After DXC stopped developing the product in late 2017, AppScale Systems forked the code and started supporting Eucalyptus customers.

<span class="mw-page-title-main">AppScale</span> American cloud infrastructure software company

AppScale is a software company offering cloud infrastructure software and services to enterprises, government agencies, contractors, and third-party service providers. The company commercially supports one software product, AppScale ATS, a managed hybrid cloud infrastructure software platform that emulates the core AWS APIs. In 2019, the company ended commercial support for its open-source serverless computing platform AppScale GTS, but AppScale GTS source code remains freely available to the open-source community.

A graph database (GDB) is a database that uses graph structures for semantic queries with nodes, edges, and properties to represent and store data. A key concept of the system is the graph. The graph relates the data items in the store to a collection of nodes and edges, the edges representing the relationships between the nodes. The relationships allow data in the store to be linked together directly and, in many cases, retrieved with one operation. Graph databases hold the relationships between data as a priority. Querying relationships is fast because they are perpetually stored in the database. Relationships can be intuitively visualized using graph databases, making them useful for heavily inter-connected data.

<span class="mw-page-title-main">Redis</span> Source available in-memory key–value database

Redis is a source available, in-memory storage, used as a distributed, in-memory key–value database, cache and message broker, with optional durability. Because it holds all data in memory and because of its design, Redis offers low-latency reads and writes, making it particularly suitable for use cases that require a cache. Redis is the most popular NoSQL database, and one of the most popular databases overall. Redis is used in companies like Twitter, Airbnb, Tinder, Yahoo, Adobe, Hulu, Amazon and OpenAI.

<span class="mw-page-title-main">Couchbase Server</span> Open-source NoSQL database

Couchbase Server, originally known as Membase, is a source-available, distributed multi-model NoSQL document-oriented database software package optimized for interactive applications. These applications may serve many concurrent users by creating, storing, retrieving, aggregating, manipulating and presenting data. In support of these kinds of application needs, Couchbase Server is designed to provide easy-to-scale key-value, or JSON document access, with low latency and high sustainability throughput. It is designed to be clustered from a single machine to very large-scale deployments spanning many machines.

Amazon Relational Database Service is a distributed relational database service by Amazon Web Services (AWS). It is a web service running "in the cloud" designed to simplify the setup, operation, and scaling of a relational database for use in applications. Administration processes like patching the database software, backing up databases and enabling point-in-time recovery are managed automatically. Scaling storage and compute resources can be performed by a single API call to the AWS control plane on-demand. AWS does not offer an SSH connection to the underlying virtual machine as part of the managed service.

A cloud database is a database that typically runs on a cloud computing platform and access to the database is provided as-a-service. There are two common deployment models: users can run databases on the cloud independently, using a virtual machine image, or they can purchase access to a database service, maintained by a cloud database provider. Of the databases available on the cloud, some are SQL-based and some use a NoSQL data model.

<span class="mw-page-title-main">Amazon DynamoDB</span> NoSQL database service

Amazon DynamoDB is a fully managed proprietary NoSQL database offered by Amazon.com as part of the Amazon Web Services portfolio. DynamoDB offers a fast persistent key–value datastore with built-in support for replication, autoscaling, encryption at rest, and on-demand backup among other features.

<span class="mw-page-title-main">Redis (company)</span> American based private computer software company

Redis Ltd. is an Israeli private computer software company headquartered in Mountain View, California. Redis is the sponsor of the source-available in-memory NoSQL database of the same name and the provider of Redis Enterprise software, cloud services, and tools for global companies. The company’s research and development center is based in Tel Aviv and it has additional offices in London, Austin, and Bengaluru.

In computing, Hazelcast is a unified real-time data platform based on Java that combines a fast data store with stream processing. It is also the name of the company developing the product. The Hazelcast company is funded by venture capital and headquartered in Palo Alto, California.

Google Cloud Platform (GCP), offered by Google, is a suite of cloud computing services that provides a series of modular cloud services including computing, data storage, data analytics, and machine learning, alongside a set of management tools. It runs on the same infrastructure that Google uses internally for its end-user products, such as Google Search, Gmail, and Google Docs, according to Verma, et.al. Registration requires a credit card or bank account details.

Kubernetes is an open-source container orchestration system for automating software deployment, scaling, and management. Originally designed by Google, the project is now maintained by a worldwide community of contributors, and the trademark is held by the Cloud Native Computing Foundation.

Autoscaling, also spelled auto scaling or auto-scaling, and sometimes also called automatic scaling, is a method used in cloud computing that dynamically adjusts the amount of computational resources in a server farm - typically measured by the number of active servers - automatically based on the load on the farm. For example, the number of servers running behind a web application may be increased or decreased automatically based on the number of active users on the site. Since such metrics may change dramatically throughout the course of the day, and servers are a limited resource that cost money to run even while idle, there is often an incentive to run "just enough" servers to support the current load while still being able to support sudden and large spikes in activity. Autoscaling is helpful for such needs, as it can reduce the number of active servers when activity is low, and launch new servers when activity is high. Autoscaling is closely related to, and builds upon, the idea of load balancing.

Serverless computing is a cloud computing execution model in which the cloud provider allocates machine resources on demand, taking care of the servers on behalf of their customers. "Serverless" is a misnomer in the sense that servers are still used by cloud service providers to execute code for developers. However, developers of serverless applications are not concerned with capacity planning, configuration, management, maintenance, fault tolerance, or scaling of containers, VMs, or physical servers. Serverless computing does not hold resources in volatile memory; computing is rather done in short bursts with the results persisted to storage. When an app is not in use, there are no computing resources allocated to the app. Pricing is based on the actual amount of resources consumed by an application. It can be a form of utility computing.

<span class="mw-page-title-main">Apache Ignite</span>

Apache Ignite is a distributed database management system for high-performance computing.

AWS Graviton is a family of 64-bit ARM-based CPUs designed by the Amazon Web Services (AWS) subsidiary Annapurna Labs. The processor family is distinguished by its lower energy use relative to x86-64, static clock rates, and omission of simultaneous multithreading. It was designed to be tightly integrated with AWS servers and datacenters, and is not sold outside Amazon.

Valkey is an open-source in-memory storage, used as a distributed, in-memory key–value database, cache and message broker, with optional durability. Because it holds all data in memory and because of its design, Valkey offers low-latency reads and writes, making it particularly suitable for use cases that require a cache. Valkey is the successor to Redis, the most popular NoSQL database, and one of the most popular databases overall. Valkey or its predecessor Redis are used in companies like Twitter, Airbnb, Tinder, Yahoo, Adobe, Hulu, Amazon and OpenAI.

References

  1. "Amazon ElastiCache – Distributed In-Memory Caching". Amazon Web Services. 22 August 2011.
  2. "ElastiCache for Redis". Amazon Web Services. Retrieved 2016-08-29.
  3. "Scaling". AWS ElastiCache Documentation. Retrieved 2016-07-08.
  4. "Amazon ElastiCache – Distributed In-Memory Caching". amazon.com. 22 August 2011. Retrieved 2016-07-08.
  5. "Reserved Cache Nodes for Amazon ElastiCache". amazon.com. 5 April 2012. Retrieved 2016-07-08.
  6. "Amazon ElastiCache – Now With a Dash of Redis". amazon.com. 4 September 2013. Retrieved 2016-07-08.
  7. "Use Memcached to improve database performance". CloudVPS. Archived from the original on 2016-07-13. Retrieved 2016-07-08.
  8. "Customer Testimonials". amazon.com. Retrieved 2016-07-08.
  9. "AWS Building Scalable Applications on AWS NoSQL Services". youtube.com. Retrieved 2016-07-08.
  10. "Using Redis as a Time Series Database: Why and How". InfoQueue. Retrieved 2016-07-08.
  11. "USING REDIS TO BUILD YOUR GAME LEADERBOARD". Social Point. Archived from the original on 2018-09-14. Retrieved 2016-07-08.
  12. "DOWN BOY: HOW TO EASILY THROTTLE REQUESTS TO AN API USING REDIS". Collective Idea. 30 November 2012. Retrieved 2016-07-08.
  13. "An Atomic Rant". Nate Wigel vs Technology. 18 February 2010. Retrieved 2016-07-08.
  14. "Create a Simple Chat Room with Redis Pubsub". Program Every Day. Archived from the original on 2016-07-21. Retrieved 2016-07-08.
  15. "Amazon ElastiCache Pricing". amazon.com. Retrieved 2016-07-08.
  16. "ElastiCache Reserved Cache Nodes". amazon.com. Retrieved 2016-07-08.
  17. "Monitoring ElastiCache performance metrics with Redis or Memcached". 10 December 2015. Retrieved 2016-10-24.
  18. "Collecting ElastiCache metrics + its Redis/Memcached metrics". 10 December 2015. Retrieved 2016-10-24.
  19. "Airbnb Case Study". amazon.com. Retrieved 2016-07-08.
  20. "Building Scalable Applications on AWS NoSQL Services". youtube.com. Retrieved 2016-07-08.
  21. "AWS Case Study: Zynga". amazon.com. Retrieved 2016-07-08.
  22. "Building resiliency at scale at Tinder with Amazon ElastiCache". amazon.com. Retrieved 2024-03-28.
  23. "FanDuel Case Study". amazon.com. Retrieved 2016-07-08.
  24. "Building Scalable Applications on AWS NoSQL Services". youtube.com. Retrieved 2016-07-08.
  25. "Accessing ElastiCache Resources from Outside AWS". AWS Documentation. Retrieved 2016-07-08.