Tommi's Scribbles

Going to the Cloud - Choosing Between Amazon Web Services (AWS) and Microsoft Azure

Going to the Cloud - Choosing Between Amazon Web Services (AWS) and Microsoft Azure
  • Published on 2021-12-11

At the start of this year, I was doing a database course at the University of Helsinki. My main purpose for doing the course was to have a refresher to SQL and see if anything had evolved. After completing all of the assignments and moving to project work, I started to think of rocking a cloud database instead of setting a database server up locally.

This naturally led me to the cloud giants; though admittedly I took a first look at UpCloud, a Finnish challenger. I had previously rocked VPSs for years, but with the free tiers the cloud services offer, I figured going the route of easier maintenance of a managed database service would make more sense for the project.

First instinct: Go with AWS

First, I went with my instincts and created a free-tier account with Amazon Web Services, referred from here on as AWS. Amazon offered a ton of services you get to tinker with for 12 months free in addition to their always-free services, which made them an attractive choice to begin with. For larger projects, the agility and cost-optimization available should allow for a comfortable base to move to the cloud if you're not in the small-scale operations I am.

So, armed with a fresh free-tier AWS account, I entered the AWS Management Console with enthusiasm only to be overwhelmed by the archaic user interface taking me back to the 90s. Back when I worked in the software industry, there was a running joke you can always identify user interfaces made by engineers instead of designers; that's essentially what the AWS control panel felt like.

After being confused for a while, I turned to the documentation. While extensive and helpful, wading through the very detailed documentation in a similar 90s feeling experience made me second guess my choice, and off to the competing service I went.

Disheartened: Switch to Azure

Microsoft's Azure offered a similar setup to AWS with services with a free trial for a year and services that are free forever. After signing up, I was greeted by a nicely designed control panel. I am sure anyone who has used a Microsoft product in the past - and I am sure you have - will feel right at home. The control panel alone made me think there was a solid reason for the DoD picking Azure over AWS for JEDI; instead of something personal against Bezos.

Wowed by the control panel, I continued on and created my lowest tier database on Azure, completed my university project work successfully, and started to plan utilizing the cloud for all my personal projects since I was impressed with the cloud services. So all was well in the cloud world and the end?

Sadly not. About a month after the university project work was finished, I suddenly got an invoice alert from Azure; my tiny and dormant project database was being invoiced for. While the cost was small, the experience was very disheartening as I had no clue why I was being charged for. I had been under the impression I have all sorts of free credits if not a full free year-long trial at the very least to try out the services, including a puny minuscule database.

Second chances: Going back to AWS

Luckily, I had not started utilizing Azure for anything else at that point. As I was also displeased with the Azure documentation, combined with the obscurity of their billing it was easy to give my first instinct a second chance; I went back to AWS.

And boy am I glad I did. I discovered the AWS Quick Starts. These automated deployments utilize the AWS CloudFormation to deploy the desired architecture and allow setting up a cloud environment with a few simple and clear setup steps. After I got my first Quick Start completed and saw everything ready, all the AWS interactions between services and how to setup things in the daunting control panel made sense!

After seeing it all come together, I was easily creating my CD/CI integration with JetBrains tools on AWS in no time. While I am sure my setup was far from perfect - for example I didn't utilize the nifty ability to spin up instances when needed and had them always on - the speed and agility really sold me on AWS.

Why I stuck with AWS

The best part with AWS is that after getting to the cloud and learning the logic of their system, the number of services you get to play with to learn all that the cloud has to offer is astonishing! Instead of the JetBrains tools, I could use the AWS Code-series tools for CD/CI. After the ProtonMail CEO made a silly post, I moved my custom email domains to the Amazon WorkMail and now have a much better solution at a smaller cost.

The list goes on and on. You could mess around with machine learning and analytics, or rock micro services, or design server-less applications. There's so much fun to tinker around and all this is in the free tiers giving a great opportunity to get in the cloud, investigate what best works for you, and then run with it.

While I had initial doubts on my first try, I am sure I made the right choice going with AWS in the end. However, as both AWS and Azure give you a free trial, I recommend evaluating both to see which one you like better; I'm confident either service will make you happy.

For me, once my engineer brain got a hold of the AWS logic, the seeming advantage of the better control panel on Azure went away and in the end AWS was the better service.

Final note: I am fully aware companies like Google and IBM also offer cloud solutions. However, IBM is aimed at businesses and not for tinkering around on a smaller scale. With Google, I have a personal dislike for anything Google, which made eliminating them an easy option.