What is AWS RDS?

This article provides an overview of AWS RDS, including its features, best practices, benefits, and pricing.

What is AWS RDS?
Photo by Tobias Fischer / Unsplash

Amazon Relational Database Service (AWS RDS) is a web service that makes it easy to set up, operate, and scale a relational database in the cloud. It provides cost-efficient, resizeable capacity for an industry-standard relational database and manages common database administration tasks. As with most AWS services, RDS works on a shared ownership model. AWS is responsible for managing the database, which includes things like automated backups, security patching, multi-AZ deployments, and monitoring. Users are responsible for application optimizations, schema migrations, etc.

RDS Features

Some of the key features of AWS RDS include:

  • Easy to set up: Setting up a relational database in the cloud is easy with AWS RDS. You can use the AWS Management Console to launch a database instance, and the AWS RDS service will take care of the rest.
  • Operational simplicity: AWS RDS takes care of many of the tasks that are required to operate a relational database, such as database backups and patching. This can simplify database administration and reduce operational costs.
  • Scalability: AWS RDS makes it easy to scale your relational database up or down to meet changing demands. You can use the AWS Management Console to add or remove database instances as needed.
  • Reliability: AWS RDS is designed to be highly available and fault-tolerant. It replicates data across multiple Availability Zones to ensure that your database is always available.
  • Security: AWS RDS supports several security features to help you protect your data, including encryption, database firewall, and role-based access control.

An exhaustive list can be found on the RDS features page.

RDS Database Engines

A database engine is the fundamental component of a database management system (DBMS), which is responsible for storing, retrieving, and manipulating data. A DBMS typically consists of a server, client, and database engine. The database engine is responsible for managing the database, while the server provides an interface for clients to access the database.

There are six major database engines are available on AWS RDS: Aurora, MariaDB, Microsoft SQL Server, MySQL, Oracle, and PostgreSQL. Each one has its own set of benefits and drawbacks that you'll need to consider when choosing which is right for your application. In general, Aurora is the fastest and most scalable option, while PostgreSQL is the most feature-rich. MariaDB and MySQL are typically used for lightweight applications, while Microsoft SQL Server is a good choice for enterprise applications. Oracle is also a popular choice for enterprise applications but can be more expensive than other options.

Pricing

Pricing for AWS RDS depends on various factors, including the database engine, instance type, storage, etc.

For example, a 3 node PostgreSQL cluster running db.t3.medium instances with 2vCPUs and 4 GB memory and 30 GB storage will cost you 338.25 USD. The same configuration for MySQL will cost you 318.54

By contrast, an Aurora cluster running 3 db.t3.medium node with 2vCPUs and 4 GB memory and 30 GB storage will cost you 190.43 USD. Aurora can be significantly cheaper than the alternatives.

AWS RDS provides a free usage tier for new AWS customers. The free tier includes 750 hours of Amazon RDS Single-AZ db.t2.micro instance usage (enough to run a small database for a month), 20 GB of database storage, 10 million I/O requests, and 20 GB of backup storage.

You can find out more about pricing here.

Best practices for using RDS

When using RDS, it is important to consider the following best practices:

  • Choose the right database engine: Not all database engines are created equal, and each has its own strengths and weaknesses. Be sure to select the database engine best suited for your particular needs.
  • Plan for scale: As your data and workloads grow, your RDS database will too. Be sure to plan for this growth by provisioning adequate storage and compute resources. If your application requires more I/O than provisioned, recovery after failover will be slow too. Make sure you regularly monitor and right-size your provisioned IOPS.
  • Backup and snapshot regularly: RDS provides customers with the ability to take snapshots of their databases, which can be used for backup and recovery purposes. It is important to take snapshots regularly and store them in a safe location.
  • Monitor and troubleshoot: Monitor your RDS database for performance issues and be sure to troubleshoot any problems that arise.
  • Backup during periods of low utilization: You do not want your backup processes to compete with your production traffic load. Choose a time when you anticipate low usage for backups.
  • Client TTL: Clients typically cache DNS addresses for the database server. In case of failover, the address would change. You should set the TTL for your client to less than 30 seconds.
  • Gamedays: Run regular gamedays on your database. This means testing failover and knowing how long it takes and if your application can automatically connect to the new primary after a failover.

There is a more exhaustive list on this page. It also talks about DB engine-specific best practices.

Conclusion

AWS RDS is a cost-effective and easy-to-use solution for setting up and operating a relational database in the cloud. The free tier provides a great way for new customers to get started with AWS RDS. You can get try it out today at https://aws.amazon.com/rds/.