AWS vs Azure for Sitecore
I was reading a post recently about Sitecore and AWS. The post was from the perspective of performance testing, but I am a hardware nut at heart, have dealt with both platforms for Sitecore and other IaaS required environments, and wanted to examine those details first.
Sitecore can be installed as PaaS, but that is not taken into account in this post. This is just dealing with normal virtual machines.
The first thing to look at is Azure. Azure has 4 levels of servers: Basic, Standard, D-Series and Dv2 Series.
Basic server are just that, basic. You can't perform autoscaling or load balancing. This would be useful for a single server farm in an environment that has very little traffic.
Standard increases the performance within the realm of affordable cloud servers. These servers can be load balanced, they have RAM amounts that more closely match what is popular in the servers world. These are good servers, still in the affordable range. But these servers are not up to spec of the modern server.
D-Series servers are an up to date Xeon spec server available from from Azure. The servers have spinning disk OS drives and DAS SSD storage available to each server as a volatile temp storage drive. If you are seriously considering building your infrastructure for Sitecore in Azure, this is the server you should start with.
Dv2-Series server are the latest and greatest server from Azure. The CPUs in this server are at least Xeon E5-2673 v3 (Haswell) processors. Similar to D series, they have spinning disk OS drives and DAS SSD for volatile temporary storage.
There are more servers above these, but they are designed for specific reasons like double the ram, high speed networking and advanced computing. I don't think Sitecore can affordably fit into any of these custom servers. So we will focus on the standard servers available from the Azure platform.
Microsoft does not offer a prepaid plan for their servers. It's pay as you go, which is both good and bad. Good that if I only need it 12 hours a day, I save money. But if I commit to Microsoft for 1 or 3 years, I should get a discount.
Below is grid of the available basic servers that fit into what we would consider putting Sitecore on. We show the number of cores, the RAM, the cost per hour and month, the cost per core, and the cost per GB of RAM. There is no way to calculate the actual cost of the cores or the actual cost of the RAM, so we just divide the cores and RAM by the monthly total to get a number that we can calculate against. AWS adds 1 more GB of RAM to their servers over Azure, so their numbers on RAM look better. But hey, more is more!
It is convenient that Microsoft's math works out so nicely. As you can see, the cost per core and the cost per RAM GB are exactly the same as you scale up. For the basic level, it is $56.21 per core per month and $32.12 for each GB of RAM. Very affordable, but the lowest level of server offered.
Standard server ups the game a bit, and increases the price per core to $65.70 and $37.54 per GB of RAM.
Again, this is the server series you should choose if you are thinking of moving your production environments to Azure. It is a modern server with the proper specs for Sitecore. The price per core is $102.20 while the price per GB of RAM is $29.20.
This is the latest and great server. You get more ticks from your CPU and faster access to RAM. The servers cost more, but you get more from it. Instead of three D series servers for your farm, you may be able to get away with two Dv2 series servers. The price per core is $133.52 per month. The RAM is 32.43 per GB per month.
Now off to AWS EC2 we go! So exciting. Amazon does things in a different way than Azure. First, they don't really offer a series of servers. They do have the T series and M series, but no one would put production gear on a T series server. The T series give you a certain amount of time you are allowed to use the CPU. Go over, and they limit your CPU speed severely. You can find the math here.
So we will go with the idea that M series is the real server and like Azure, AWS offers servers with double the cores, high speed networking, and double the RAM.
Amazon is also pushing out the latest and greatest servers to their data centers. So when a CPU becomes available and stable, Amazon will push it out and increment the series number. This means that the M4 will become the M5. It happens one data center at a time, so you will see the new servers in the us-east-1a datacenter, and then see it grow into other data centers.
There is another key difference: Amazon does not use DAS. All their drives are SAN based drives. When you create a server, you pick how big you want your disk, how fast you want it (magnetic, SSD, SSD optimized) and how many of them you want. This means that unlike Azure, your OS drives are SSD as well as your data drives.
This works out to be that the price per core is ~$89.70 and the price per GB of RAM is ~$22.42 (remember that with AWS you get a little more RAM per machine). This price is somewhere in between the D series and the standard series servers on AWS. Not bad.
Now lets finish this off, because AWS offers 1 more thing, reserved servers. This is where you pay for a server 1 or 3 years ahead of time. You can also pay for it all up front, partial, or not at all. The 1 year reserved pricing is $58.00 a month per core and ~$14.37 per GB of RAM. That makes AWS cost as little as an Azure basic server, for a modern Xeon-based server.
How about a 3 year commitment?
~$44.60 per core. ~$11.17 per GB of RAM. That is cheaper than the cheapest server Microsoft offers.
Next, performance testing these machines!