Experiment moving BlogEngine.NET to Azure

For a while it has seemed like a good idea to attempt to move this Blog into Azure, Microsoft’s cloud platform.

Here is what was discovered:

Pricing

Risk management: This experiment was performed using a trial account to mitigate any risk in terms of cost. It was also performed well before the existing hosting ran out, to make it possible to revert back again.

For reference, time of writing is August 2015. Existing .NET host (Discount ASP.NET) $135 per year for domain name managing and website hosting, including email account handling for the domain. You can get much cheaper hosting than this (even free if I were to use a shared blogging platform), but I trust Discount ASP.NET and they keep up with the latest and greatest .NET releases and features.

Azure websites comes in different levels, a minimum of “Shared” is required to support custom domain names, cost ~£5.91/mo

“Shared plan” in Azure is described as

The Shared (preview) plan allows you to develop and test in an environment with features such as SSL, domain names, and more before production and is suitable for low traffic sites.

To be fair on Azure in documentation Azure indicate the Shared plan being for testing and “Basic” plan is the start of the production plans, however the Basic plan jumps up to min of $35 per month, too expensive.

Azure Discount ASP.NET
~£5.91 per month (Shared)
~£22.70 per month for (1st tier Basic Plan)
$135 per year
£7.30 per month
Custom domain name management included
Includes handling email for domain

So from the outset this does not make any sense financially, especially considering the domain name registration management and email would have to be added to Azure basic costs but as its a free trial lets carry on and ignore that fact.

Workplace MSDN subscriptions include a chunk of Azure credit, some may find this useful, but as this is for a personal blog, and that credit is used for work projects, it was not an option in this instance. [more]

Getting it running

It took three quarters of an hour to download the site from the current provider, then web deploy it to an Azure website from Visual Studio, including setting up the account, authorising the custom domain name and pointing the domain at Azure. This was an impressive experience, although an existing working knowledge of Azure helped this process go quickly.

After half an hour the site was served from Azure as DNS had replicated, and the Azure instance started taking the load.

12 Hours in warning

image

After checking the Azure dashboard and performance graphs twelve hours in, the issue started, A red warning note at the top of the dashboard, warning that the instance was going over on its memory allocation. I’m guessing the BlogEngine.NET blogging platform was not written with memory optimisation as a high priority. Thus without doing some work on the application (possibly a lot of work), things were not going to improve.

24 Hours in warning

image

The warning about the memory usage persisted for the whole twenty four hours. The site gets a lot of indexing by search engines and attention from comment spam bots, although nothing other sites don’t also get. This was a holiday weekend load, that is much less than when developers are at work and the server was exceeding its limits, not good!

image

Suspended

If a site goes over the limits for the plan, Azure ruthlessly suspends the site for an hour. From Googling the memory issue, evidence was there of others caught out with this and their sites suffering down time. This is something to be avoided, the decision was made to revert back to the original host.

Back home again

Time to revert, the DNS was pointed back and this site left the Azure platform for now, experiment over.

Next steps

The costs of running on Azure, due to pressure from Amazon Web Services (AWS), who’s company objectives include lowering prices, must surely continue to fall. Next to dig out that free voucher for AWS and try them out.

Conclusions

The traditional hosts still over very good value for money for basic web hosting requirements. Azure is very competent platform that offers lots of complex facilities if you pay for them and need them. Azure has hard constraints on the services it provides (understandable to manage resources), but beware breaching those limits as the resource may be switched off. There are monitoring alerts and admin features in Azure to alert for resource limit breaches, but it was simply something one did not have to worry about in the traditional hosting world.

For a demanding application or one designed to take advantage of Azure, it is possible to see the benefits of Azure. However for a personal Blog, none of this is relevant, instead price, reliability, ease of use are the important factors. The fact that “Basic” plan seems it is minimum for a production public facing site, makes the Azure hosting platform more expensive than traditional hosts, unless economy of scale can be applied by running multiple sites –unlikely for personal site.
Currently for a single BlogEngine.NET application, using Azure does not make economic sense over traditional hosting.

Please feel free to comment if you think I missed a trick!