The AWS Free Tier
Experimenting with SQL Server in the Amazon Cloud (also known as Amazon Web Services or AWS for short) is easy and it's free for the first 12 months. All it takes initially is logging into the AWS console and supplying your Amazon credentials. If you're one of the 42 people with Internet access that don't have an Amazon login you'll be able to set one up easily.
Once connected you can make use of the AWS Free Tier for the first 12 months. What does that "buy" you from a SQL Server perspective? There are two key products to look at when talking about SQL Server in AWS: RDS and EC2.
RDS, short for "Relational Database Service" is the AWS product that allows for deploying SQL instances without the overhead of deploying an entire dedicated virtual server. You have control over SQL Server version (currently only SQL Server 2008R2 or 2012) and edition (Web, Standard or Enterprise Editions) as well as a packaged instance product type that bundles vCPU, RAM and IO performance ranges into units that AWS refers to as the DB Instance Class. Currently there are 16 different DB Instance Classes offered for RDS that range from the laughably miniscule db.t2.small (1 vCPU and 2GB of RAM) to the impressive db.m2.4xlarge (8 vCPU and 68GB of RAM with enhanced IOPS and network performance). You also have the ability to mirror your RDS instance across Availability Zones (defined regions consisting of multiple data centers geographically) at an additional charge of course.
Speaking of charges there is that elephant in the room whenever we talk about SQL Server: licensing. When it comes to SQL Server licensing in AWS you can either accept a rate that includes the licensing charges or you can "B.Y.O.L." (Bring Your Own License) at a lower assessed rate. It's as simple as that. You also have control over setting instance-level configuration options, maintenance windows and backup windows and retention policies.
In regards to the AWS Free Tier offerings you are currently limited to the following when it comes to RDS:
- 750 Hours per month of single-AZ Micro DB Instance usage
- 20 GB of DB Storage: any combination of General Purpose (SSD) or Magnetic
- 20 GB for Backups (with RDS Magnetic storage; I/Os on General Purpose [SSD] are not seperately billed)
- 10,000,000 I/Os
RDS does come in other flavors besides Microsoft SQL Sever too. You have the option to deploy RDS instances of Oracle, MySQL and PostgreSQL as well. All with the same defined AWS Free Tier limits if you don't want to go down the paid route right away.
EC2, or Amazon Elastic Compute Cloud (Amazon EC2) is a web product that provides resizable compute capacity in the cloud. In short it's Virtualized servers hosted in AWS. The process for launching an instance of EC2 is quite simple:
- Select your Amazon Machine Image (AMI) which is the packaged operating system. Current offerings for Microsoft Windows EC2 deployments are limited to Server 2012R2, 2012, 2008R2 and 2008. However, in addition to Windows EC2 VMs you can also deploy Windows, Unix, Linux or even Ubuntu VMs. Should you wish to deploy an EC2 instance with one of the offered versions of Microsoft SQL Server pre-packaged Amazon Machine Images (AMIs) already exist with bundled SQL Server integrated.
- Determine which Instance Type you want to deploy. Whereas the AMI is your O/S and optional SQL Server deployment selection, an instance type is nearly-synonymous with an RDS Instance Class explained earlier but with broader and beefier options and bundled storage options rather than an additional option for storage as is the case with RDS deployments. An Instance Type is a pre-defined package of vCPU, RAM, storage and network performance that you select up-front as you're launching your EC2 instance.
- When deploying an EC2 instance you have the option to join your own Virtual Private Cloud (VPC) and configure all the necessary security to do so.
- In finishing off your deployment in EC2 you set your default shutdown behavior, monitoring via AWS's CloudWatch product, security groups and decide if you want to deploy on multi-tenant or dedicated hardware. Everything has a price so keep that in mind in your decisions.
Once created and deployed if you chose not to deploy a bundled SQL instance you can stage SQL Server instances as you would on any on-premisis ("Earthed") VM. At that point you are deploying your own licensed SQL products in the AWS cloud without limits to only those versions supported through RDS. EC2 instances also provide you have more flexibility around maintenance and database backups over RDS and backups can be configured to be off-loaded to one of two slower archive tiers: S3 or Glacier (each slower and cheaper than the next.) Of course you now take on the maintenance for the entire O/S underlaying the EC2 guest instance you just deployed though.
Just as is the case with RDS there are some limitations to use of EC2 in the AWS Free Tier:
- 750 hours per month of Linux, RHEL, or SLES t2.micro instance usage
- 750 hours per month of Windows t2.micro instance usage
- Run one instance at a time or multiple instances simultaneously
It's Easy to Get Started with AWS But Be Careful
Whether it's AWS, Azure or any other Cloud-based compute offering be careful with what you leave running. Cloud providers make good money off of customers who fail to shutdown their instances, play outside the bounds of the Free Tier, or oversize their deployments. Keeping those items in check and paying attention to consumption and retention of database backups is crucial. AWS provides extremely detailed and current documentation for all their products and does likewise with their billing mechanisms. The AWS billing console provides you with insight into how your charges are accumulating and even gives you the ability to price out what your earthed systems cost you compared to the AWS offering equivalents.
Cloud offering have the flexibility of changing at a moment's notice. For more information on AWS's RDS and EC2 current offerings and all the other AWS Free Tier products visit http://aws.amazon.com/free/.