Choosing Between Azure General Purpose or Business Critical Tiers
Cloud costs can be very appealing at the beginning of the cloud journey, but costs can become very high if we pick wrong the architecture model to support our needs. In this article we will look at some things to consider when select an Azure service tier.
There are two tiers we can choose, either the General Purpose or Business Critical which I will cover below.
I see a lot of companies who use the General Purpose model for their production Azure SQL Database. At first glance it looks like the correct choice, you have numerous CPU and Memory options to choose from, which could be a good simple starting point.
In the Azure SQL Database documentation, it explains that General Purpose is a budget-friendly tier and is designed for workloads that are not performance sensitive. There are many production databases that are small and used infrequently, so this could be a good fit.
Instances built on the General Purpose tier can use one of the 3 Different hardware generations (more compute oriented or more memory oriented) and configured from 2 to 72 CPUs and up to 207GB of Memory.
For storage, there are no options, we have only Remote SSDs in any possible hardware configuration in this tier which provides us with 5-7 ms/write and 5-10 ms/read. So if IO is extremely important, the Business Critical may be a better choice.
If you need a fast database system, this means that your environment is performance sensitive. Most busy multi-core on-premises production servers would translate to something within the Business Critical architectural model.
In the Business Critical architecture model, compute and storage are integrated on the single node. Both the SQL Server database engine process and underlying .mdf/.ldf files are placed on the same node with locally attached SSD storage providing low latency to your workload, 1-2 ms/write and 1-2 ms/read.
Furthermore, a Business Critical cluster has built-in Read Scale-Out capability that provides free-of-charge a built-in read-only node that can be used to run read-only queries (for example reports) that should not affect performance of your primary workload.
Production environments with a high number of insert, update and delete operations have no other choice but to use the Business Critical architecture tier.
Here are some more benefits:
- Advanced data corruption protection
- Higher availability (99.995% availability, compared to 99.99% for General Purpose tier)
- Guaranteed Recovery Point Objective (RPO) of 5 seconds and Recovery Time Objective (RTO) of 30 seconds
- Higher resiliency and faster recovery from failures
Keeping Costs Down
The Business Critical tier is more expensive than the General Purpose tier, but there are ways to lower costs in the cloud without compromising production workload performance.
One option is to choose a 1 year or 3 year reservation model which gives us up to a 40% discount over pay-as-you-go pricing.
Here are some other things to consider for keeping costs in check:
- Cloud Elasticity is our best friend and one of the major advantages of the public cloud environment. It allows us to have cost and performance effective systems by providing automatic tools to expand or compress the infrastructure resources. We can change the hardware composition of our instance when it's needed and the downtime is minimal.
- If automatic adjustment is not appropriate, we can use another cloud advantage, Scalability, to adjust resources according to our workload behavior. We can optimize costs by scaling down on weekends and scaling up midweek. Scaling compute up or down typically takes up to 2 minutes regardless of data size because it usually does not involve any data movement.
- It is important to review consumption and performance monthly and adjust the database instance resources.
- An additional approach to reduce costs is to take a closer look at Dev and QA environment configuration. We can either use the Free Tier, serverless architecture tier or pool of resources shared between multiple instances. We can also let each developer use the developer edition of SQL Server installed on his/her laptop instead of using cloud resources and spin up a SQL Database from time to time to perform testing.
- Using appropriate data management cloud services for different application
components is also a modern, cost effective and performance effective approach.
Consider moving all non-OLTP activity out of the relational database.
- Store row data in Azure Data Lake instead of Staging database.
- Process, clean, enrich and aggregate data using Azure Data Factory.
- Use caching layers for frequent queries that can tolerate data freshness latency.
- Use Azure Synapse for analytical workload
- Use Azure Cosmosdb for graph models or for the key/document query access patterns.
- Azure Pricing Calculator
- General Purpose Tier for Azure SQL Database
- Business Critical Tier of Azure SQL Services
About the author
View all my tips
Article Last Updated: 2022-01-14