In a previous post, we discussed Windows Azure SQL Database, a Database-as-a-Service (DBaaS) offering built on Microsoft SQL Server and hosted in the Azure cloud. Azure SQL Database provides a highly available database platform with predictable performance levels and built-in disaster recovery. It uses a Platform-as-a-Service (PaaS) deployment model to provide database services to applications.
Azure SQL Database is one of two ways organizations can leverage SQL Server in the Azure cloud. The other is SQL Server on Azure Virtual Machines (VMs), which uses an Infrastructure-as-a-Service (IaaS) model to host an instance of SQL Server.
Understanding SQL Server on Azure VMs
SQL Server on Azure VMs enables organizations to minimize hardware costs by leveraging Microsoft’s robust public cloud infrastructure. It is also ideal for organizations looking to deploy a hybrid environment for high availability. In fact, SQL Server on Azure VMs is optimized for extending existing on-premises applications to the cloud in a hybrid scenario — for example, running database replicas in Azure and allowing access via an Azure Virtual Network. SQL Server on Azure VMs is also used to migrate existing applications to Azure or as a dev/test environment.
SQL Server on Azure VMs allows organizations to use existing SQL Server licenses in a “Bring Your Own License” (BYOL) model. The BYOL model only incurs charges for Windows Server and storage utilization on Azure.
Alternatively, a SQL Server image from the Azure portal marketplace can be deployed on Azure VMs. Billing for Azure images will include per-minute charges for SQL Server, Windows Server and Azure storage. The per-minute billing option allows an organization to use SQL Server for a specific period of time without buying addition SQL Server licenses. Operational costs will depend upon the VM size as well as the SQL Server edition.
Use Cases for PaaS and IaaS Models
So when do you use Azure SQL Database, and when do you opt for SQL Server on Azure VMs? Selecting the appropriate deployment model will depend upon various aspects of the workload, including cost, sizing, system performance and control requirements.
As we noted in the previous post, Azure SQL Database masks much of the complexity of the infrastructure underlying the database. It allows developers to provision and manage the resources they need, enabling more rapid rollout of new cloud-based applications. It also provides predictable performance and built-In high availability, disaster recovery and upgrade features.
However, Azure SQL Database is not equivalent to SQL Server. It is a database service that minimizes hardware and operating system dependencies. As a result, Azure SQL Database does not support all SQL Server functionality and syntax, and is not the best option for stored procedures that specify server and file system configurations. It can be used for OLAP/data warehouse applications but has 1TB size limit; Azure SQL Data Warehouse is another option for OLAP in the cloud (which we’ll discuss in a future post).
With SQL Server on Azure VMs, existing on-premises applications will run without modification as long as the appropriate SQL Server edition is deployed. The IaaS model provides the control and customization of an on-premises deployment, so organizations will need a DBA to manage SQL Server and IT staff to maintain the VM instance. While SQL Server on Azure VMs offers many of the benefits of the Microsoft cloud, high availability and backup features are not automatically deployed, and configuration can be complex. Microsoft provides 99.9 percent uptime for the VM service, but this SLA does not apply to the applications running on the VMs.
Of course, a SQL Server environment can contain a mix of resources deployed on-premises and in PaaS and IaaS models. AdaptivEdge is a Microsoft-focused consulting and systems integration firm with Microsoft Azure and SQL Server experts who can help you analyze your applications and workloads and tailor these options to meet your business requirements.
Written and composed by our Microsoft Systems Engineer, Raul Perez II