Quantcast
Channel: MSDN Blogs
Viewing all articles
Browse latest Browse all 12366

SQL Server in Azure: Compare PaaS (SQLDB) and IaaS (Virtual Machine)

$
0
0

During the last year, Azure SQLDB team made a great job in porting an amazing number of new features into the platform, thus reducing the surface area gap with box product version of SQL Server. Today, deciding between IaaS and PaaS for SQL Server solution is pretty easy since fewer aspects need to be considered and Azure SQLDB is constantly evolving toward feature parity. In this blog post I’m trying to summarize the main criteria to consider and related recommendations, based on your requirements and scenarios. To facilitate your reading, I inserted a comparison chart here at the beginning, then you will need to read through the post only if more details will be required.

As always, you can follow me also on Twitter (@igorpag), please let me know if you have some more comparison items you would like to see in this blog post. Regards.

 

Topic

Azure
  SQLDB (PaaS)

SQL
  Server VM (IaaS)

Features

Less features than box

Full box product features   
 

Performances

Max 1750 DTU in Premium Tier

Depends on VM SKU/Storage   
 

DB Size

Max 1TB in Premium Tier (P11)

64TB on G-SERIES

Workload

Sizing by average usage

Sizing based on peaks

High-Availability

Built-in by platform       
 

Manual configuration by AlwaysOn AG

Fault-Handling

Necessary fault-handling &
  retry

Recommended fault-handling &
  retry

Locality

No co-location with application

Co-located by VMs and VNETs

Segregation

Internet exposed endpoint  
 

Internal private endpoint   
 

Versioning

No control on upgrades     
 

Full control over DB upgrade

TCO

Very low, almost self-managed     

High (as on-premise)        
 

Administration

No full-time DBA required       

Full staffed DBA required   
 

Management

Easy to manage many DBs    
 

Complex to manage many DBs/VMs

Scale-Out

Tools & Frameworks available

No easy scale-out           
 

Configuration

No setup customization     
 

Full access to OS and SQL   
 

Authentication

Only SQL standard authentication

SQL standard and integrated 
 

Security

No Fixed IP available      
 

Fixed IP possible at VM level

Backup

Backup files not accessible

Full control of backup files

 

FEATURES: Is Azure SQLDB able to provide all the features you need?

Most but not all SQL Server 2014 Transact-SQL statements are fully supported in Microsoft Azure SQL Database. Additionally, not all the features and tools that exist today for SQL Server box product are fully (or partially supported. For example, if your application requires MSDTC or SQL Agent or SSIS, then SQL Server in Azure VM is the only possible choice. For a comprehensive list of supported TSQL statements, features and tools, see the links below:

Azure SQL Database General Limitations and Guidelines
https://azure.microsoft.com/en-us/documentation/articles/sql-database-general-limitations
 
Azure SQL Database Transact-SQL information
https://azure.microsoft.com/en-us/documentation/articles/sql-database-transact-sql-information

 

PERFORMANCE: Which is the transaction throughput required by your application?

Moving a database to the Cloud, does not matter if using PaaS or IaaS, requires careful planning and workload characteristics knowledge to avoid problems. Azure SQLDB provides several levels of Service Level Objectives (SLO), each one with its own assigned resources:

SQL Database options and performance: Understand what's available in each service tier
https://azure.microsoft.com/en-us/documentation/articles/sql-database-service-tiers

 

If the highest Premium Edition will not be able to satisfy application throughput requirements, SQL Server in Azure VM should be evaluated. Azure provides different sizes and hardware resources for Virtual Machines, then also in this case upper limits should be evaluated to ensure resource requirements will be satisfied:

Sizes for Virtual Machines
https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-size-specs
 
 
DB SIZE: Which is the maximum expected size for your database?

Currently, the maximum database size that you can have in Azure SQLDB is 1TB (Premium P11 SKU). If you require more than that, SQL Server in Azure VM should be evaluated: on G-SERIES SKU you can allocate up to 64TB total disk space (Standard_G5). Extreme caution should be used here: allocating a big database, even if possible from a size perspective, may be not feasible from a performance and transaction throughput perspective, then appropriate tests should be done to ensure CPU, memory and disks will be good enough.
 
Performance best practices for SQL Server in Azure Virtual Machines
https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-sql-server-performance-best-practices 
  
  
WORKLOAD: Is your application workload constant over time?

If you chose to install SQL Server in Azure VM, you will need probably to size it for peak workload: if your application workload presents frequent peaks and steady usage at different time, you may be forced to overcommit resource allocation in term of number of cores (then memory) and storage. VM SKU and size changes in Azure Virtual Machines are possible, but there are some limitations and it is essentially an offline operation. Vice-versa, Azure SQLDB provides a very efficient built-in mechanism to dynamically change SKU, then allocated resources, very quickly and completely on-line with no application downtime. If your workload is dynamic and un-predictable by nature, Azure SQLDB is the best solution.

Changing Database Service Tiers and Performance Levels
https://msdn.microsoft.com/en-us/library/azure/dn369872.aspx

If the highest Premium Edition will not be able to satisfy application throughput requirements, SQL Server in Azure VM should be evaluated. Azure provides different sizes and hardware resources for Virtual Machines, then also in this case upper limits should be evaluated to ensure resource requirements will be satisfied:

Sizes for Virtual Machines
https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-size-specs

 

HIGH-AVAILABILITY: Which is your application high-availability SLA?

Azure SQLDB, in its V12 versions, is able to provide 99,99% high-availability SLA. Using SQL Server in Azure VM will require provisioning of at least two virtual machines in the same availability set and additional configuration of AlwaysOn Availability Group feature: this configuration will be able to provide only 99,95% HA SLA.

General Availability: Azure SQL Database Basic, Standard, and Premium service tiers
http://azure.microsoft.com/en-us/updates/general-availability-sql-database-basic-standard-and-premium-service-tiers
 
 
FAULT HANDLING: Your application code includes retry logic and transient fault handling?

Including proper retry logic and transient fault handling remediation in the code should be a universal best practice, both on-premised and in the cloud, either IaaS or PaaS. If this characteristic is missing, application problems may raise on both Azure SQLDB and SQL Server in Azure VM, but in this scenario the latter is recommended over the former.

The Transient Fault Handling Application Block
https://msdn.microsoft.com/en-us/library/hh680934(v=pandp.50).aspx
   
  
LOCALITY: Your application is very chatty and requires close proximity to databases?

If network latency between application and database is critical for the performance, SQL Server in Azure VM should be used: deploying both components in the same Virtual Network and same datacenter will guarantee minimum latency. Additionally, in some extreme situations, it is also possible to install the application on the same SQL Server VM. Azure SQLDB may require additional network hops and proximity is not guaranteed.

Azure Network Latency & SQL Server Optimization
http://blogs.msdn.com/b/igorpag/archive/2013/12/15/azure-network-latency-test-and-sql-server-optimization.aspx
 
 
SEGREGATION: Your security requirements allow an Internet visible endpoint?
 
When creating an Azure SQLDB database, a public URL and IP will be exposed to the Internet, then potentially visible: even if Azure (and Azure SQLDB specifically) provides security mechanisms like firewall rules and DDoS protection, it is not possible to hide this endpoint and prevent Internet visibility. Additionally, Azure SQLDB requires TCP port 1433 for data access and this cannot be changed. On the other hand, SQL Server in Azure VM can be deployed inside a Virtual Network with no Internet endpoint exposed, only applications/services and VMs inside the same VNET will be able to access the database over private (DIP) endpoint or using Azure ILB (see below). Azure SQLDB cannot be included (yet) in Azure Virtual Networks.

Azure SQL Database Firewall
https://msdn.microsoft.com/en-us/library/azure/ee621782.aspx
 
SQL Server 2014 High-Availability and Multi-Datacenter Disaster Recovery with Multiple Azure ILBs
http://blogs.msdn.com/b/igorpag/archive/2014/12/22/sql-2014-high-availability-and-multi-datacenter-disaster-recovery-with-multiple-azure-ilbs.aspx
 
 
VERSIONING & CONTROL: Is your application deeply tight to a specific SQL Server version?

Azure SQLDB is Microsoft PaaS offering for SQL Server technology, this means that Microsoft takes care of updating and patching of underlying database infrastructure. Azure SQLDB is always and constantly evolving, but you don’t have to schedule service maintenance activities. While Microsoft puts any reasonable commercial effort to guarantee that no breaking changes will be introduced, certification and management requirements may prohibit adoption to a small percentage of customers: if this is the case, and you need full control over SQL Server versioning and updating, you need to use SQL Server in Azure VM approach. Even if you don’t have control over Azure SQLDB versions, you can change the compatibility level of your database and be sure Azure SQLDB will adhere to that specifications:

ALTER DATABASE Compatibility Level (Transact-SQL)
https://msdn.microsoft.com/en-us/library/bb510680.aspx
 
 
Compatibility level 130 for Azure SQL Database V12
https://azure.microsoft.com/it-it/updates/compatibility-level-130-for-azure-sql-database-v12
 
Actually, compatibility level supported in Azure SQLDB V12 are 100 (SQL Server 2008 and SQL Server 2008 R2), 110 (SQL Server 2012), 120 (SQL Server 2014), or 130 (SQL Server 2016 Community Technology Preview 3), that is all the currently supported SQL Server box versions, in addition to SQL Server 2016 CTP3 that is currently in preview.
 
 
TCO: Did you evaluate the full cost of both SQL Server PaaS and IaaS alternatives?

If one of these options will satisfy all your requirements, which one you should use? Determining precise cost of Azure SQLDB and SQL Server in Azure VM is not difficult, proper pricing tooling and web pages exist, obviously you will chose the least expensive. What is more difficult is how to make an equal cost comparison between PaaS and IaaS offering, that’s why you should read the article below before making any maths on cost comparison:

Azure SQLDB and SQL Server VM - How to make an equal cost comparison
http://blogs.msdn.com/b/igorpag/archive/2015/03/20/azure-sqldb-and-sql-server-vm-how-to-make-an-equal-cost-comparison.aspx
 
 
ADMINISTRATION: Do you have full-staffed DBA resources?

SQL Database offers the scale and functionality of an enterprise data center without the administrative overhead that is associated with on-premise or Virtual Machine instances of SQL Server. This self-managing capability will greatly reduce DBA requirements removing the overhead on managing, monitoring and maintaining database infrastructure. SQL Database also manages load balancing and, in case of a server failure, transparent fail-over to a healthy machine hosting one of the backup copies of your database with no human intervention. If you don’t have a DBA, Azure SQLDB should be the preferred choice.
 
 
MANAGEMENT: How many database entities you will have to manage?

If your application architecture and requirements ask for a non-trivial number of databases to manage, you should definitely look at Azure SQLDB PaaS option. SQL Server declined in its IaaS form, will still require DBA, additionally if you have many databases to manage, even with support of tooling and automation, this will require more IT resources. Additionally, Azure SQLDB recently introduced new technologies and capabilities to manage a large number of database at scale:
 
Elastic Database Jobs overview
https://azure.microsoft.com/en-us/documentation/articles/sql-database-elastic-jobs-overview
  
   
SCALE OUT: Do you need the possibility to scale out dynamically on many databases?
 
SQL Server in Azure VM provide limited scale-up capabilities, essentially dictated by Azure VM SKU and sizes available. Additionally, if your application adopts a tenancy model based on database-level tenant isolation, you may need to create a large number of databases. In addition to administrative problems, application architectural changes must be also considered. If you want to dynamically scale out your database set and at the same time provide minimal impact on your code, you should evaluate Azure SQLDB option and some recent new features introduced "Elastic Database Client library", "Elastic Database Jobs" and "Split-Merge tool".

Elastic Database features overview
https://azure.microsoft.com/en-us/documentation/articles/sql-database-elastic-scale-introduction 
 
 
CONFIGURATION: Do you require OS level or SQL Server instance level access?
 
On the database box, if you need to install any additional software (monitoring agents, backup tools, service daemons, diagnostics and tracing), configure the Operating System or access SQL Server instance level properties (trace flags, sp_configure, etc.), then your only option is to use SQL Server in Azure VM. Azure SQLDB operates as PaaS, will not permit OS level or SQL instance level access.
 
 
AUTHENTICATION: Does your application require Windows Integrated Authentication?
 
If this is the case, you need to use SQL Server in Azure VM since Azure SQLDB only support SQL standard authentication based on logins and passwords.
 
Windows Azure SQL Database SQL Authentication
http://social.technet.microsoft.com/wiki/contents/articles/2693.windows-azure-sql-database-sql-authentication.aspx
 
NOTE: Azure SQLDB supporting Azure Active Directory authentication is currently in preview. Even if able to support “integrated” authentication mechanism, it requires proper infrastructure to be in place and only  supports the .NET Framework Data Provider for SqlServer (at least version .NET Framework 4.6).
  
Connecting to SQL Database by Using Azure Active Directory Authentication
https://azure.microsoft.com/en-us/documentation/articles/sql-database-aad-authentication
 
SECURITY: Does your application require fixed IP for database access?
 
In some scenarios, especially in hybrid environments where on-premise access is required, IP address white-listing is mandatory by local IT and/or Security department to permit outbound connections. Azure SQLDB public IPs can change without notice and cannot be reserved. For this reason, if your company has this security requirement, you need to use SQL Server in Azure VM and configure “Reserved IP” for your Cloud Service. This configuration will also offer the possibility to change the default TCP port for SQL Server connections (1433).
 
Reserved IP addresses for Cloud Services & Virtual Machines
http://azure.microsoft.com/blog/2014/05/14/reserved-ip-addresses
 
 
BACKUP: Do you need physical access to backup archive?
 
By design and default, with no configuration required to activate, Azure SQLDB routinely perform database backup: weekly full, daily differential and 5-minutes transaction log backups. You can trigger restore using Azure Portal or REST API, but you will not have direct physical access to backup files. If your company requires physical access to backup files for compliance, archival or security reasons, you need to use SQL Server in Azure VMs and manually download backup files.
 
Business Continuity Overview
https://azure.microsoft.com/en-us/documentation/articles/sql-database-business-continuity

 


Viewing all articles
Browse latest Browse all 12366

Trending Articles