Categories
Development

Cloud Blogging

Time for an update on my adventure in cloud hosting my blog. It’s been less than a week, but I think I’ve found a clear winner. (For my purposes, at least.)

Cost

To run my blog, I need a VM to serve it, some disk storage, and a DNS to point my website at it. The total costs in Azure and GCP come out something like this:

AzureGCP
VM$9.50
(with 1GB storage)
$13.80
(with 30GB storage)
Storage$0.00 (included in VM)$0.00 (included in VM)
DNS
(1 zone, 1M queries)
$0.90$0.60
Total Monthly$10.40$14.40

By those numbers, GCP is more expensive. However, both Azure and GCP offer a free tier. Unfortunately, Azure won’t let you use a custom domain for a free-tier application. And since “shawnweaver-blog.azurewebsites.net” just doesn’t roll off the tongue like “blog.shawnweaver.com”, I want to use a custom domain, which means Azure’s $10.40 cost is basically the minimum. GCP, on the other hand, doesn’t have this restriction, making the total cost of the VM and storage $0.00, leaving only the $0.60 for the DNS, which makes GCP the clear winner. (The paid-tier VM from Azure is obviously more powerful, but I don’t need that power, so it’s a moot point.)

In addition, GCP charges for use whereas Azure charges per application. This means that if I have my blog set up in an app service but leave it turned off all month, I still pay the whole $9.50. With GCP, I’d be charged nothing for the VM if it wasn’t running (I’d pay only for the storage). This just seems ridiculous and I’m not sure why Azure works that way.

GCP lets you set budgets and alerts as well, to help make sure you don’t blow your budget by accident. Azure appears to have some cost management features, but they’re currently limited to enterprise agreements (support for other plans is supposed to be coming soon).

On top of all this, GCP also has something called a “sustained use discount” – the longer something runs, the less you pay for it. This seems especially targeted at VMs that run constantly, though it applies to anything. As long as I’m using the free-tier resources, this won’t really matter, but if I ever want to play with some new technologies, it might come in handy.

Usability

Both Azure and GCP offer a lot of the same options, so I’m not going to compare them individually. Instead, I’m going to focus on some of the little things that I’m actually interested in.

Azure seems to have some more power in the UI; I don’t need to drop to a command line to do some common tasks. GCP requires a command line for anything beyond the basics. Both Azure and GCP have a cloud console where you can perform all sorts of actions, and they both have a nice customizable dashboard to monitor whatever you want.

Azure and GCP both have a pretty easily navigable interface, though Azure makes it very easy to just start adding something new; GCP takes an extra click or two. They both have a marketplace full of ready-made resources (like WordPress deployments).

The mobile apps for Azure and GCP are pretty similar, but GCP’s seems more robust. With Azure’s mobile app, you’re limited to checking the status of resources, starting and stopping resources, and using the cloud shell. In GCP’s app you can do all those things, but can also manage those resources much better – you can create disk snapshots and download files from storage, for instance (and I assume the other products have similar control through the app). I also find GCP’s app generally easier to navigate; in general, it just feels a bit more modern.

Summary

I prefer how GCP works and charges for use. It fits my budget and how I plan to use everything – short bursts of use and development instead of running constantly. A few things were easier to set up (like hosting static web pages with a custom URL), and I can expect any tinkering I do to cost a lot less than it would on Azure.

What about AWS?

I looked at their pricing calculator and cringed (it seriously looks like it’s from the 90s). And when I clicked their “Free Website on AWS” example and it showed my estimated monthly cost of $594.97, I was pretty much done (why their “free website” preset uses XL VMs, I don’t know). Feature-wise, it looks like AWS is more-or-less equivalent to Azure and GCP, and their pricing sounds more like GCP than Azure. I was just immediately turned away by their site and cost calculator.

Side note:

Why does everyone have to use their own terms for all this stuff? Azure has “App Services”, GCP has “Compute Engine”, and AWS has “EC2”. They’re all cloud VMs. It’s incredibly annoying trying to figure out what’s what when moving between these services.

Categories
Development

Google Cloud Platform

I decided while I was tinkering with Azure, I’d give Google’s Cloud Platform a test, too, and see which is best for what I need – simple, easy hosting for a low price, with some room to play and grow (for a similarly low price).

Looking over Google’s pricing, it seems like I should be able to host my blog for pennies since it’s so low traffic. The big difference between Azure and GCP seems to be how they charge. Google charges based on use – their billing model indicates that they charge for a minimum of 1 minute, and after that charge per second of use. At worst, it looks like I’d pay $15/month to use my blog VM for the entire month; which is extremely unlikely. Azure, on the other hand, charges for the application, so regardless of how much an application is used, you pay as if it ran the entire month. Regardless, Google provides a nice $300 credit for the first 12 months, so I can figure things out as I go. (Azure provides a $200 credit for the first month, so Google’s credit is much nicer here.)

I’ll say that Google’s management site is a lot prettier than Azure’s (more modern-looking with Google’s Material Design), but basically has all the same stuff. Like Azure, they had a WordPress template I could install and start using right away, and I migrated my content across to it. Setting up a redirect seems to work as well, and unlike Azure, GCP doesn’t appear to have any limitations on what projects can be given a custom domain. If that’s the case, I’ll likely be moving entirely to Google soon, as I have several small projects I’d like to give a custom address under my domain name. On Azure, I’d be paying about $10/month per project – whether that project is running or not – just to be able to give that project a nice URL.

The only issue I’ve had with Azure was with their pricing as I ran my blog and learned more about how they charge. Since they charge per resource (application, database, storage, etc.), you have to pay whether you use it or not. Google, on the other hand, appears to only charge based on use. If your application is bursty like my blog (only needs to run when I’m actually working on it, or when people are reading it), Google seems like the superior platform cost-wise. In addition, Azure forcing me to use a paid-tier just to give my application a nice URL on my domain is difficult to accept. With Google, my basic-tier VM has an IP address I can set up with an A record and everything just works.

It looks like Google has just as much capacity to scale as well. I can upgrade or downgrade my blog VM by stopping it and changing the machine type.

My assumption is it has to do with how the “clouds” are handled between Azure and GCP. With Azure, it seems like you’re dedicating specific hardware resources to an application (even in their “shared” tiers), while with GCP you’re making use of a big “cloud” of vCPUs and memory. If that’s the case, it seems like GCP is more like how I’d expect “cloud” hardware to work. It makes Azure feel a bit old-school… Though this is still all automatic hardware management and virtualization distributed across multiple regions, so they’re both very state-of-the-art in that regard.

I’ll post again once I’ve had more chance to compare the costs between GCP and Azure. Right now, GCP seems like it’s going to be the winner. I’ve only been with Azure a few days, but I’ve already racked up $12 in costs by running application services I wasn’t using (under the false impression that I wouldn’t pay if I wasn’t using them), and using a MySQL database resource for my blog (which could have been run in the application service for no extra charge). It’s only been a day with GCP, but my total cost so far is 20 cents. If the trend continues, I’m still only looking at maybe $6 with GCP, which would be on the high end since I’m spending a lot more time on my blog with all this tinkering I’m doing…

Categories
Development

Moving to Azure

I’ve been thinking about moving my website to Azure for some time now, and when my web hosting provider decided to move me to a higher-priced plan without telling me, I decided it was a good time to make the switch. Moving my blog here has been incredibly easy, and Azure opens up a lot of opportunities for development.

Even as a developer, Azure can be a bit intimidating. Azure is an incredibly powerful platform; you can run VMs, run bits of code at large scale and blazing speeds, you can create triggers to, say, process files when they’re uploaded. That’s really only scratching the surface, but my point is there is a lot you can do. Microsoft has packed all that in a relatively easy to use interface, but it can still be difficult to navigate at first simply because there’s so much.

Fortunately, there’s a WordPress app service template that you can set up in a few clicks. Within seconds, you have a fresh WordPress install. Moving my content to the new site was easy because WordPress is awesome and has a fantastic backup and restore tool built-in.

Getting my DNS settings configured properly took a little longer, but I managed to fumble through it. After I created a DNS zone in Azure and switched to their DNS servers, I was able to configure all my entries within Azure, so I don’t even have to go to my domain provider to fiddle with them anymore.

All this power and the possibilities don’t exactly come cheap. My previous hosting plan was about $10/month (which they were raising to $12/month), and hosting just my blog on a shared plan (so I can use my domain name) will cost about $9.50/month, not including the database (which I can probably move to save some additional money). There’s a free tier you can use for development and testing, but you can’t use a custom domain to access the application (you have to use your azurewebsites.net address), so it’s not the best option if you’re trying to host something more publicly available.

Overall I’m satisfied with this initial step into Azure. The chance to work on some more interesting projects will be fun, and the ability to easily scale if I ever develop something successful is nice. I’ll try Azure for at least a few months and see if it’s the right place for me.