With the wide-scale migration of SMEs onto cloud infrastructure, managed services have become increasingly popular. They work as a natural extension to the offerings of Infrastructure-as-a-Service companies as a suite of services on a single platform. Cloud customers can look to further benefit from the expertise of their cloud provider by adopting managed services. But how to go about comparing, for example, managed databases?
Many managed databases provide similar solutions on paper, however, there can be large differences in what you get for your money. In this post, we’ll be comparing managed database services from AWS, DigitalOcean and UpCloud.
Similarities in features
Managed databases can provide an efficient way for the customers to stay up-to-date on technology by outsourcing maintenance and admin tasks. Furthermore, managed databases give access to skills without needing to hire a specialist to look after every technology. As such, they can help businesses to address issues related to costs, quality of service and risks while reducing the admin burden.
Balanced configuration options offered by DigitalOcean and UpCloud come with appropriate CPU and memory for most use cases. Contrary, AWS RDS focuses on memory heavy deployments with limited CPU and storage performance in the 4 – 32GB RAM range. However, they also allow very large configurations, up to 768GB of memory, but with limited compatibility with database engines.
Service resilience can also be covered by the database cluster configuration. Any production use should have at least one standby node in case the main database node encounters an outage. Most configurations are available in 2 and 3 node clusters at both UpCloud and DigitalOcean. AWS RDS additionally allows the standby nodes to be created in different availability zones where available.
Backups are also an essential part of the managed database services, commonly in the way of Point-in-time Recovery (PITR). This allows incremental recovery of a backup from a certain timestamp within the given backup retention period. AWS backup retention period can be configured to up to thirty-five days but at extra cost. While DigitalOcean’s backups are limited to the last 7 days, UpCloud offers up to 14 days of PITR with no hidden fees.
Security is of course an absolute must for any business-critical data. In addition to the aforementioned features, each of the managed databases in this comparison include a private network connection with the option to further restrict access to specific IP addresses or cloud resources. However, it’s important to note that the additional access restrictions require manual configuration, ideally already at the initial configuration.
Managed database services in essence offer preconfigured maintenance-free database clusters. The idea is that you as a customer simply choose the configuration to create and the provider does the rest. You can generally pick the system resources and the number of nodes in the cluster as needed. However, you are not locked into your choice but are able to scale the services as the need arises. The available configuration options and scalability then enable you to optimise your infrastructure.
Differences in practice
Having taken a look at the features and configurations of the managed databases, let’s see how they compare in practice. For this, we have a couple of ways to quantitatively measure database performance. Mainly, throughput, which indicates how many queries the database is able to handle, and latency, which measures the time it took for the database to respond.
We’ve benchmarked a number of configurations for the cloud providers in our comparison to learn more. Let’s have a look at the benchmark results and what they can tell us.
Database queries are requests to access, manipulate or retrieve data from the database. In this comparison, we are evaluating mainly read and write operations. The number of queries per second gives an idea of how quickly the database is able to process the queries.
In the graphs below, you can see the differences in read and write query performance and how each managed database scales across 4 – 32 GB system memory configurations at similar price points.
The gap between AWS and the others can be explained by the difference in storage media. According to the documentation for AWS RDS, their General Purpose (SSD) Storage is limited to 3 IOPS per provisioned GB and with burst up to 3,000 IOPS above the baseline. Compared to UpCloud’s MaxIOPS which offers read speeds of up to 100k IOPS, there’s a stark difference in performance. Even if counting in the optional AWS’s Provisioned IOPS (SSD) Storage, it’s only capable of reaching speeds of 40,000 IOPS per database instance.
DigitalOcean then again falls somewhere in the middle. They have not reported storage speeds publicly but according to our testing, we’ve recorded reads of up to 59k IOPS.
Latency indicates how long it takes for the database to respond to a query. Sysbench reports the response times in milliseconds for minimum, maximum and counts the average. However, the number to pay attention to is the 95th percentile. This gives the best representation of the consistency of the response latencies as 95% of all queries were completed within this time.
Yet, that is not the whole truth. Latency is highly dependent on the current database utilisation level. Under light load, the database will be able to respond to queries quickly and produce lower latencies. However, as the number of concurrent queries increases, so will the response times. Underneath, you can find results of how the managed databases from AWS, DigitalOcean and UpCloud perform as queries come in.
In the configurations compared here, DigitalOcean and UpCloud performed very competently while staying within the margin of error. On the contrary, the managed databases from AWS quickly bogged down as the number of queries increased.
Each managed database also has a maximum for concurrent connections which differ somewhat between providers. For example, DigitalOcean supports 75 connections and UpCloud up to 100 connections per 1 GB of database memory. Meanwhile, AWS calculates the max connections according to the exact number of bytes of database memory divided by 12,582,880. In other words, this comes to roughly 85 connections per 1 GB.
The managed database services in this comparison are priced similarly between the chosen configurations. However, the value for money is not quite equal between providers. For example, the base storage option on AWS is holding back the performance of the service but upgrading to a higher tier would greatly increase the costs. In contrast, Managed Databases on UpCloud have fewer available configurations but come with MaxIOPS storage as standard and offer far more performance per tier.
On the other hand, DigitalOcean could be seen as the middle ground for configuration options. For example, they allow high CPU and memory count for single-node databases. However, the database performance doesn’t scale as well as on UpCloud. When each configuration offers solid performance, you are less likely to need to oversubscribe your services for the same throughput.
All providers compared here offer Point-in-Time Recovery, but the number of days the backups are kept differs. DigitalOcean limits backup retention to 7 days for all clusters, while UpCloud offers a 14-day retention period on 3 node clusters. AWS on the other hand includes 7 days of backups by default but allows the customer to choose the backup retention up to 35 days but at an additional cost. Their backup pricing also differs by counting the backup size against the retention period. Meaning a database with high activity may quickly incur unexpected extra charges by exceeding the backup quota.
If you’d like to test how your existing database compares, to the benchmark results here, check out our tutorial on how to benchmark managed databases using sysbench.