Cloud Environments

AWS, Azure and GCP are not the same.

Many job postings I see them group Azure, GCP and AWS as if they are the same thing. They are not. As someone who's worked in all 3 environments, while they offer the same services, there's distinctions that need to be made that we are not classifying and we need to stop thinking skills just transfer via osmosis between all 3 environments.

Seriously, if you're going to disqualify someone for having SaltStack experience when you are looking for Ansible or Terraform experience, then why don't you hold the same regard for the cloud environment of your choice? Make it clear in the job description if you are going to be that picky about your cloud provider as you are for your toolchain.

Honestly, adaptability should be regarded as the highest of abilities any engineer could have since they can theoretically survive in any environment. It's my opinion that "hackers" are usually going to be your most effective employees. By "hacker", I mean someone who will just do what it takes to get the job done. This GSD1 attitude seems to be what makes AI so attractive. I'm not sure why we don't value the same in humans, but I digress...

The Hidden Cost of Ramp-Up

It takes real ramp up time to go between these environments. Someone with AWS-only experience is going to have to catch up on familiarity with GCP or Azure. The same goes for any of the other cloud providers. If skills like this were truly transferrable, then why are we not including Linode/Akamai, Digital Ocean, Freehostia and the myriad of other cloud providers? Why is on-prem management also not included in this list and dismissed if someone has on-prem experience but no cloud experience?

Me personally: I hate most things Microslop and I'm not afraid to alienate businesses with opportunities in those environments. I actively turn down opportunities in Azure environments. The little five month experience I had with Azure really solidified my resolve to avoid Microslop in all its solutions.

It's funny, I thought the AWS Certification would attract more AWS opportunities, but I've seen more Azure opportunities than ever because employers and recruiters alike all think it's all the same and send me the solicitation anyways.

The Toolchains

Even the tools that are supposed to provide a "single interface, cloud-agnostic" don't actually provide "cloud-agnostic" solutions to the architecture. It doesn't matter if you are using Puppet, SaltStack, Ansible, nor Terraform -- all of them have a different implementation for every single module they implement in a particular cloud environment.

I understand, from an executive's perspective (or even recruiter's perspective), this is difficult because it's all just "cloud" and you wish you could just box them up, but coming from a CTO and beyond perspective, I'm here to differentiate this so you can better understand this.

Base Scenario: Basic Web Service Env

Let's take a very basic scenario:

  • 1 load balancer
  • 3 application servers
  • 2 A DB cluster we can expand later.

Let's forego the DNS or Cloudfront/Cloudflare multi-region distribution capabilities and all the bells and whistles that come with deploying to this environment and a bunch of other details required in order to make this work.

In this example, I just want to deploy this simple server architecture. Let's peek under the hood as to how this is done:

Terraform

In order to do this in Terraform, you would need at least these providers:

AWS:

Azure:

See how much deprecated stuff Azure has? Gee, that's kinda difficult to follow... 🤔

GCP:

Puppet

  • AWS: https://forge.puppet.com/modules/puppetlabs/aws/readme
  • Azure: https://forge.puppet.com/modules/puppetlabs/azure/readme
  • GCP: https://forge.puppet.com/modules/puppetlabs/gce_compute/readme

SaltStack

For this to work in SaltStack, you would need this for the following:

AWS:

Azure:

There's that deprecated stuff again for Microslop, sorry Micro$oft... 🤔

GCP:

  • GCP's GCE -- single module to handle all the needs. How simple!

Ansible

AWS:

Azure:

GCP:

See the difference?

There's a great difference among the cloud providers. If you notice, they have the ability to deploy the infrastructure, but you still must configure according to their rules.

Not to mention, you also have completely different interfaces when navigating to their respective consoles. So, even if you do automate them, you have to know how to navigate the consoles. These are distinct enough that one must know how to navigate these systems.

My take on them:

AWS

AWS is very developer-friendly. They have libraries and systems available in a variety of languages. They offer [AWS CDK] as a means of managing infrastructure in addition to the open-source solutions out there. They are well-supported. My only gripe is they are not the most cost-effective.

I may be biased by my AWS certification, but I just enjoy working with a consistent toolchain and know that it will work.

Azure

Micro$oft seems to run a data center with the side effect of an API to manage your infrastructure thru code. One of the biggest challenges is finding the latest version of how to manage it. As you can see in the links above, Micro$oft is often deprecating and changing how you operate. This creates incredible strain on the team and tools and drag and friction to building robust systems.

Also, since they bought and took over Github, I'm seeing how folks are migrating away from Github due to their lack of uptime with Github Actions.

GCP

I use GCP in my personal projects, mostly because they are very cost-effective, it's simple and it integrates well with my Google Workspaces account. Since I own my domain, it's all too easy to setup my account such that I can manage my infrastructure and AI integrations seamlessly.

GCP also offers other services like SAML, SSO and all the other enterprise level things I would need in a way that doesn't interfere with my day-job since it's a completely different platform and folks/companies rarely use it.

The Takeaway

What I want you to walk away from this post is a better understanding of the different cloud providers and to think about what you're optimizing against.

Think about how your specification (or lack thereof) of cloud provider vs toolchain affects your candidate search.

Consider what matters to you: adaptability or skills.

[1]: GSD: Get Sh9t Done.

Comments

Popular posts from this blog

Setup and Install Monero(d) -- p2pool -- xmrig

Subversion Tutorial

Connect to Wi-Fi in Linux using `wpa_supplicant` and `dhclient`