In something that has seemingly become an annual holiday tradition, I recently moved this WordPress site to a new hosting provider. This time I left was evicted from Oracle. I am always on the hunt for the absolute bargain option when it comes to hosting… but I also want my website to be decently performant. It was exactly that on the Oracle Cloud until they unexpectedly closed my account.

Unfortunately the Oracle Cloud “Free Forever Tier” comes with some caveats (buyer freeloader beware).

How You Could Suddenly Find Yourself Without a Digital Home If You Are Using Oracle’s Free Services:

  • If you are on the Oracle “Free Forever” tier, the specific VM type you host your application on may become “not free” at any point.
  • Rather than giving you any heads up, Oracle will just deactivate your login such that you have no way to retrieve your data.
  • Oracle, to both your surprise -and- delight, has no avenues for customer support (granted, it’s free…).
  • Bonus Round: Search long enough and you may find an Oracle 1-800 support number -> which oddly goes to Oracle catering services. Yes, this is the “correct” Oracle. No, they cannot help with Oracle Cloud Infrastructure but they are very nice people.
  • Just to be abundantly clear, no Terms of Service have been violated. You may even be willing to move to some paid services. Both of these points are irrelevant.

In my case, my website backups were also on Oracle. Their policy/system is such that a user who finds themselves in this situation has no way to login and there is nobody at Oracle that can fix this. No matter how much kind and professional patience you have, the bureaucracy cannot be penetrated. I have fully tested and validated this. Even though my backups were technically on “free forever” block storage… and may even still be sitting there today, they are completely inaccessible. Mind you, I am fully aware I have zero reason for complaining when I had exactly $0.00 invested, and honestly, even if a company calls a product “free forever” – one cannot expect great things. Also, Larry Ellison… no additional commentary needed.

Moving on to Microsoft
Luckily I had a couple of local backup copies of my web code and database that weren’t too old. I initially spent a week or so looking around at cheap shared hosting, tried a few, and hated them all. Then it dawned on me, I am an Azure architect, I should be able to figure out how to host this site on the cheap on Microsoft’s platform and here we are today. In the course of standing everything up on Azure, I discovered Microsoft has enhanced a few things recently… particularly when it comes to storage accounts.

New Notable Features of Azure Storage Accounts
First, SFTP; storage accounts have gotten uber slick in that they now support connecting via SFTP. Honestly I didn’t really care all that much for myself but having been someone that helped design/build/support data ETL platforms in my past life, I was thrilled to see this available. If you have to get raw data from a client or other outside source into a Data Lake… this could be a very big deal. Even though it is 2021, many companies still can’t figure out any other way to transfer data beyond the ever ubiquitous SFTP, seriously.

Second, blobfuse – I will sum up… This is something that I was delighted to have when I was running on Oracle, in short it lets you mount your blob storage like any other traditional file system on Linux. It makes backing up files extremely simple, write a shell script to dump and compress your database then output to a location that appears local. It is stupid simple to setup if you have familiarity with Linux.

Third, object replication – setup a second storage account in another region and then create a policy to automagically replicate your data from the storage account in your primary region. This is asynchronous but perfect for backup data.

Fourth, lifecycle management – this one is critical for penny pinchers such as myself – you can now very easily setup policies to tier your block blobs to cheaper cold or archive storage or even completely delete them after a period of time. This should allow for some excellent cost optimization with no heavy lifting.

How It All Shook Out
I setup a new 1-core, 1-Gb B-series VM running Ubuntu Server 20.04 w/ LAMP stack, 30 GB of Standard SSD storage and the above trifecta of blobfuse, object replication, and lifecycle management. I now have a reasonably fast website with disaster recovery for about $10 a month. It should be stated this is not high-availability. It is however cheap, fast, easy to rebuild/restore, and safe. Safe, not just because of the multi-regional backups, but also because Microsoft is, well… not Oracle. I have spent very little money on my personal Azure account over the last 8 years and yet it all still works.

Honorable Mention: Cloudflare
What about DNS, CDN, SSL, DDoS protection, reverse proxy, and domain registration you ask?
Cloudflare does 100% of all of the above… every bit of it, except for the domain registration, can be had for free. In regards to domain registration, they do that at cost, which is an excellent deal, particularly for renewals. I have been using their free services for going on 5 years with zero issues. I have implemented their much more expensive professional services in enterprise scenarios because I trust them. In short, if you aren’t taking advantage of what is on offer, you are missing out. This isn’t a sales pitch; it’s excellent, free advice.

I was pretty enthused when I first moved onto Oracle Cloud a year or so ago. The nerd in me enjoys playing with new (to me) technology. My cloud enthusiast side loves seeing the approaches taken by different companies to interfacing with complex operational stacks. Finally, being a cheapskate, I appreciated a year+ of free, high-quality hosting. That said, the relationship ended on a rather frustrating note but I am glad to have gotten back to my roots, so to speak, with Azure.

1 of 1

This post has no comments. Be the first to leave one!

Join the discussion

Your email address will not be published. Required fields are marked *