Last week I blogged about some of the basic pricing differences between Amazon AWS and Microsoft’s Windows Azure (http://wblo.gs/da7) and concluded that while there was a price difference, it was important to review the benefits and gaps of each platform to make the right decision. In that comparison, using the assumptions documented on the blog post, Windows Azure was a more affordable option thanks to its Windows Azure SQL Database service offering.
In this blog post, I will compare what it would take to perform the same project on a virtualized environment (on your own hardware) and hosted in a collocation environment (private hosting). As with the previous cost comparison blog, a few assumptions are necessary to fix certain parameters that could otherwise significantly impact the results.
- The project requires new licenses
- The project needs to achieve high availability up to 99.95%
- The project does not need disaster recovery
- Data center quality hardware is used for this project using similar specifications than those used in the cloud estimates
- The project requires new hardware (servers) but will run on an existing infrastructure (routers, firewalls…)
- The project will use an existing network storage (SAN) for the database (for database clustering)
- The same physical machine will host both the database server and the IIS virtual machines
- Use virtualization with Windows Server 2012
- Maintenance cost is about 20% per year on top of hardware and software costs
Private Hosting Assumptions:
- Use simpler VMs for web hosting and dedicated servers for the database
- Assume clustering VMs is possible for SQL Server
The project specifications, as provided in the previous blog post, are as follows:
- SQL Server database, Enterprise Edition, 10GB of storage, 1CPU, 1 million requests, 10GB per month of data tx
- 10 Websites running ASP.NET, 1CPU, 1TB of data tx out to Internet per month
- 2 Middle-tier Servers running .NET, 2CPUs
- Reporting Services - 10 reports run daily, 1GB of data out to Internet per month
On-Premise Self Hosted Costs
Let’s go shopping! First we need to find the hardware that makes sense for this project. Because I want to virtualize my solution I will purchase a server with two 8-cores (the project requires about 16 cores). I selected two HP ProLiant DL360p Gen8, rack mountable 1U 1-way and 2 8-core CPUs (Xeon E5-2650), 32GB RAM and a gigabit LAN. On HP.com this would amount to about $8,500 in total server cost including attached disk storage sufficient for our needs (500GB) although the database will be stored on an existing network storage (SAN).
If you had everything else in our infrastructure, this would be it. No need for additional hardware or software. However, if you were building this environment from scratch you may need to purchase additional items, such as a rack, a firewall, a load balancer, power, cooling and so forth. To simply the cost estimates we are assuming that we won’t need this hardware because we already have it.
From a licensing standpoint we need to purchase SQL Server Enterprise Edition and Windows Server 2012 Standard Edition in order to virtualize. SQL Server Enterprise Edition costs about $6,500 per core (with a purchase requirement minimum of 4 cores per processor), so $26,000 in all. Note however that we need to purchase a second license in order to obtain a clustered environment for Active Always-On high availability since this is a requirement; so the SQL Server licenses come up to $52,000. Pricing information for SQL Server can be found here: http://www.microsoft.com/en-us/sqlserver/editions/2012-editions/enterprise.aspx. Windows Server 2012 Standard edition costs about $880 for every 2 virtual machine, so we would need to purchase a total of 8 standard edition licenses for our 16 virtual machines, or about $7,000. Information about Windows Server 2012 pricing can be found here: http://www.microsoft.com/en-us/server-cloud/windows-server/buy.aspx.
So far, we will need a budget of about $67,500 including hardware, software licenses and storage. In addition to this cost, we are adding about 20% of support costs yearly to account for general maintenance; this accounts for hardware support and monitoring. You will see this cost reflected in the pricing summary.
Note however that our configuration, although pretty robust, does not have a lot of redundancy, outside of the database server itself. Because all our virtual machines live on the same underlying host (the hardware itself) a physical failure would affect our system as a whole. For high availability, we need to include a second server, load balanced with the first one, and distribute the virtual machines equally across the two servers. In this scenario, if one of the servers failed completely, all the virtual machines on that server would fail over to the other one, and the system would continue to function. To simplify the cost structure we will assume that adding this level of redundancy, that will get us closer to the type of availability available with cloud providers, we will need to add one more server and double our Windows licenses (we keeping the same SQL Server licenses because we are placing the active mirror on the second server).
The summary of the estimated costs involved in running an on-premise highly available solution for our project will be a little less than $100,000 as shown below. Note that these are estimated costs and assume that you already have an infrastructure in place with enough capacity to accommodate the new hardware. I am also assuming that you have a storage unit available (a Storage Attached Network or SAN) on which the database can be stored so that you can run a cluster. If these assumptions do not hold true, you can expect significantly higher costs.
Private Hosting Costs
If instead you were to use a hosting provider instead of purchasing the hardware yourself, what would be different?
The first difference is that you would incur a monthly cost; so you would not need to purchase the hardware itself nor would you need to purchase the Windows Server operating system. You would however still need to purchase SQL Server Enterprise Edition. You would also probably avoid the extra 20% maintenance discussed previously because all the activities related to this item are performed by the hosting provider.
With the private hosting option it is more difficult to estimate the costs of high availability. This estimate does not include greater availability than what is offered by the vendor for IIS servers. Generally speaking it may be easier to achieve high availability with a hosting provider than on-premise, but this depends partially on the maturity of the hosting provider and the service options available. So keep in mind that to achiever a similar availability than with the other options additional costs may apply.
A quick estimate on 1and1.com (http://1and1.com) with 16 CPUs (14 Virtual Server XL and 2 Dedicated Standard Applications L) runs at about $10,000 per year. It is difficult to obtain a quote online that matches closely the hardware specifications set earlier; it may be possible to reduce the hosting costs for the web servers, but the SQL Server configuration may be more costly because we need a shared storage option to run the cluster. So consider this monthly cost as a rough estimate to give you a sense of the costs involved when renting servers with a private hosting provider.
The first thing that may not be obvious is that purchasing hardware and software takes time, effort and requires expert resources to configure. So once we have the hardware, we still need to hire consultants (or involve the engineering team) to configure the servers and install the software, which could cost a few thousands of dollars extra. From a go to market standpoint, it could take weeks before the infrastructure is ready to be used on the actual project (with on-premise virtualization), possibly delaying important initiatives. And from a capital standpoint, it would take close to $99,000 to just get started with on-premise virtualization and about $50,000 with dedicated hosting, which ties up capital that could otherwise be used on other initiatives.
You may also need to build a development environment, a test environment and a production environment, which could further increase the total project cost. Although you wouldn’t need all the licenses and the hardware that is needed for production, building a development environment and a test environment can cost thousands of dollars.
Although it is important to compare costs, you also need to incorporate certain decisions that could discard public cloud adoption, such as the sensitivity of the data itself, compliance issues and many other aspects that would prevent a move to the cloud.
3-Year Cost Comparison
So let’s put all these numbers side by side with the cloud costs previously calculated for the same project, over a three-year period, assuming no hardware or software upgrade needs to take place. In the previous blog, we identified that the total monthly cost of running the environment was $1,491 per month for Windows Azure and $1,832 per month for Amazon.
In summary a three-year cost analysis for this environment would look like the following:
Keep in mind that these costs can vary significantly based on your currently licensing agreements and available hardware. If you currently have an enterprise license agreement for example, the cost of your virtualized environment would probably be significantly lower. Here are the major assumptions we added related to our on-premise installation:
- No additional upgrades are needed within the 3-year window
- An existing network storage exists for the database or is provided by the hosting provider
- Your data center or hosting provider has enough space to accommodate the new hardware
- The necessary network components are already in place (firewalls, load-balancers, rack, routers…)
As shown in this fictitious project, running a highly available solution on an internal datacenter, or hosted in at a private hosting provider, requires a higher financial commitment, both at the initiation of the project and over a three-year window. With Amazon and Windows Azure this project would cost about half of the total cost compared to a self-hosted virtualized environment and would provide a significantly higher degree of freedom to upgrade, enhance or even terminate the project on demand. These benefits are not obvious when looking at costs alone only but are important enough to mention.
The table below attempts to summarize some of the most important factors that came into focus for this project. Note that depending on the project requirements the table below would display different results, so this is not an attempt to generalize a complex decision making process, but rather to give you a summary of what was discussed so far. In particular, the 99.95% availability is easiest to achieve with cloud providers because it is “out of the box”. However if you needed to achieve 99.99% or higher, it may be significantly more difficult to achieve with cloud providers than with the other options.
As discussed previously, although hosting your own virtualized environment (on-premise or with a private hosting provider) is more expensive it can provide other benefits that are not easy to achieve with cloud providers, such as systems that have compliance requirements (PCI, HIPAA) and systems with high throughput requirements. Nevertheless cloud providers are improving on both fronts progressively. Some cloud providers have provisions for compliance initiatives and high throughput needs can sometimes be mitigated with higher scalability provisions in the cloud.
About Herve Roggero
Herve Roggero, Windows Azure MVP in South Florida, works for AAJ Technologies (http://www.aajtech.com) and is the founder of Blue Syntax Consulting (http://www.bluesyntax.net). Herve's experience includes software development, architecture, database administration and senior management with both global corporations and startup companies. Herve holds multiple certifications, including an MCDBA, MCSE, MCSD. He also holds a Master's degree in Business Administration from Indiana University. Herve is the co-author of "PRO SQL Azure" and “PRO SQL Server 2012 Practices” from Apress and runs the Azure Florida Association (on LinkedIn: http://www.linkedin.com/groups?gid=4177626).