Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Azure vs. AWS Data Services Comparison

DZone's Guide to

Azure vs. AWS Data Services Comparison

Given that Azure and AWS both offer a huge variety of managed data services, let's take a look at how to get started comparing them.

· Database Zone ·
Free Resource

MariaDB TX, proven in production and driven by the community, is a complete database solution for any and every enterprise — a modern database for modern applications.

Both Microsoft Azure and Amazon Web Services offer a lot of data services. So many services that it can be hard to comprehend how they compare without a scorecard. So, that’s what I did here — I put together a quick image to help you make sense of all the offerings currently available (as of March 2018). Essentially, I wanted to build a cheatsheet for Azure vs. AWS data services for comparison purposes.

It is my hope that this post will be a starting guide for you when you need to research these services. I have included relevant links for each service, along with some commentary, in the text of this post below. I’ve done my best to align the services, but there is some overlap between offerings. Some offerings, like data warehousing and cache, are easy to discern.

Image title

OK, let’s break these down into groups. I’m not going to do a feature comparison here because these systems evolve so quickly I’d spend all day updating the info. Instead, you get links to the documentation for everything and you can do your own comparisons as needed.

Relational

Azure offerings: SQL Database, Database for MySQL, Database for PostgreSQL

AWS offerings: RDS, Aurora

RDS is an umbrella term, as it is six engines in total. It includes Amazon Aurora, MySQL, MariaDB, Oracle, Microsoft SQL Server, and PostgreSQL. I’ve listed Aurora as a distinct offering because it is the high-end service dedicated to MySQL and PostgreSQL. Since Azure also offers those distinct services, it made sense to break Aurora out from RDS. (Or, to put it another way, if I didn’t call out Aurora here, you’d finish this post and say ‘what about Aurora’, and now you don’t have to ask that question.)

NoSQL: Key/Value

Azure offerings: Cosmos DB, Table Storage

AWS offerings: DynamoDB, SimpleDB

Cosmos DB is the major NoSQL player for Azure, as it does everything (key/value, document, graph) except relational.

NoSQL: Document

Azure offerings: Cosmos DB

AWS offerings: DynamoDB

Azure used to offer DocumentDB, but that platform was sunset when Cosmos DB came alive.

NoSQL: Graph

Azure offerings: Cosmos DB

AWS offerings: Neptune

As of March 2018, Neptune is in Preview, so the documentation is likely to change in the coming weeks (well, that’s my assumption, because Neptune has been in Preview since November.)

Data Warehouse

Azure offerings: SQL Data Warehouse

AWS offerings: Redshift

It feels like these two services have been around forever. That’s because, in internet years, they have. Redshift goes back to 2012, and SQL DW goes back to 2009. That’s a lot of time for both Azure and AWS to learn about data warehousing as a service.

Cache

Azure offerings: Redis Cache

AWS offerings: ElastiCache

Both of these services are built upon Redis, so the real question here is if you want to use Redis-as-a-service from a 3rd party provider as opposed to just using it Redis itself.

Pricing

Azure Pricing calculator: https://azure.microsoft.com/en-us/pricing/calculator/

AWS Pricing Calculator: https://calculator.s3.amazonaws.com/index.html

The pricing calculators give you the best understanding of capacity. You could spend days trying to figure out the resource limits for each service listed on this page, but if you start with the calculator, you get an idea of the most important thing: the cost of the service. Here’s an example of what I mean. Let’s look at something that should be an easy comparison: SQL Data Warehouse versus Redshift. I will compare a 100% utilized instance for each.

Here is the pricing summary for Azure SQL Data Warehouse, optimized for capacity, and with storage of 10 TB:

Image title

The calculator tells me the two most important things I need to know: That I pay for storage, and for something called a DWU. So, that’s the stuff to research next.

For Redshift, we have this:

Image title

AWS seems to be charging for compute power only and not for storage. Also, this is the cost for only one node, whereas SQL Data Warehouse will use more than one node to distribute the workload. And this doesn’t help explain failovers, maintenance, disaster recovery, etc.

It can be frustrating to compare the data services being offered between Azure and AWS. Part of me thinks this is done on purpose by both companies in an effort to win our favor without giving away more information than is necessary. This is a common practice, and I’m not bashing either company for doing what has been done for centuries. I’m here to help others figure out how to make the right choice for their needs. At the end of the day, I believe both Amazon and Microsoft want the same thing: happy customers.

By starting at the pricing pages, I can then dive into the specific costs and use that as a first level comparison between the services. If you start by looking at resource limits and maximums, you will spend a lot of time trying to compare apples to oranges. Just focus on costs, those resources, throughput, and DR. That should be a good start to help you determine the cost, benefit, and risk of each service.

Summary

I hope you find this page useful for referencing the many data service offerings from both Microsoft Azure and Amazon Web Services. I will do my best to update this page as necessary, and offer more details and use cases as I am able.

MariaDB AX is an open source database for modern analytics: distributed, columnar and easy to use.

Topics:
database ,microsoft azure ,aws ,managed services ,data service

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}