We have all been there. A small project or website we needed hosted with antiquate bandwidth, reliable server and server backup built-in. There might only be one or two people unique visitors/request performed each hour or even a day. This market has been served exclusive by shared hosting providers for a long time. The problem, your software is a second rate citizen.
Man, This Place is Crowded.
This type of requirement isn’t unique. This niche market spawned the shared hosting provider. These providers need to keep costs low in order to compete. Doing so requires the providers “share” one server with as many accounts as possible. During peak times you can expect your instance to slowwww down.
Share hosting doesn’t have the reliability you would expect from a hosting provider. It is provided “as is”. Although there uptime and response times is not guaranteed, these providers seem to do a good job with support tickets and questions from their low revenue customers. The servers do go down without warning or explanation but for a $5-$10 per month fee, I wouldn’t expect too much.
Can I Get More Control Here
I have used many different shared hosting providers. One common theme is low cost web application servers use some kind of web interface like cPanel, Plesk or DirectAdmin. This is to manage many user’s authentication, roles and access to one or a subset of servers.
You will hear a lot of talk about an application’s trust level requirements. The level of security trust an application needs make a difference if it is going to run in a share hosted environment. In a nutshell, hosted providers only allow a maximum trust level of Medium.
Why? Well, you are sharing the server right? The server’s running your code is also running everyone else’s applications. They what to make sure your application cannot access resources outside its own file system/domain, restricting your ability to impact other using the same server.
So medium trust should be enough, right? Most cases, Yes. Applications, built correctly shouldn’t need access to the OS’s file systems. So, for these type of applications, FTP deployment and web-based portals for managing your application should be sufficient.
There any many projects that I have worked on where I really need access to entire Windows OS. Many times those needs are for small items like setup a windows scheduler tasks or installing a windows service. So for these needs I initial setup a small windows server VM in my home office using my ISP for a data connection (which the upload speeds are slow). But this worked for demoing and small websites that, not surprisingly, ran faster then they did on the shared hosting server.
Getting More Without Paying (A lot) More
I recently revisited Azure pricing cloud offerings since a over a year ago. A small Website instance would run about $90 a month. It is pretty steep for a PaaS website in the Cloud for very small websites or prototyping. Azure pricing was too rich for my blood, especially since I didn’t have anything that generated revenue that would justify it.
Fast forward to April of 2013. Microsoft Announced to would change its Azure pricing compete directly with Amazon’s Web Services. Microsoft started offering VM (Extra Small instances) for only starting under $15 month (Just to note, this doesn’t include variable cost like bandwidth usage, storage, disk IO).
Too Good To Be True?
Simply put, No. Speaking just to the IaaS and Azure pricing VM offering you can get a VM starting out at less than $15. This includes, but not limited to:
- Windows or Linux VM: You can get your flavor of VM Linux, Windows Server 2008 or Windows 2012.
- 5 GB outbound Data for free: Bandwidth is cheap. If you are like me I don’t plan on using that much data so I 5GB will be plenty.
- Licensing is included: No worries when it comes to buying a license for your server. It is included in your instance cost.
- Remote Desktop or Powershell Access: Remote dekstop into our VM or manage it using powershell scripts.
- A Slice of a CPU: The OS lists the CPU as a AMD Opteron 4171 HE 2.10 GHz Processor. They indicate that the extra small instance is a shared CPU so it may run slower runing peak times. If you want your own CPU, upgrading one notch up to a small instance will give you your own CPU.
- 768 MB RAM: This is hardly anything in terms of server horsepower. This is probably more resources allocated to your account that a shared hosting provider would give you. Again, upgrading to a small instance will get you 1.75 GB of RAM total.
I am dropping my old fashion shared hosting provider in favor of having my very own (very, very small) VM. The hosting provider is only about $10 a month. I am more than willing to pay the extra $5 a month for a better service with more control. I can ratchet up the CPU/Memory at anytime which is perfect. In the mean time this is all I need. If I need more power than it is a good problem to have and it is only a couple clicks away.
Scott Hanselman put together a very nice article removing all of the fluff around the pricing. I would recommend reading it if you want to understand what you can get with a extra small VM instance with Azure.