My personal website/blog/portfolio/resume/rambling point has been through a number of changes over the years. Once a year I tend to reskin it, but occasionally I go on a search for the best place to host it.
I started off with a free PHP host then moved to 123-reg for a bit to take advantage of the really cheap hosting they had on over at the time.
I out grew that at some point during 2014 when I started improving the process I used to develop and needed a more features from my hosting and settled with Smarter ASP.Net. I’m still using them for a few things, and they’re still great for the Umbraco sites that I host.
Recently though, I moved this site to Azure. I started out by moving my Umbraco site to an A Series virtual machine which I intended to use for a few other things as well. I had SQL Server Express running on the same VM which had a real impact on performance, so I looked into alternatives.
Hosting SQL in Azure on the scale that I am running (very small) is quite expensive. Also, I was interested in exploring NoSQL databases which turned out to be even more expensive on Azure but I managed to stumble upon, MongoLab who offer a 500MB Mongo DB instance, hosted in an Azure/AWS datacenter of your choice for absolutely nothing!
With a more than economical persistence solution sorted, I could start to look into the web server side. An obvious choice was to build up a new clean VM in Azure and just install IIS, but I figured I could save even more money and save time and effort configuring things by using an App Service. The site now runs off a Shared instance but I hope you’ll agree, the performance is quite pallitable. The only negative I have found is the speed at which it rebuilds the app domain after a deployment or a shutdown because of inactivity. Not a lot that can be done about the former without doing some deployment slot magic which would put the costs way out my reach, but the later is solved by making sure the site is never inactive by pinging it with an Application Insights availability test, which I have set up to run every 5 minutes, just checking for a 200 response from the app.
So that’s my production set up; I have a test environment that runs on a continuous delivery cycle deployed to with Release Management as described here. The setup is identical apart from it uses a Free App Service Environment. I then have a staging environment which is again a clone of production but with a Free App Service instance and requires an approval for deployment.
I then needed to actually develop the site but I’ll go through that another time.