Amazon AWS and Microsoft Azure are excellent options for deploying MS SQL Server databases.
Many companies use both to enjoy each Cloud’s unique feature set.
However, it’s essential to compare the features, advantages, and limitations between them before you decide on an Amazon AWS or Azure migration.
In this post, we’ll see a high-level of each cloud service differences and guide you to choose the best service for your business.
Both offerings are considered Platform as a Service (PaaS) implementations.
Microsoft ensures that your application always runs on the latest binaries available (SQL Server 2019), including the newest features available.
There are two implementations for Azure SQL Database – Singles instance/Elastic pools and Managed Instance.
Amazon offers a mostly version oriented model (actually, from 2012 to 2017) in a dedicated instance.
AWS allows you to choose which version and edition (express, web, standard, and enterprise) to use.
There are advantages to each approach.
However, the AWS RDS service gives organizations more flexibility, since some legacy applications cannot always run on more modern database engines.
Microsoft Azure model drives you into a VM implementation, if you need to use old versions of SQL Server.
Regarding the prices, compare them is a challenge because the services are not directly analogous.
Anyway, Azure SQL Databases and Amazon AWS RDS have tools to help you estimate the costs.
The databases cloud services offer a different connectivity architecture.
AWS RDS SQL Server uses direct connectivity. It mirrors what most developers would expect in a traditional data center design.
On the other end, Azure single databases can be deployed on the same server, coexisting with other customer databases with a high degree of isolation (ensuring security).
Therefore, the azure Single Databases service needs a gateway mechanism to correctly identify which database your application is attempting to connect to, and on which server.
It means that the primary database can be hosted on any server at any point in time.
However, this gateway routing architecture can also have a noticeable negative impact on applications that require fast response times.
This connectivity model does not apply to Managed Instances, which uses direct DNS name connectivity (similar to AWS).
While the gateway approach seems unnecessary at first glance, it offers management and scalability capabilities that are only possible in this architecture.
The method allows Azure Platform to move databases transparently when it is necessary, such as environment upgrades.
From an availability point of view, the AWS RDS SQL Server service offers a tier without High availability (with no SLA) and another with a single standby server.
This can be used to failover automatically with a 99.95% availability (monthly).
The ability to choose an AWS RDS SQL Server without an SLA seems to provide a cost advantage for development and testing environments.
The Amazon RDS service does not provide a secondary read replica yet. The secondary only can be used with Always ON or Log shipping.
The Azure SQL Database provides 99.99% uptime (monthly) and two high availability models.
This Platform also offers a dev/test pricing model that provides up to 55% savings on license for Visual Studio subscribers.
The premium tier availability implements Always On Availability Groups (up to four nodes).
It also provides a secondary read replica that allows reports to access a read-only version of a database without impacting the primary read/write database.
From a licensing aspect, both cloud services provide a license-included fee model (you do not need to purchase extra licenses).
You only pay to license for the amount of time you have a running database.
However, for particular companies, it may be beneficial to leverage a BYOL (bring your own license) model, which can provide some significant savings.
Only the Azure SQL Database service offers a BYOL model for managed instances, if desired.
Amazon RDS SQL Server currently does not provide a BYOL licensing model due to restrictions imposed by Microsoft.
AWS RDS SQL Server and Azure SQL DB there are specific limitations, some are inherent to the database version.
At the same time, other features are unavailable due to management or security concerns on each Platform.
The Amazon AWS RDS SQL Server implementation offered the closest compatibility to an on-premise deployment.
Microsoft released the Azure SQL Managed Instance competes on feature parity with it and provides near compatibility.
On the other end, the Azure SQL single database offers a pure PaaS implementation designed explicitly for cloud-born applications.
For a complete list of T-SQL features that are not supported by Microsoft Azure, please see the documentation for Single Databases and Managed Instances.
The Amazon has significantly less detailed documentation for the AWS RDS limitations.
In the table below, you can see a partial overview of the key feature differences of the services.
Both services offer a robust backup and restore capability.
Azure Platform provides automated backups with point-in-time restores (5-minute increment).
The backups are kept between 7-35 days, depending on the service level purchased.
Also, there are long term retention options available for storing backups for up to 10 years (for Single Databases and Elastic Pools).
Only Azure managed instances support the BACKUP operation (not supported for Single databases).
The COPY_Only backup is the unique option available, so differential and log backups are not supported.
Amazon RDS SQL Server will also backup your database daily (automatic snapshot) with a 5-minute log backup increment.
Backup retention is also 35 days.
AWS RDS provides support for manual DB snapshots.
Like automated backups, a DB snapshot creates a backup of an entire SQL Server instance, not just a database.
Finally, RDS also provides native support for the BACKUP command (full backups of individual databases).
It allows backup your RDS SQL Server databases to S3 buckets that you can then restore to a local SQL Server.
On the security front, both services seem to offer similar necessary capabilities.
Both cloud vendors provide the ability to use a service-generated encryption certificate or allow customers to provide their own through the KMS (Amazon) or the Azure Key Vault (Azure) service.
Also, both allow Active Directory integration with certain limitations.
The Azure SQL Database service only works with the Azure Directory Service, while the AWS RDS SQL Server service requires a service called Microsoft Active Directory (MAD).
Only Azure SQL Database service provides advanced options that are not part of the database engine itself, such as Data Masking and Advanced Threat Protection.
Also, the Azure service forces encryption in transit and at rest, while the AWS service makes those an option configured separately.
On the Amazon service, you can quickly scale up by adding memory, IOPS, and CPU cores to an existing server.
The AWS RDS SQL Server service will scale up to the limits of what the hardware can provide.
Amazon tries to make this process as smooth as possible, but it may require downtime of a few minutes.
To minimize the impact on consumers, the AWS RDS service provides specific maintenance windows during which these changes can be done.
There are various hardware options for the AWS RDS SQL Server service.
Your options vary based on the edition of SQL Server you choose.
As simple as AWS RDS SQL Server scalability options are, they are nonetheless well understood and easy to establish from a capacity planning standpoint.
This makes it particularly easy to fork and lift existing workloads and predict what size you will need in AWS.
On the Microsoft Azure service, things are a bit different.
There are two sizing units for a SQL Database: DTU and vCore.
The DTU (Database Transaction Unit) model applies to the Single Instance model, while the vCore model (more closely aligned to the AWS RDS offering) is only available for Managed Instances.
Where the Azure SQL Database offering shines is in the granularity of its scalability options.
The DTU models allow you to be precise on the overall performance needs of your database.
You can fine-tune your performance requirements at will with minimum impact on your service.
Also, the Azure SQL Database service allows you to create an elastic pool (only for the Single Instance model).
It will enable you to co-locate databases under a single Azure SQL Database server, allowing share the overall resources of the instance.
Microsoft recently introduced the concept of a serverless database for the vCore offering.
With a serverless database, the service itself is paused after a configurable period of inactivity.
That means you will only pay for storage.
This option is excellent for development and testing environments.
AWS RDS and Azure SQL Database services compete on how to deliver the best experience for customers.
AWS RDS provides a more server-oriented model that offers strong backward compatibility for applications that need earlier versions of SQL Server.
On the other hand, The Azure offers a dynamic platform that is always running the latest version of SQL Server.
From data protection and secure points, both services offer robust capabilities.
However, the scalability options for AWS RDS and Azure SQL databases are very different. Both offer to scale up and down options, with AWS RDS being somewhat limited.
Choosing between SQL Azure or Amazon RDS would probably depend the most on the type of technology you use already and the relative costs.
A business that uses Microsoft technologies will find Azure a more familiar environment. You’ll get Visual Studio integration, support for .NET applications, T-SQL, etc.
If you’re still not sure which to use, consider what is your primary motivation to move your database to the Cloud.