So a while ago I was researching available cloud platforms as an infrastructure platform for a little skunkworks project of ours, and decided to concentrate on the bigger players that I already did know about by the reputation – but not so much in nitty-gritty details. Namely these two players were Microsoft’s Azure and Amazon’s EC2 or (AWS).
While the both platforms could satisfy the technical aspect of the project, at least if willing to choose the technology stack that is most suited for each like .NET based languages for Azure and likely something else for AWS, the overall pricing structure of cloud infrastructure is taxing for a project that a) does not have an established budget per se and b) is really a proof of concept at this point.
When looking at the general costs for both, I have to admit that there’s very clear and public pricing information available as well as pricing calculators for both of the services. Which is good, since you can easily calculate or model different build-out scenarios. What’s of course little bit more difficult to know, at least in beforehand in a project like ours, is what components you would need exactly. Cloud infrastructures [in general] tend to be composed of not only individual (virtual) machines but also all sort of background services like databases, storage, message queuing services etc. and all of these are priced separately.
I’m sure that when you have a very comprehensive technical specs fleshed out for your cloud-based app, it’s easier to see what’s likely needed but even then I think the thing that will be left in the dark is how your solution will scale out or up in the upcoming times. It’s impossible to predict how much users you end up having, and the ‘net is full of stories about successfull web-based services (like FB, Hotmail etc.) that have had the need to change the architecture and underlying assumptions when the user-base growed significantly.
And there’s of course the main strong point of big Cloud -vendors and platforms, like AWS and Azure mentioned: they can scale out dynamically depending on your present needs. But when you scale out, the costs will scale out quite much as well.
Compare this to “traditional” rent-a-VM type of hosting, which, yes, in itself fits the definition of cloud-computing (because it’s hosted, and somewhere behind the Internet), whereby you are actually paying per machine per month with fixed service-set for your VM and not some weird dynamically calculated on-going costs. I argue that this kind of hosting can actually be cheaper in many cases than hosting over real cloud infrastructure, because when you really start playing with the cost-calculator the price per month will go up significantly when adding more disk-space, databases, online activity time etc. to the mix.
This is at least what I found out when looking at the pricing tables of both Azure and AWS. Fortunately when you are starting out there are evaluation or testing options available for both solutions, which makes it very lucrative to at least test your solution on those platforms instead of going out and renting traditional VPS (which incurs upfront costs immediately). And the question what’s going to be the ultimate deployment target will be left as a decision for a later time.
As for signing up for Azure and testing the project over there, I know from the past that MSDN subscription contains some amount of free usage of Azure, but what I also understood from the process is that when the free usage quota is full (CPU time or something like that), MS starts to charge your credit card for amount going over the free usage. Since I didn’t wish to have unexpected extra charges coming to my way for simply trying out something on the cloud, Azure was out from equation at least in this phase. And I simply needed to have something “out there” where the project can be tested on, running certain type of application locally don’t really serve the demonstrative purposes.
Another contributing factor for forgoing Azure for now was that while you can theoretically run any custom workload in Azure VM (they introduced actual VMs to Azure at some point, they weren’t available in the initial iteration), the whole system is obviously very much geared toward creating cloud-applications in .NET language and associated technologies. While .NET is evidently the technological base for Gridmetric’s current products – and for a great productivity enhancing reasons, I must add - building web application is something that in my opinion needs to be less dependant on one single vendor’s stack.
I was already worried that Amazon’s AWS (or EC2 virtual machines) would prove to be as limited for (long-haul) testing purposes as Azure was, I headed to AWS pages to see what options I would have for having single cloud VM without too much extra services (as those would not be needed at this point) and without too much CPU cycle counting. Imagine my surprise when I found out that AWS actually has a free usage tier!
This free tier contains micro-instance Linux (Amazon’s own distro) VM, which is rather limited in capacity (CPU, memory or disk), but it is sufficient for testing out basic web applications. And since you have direct SSH access to the machine you are able to install pretty much any frameworks or other components your application requires. The best part, however, is that the plan includes 750 hours of usage per month for the instance for the duration of one year, which means enough hours for continuous 24/7 usage, so there’s not going to be situation whereby leaving VM running all the time in Amazon’s cloud would trip any billing mechnism for additional CPU time or extra costs.
From what I could gather, this free usage tier -offer could theoretically be discontinued without notice (Amazon does not guarantee it’s going to be offered forever), but so far it has been available over a year now already so I suspect it isn’t going away any time soon. And t’s actually very good marketing move by Amazon to offer such an option, because it makes it easy to test and develop your solution to be cloud-hosted without any extra costs for hosting. And if within year you don’t anything ready so that you could rent for-cost hosting, then please consider yourself failed in your project..!
You can sign up for the offer from http://aws.amazon.com/free/ (only if you are new AWS customer, I presume) . I did.