As you migrate your database workloads to AWS, it is important to understand how scaling works in RDS for SQL Server. Unlike on-premises, you do not need to over-provision to account for business growth. You can scale your instances by adjusting memory or compute power up or down as performance and capacity requirements change. You can take advantage of storage auto-scaling feature which will increase the storage up to 16TB as the database grows. In addition, you can add up to five in-region read replicas to support your horizontal scaling requirements. The following are some key items to consider when scaling a database instance:
- Storage and compute instances are decoupled. When you scale your database instance compute up or down, your storage size remains the same and is not affected by the change.
- RDS DB instances can be separately modified to increase the allocated storage space or let RDS auto-scale (up) your storage. You can also improve the performance by changing the storage type from General Purpose SSD to Provisioned IOPS SSD.
- When you scale up the compute, AWS handles the RDS for SQL Server Microsoft licensing for you, and you pay as you go.
- Instance configuration changes can be applied immediately or during the maintenance window specified for the instance. In a Multi-Availability Zone (Multi-AZ) setup, RDS for SQL Server minimizes the downtime to a few minutes during compute resize by taking advantage of the SQL Server Always On Availability Group failover feature.
- Read workloads can be offloaded. Through the read replica feature available on RDS for SQL Server Enterprise Edition, you can select the read replica instance compute size different from your primary instance.
- Instance Scheduler on AWS helps to reduce operational costs by stopping RDS for SQL Server instances that are not in use and starting when capacity is needed. For example, you can use Instance Scheduler on AWS to automatically stop database instances outside business hours.
- A caching layer in-front of a database can reduce overhead on DB instances. You can use Amazon ElastiCache to offload some of the repetitive read requests from your primary instance and save costs by reducing compute size of the primary database instance.
You can choose the right instance types, compute size, and storage based on your on-premises SQL Server workloads. You can scale up and down later to right-size your environment. You can always scale up your instance based on forecasts and pay for the additional compute only for that duration.
Another area to further optimize your Amazon RDS for SQL Server costs is by choosing the right license and edition for your data needs. Outlined are some best practices to get you started:
- Request an Optimization and Licensing Assessment (OLA) for Databases, which is an early assessment phase activity to help qualified customers navigate complex licensing scenarios and identify the best migration path to AWS. OLA for Databases accomplishes this by combining: 1) migration licensing analysis by an AWS Partner licensing subject matter experts (SME) with deep Microsoft SQL Server licensing expertise, 2) rapid workload assessment and right-sized target recommendations, and 3) a directional TCO to help make the case for change.
- Consider SQL Server 2019 Standard Edition (SE) as your first choice for your target Amazon RDS for SQL Server instance. SQL Server 2019 SE includes most of the critical Enterprise Edition (EE) features. For a summarized comparison between EE and SE, refer to editions and supported features of SQL Server 2019 (15.x). Check if any EE features used in your on-premises SQL Server applications are not available on SQL Server 2019 SE.
- Break up your target RDS for SQL Server instance into more than one instance and adopt a microservice-based architecture if you cannot use SQL Server 2019 SE because the number of CPU cores required by your workloads is higher than 24. For example, if you are hosting multiple applications and their corresponding databases on a single SQL Server instance, you will be able to host each application on their own RDS for SQL Server instance. Another scenario will be to use Linked Server between RDS for SQL Server instances to host tightly coupled databases supporting a single application.
- Group multiple smaller RDS for SQL Server instances into one (provided it stays within 24 CPU cores and 128 GB memory) which will allow you to maximize the use of the resources and take advantage of SQL Server SE pricing.
- Choose EE only when SE cannot support your database needs. Examples include: 1) when your workload requires more than 24 CPU cores / 128 GB memory on a single SQL Server instance, 2) has a requirement of setting up read replicas, or 3) an EE feature used by your application cannot be removed.
- Reserved Versus On-Demand Savings
Amazon RDS for SQL Server offers the flexibility of On-Demand Instance pricing, where users can take advantage of hourly pricing with no upfront fees or commitments, or purchase Amazon RDS Reserved Instances (RIs) for a one- or three- year reservation term at a discounted rate compared to On-Demand Instances. You can choose between two payment options when you purchase an Amazon RDS for SQL Server Reserved Instance:
- Partial Upfront RIs – Partial Upfront RIs offer a discount compared to On-Demand prices. You pay for a portion of the Reserved Instance upfront, and then pay for the remainder over the course of the one- or three- year term. This option balances the RI payments between upfront and hourly.
- All Upfront RIs – All Upfront RIs offer the highest discount of the RI payment options. You pay for the entire Reserved Instance term (one or three years) with one upfront payment and get the best effective hourly price compared to running on an On-Demand basis.
To learn more, check out Amazon RDS for SQL Server Pricing. AWS Trusted Advisor can also help to identify RDS instances that are under-utilized.
In addition, qualified customers may receive promotional credits, AWS Investment through AWS Migration Acceleration Program (MAP), or other discounts for Amazon RDS for SQL Server.
Optimizing database costs and driving long-term cost efficiency are critical steps as you run your database workloads in the cloud. Depending on what stage you are in your AWS migration journey, we recommend the following next steps to begin to enjoy the cost optimization benefits with RDS for SQL Server:
- For additional information on cost optimization, check out the optimization checklist and right sizing resources. For more best practices on RDS SQL Server, review this blog and webinar.
- Reach out to your AWS account team or AWS customer support to learn more about the different cost savings options, including OLA requests.
- Schedule a complimentary RDS for SQL Server Immersion Day training with your technical team. The Immersion Day will provide an overview and the fundamental knowledge necessary to help migrate and manage your data on RDS for SQL Server.